Spaces:
Sleeping
Sleeping
from fastapi import FastAPI, HTTPException | |
from fastapi.middleware.cors import CORSMiddleware | |
from pydantic import BaseModel | |
import json, os | |
from evaluator import evaluate_model | |
app = FastAPI() | |
DB_PATH = "models_results.json" | |
# Add CORS Middleware | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
class ModelIn(BaseModel): | |
model_name: str | |
def get_results(): | |
try: | |
with open(DB_PATH, "r") as f: | |
return json.load(f) | |
except (json.JSONDecodeError, FileNotFoundError): | |
# Return an empty list if the file is empty or missing | |
return [] | |
def eval_and_store(req: ModelIn): | |
model_name = req.model_name | |
# 1. Check if already evaluated | |
data = json.load(open(DB_PATH)) | |
if any(d["model"] == model_name for d in data): | |
raise HTTPException(400, "Model already evaluated") | |
# 2. Run evaluation | |
try: | |
metrics = evaluate_model( | |
model_name=model_name, # any 🤗 model ID | |
dataset_name="sunbird/salt", # your test split | |
split="dev", # or whatever split you’ve prepared | |
) | |
except Exception as e: | |
raise HTTPException(500, f"Evaluation failed: {e}") | |
# 3. Append & save | |
data.append({"model": model_name, "metrics": metrics}) | |
with open(DB_PATH, "w") as f: | |
json.dump(data, f, indent=2) | |
return {"status": "ok", "metrics": metrics} | |
# Serve React's build folder | |
from fastapi.staticfiles import StaticFiles | |
app.mount("/", StaticFiles(directory="frontend/build", html=True), name="static") | |