File size: 2,437 Bytes
a0f1951 005b702 a0f1951 047960a f316894 047960a f316894 047960a f316894 a0f1951 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
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-benchmark/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')
for model_id, group in grouped:
model_data = {
'model_id': model_id,
'scores': {}
}
# Calculate scores for each source
for source in group['source'].unique():
source_data = group[group['source'] == source]
avg_acc = source_data['acc'].mean()
model_data['scores'][source] = float(avg_acc)
processed_data.append(model_data)
return processed_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,
)
|