from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import JSONResponse from fastapi.staticfiles import StaticFiles import numpy as np import argparse import os from datasets import load_dataset HOST = os.environ.get("API_URL", "0.0.0.0") PORT = os.environ.get("PORT", 7860) parser = argparse.ArgumentParser() parser.add_argument("--host", default=HOST) parser.add_argument("--port", type=int, default=PORT) parser.add_argument("--reload", action="store_true", default=True) parser.add_argument("--ssl_certfile") parser.add_argument("--ssl_keyfile") args = parser.parse_args() app = FastAPI() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/api/results") async def get_results(): try: # Load the dataset dataset = load_dataset("smolagents/results") # Convert to list for processing data = dataset["train"].to_pandas() # Log some info to help debug print("Dataset loaded, shape:", data.shape) print("Columns:", data.columns) print("First row:", data.iloc[0]) # Process the data to group by model and calculate scores processed_data = [] grouped = data.groupby('model_id') return data except Exception as e: # Print the full error traceback to your logs print("Error occurred:", str(e)) raise HTTPException(status_code=500, detail=str(e)) app.mount("/", StaticFiles(directory="static", html=True), name="static") if __name__ == "__main__": import uvicorn print(args) uvicorn.run( "app:app", host=args.host, port=args.port, reload=args.reload, ssl_certfile=args.ssl_certfile, ssl_keyfile=args.ssl_keyfile, )