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,
    )