DevOps-Ultra-125M / api_app.py
aarav-kushwaha's picture
Update api_app.py
c7e6bba verified
Raw
History Blame Contribute Delete
2.12 kB
from fastapi import FastAPI
from pydantic import BaseModel
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
app = FastAPI(
title="Rapnss DevOps-Ultra-125M API",
description="A pure REST API for generating Python code via HTTPS using the custom Rapnss architecture",
version="1.0.0"
)
# Configuration
REPO_ID = "Rapnss/DevOps-Ultra-125M"
DEVICE = "cpu"
model = None
tokenizer = None
@app.on_event("startup")
def load_model():
global model, tokenizer
print("Loading tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(REPO_ID, trust_remote_code=True)
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
print("Loading custom Rapnss model weights directly from the Hub...")
# trust_remote_code=True automatically downloads your custom PyTorch architecture files!
model = AutoModelForCausalLM.from_pretrained(REPO_ID, trust_remote_code=True)
model.to(DEVICE)
model.eval()
print("API Ready for Requests!")
class CodeRequest(BaseModel):
instruction: str
input_code: str = ""
max_tokens: int = 150
temperature: float = 0.7
@app.post("/v1/generate")
def generate_code(req: CodeRequest):
if model is None or tokenizer is None:
return {"error": "Model not loaded yet."}
prompt = f"Instruction: {req.instruction}\n"
if req.input_code:
prompt += f"Input: {req.input_code}\n"
prompt += "Output:\n"
input_ids = tokenizer.encode(prompt, return_tensors="pt").to(DEVICE)
output_ids = model.generate(
input_ids,
max_new_tokens=req.max_tokens,
do_sample=False,
pad_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(output_ids[0], skip_special_tokens=True)
# Clean up the output to only return the generated code
if "Output:\n" in response:
response = response.split("Output:\n")[-1]
return {"generated_code": response.strip()}
@app.get("/")
def health_check():
return {"status": "active", "model": "Rapnss DevOps-Ultra-125M API is running!"}