arya-ai-model commited on
Commit
ea0af80
·
1 Parent(s): 98fca07

Initial commit

Browse files
Files changed (4) hide show
  1. app.py +19 -0
  2. model.py +16 -0
  3. requirements.txt +4 -0
  4. runtime.txt +1 -0
app.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, HTTPException
2
+ from model import generate_code
3
+
4
+ app = FastAPI()
5
+
6
+ @app.get("/")
7
+ def home():
8
+ return {"message": "Code Generation API is running!"}
9
+
10
+ @app.post("/generate")
11
+ def generate(prompt: str, max_tokens: int = 256):
12
+ if not prompt:
13
+ raise HTTPException(status_code=400, detail="Prompt cannot be empty.")
14
+
15
+ try:
16
+ code = generate_code(prompt, max_tokens)
17
+ return {"generated_code": code}
18
+ except Exception as e:
19
+ raise HTTPException(status_code=500, detail=f"Internal Server Error: {str(e)}")
model.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from transformers import AutoModelForCausalLM, AutoTokenizer
2
+ import torch
3
+
4
+ # Load the pre-trained model
5
+ MODEL_NAME = "bigcode/starcoder"
6
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
7
+ model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, device_map="auto")
8
+
9
+ def generate_code(prompt: str, max_tokens: int = 256):
10
+ """Generates code based on the input prompt."""
11
+ if not prompt.strip():
12
+ return "Error: Empty prompt provided."
13
+
14
+ inputs = tokenizer(prompt, return_tensors="pt").to("cuda" if torch.cuda.is_available() else "cpu")
15
+ output = model.generate(**inputs, max_new_tokens=max_tokens)
16
+ return tokenizer.decode(output[0], skip_special_tokens=True)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ transformers
2
+ torch
3
+ fastapi
4
+ uvicorn
runtime.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ python-3.9