agent-starter-pack 0.13.1__tar.gz → 0.14.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.claude/settings.local.json +3 -1
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/GEMINI.md +1 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/Makefile +1 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/PKG-INFO +13 -4
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/README.md +12 -3
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/adk_base/notebooks/evaluating_adk_agent.ipynb +78 -71
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb +78 -71
- agent_starter_pack-0.14.1/docs/.vitepress/config.js +137 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/cli/enhance.md +24 -6
- agent_starter_pack-0.14.1/docs/guide/community-showcase.md +31 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/development-guide.md +4 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/index.md +1 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/package-lock.json +3 -3
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/llm.txt +87 -39
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/pyproject.toml +1 -1
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/Makefile +16 -1
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/README.md +1 -1
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/commands/create.py +27 -5
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/commands/enhance.py +132 -6
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/commands/setup_cicd.py +91 -69
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/cicd.py +105 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/gcp.py +19 -13
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/logging.py +13 -1
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/template.py +3 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/package-lock.json +9 -9
- agent_starter_pack-0.14.1/src/frontends/live_api_react/frontend/src/App.tsx +65 -0
- agent_starter_pack-0.14.1/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +510 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +249 -2
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +4 -1
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/docs/adk-cheatsheet.md +285 -38
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cicd/test_e2e_deployment.py +1 -1
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cli/commands/test_setup_cicd.py +129 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/integration/test_makefile_usability.py +6 -1
- agent_starter_pack-0.14.1/uv.lock +6707 -0
- agent_starter_pack-0.13.1/docs/.vitepress/config.js +0 -87
- agent_starter_pack-0.13.1/src/frontends/live_api_react/frontend/src/App.tsx +0 -206
- agent_starter_pack-0.13.1/src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -217
- agent_starter_pack-0.13.1/src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -201
- agent_starter_pack-0.13.1/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +0 -161
- agent_starter_pack-0.13.1/uv.lock +0 -5905
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/cd/test_e2e.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/build_use_wheel.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/lint.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/lint_templated_agents.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/test.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/test_makefile.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/test_pipeline_parity.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/test_remote_template.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/ci/test_templated_agents.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/terraform/apis.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/terraform/build_triggers.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/terraform/service_account.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/terraform/storage.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.cloudbuild/terraform/variables.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.github/workflows/docs.yml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/.gitignore +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/CLAUDE.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/CODE_OF_CONDUCT.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/CONTRIBUTING.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/LICENSE +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/adk_base/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/adk_base/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/adk_base/app/__init__.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/adk_base/app/agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/adk_base/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/adk_base/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/app/__init__.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/app/agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/app/retrievers.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/app/templates.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/notebooks/adk_app_testing.ipynb +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/agentic_rag/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/app/agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/langgraph_base_react/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/langgraph_base_react/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/langgraph_base_react/app/agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/live_api/.template/templateconfig.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/live_api/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/live_api/app/agent.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/live_api/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/live_api/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/agents/live_api/tests/unit/test_server.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/agents/overview.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/cli/create.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/cli/index.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/cli/list.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/cli/setup_cicd.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/data-ingestion.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/deploy-ui.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/deployment.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/getting-started.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/installation.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/observability.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/template-config-reference.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/troubleshooting.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/video-tutorials.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/guide/why_starter_pack.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/adk_gemini_fullstack.gif +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/adk_gemini_fullstack_architecture.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/adk_logo.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/agent_starter_pack_screenshot.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/ags_high_level_architecture.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/icon.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/logo.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/prototype_to_prod.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/why_sp_edited.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/images/why_starter_pack.png +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/package.json +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/remote-templates/creating-remote-templates.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/remote-templates/index.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/docs/remote-templates/using-remote-templates.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/.gitignore +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/GEMINI.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/apis.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/github.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/iam.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/locals.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/providers.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/storage.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/variables.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'github_actions' %}wif.tf{% else %}unused_wif.tf{% endif %} +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/deployment/terraform/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}build_triggers.tf{% else %}unused_build_triggers.tf{% endif %} +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/pyproject.toml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/tests/unit/test_dummy.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/pr_checks.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/pr_checks.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{{cookiecutter.agent_directory}}/utils/gcs.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{{cookiecutter.agent_directory}}/utils/tracing.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/base_template/{{cookiecutter.agent_directory}}/utils/typing.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/commands/list.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/main.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/__init__.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/datastores.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/remote_template.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/cli/utils/version.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/data_ingestion/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/data_ingestion/pyproject.toml +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/data_ingestion/uv.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/agent_engine/notebooks/intro_agent_engine.ipynb +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/Dockerfile +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/deployment/terraform/service.tf +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/deployment_targets/cloud_run/{{cookiecutter.agent_directory}}/server.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/package.json +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/public/index.html +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/components/logger/logger.scss +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/index.css +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/multimodal-live-types.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/react-app-env.d.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/store-logger.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/side_bar.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/containers/data_processing/Dockerfile +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/containers/e2e-tests/Dockerfile +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/idx/.idx/dev.nix +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/idx/idx-template.json +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/idx/idx-template.nix +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-adk_base-agent_engine.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-adk_base-cloud_run.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-agentic_rag-agent_engine.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-agentic_rag-cloud_run.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/resources/locks/uv-live_api-cloud_run.lock +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/utils/generate_locks.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/utils/lock_utils.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/src/utils/watch_and_rebuild.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/__init__.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cicd/example.env +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cicd/scripts/delete_agent_engines.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cicd/scripts/delete_alloydb_clusters.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cicd/scripts/delete_vector_search.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cli/commands/test_create.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cli/commands/test_create_local.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cli/commands/test_enhance.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cli/commands/test_list.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cli/utils/test_cicd.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/cli/utils/test_remote_template.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/integration/test_agent_directory_functionality.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/integration/test_pipeline_parity.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/integration/test_remote_templating.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/integration/test_template_linting.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/integration/test_templated_patterns.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/integration/utils.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/test_frontend/test_side_bar.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/test_frontend/test_streamlit_app.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/utils/__init__.py +0 -0
- {agent_starter_pack-0.13.1 → agent_starter_pack-0.14.1}/tests/utils/get_agents.py +0 -0
@@ -8,7 +8,9 @@
|
|
8
8
|
"Bash(gcloud compute networks vpc-access connectors list --project=agent-starter-pack-e2e-dev --region=europe-west1)",
|
9
9
|
"Bash(gcloud alpha network-services address-reservations list --project=agent-starter-pack-e2e-dev --location=europe-west1)",
|
10
10
|
"Bash(gcloud beta serverless address-reservations list --project=agent-starter-pack-e2e-dev --location=europe-west1)",
|
11
|
-
"Bash(gcloud run services delete test-797fa619-1755528509 --region=europe-west1 --project=agent-starter-pack-e2e-dev --quiet)"
|
11
|
+
"Bash(gcloud run services delete test-797fa619-1755528509 --region=europe-west1 --project=agent-starter-pack-e2e-dev --quiet)",
|
12
|
+
"Bash(make test)",
|
13
|
+
"WebFetch(domain:github.com)"
|
12
14
|
],
|
13
15
|
"deny": [],
|
14
16
|
"ask": []
|
@@ -151,6 +151,7 @@ Test changes across multiple dimensions:
|
|
151
151
|
- Agent types (live_api, adk_base, etc.)
|
152
152
|
- Deployment targets (cloud_run, agent_engine)
|
153
153
|
- Feature combinations (data_ingestion, frontend_type)
|
154
|
+
- Example command for testing the starter pack creation - from the root of the repo run: `uv run agent-starter-pack create myagent-$(date +%s) --output-dir target`
|
154
155
|
|
155
156
|
### Common Pitfalls
|
156
157
|
- **Hardcoded URLs**: Use relative paths for frontend connections
|
@@ -11,6 +11,7 @@ generate-lock:
|
|
11
11
|
uv run src/utils/generate_locks.py
|
12
12
|
|
13
13
|
lint:
|
14
|
+
uv sync --dev --extra lint
|
14
15
|
uv run ruff check . --config pyproject.toml --diff
|
15
16
|
uv run ruff format . --check --config pyproject.toml --diff
|
16
17
|
uv run mypy --config-file pyproject.toml ./src/cli ./tests ./src/frontends/streamlit
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agent-starter-pack
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.14.1
|
4
4
|
Summary: CLI to bootstrap production-ready Google Cloud GenAI agent projects from templates.
|
5
5
|
Author-email: Google LLC <agent-starter-pack@google.com>
|
6
6
|
License: Apache-2.0
|
@@ -69,7 +69,7 @@ agent-starter-pack create my-awesome-agent
|
|
69
69
|
|
70
70
|
If you have [`uv`](https://github.com/astral-sh/uv) installed, you can create and set up your project with a single command:
|
71
71
|
```bash
|
72
|
-
uvx agent-starter-pack create my-
|
72
|
+
uvx agent-starter-pack create my-awesome-agent
|
73
73
|
```
|
74
74
|
This command handles creating the project without needing to pre-install the package into a virtual environment.
|
75
75
|
</details>
|
@@ -78,10 +78,10 @@ This command handles creating the project without needing to pre-install the pac
|
|
78
78
|
|
79
79
|
### 🔧 Enhance Existing Agents
|
80
80
|
|
81
|
-
Already have an agent? Add production-ready deployment and infrastructure:
|
81
|
+
Already have an agent? Add production-ready deployment and infrastructure by running this command in your project's root folder:
|
82
82
|
|
83
83
|
```bash
|
84
|
-
agent-starter-pack enhance
|
84
|
+
uvx agent-starter-pack enhance
|
85
85
|
```
|
86
86
|
|
87
87
|
See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Feliasecchig%2Fasp-open-in-cloud-shell&cloudshell_print=open-in-cs).
|
@@ -104,6 +104,14 @@ See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pac
|
|
104
104
|
|
105
105
|
Looking to explore more ADK examples? Check out the [ADK Samples Repository](https://github.com/google/adk-samples) for additional examples and use cases demonstrating ADK's capabilities.
|
106
106
|
|
107
|
+
---
|
108
|
+
|
109
|
+
## 🌟 Community Showcase
|
110
|
+
|
111
|
+
Explore amazing projects built with the Agent Starter Pack!
|
112
|
+
|
113
|
+
**[View Community Showcase →](https://googlecloudplatform.github.io/agent-starter-pack/guide/community-showcase)**
|
114
|
+
|
107
115
|
#### Extra Features
|
108
116
|
|
109
117
|
The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
|
@@ -125,6 +133,7 @@ This starter pack covers all aspects of Agent development, from prototyping and
|
|
125
133
|
- Python 3.10+
|
126
134
|
- [Google Cloud SDK](https://cloud.google.com/sdk/docs/install)
|
127
135
|
- [Terraform](https://developer.hashicorp.com/terraform/downloads) (for deployment)
|
136
|
+
- [Make](https://www.gnu.org/software/make/) (for development tasks)
|
128
137
|
|
129
138
|
|
130
139
|
## 📚 Documentation
|
@@ -45,7 +45,7 @@ agent-starter-pack create my-awesome-agent
|
|
45
45
|
|
46
46
|
If you have [`uv`](https://github.com/astral-sh/uv) installed, you can create and set up your project with a single command:
|
47
47
|
```bash
|
48
|
-
uvx agent-starter-pack create my-
|
48
|
+
uvx agent-starter-pack create my-awesome-agent
|
49
49
|
```
|
50
50
|
This command handles creating the project without needing to pre-install the package into a virtual environment.
|
51
51
|
</details>
|
@@ -54,10 +54,10 @@ This command handles creating the project without needing to pre-install the pac
|
|
54
54
|
|
55
55
|
### 🔧 Enhance Existing Agents
|
56
56
|
|
57
|
-
Already have an agent? Add production-ready deployment and infrastructure:
|
57
|
+
Already have an agent? Add production-ready deployment and infrastructure by running this command in your project's root folder:
|
58
58
|
|
59
59
|
```bash
|
60
|
-
agent-starter-pack enhance
|
60
|
+
uvx agent-starter-pack enhance
|
61
61
|
```
|
62
62
|
|
63
63
|
See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/installation) for more options, or try with zero setup in [Firebase Studio](https://studio.firebase.google.com/new?template=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fagent-starter-pack%2Ftree%2Fmain%2Fsrc%2Fresources%2Fidx) or [Cloud Shell](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Feliasecchig%2Fasp-open-in-cloud-shell&cloudshell_print=open-in-cs).
|
@@ -80,6 +80,14 @@ See [Installation Guide](https://googlecloudplatform.github.io/agent-starter-pac
|
|
80
80
|
|
81
81
|
Looking to explore more ADK examples? Check out the [ADK Samples Repository](https://github.com/google/adk-samples) for additional examples and use cases demonstrating ADK's capabilities.
|
82
82
|
|
83
|
+
---
|
84
|
+
|
85
|
+
## 🌟 Community Showcase
|
86
|
+
|
87
|
+
Explore amazing projects built with the Agent Starter Pack!
|
88
|
+
|
89
|
+
**[View Community Showcase →](https://googlecloudplatform.github.io/agent-starter-pack/guide/community-showcase)**
|
90
|
+
|
83
91
|
#### Extra Features
|
84
92
|
|
85
93
|
The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
|
@@ -101,6 +109,7 @@ This starter pack covers all aspects of Agent development, from prototyping and
|
|
101
109
|
- Python 3.10+
|
102
110
|
- [Google Cloud SDK](https://cloud.google.com/sdk/docs/install)
|
103
111
|
- [Terraform](https://developer.hashicorp.com/terraform/downloads) (for deployment)
|
112
|
+
- [Make](https://www.gnu.org/software/make/) (for development tasks)
|
104
113
|
|
105
114
|
|
106
115
|
## 📚 Documentation
|
@@ -234,6 +234,7 @@
|
|
234
234
|
"outputs": [],
|
235
235
|
"source": [
|
236
236
|
"import json\n",
|
237
|
+
"import asyncio\n",
|
237
238
|
"\n",
|
238
239
|
"# General\n",
|
239
240
|
"import random\n",
|
@@ -285,7 +286,7 @@
|
|
285
286
|
" return \"\".join(random.choices(string.ascii_lowercase + string.digits, k=length))\n",
|
286
287
|
"\n",
|
287
288
|
"\n",
|
288
|
-
"def parse_adk_output_to_dictionary(events: list[Event]
|
289
|
+
"def parse_adk_output_to_dictionary(events: list[Event], *, as_json: bool = False):\n",
|
289
290
|
" \"\"\"\n",
|
290
291
|
" Parse ADK event output into a structured dictionary format,\n",
|
291
292
|
" with the predicted trajectory dumped as a JSON string.\n",
|
@@ -293,63 +294,54 @@
|
|
293
294
|
" \"\"\"\n",
|
294
295
|
"\n",
|
295
296
|
" final_response = \"\"\n",
|
296
|
-
"
|
297
|
+
" trajectory = []\n",
|
297
298
|
"\n",
|
298
299
|
" for event in events:\n",
|
299
|
-
"
|
300
|
-
" if not event.content or not event.content.parts:\n",
|
300
|
+
" if not getattr(event, \"content\", None) or not getattr(event.content, \"parts\", None):\n",
|
301
301
|
" continue\n",
|
302
|
-
"\n",
|
303
|
-
" # Iterate through ALL parts in the event's content\n",
|
304
302
|
" for part in event.content.parts:\n",
|
305
|
-
" if part
|
306
|
-
"
|
303
|
+
" if getattr(part, \"function_call\", None):\n",
|
304
|
+
" info = {\n",
|
307
305
|
" \"tool_name\": part.function_call.name,\n",
|
308
306
|
" \"tool_input\": dict(part.function_call.args),\n",
|
309
307
|
" }\n",
|
310
|
-
"
|
311
|
-
"
|
312
|
-
"
|
313
|
-
"\n",
|
314
|
-
" # The final text response is usually in the last event from the model\n",
|
315
|
-
" if event.content.role == \"model\" and part.text:\n",
|
316
|
-
" # Overwrite response; the last text response found is likely the final one\n",
|
308
|
+
" if info not in trajectory:\n",
|
309
|
+
" trajectory.append(info)\n",
|
310
|
+
" if event.content.role == \"model\" and getattr(part, \"text\", None):\n",
|
317
311
|
" final_response = part.text.strip()\n",
|
318
312
|
"\n",
|
319
|
-
"
|
320
|
-
"
|
321
|
-
"
|
322
|
-
" \
|
323
|
-
" }\n",
|
313
|
+
" if as_json:\n",
|
314
|
+
" trajectory_out = json.dumps(trajectory)\n",
|
315
|
+
" else:\n",
|
316
|
+
" trajectory_out = trajectory\n",
|
324
317
|
"\n",
|
325
|
-
" return
|
318
|
+
" return {\"response\": final_response, \"predicted_trajectory\": trajectory_out}\n",
|
326
319
|
"\n",
|
327
320
|
"\n",
|
328
321
|
"def format_output_as_markdown(output: dict) -> str:\n",
|
329
322
|
" \"\"\"Convert the output dictionary to a formatted markdown string.\"\"\"\n",
|
330
|
-
" markdown = \"### AI Response\\n\"\n",
|
331
|
-
" markdown += f\"{output['response']}\\n\\n\"\n",
|
332
|
-
"\n",
|
323
|
+
" markdown = \"### AI Response\\n\" + output[\"response\"] + \"\\n\\n\"\n",
|
333
324
|
" if output[\"predicted_trajectory\"]:\n",
|
334
|
-
" output[\"predicted_trajectory\"] = json.loads(output[\"predicted_trajectory\"])\n",
|
335
325
|
" markdown += \"### Function Calls\\n\"\n",
|
336
326
|
" for call in output[\"predicted_trajectory\"]:\n",
|
337
327
|
" markdown += f\"- **Function**: `{call['tool_name']}`\\n\"\n",
|
338
|
-
" markdown += \" - **Arguments
|
328
|
+
" markdown += \" - **Arguments**\\n\"\n",
|
339
329
|
" for key, value in call[\"tool_input\"].items():\n",
|
340
330
|
" markdown += f\" - `{key}`: `{value}`\\n\"\n",
|
341
|
-
"\n",
|
342
331
|
" return markdown\n",
|
343
332
|
"\n",
|
344
333
|
"\n",
|
345
334
|
"def display_eval_report(eval_result: pd.DataFrame) -> None:\n",
|
346
335
|
" \"\"\"Display the evaluation results.\"\"\"\n",
|
347
|
-
" metrics_df = pd.DataFrame.from_dict(eval_result.summary_metrics, orient=\"index\").T\n",
|
348
336
|
" display(Markdown(\"### Summary Metrics\"))\n",
|
349
|
-
" display(
|
350
|
-
"\n",
|
351
|
-
"
|
352
|
-
"
|
337
|
+
" display(\n",
|
338
|
+
" pd.DataFrame(\n",
|
339
|
+
" eval_result.summary_metrics.items(), columns=[\"metric\", \"value\"]\n",
|
340
|
+
" )\n",
|
341
|
+
" )\n",
|
342
|
+
" if getattr(eval_result, \"metrics_table\", None) is not None:\n",
|
343
|
+
" display(Markdown(\"### Row‑wise Metrics\"))\n",
|
344
|
+
" display(eval_result.metrics_table.head())\n",
|
353
345
|
"\n",
|
354
346
|
"\n",
|
355
347
|
"def display_drilldown(row: pd.Series) -> None:\n",
|
@@ -586,37 +578,49 @@
|
|
586
578
|
},
|
587
579
|
"outputs": [],
|
588
580
|
"source": [
|
589
|
-
"def agent_parsed_outcome(query):\n",
|
590
|
-
"\n",
|
591
|
-
"
|
592
|
-
"
|
593
|
-
"
|
594
|
-
"\n",
|
595
|
-
"
|
596
|
-
"
|
597
|
-
"
|
598
|
-
"
|
599
|
-
"
|
600
|
-
"
|
601
|
-
"
|
602
|
-
"
|
603
|
-
"
|
604
|
-
"
|
605
|
-
"
|
606
|
-
"\n",
|
607
|
-
"
|
608
|
-
"
|
609
|
-
"
|
610
|
-
"
|
611
|
-
"
|
612
|
-
"
|
613
|
-
"
|
614
|
-
"\n",
|
615
|
-
"
|
616
|
-
"
|
617
|
-
"
|
618
|
-
"
|
619
|
-
|
581
|
+
"async def agent_parsed_outcome(query):\n",
|
582
|
+
" app_name = \"product_research_app\"\n",
|
583
|
+
" user_id = \"user_one\"\n",
|
584
|
+
" session_id = \"session_one\"\n",
|
585
|
+
" \n",
|
586
|
+
" product_research_agent = Agent(\n",
|
587
|
+
" name=\"ProductResearchAgent\",\n",
|
588
|
+
" model=model,\n",
|
589
|
+
" description=\"An agent that performs product research.\",\n",
|
590
|
+
" instruction=f\"\"\"\n",
|
591
|
+
" Analyze this user request: '{query}'.\n",
|
592
|
+
" If the request is about price, use get_product_price tool.\n",
|
593
|
+
" Otherwise, use get_product_details tool to get product information.\n",
|
594
|
+
" \"\"\",\n",
|
595
|
+
" tools=[get_product_details, get_product_price],\n",
|
596
|
+
" )\n",
|
597
|
+
"\n",
|
598
|
+
" session_service = InMemorySessionService()\n",
|
599
|
+
" await session_service.create_session(\n",
|
600
|
+
" app_name=app_name, user_id=user_id, session_id=session_id\n",
|
601
|
+
" )\n",
|
602
|
+
"\n",
|
603
|
+
" runner = Runner(\n",
|
604
|
+
" agent=product_research_agent, app_name=app_name, session_service=session_service\n",
|
605
|
+
" )\n",
|
606
|
+
"\n",
|
607
|
+
" content = types.Content(role=\"user\", parts=[types.Part(text=query)])\n",
|
608
|
+
" events = [event async for event in runner.run_async(user_id=user_id, session_id=session_id, new_message=content)]\n",
|
609
|
+
" \n",
|
610
|
+
" return parse_adk_output_to_dictionary(events)\n"
|
611
|
+
]
|
612
|
+
},
|
613
|
+
{
|
614
|
+
"cell_type": "code",
|
615
|
+
"execution_count": null,
|
616
|
+
"metadata": {},
|
617
|
+
"outputs": [],
|
618
|
+
"source": [
|
619
|
+
"# --- Sync wrapper for Vertex‑AI evaluation\n",
|
620
|
+
"def agent_parsed_outcome_sync(prompt: str):\n",
|
621
|
+
" result = asyncio.run(agent_parsed_outcome(prompt))\n",
|
622
|
+
" result[\"predicted_trajectory\"] = json.dumps(result[\"predicted_trajectory\"])\n",
|
623
|
+
" return result"
|
620
624
|
]
|
621
625
|
},
|
622
626
|
{
|
@@ -638,7 +642,7 @@
|
|
638
642
|
},
|
639
643
|
"outputs": [],
|
640
644
|
"source": [
|
641
|
-
"response = agent_parsed_outcome(query=\"Get product details for shoes\")\n",
|
645
|
+
"response = await agent_parsed_outcome(query=\"Get product details for shoes\")\n",
|
642
646
|
"display(Markdown(format_output_as_markdown(response)))"
|
643
647
|
]
|
644
648
|
},
|
@@ -650,7 +654,7 @@
|
|
650
654
|
},
|
651
655
|
"outputs": [],
|
652
656
|
"source": [
|
653
|
-
"response = agent_parsed_outcome(query=\"Get product price for shoes\")\n",
|
657
|
+
"response = await agent_parsed_outcome(query=\"Get product price for shoes\")\n",
|
654
658
|
"display(Markdown(format_output_as_markdown(response)))"
|
655
659
|
]
|
656
660
|
},
|
@@ -714,7 +718,7 @@
|
|
714
718
|
" \"Get product details and price for shoes\",\n",
|
715
719
|
" \"Get product details for speaker?\",\n",
|
716
720
|
" ],\n",
|
717
|
-
" \"
|
721
|
+
" \"predicted_trajectory\": [\n",
|
718
722
|
" [\n",
|
719
723
|
" {\n",
|
720
724
|
" \"tool_name\": \"get_product_price\",\n",
|
@@ -840,7 +844,7 @@
|
|
840
844
|
")\n",
|
841
845
|
"\n",
|
842
846
|
"single_tool_call_eval_result = single_tool_call_eval_task.evaluate(\n",
|
843
|
-
" runnable=
|
847
|
+
" runnable=agent_parsed_outcome_sync, experiment_run_name=EXPERIMENT_RUN\n",
|
844
848
|
")\n",
|
845
849
|
"\n",
|
846
850
|
"display_eval_report(single_tool_call_eval_result)"
|
@@ -948,7 +952,7 @@
|
|
948
952
|
")\n",
|
949
953
|
"\n",
|
950
954
|
"trajectory_eval_result = trajectory_eval_task.evaluate(\n",
|
951
|
-
" runnable=
|
955
|
+
" runnable=agent_parsed_outcome_sync, experiment_run_name=EXPERIMENT_RUN\n",
|
952
956
|
")\n",
|
953
957
|
"\n",
|
954
958
|
"display_eval_report(trajectory_eval_result)"
|
@@ -1055,7 +1059,7 @@
|
|
1055
1059
|
")\n",
|
1056
1060
|
"\n",
|
1057
1061
|
"response_eval_result = response_eval_task.evaluate(\n",
|
1058
|
-
" runnable=
|
1062
|
+
" runnable=agent_parsed_outcome_sync, experiment_run_name=EXPERIMENT_RUN\n",
|
1059
1063
|
")\n",
|
1060
1064
|
"\n",
|
1061
1065
|
"display_eval_report(response_eval_result)"
|
@@ -1240,7 +1244,9 @@
|
|
1240
1244
|
")\n",
|
1241
1245
|
"\n",
|
1242
1246
|
"response_eval_tool_result = response_eval_tool_task.evaluate(\n",
|
1243
|
-
"
|
1247
|
+
" # Uncomment the line below if you are providing the agent with an unparsed dataset\n",
|
1248
|
+
" #runnable=agent_parsed_outcome_sync, \n",
|
1249
|
+
" experiment_run_name=EXPERIMENT_RUN\n",
|
1244
1250
|
")\n",
|
1245
1251
|
"\n",
|
1246
1252
|
"display_eval_report(response_eval_tool_result)"
|
@@ -1410,7 +1416,8 @@
|
|
1410
1416
|
"].apply(json.dumps)\n",
|
1411
1417
|
"byod_eval_sample_dataset[\"reference_trajectory\"] = byod_eval_sample_dataset[\n",
|
1412
1418
|
" \"reference_trajectory\"\n",
|
1413
|
-
"].apply(json.dumps)"
|
1419
|
+
"].apply(json.dumps)\n",
|
1420
|
+
"byod_eval_sample_dataset[\"response\"] = byod_eval_sample_dataset[\"response\"].apply(json.dumps)"
|
1414
1421
|
]
|
1415
1422
|
},
|
1416
1423
|
{
|
@@ -234,6 +234,7 @@
|
|
234
234
|
"outputs": [],
|
235
235
|
"source": [
|
236
236
|
"import json\n",
|
237
|
+
"import asyncio\n",
|
237
238
|
"\n",
|
238
239
|
"# General\n",
|
239
240
|
"import random\n",
|
@@ -285,7 +286,7 @@
|
|
285
286
|
" return \"\".join(random.choices(string.ascii_lowercase + string.digits, k=length))\n",
|
286
287
|
"\n",
|
287
288
|
"\n",
|
288
|
-
"def parse_adk_output_to_dictionary(events: list[Event]
|
289
|
+
"def parse_adk_output_to_dictionary(events: list[Event], *, as_json: bool = False):\n",
|
289
290
|
" \"\"\"\n",
|
290
291
|
" Parse ADK event output into a structured dictionary format,\n",
|
291
292
|
" with the predicted trajectory dumped as a JSON string.\n",
|
@@ -293,63 +294,54 @@
|
|
293
294
|
" \"\"\"\n",
|
294
295
|
"\n",
|
295
296
|
" final_response = \"\"\n",
|
296
|
-
"
|
297
|
+
" trajectory = []\n",
|
297
298
|
"\n",
|
298
299
|
" for event in events:\n",
|
299
|
-
"
|
300
|
-
" if not event.content or not event.content.parts:\n",
|
300
|
+
" if not getattr(event, \"content\", None) or not getattr(event.content, \"parts\", None):\n",
|
301
301
|
" continue\n",
|
302
|
-
"\n",
|
303
|
-
" # Iterate through ALL parts in the event's content\n",
|
304
302
|
" for part in event.content.parts:\n",
|
305
|
-
" if part
|
306
|
-
"
|
303
|
+
" if getattr(part, \"function_call\", None):\n",
|
304
|
+
" info = {\n",
|
307
305
|
" \"tool_name\": part.function_call.name,\n",
|
308
306
|
" \"tool_input\": dict(part.function_call.args),\n",
|
309
307
|
" }\n",
|
310
|
-
"
|
311
|
-
"
|
312
|
-
"
|
313
|
-
"\n",
|
314
|
-
" # The final text response is usually in the last event from the model\n",
|
315
|
-
" if event.content.role == \"model\" and part.text:\n",
|
316
|
-
" # Overwrite response; the last text response found is likely the final one\n",
|
308
|
+
" if info not in trajectory:\n",
|
309
|
+
" trajectory.append(info)\n",
|
310
|
+
" if event.content.role == \"model\" and getattr(part, \"text\", None):\n",
|
317
311
|
" final_response = part.text.strip()\n",
|
318
312
|
"\n",
|
319
|
-
"
|
320
|
-
"
|
321
|
-
"
|
322
|
-
" \
|
323
|
-
" }\n",
|
313
|
+
" if as_json:\n",
|
314
|
+
" trajectory_out = json.dumps(trajectory)\n",
|
315
|
+
" else:\n",
|
316
|
+
" trajectory_out = trajectory\n",
|
324
317
|
"\n",
|
325
|
-
" return
|
318
|
+
" return {\"response\": final_response, \"predicted_trajectory\": trajectory_out}\n",
|
326
319
|
"\n",
|
327
320
|
"\n",
|
328
321
|
"def format_output_as_markdown(output: dict) -> str:\n",
|
329
322
|
" \"\"\"Convert the output dictionary to a formatted markdown string.\"\"\"\n",
|
330
|
-
" markdown = \"### AI Response\\n\"\n",
|
331
|
-
" markdown += f\"{output['response']}\\n\\n\"\n",
|
332
|
-
"\n",
|
323
|
+
" markdown = \"### AI Response\\n\" + output[\"response\"] + \"\\n\\n\"\n",
|
333
324
|
" if output[\"predicted_trajectory\"]:\n",
|
334
|
-
" output[\"predicted_trajectory\"] = json.loads(output[\"predicted_trajectory\"])\n",
|
335
325
|
" markdown += \"### Function Calls\\n\"\n",
|
336
326
|
" for call in output[\"predicted_trajectory\"]:\n",
|
337
327
|
" markdown += f\"- **Function**: `{call['tool_name']}`\\n\"\n",
|
338
|
-
" markdown += \" - **Arguments
|
328
|
+
" markdown += \" - **Arguments**\\n\"\n",
|
339
329
|
" for key, value in call[\"tool_input\"].items():\n",
|
340
330
|
" markdown += f\" - `{key}`: `{value}`\\n\"\n",
|
341
|
-
"\n",
|
342
331
|
" return markdown\n",
|
343
332
|
"\n",
|
344
333
|
"\n",
|
345
334
|
"def display_eval_report(eval_result: pd.DataFrame) -> None:\n",
|
346
335
|
" \"\"\"Display the evaluation results.\"\"\"\n",
|
347
|
-
" metrics_df = pd.DataFrame.from_dict(eval_result.summary_metrics, orient=\"index\").T\n",
|
348
336
|
" display(Markdown(\"### Summary Metrics\"))\n",
|
349
|
-
" display(
|
350
|
-
"\n",
|
351
|
-
"
|
352
|
-
"
|
337
|
+
" display(\n",
|
338
|
+
" pd.DataFrame(\n",
|
339
|
+
" eval_result.summary_metrics.items(), columns=[\"metric\", \"value\"]\n",
|
340
|
+
" )\n",
|
341
|
+
" )\n",
|
342
|
+
" if getattr(eval_result, \"metrics_table\", None) is not None:\n",
|
343
|
+
" display(Markdown(\"### Row‑wise Metrics\"))\n",
|
344
|
+
" display(eval_result.metrics_table.head())\n",
|
353
345
|
"\n",
|
354
346
|
"\n",
|
355
347
|
"def display_drilldown(row: pd.Series) -> None:\n",
|
@@ -586,37 +578,49 @@
|
|
586
578
|
},
|
587
579
|
"outputs": [],
|
588
580
|
"source": [
|
589
|
-
"def agent_parsed_outcome(query):\n",
|
590
|
-
"\n",
|
591
|
-
"
|
592
|
-
"
|
593
|
-
"
|
594
|
-
"\n",
|
595
|
-
"
|
596
|
-
"
|
597
|
-
"
|
598
|
-
"
|
599
|
-
"
|
600
|
-
"
|
601
|
-
"
|
602
|
-
"
|
603
|
-
"
|
604
|
-
"
|
605
|
-
"
|
606
|
-
"\n",
|
607
|
-
"
|
608
|
-
"
|
609
|
-
"
|
610
|
-
"
|
611
|
-
"
|
612
|
-
"
|
613
|
-
"
|
614
|
-
"\n",
|
615
|
-
"
|
616
|
-
"
|
617
|
-
"
|
618
|
-
"
|
619
|
-
|
581
|
+
"async def agent_parsed_outcome(query):\n",
|
582
|
+
" app_name = \"product_research_app\"\n",
|
583
|
+
" user_id = \"user_one\"\n",
|
584
|
+
" session_id = \"session_one\"\n",
|
585
|
+
" \n",
|
586
|
+
" product_research_agent = Agent(\n",
|
587
|
+
" name=\"ProductResearchAgent\",\n",
|
588
|
+
" model=model,\n",
|
589
|
+
" description=\"An agent that performs product research.\",\n",
|
590
|
+
" instruction=f\"\"\"\n",
|
591
|
+
" Analyze this user request: '{query}'.\n",
|
592
|
+
" If the request is about price, use get_product_price tool.\n",
|
593
|
+
" Otherwise, use get_product_details tool to get product information.\n",
|
594
|
+
" \"\"\",\n",
|
595
|
+
" tools=[get_product_details, get_product_price],\n",
|
596
|
+
" )\n",
|
597
|
+
"\n",
|
598
|
+
" session_service = InMemorySessionService()\n",
|
599
|
+
" await session_service.create_session(\n",
|
600
|
+
" app_name=app_name, user_id=user_id, session_id=session_id\n",
|
601
|
+
" )\n",
|
602
|
+
"\n",
|
603
|
+
" runner = Runner(\n",
|
604
|
+
" agent=product_research_agent, app_name=app_name, session_service=session_service\n",
|
605
|
+
" )\n",
|
606
|
+
"\n",
|
607
|
+
" content = types.Content(role=\"user\", parts=[types.Part(text=query)])\n",
|
608
|
+
" events = [event async for event in runner.run_async(user_id=user_id, session_id=session_id, new_message=content)]\n",
|
609
|
+
" \n",
|
610
|
+
" return parse_adk_output_to_dictionary(events)\n"
|
611
|
+
]
|
612
|
+
},
|
613
|
+
{
|
614
|
+
"cell_type": "code",
|
615
|
+
"execution_count": null,
|
616
|
+
"metadata": {},
|
617
|
+
"outputs": [],
|
618
|
+
"source": [
|
619
|
+
"# --- Sync wrapper for Vertex‑AI evaluation\n",
|
620
|
+
"def agent_parsed_outcome_sync(prompt: str):\n",
|
621
|
+
" result = asyncio.run(agent_parsed_outcome(prompt))\n",
|
622
|
+
" result[\"predicted_trajectory\"] = json.dumps(result[\"predicted_trajectory\"])\n",
|
623
|
+
" return result"
|
620
624
|
]
|
621
625
|
},
|
622
626
|
{
|
@@ -638,7 +642,7 @@
|
|
638
642
|
},
|
639
643
|
"outputs": [],
|
640
644
|
"source": [
|
641
|
-
"response = agent_parsed_outcome(query=\"Get product details for shoes\")\n",
|
645
|
+
"response = await agent_parsed_outcome(query=\"Get product details for shoes\")\n",
|
642
646
|
"display(Markdown(format_output_as_markdown(response)))"
|
643
647
|
]
|
644
648
|
},
|
@@ -650,7 +654,7 @@
|
|
650
654
|
},
|
651
655
|
"outputs": [],
|
652
656
|
"source": [
|
653
|
-
"response = agent_parsed_outcome(query=\"Get product price for shoes\")\n",
|
657
|
+
"response = await agent_parsed_outcome(query=\"Get product price for shoes\")\n",
|
654
658
|
"display(Markdown(format_output_as_markdown(response)))"
|
655
659
|
]
|
656
660
|
},
|
@@ -714,7 +718,7 @@
|
|
714
718
|
" \"Get product details and price for shoes\",\n",
|
715
719
|
" \"Get product details for speaker?\",\n",
|
716
720
|
" ],\n",
|
717
|
-
" \"
|
721
|
+
" \"predicted_trajectory\": [\n",
|
718
722
|
" [\n",
|
719
723
|
" {\n",
|
720
724
|
" \"tool_name\": \"get_product_price\",\n",
|
@@ -840,7 +844,7 @@
|
|
840
844
|
")\n",
|
841
845
|
"\n",
|
842
846
|
"single_tool_call_eval_result = single_tool_call_eval_task.evaluate(\n",
|
843
|
-
" runnable=
|
847
|
+
" runnable=agent_parsed_outcome_sync, experiment_run_name=EXPERIMENT_RUN\n",
|
844
848
|
")\n",
|
845
849
|
"\n",
|
846
850
|
"display_eval_report(single_tool_call_eval_result)"
|
@@ -948,7 +952,7 @@
|
|
948
952
|
")\n",
|
949
953
|
"\n",
|
950
954
|
"trajectory_eval_result = trajectory_eval_task.evaluate(\n",
|
951
|
-
" runnable=
|
955
|
+
" runnable=agent_parsed_outcome_sync, experiment_run_name=EXPERIMENT_RUN\n",
|
952
956
|
")\n",
|
953
957
|
"\n",
|
954
958
|
"display_eval_report(trajectory_eval_result)"
|
@@ -1055,7 +1059,7 @@
|
|
1055
1059
|
")\n",
|
1056
1060
|
"\n",
|
1057
1061
|
"response_eval_result = response_eval_task.evaluate(\n",
|
1058
|
-
" runnable=
|
1062
|
+
" runnable=agent_parsed_outcome_sync, experiment_run_name=EXPERIMENT_RUN\n",
|
1059
1063
|
")\n",
|
1060
1064
|
"\n",
|
1061
1065
|
"display_eval_report(response_eval_result)"
|
@@ -1240,7 +1244,9 @@
|
|
1240
1244
|
")\n",
|
1241
1245
|
"\n",
|
1242
1246
|
"response_eval_tool_result = response_eval_tool_task.evaluate(\n",
|
1243
|
-
"
|
1247
|
+
" # Uncomment the line below if you are providing the agent with an unparsed dataset\n",
|
1248
|
+
" #runnable=agent_parsed_outcome_sync, \n",
|
1249
|
+
" experiment_run_name=EXPERIMENT_RUN\n",
|
1244
1250
|
")\n",
|
1245
1251
|
"\n",
|
1246
1252
|
"display_eval_report(response_eval_tool_result)"
|
@@ -1410,7 +1416,8 @@
|
|
1410
1416
|
"].apply(json.dumps)\n",
|
1411
1417
|
"byod_eval_sample_dataset[\"reference_trajectory\"] = byod_eval_sample_dataset[\n",
|
1412
1418
|
" \"reference_trajectory\"\n",
|
1413
|
-
"].apply(json.dumps)"
|
1419
|
+
"].apply(json.dumps)\n",
|
1420
|
+
"byod_eval_sample_dataset[\"response\"] = byod_eval_sample_dataset[\"response\"].apply(json.dumps)"
|
1414
1421
|
]
|
1415
1422
|
},
|
1416
1423
|
{
|