8000 fix eval in api server and cli for below issue: · usingsystem007/adk-python@166df01 · GitHub
[go: up one dir, main page]

8000
Skip to content

Commit 166df01

Browse files
seanzhougooglecopybara-github
authored andcommitted
fix eval in api server and cli for below issue:
google#651 PiperOrigin-RevId: 756906937
1 parent c4ecef5 commit 166df01

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

src/google/adk/cli/cli_tools_click.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import logging
1919
import os
2020
import tempfile
21+
from typing import AsyncGenerator
22+
from typing import Coroutine
2123
from typing import Optional
2224

2325
import click
@@ -267,9 +269,16 @@ def cli_eval(
267269

268270
eval_set_to_evals = parse_and_get_evals_to_run(eval_set_file_path)
269271

272+
async def _collect_async_gen(
273+
async_gen_coroutine: Coroutine[
274+
AsyncGenerator[EvalResult, None], None, None
275+
],
276+
) -> list[EvalResult]:
277+
return [result async for result in async_gen_coroutine]
278+
270279
try:
271-
eval_results = list(
272-
asyncio.run(
280+
eval_results = asyncio.run(
281+
_collect_async_gen(
273282
run_evals(
274283
eval_set_to_evals,
275284
root_agent,

src/google/adk/cli/fast_api.py

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@
2424
import sys
2525
import traceback
2626
import typing
27-
from typing import Any, List, Literal, Optional, Union
27+
from typing import Any
28+
from typing import List
29+
from typing import Literal
30+
from typing import Optional
31+
from typing import Union
2832

2933
import click
3034
from fastapi import FastAPI
@@ -52,7 +56,8 @@
5256
from ..agents.base_agent import BaseAgent
5357
from ..agents.live_request_queue import LiveRequest
5458
from ..agents.live_request_queue import LiveRequestQueue
55-
from ..agents.llm_agent import Agent, LlmAgent
59+
from ..agents.llm_agent import Agent
60+
from ..agents.llm_agent import LlmAgent
5661
from ..agents.run_config import StreamingMode
5762
from ..artifacts import InMemoryArtifactService
5863
from ..events.event import Event
@@ -467,30 +472,24 @@ async def run_eval(
467472
"Eval ids to run list is empty. We will all evals in the eval set."
468473
)
469474
root_agent = await _get_root_agent_async(app_name)
470-
eval_results = list(
471-
await run_evals(
475+
return [
476+
RunEvalResult(
477+
app_name=app_name,
478+
eval_set_id=eval_set_id,
479+
eval_id=eval_result.eval_id,
480+
final_eval_status=eval_result.final_eval_status,
481+
eval_metric_results=eval_result.eval_metric_results,
482+
session_id=eval_result.session_id,
483+
)
484+
async for eval_result in run_evals(
472485
eval_set_to_evals,
473486
root_agent,
474487
getattr(root_agent, "reset_data", None),
475488
req.eval_metrics,
476489
session_service=session_service,
477490
artifact_service=artifact_service,
478491
)
479-
)
480-
481-
run_eval_results = []
482-
for eval_result in eval_results:
483-
run_eval_results.append(
484-
RunEvalResult(
485-
app_name=app_name,
486-
eval_set_id=eval_set_id,
487-
eval_id=eval_result.eval_id,
488-
final_eval_status=eval_result.final_eval_status,
489-
eval_metric_results=eval_result.eval_metric_results,
490-
session_id=eval_result.session_id,
491-
)
492-
)
493-
return run_eval_results
492+
]
494493

495494
@app.delete("/apps/{app_name}/users/{user_id}/sessions/{session_id}")
496495
def delete_session(app_name: str, user_id: str, session_id: str):

0 commit comments

Comments
 (0)
0