fix: Make OpenAPI /docs path work again

* The main fix is in eval_metrics.py
* Removed some deprecated paths in the FastAPI server
* Added a unit test to catch future breakages
* Bump fastapi version to be 0.124.1 to capture the fix in https://github.com/fastapi/fastapi/pull/14482
* Removed the upper-bound restriction on fastapi version which was used to temporarily fix the issue

Fixes #3173

Co-authored-by: Liang Wu <wuliang@google.com>
PiperOrigin-RevId: 861867708
This commit is contained in:
Liang Wu
2026-01-27 13:41:26 -08:00
committed by Copybara-Service
parent 4ee125a038
commit 65cbf4b35c
4 changed files with 8 additions and 178 deletions
-85
View File
@@ -946,27 +946,6 @@ class AdkWebServer:
detail=str(ve),
) from ve
@deprecated(
"Please use create_eval_set instead. This will be removed in future"
" releases."
)
@app.post(
"/apps/{app_name}/eval_sets/{eval_set_id}",
response_model_exclude_none=True,
tags=[TAG_EVALUATION],
)
async def create_eval_set_legacy(
app_name: str,
eval_set_id: str,
):
"""Creates an eval set, given the id."""
await create_eval_set(
app_name=app_name,
create_eval_set_request=CreateEvalSetRequest(
eval_set=EvalSet(eval_set_id=eval_set_id, eval_cases=[])
),
)
@app.get(
"/apps/{app_name}/eval-sets",
response_model_exclude_none=True,
@@ -982,19 +961,6 @@ class AdkWebServer:
return ListEvalSetsResponse(eval_set_ids=eval_sets)
@deprecated(
"Please use list_eval_sets instead. This will be removed in future"
" releases."
)
@app.get(
"/apps/{app_name}/eval_sets",
response_model_exclude_none=True,
tags=[TAG_EVALUATION],
)
async def list_eval_sets_legacy(app_name: str) -> list[str]:
list_eval_sets_response = await list_eval_sets(app_name)
return list_eval_sets_response.eval_set_ids
@app.post(
"/apps/{app_name}/eval-sets/{eval_set_id}/add-session",
response_model_exclude_none=True,
@@ -1142,22 +1108,6 @@ class AdkWebServer:
except NotFoundError as nfe:
raise HTTPException(status_code=404, detail=str(nfe)) from nfe
@deprecated(
"Please use run_eval instead. This will be removed in future releases."
)
@app.post(
"/apps/{app_name}/eval_sets/{eval_set_id}/run_eval",
response_model_exclude_none=True,
tags=[TAG_EVALUATION],
)
async def run_eval_legacy(
app_name: str, eval_set_id: str, req: RunEvalRequest
) -> list[RunEvalResult]:
run_eval_response = await run_eval(
app_name=app_name, eval_set_id=eval_set_id, req=req
)
return run_eval_response.run_eval_results
@app.post(
"/apps/{app_name}/eval-sets/{eval_set_id}/run",
response_model_exclude_none=True,
@@ -1251,28 +1201,6 @@ class AdkWebServer:
except ValidationError as ve:
raise HTTPException(status_code=500, detail=str(ve)) from ve
@deprecated(
"Please use get_eval_result instead. This will be removed in future"
" releases."
)
@app.get(
"/apps/{app_name}/eval_results/{eval_result_id}",
response_model_exclude_none=True,
tags=[TAG_EVALUATION],
)
async def get_eval_result_legacy(
app_name: str,
eval_result_id: str,
) -> EvalSetResult:
try:
return self.eval_set_results_manager.get_eval_set_result(
app_name, eval_result_id
)
except ValueError as ve:
raise HTTPException(status_code=404, detail=str(ve)) from ve
except ValidationError as ve:
raise HTTPException(status_code=500, detail=str(ve)) from ve
@app.get(
"/apps/{app_name}/eval-results",
response_model_exclude_none=True,
@@ -1285,19 +1213,6 @@ class AdkWebServer:
)
return ListEvalResultsResponse(eval_result_ids=eval_result_ids)
@deprecated(
"Please use list_eval_results instead. This will be removed in future"
" releases."
)
@app.get(
"/apps/{app_name}/eval_results",
response_model_exclude_none=True,
tags=[TAG_EVALUATION],
)
async def list_eval_results_legacy(app_name: str) -> list[str]:
list_eval_results_response = await list_eval_results(app_name)
return list_eval_results_response.eval_result_ids
@app.get(
"/apps/{app_name}/metrics-info",
response_model_exclude_none=True,