File size: 1,008 Bytes
7b4b748
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from __future__ import annotations

from fastapi import APIRouter, Depends, Header, HTTPException, status

from api.schemas import EvalRunRequest, EvalRunResponse

router = APIRouter(prefix="/v1/eval", tags=["eval"])


def _verify_api_key(x_api_key: str | None = Header(default=None)) -> None:
    from api.main import get_api_config

    configured = get_api_config().api_key
    if configured and x_api_key != configured:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid API key")


def _get_eval_service():
    from api.main import get_eval_service

    return get_eval_service()


@router.post("/run", response_model=EvalRunResponse)
def run_eval(
    payload: EvalRunRequest,
    _: None = Depends(_verify_api_key),
    service=Depends(_get_eval_service),
) -> EvalRunResponse:
    assistants = payload.assistants or ["oss"]
    return service.run(
        benchmark_samples=payload.benchmark_samples,
        seed=payload.seed,
        assistants=assistants,
    )