Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions src/google/adk/cli/adk_web_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,7 @@ def __init__(
logo_text: Optional[str] = None,
logo_image_url: Optional[str] = None,
url_prefix: Optional[str] = None,
auto_create_session: bool = False,
):
self.agent_loader = agent_loader
self.session_service = session_service
Expand All @@ -509,6 +510,7 @@ def __init__(
self.current_app_name_ref: SharedValue[str] = SharedValue(value="")
self.runner_dict = {}
self.url_prefix = url_prefix
self.auto_create_session = auto_create_session

async def get_runner_async(self, app_name: str) -> Runner:
"""Returns the cached runner for the given app."""
Expand Down Expand Up @@ -558,6 +560,7 @@ def _create_runner(self, agentic_app: App) -> Runner:
session_service=self.session_service,
memory_service=self.memory_service,
credential_service=self.credential_service,
auto_create_session=self.auto_create_session,
)

def _instantiate_extra_plugins(self) -> list[BasePlugin]:
Expand Down Expand Up @@ -946,6 +949,27 @@ async def create_eval_set(
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,
Expand All @@ -961,6 +985,19 @@ async def list_eval_sets(app_name: str) -> ListEvalSetsResponse:

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_legacy",
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,
Expand Down Expand Up @@ -1108,6 +1145,22 @@ async def delete_eval(
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,
Expand Down Expand Up @@ -1201,6 +1254,28 @@ async def get_eval_result(
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,
Expand All @@ -1213,6 +1288,19 @@ async def list_eval_results(app_name: str) -> ListEvalResultsResponse:
)
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,
Expand Down
10 changes: 10 additions & 0 deletions src/google/adk/cli/cli_tools_click.py
Original file line number Diff line number Diff line change
Expand Up @@ -1378,6 +1378,14 @@ async def _lifespan(app: FastAPI):
@fast_api_common_options()
@adk_services_options(default_use_local_storage=True)
@deprecated_adk_services_options()
@click.option(
"--auto_create_session",
is_flag=True,
default=False,
help=(
"Automatically create a session if it doesn't exist when calling /run."
),
)
def cli_api_server(
agents_dir: str,
eval_storage_uri: Optional[str] = None,
Expand All @@ -1398,6 +1406,7 @@ def cli_api_server(
a2a: bool = False,
reload_agents: bool = False,
extra_plugins: Optional[list[str]] = None,
auto_create_session: bool = False,
):
"""Starts a FastAPI server for agents.

Expand Down Expand Up @@ -1430,6 +1439,7 @@ def cli_api_server(
url_prefix=url_prefix,
reload_agents=reload_agents,
extra_plugins=extra_plugins,
auto_create_session=auto_create_session,
),
host=host,
port=port,
Expand Down
2 changes: 2 additions & 0 deletions src/google/adk/cli/fast_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ def get_fast_api_app(
extra_plugins: Optional[list[str]] = None,
logo_text: Optional[str] = None,
logo_image_url: Optional[str] = None,
auto_create_session: bool = False,
) -> FastAPI:

# Set up eval managers.
Expand Down Expand Up @@ -153,6 +154,7 @@ def get_fast_api_app(
logo_text=logo_text,
logo_image_url=logo_image_url,
url_prefix=url_prefix,
auto_create_session=auto_create_session,
)

# Callbacks & other optional args for when constructing the FastAPI instance
Expand Down