agent-starter-pack 0.6.3__py3-none-any.whl → 0.7.0__py3-none-any.whl
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.6.3.dist-info → agent_starter_pack-0.7.0.dist-info}/METADATA +16 -12
- {agent_starter_pack-0.6.3.dist-info → agent_starter_pack-0.7.0.dist-info}/RECORD +41 -39
- agents/adk_base/app/agent.py +1 -1
- agents/adk_base/template/.templateconfig.yaml +1 -1
- agents/adk_gemini_fullstack/README.md +1 -4
- agents/adk_gemini_fullstack/app/agent.py +62 -8
- agents/adk_gemini_fullstack/template/.templateconfig.yaml +1 -1
- agents/agentic_rag/app/agent.py +1 -1
- agents/agentic_rag/template/.templateconfig.yaml +1 -1
- agents/crewai_coding_crew/app/agent.py +1 -1
- agents/langgraph_base_react/app/agent.py +1 -1
- agents/live_api/app/agent.py +8 -4
- llm.txt +290 -0
- src/base_template/.gitignore +2 -1
- src/base_template/GEMINI.md +5 -0
- src/base_template/Makefile +21 -6
- src/base_template/deployment/cd/deploy-to-prod.yaml +3 -3
- src/base_template/deployment/cd/staging.yaml +4 -4
- src/base_template/deployment/ci/pr_checks.yaml +1 -1
- src/base_template/pyproject.toml +2 -2
- src/cli/utils/template.py +22 -9
- src/data_ingestion/uv.lock +97 -0
- src/frontends/adk_gemini_fullstack/frontend/package-lock.json +276 -0
- src/frontends/adk_gemini_fullstack/frontend/package.json +1 -0
- src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx +5 -4
- src/frontends/adk_gemini_fullstack/frontend/vite.config.ts +4 -0
- src/resources/docs/adk-cheatsheet.md +1224 -0
- src/resources/locks/uv-adk_base-agent_engine.lock +96 -60
- src/resources/locks/uv-adk_base-cloud_run.lock +137 -82
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +96 -60
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +137 -82
- src/resources/locks/uv-agentic_rag-agent_engine.lock +173 -142
- src/resources/locks/uv-agentic_rag-cloud_run.lock +246 -200
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +493 -248
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +585 -306
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +185 -154
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +258 -212
- src/resources/locks/uv-live_api-cloud_run.lock +228 -182
- src/frontends/adk_gemini_fullstack/frontend/public/vite.svg +0 -1
- {agent_starter_pack-0.6.3.dist-info → agent_starter_pack-0.7.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.6.3.dist-info → agent_starter_pack-0.7.0.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.6.3.dist-info → agent_starter_pack-0.7.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: agent-starter-pack
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.7.0
|
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
|
@@ -46,7 +46,7 @@ It accelerates development by providing a holistic, production-ready solution, a
|
|
46
46
|
|
47
47
|
| ⚡️ Launch | 🧪 Experiment | ✅ Deploy | 🛠️ Customize |
|
48
48
|
|---|---|---|---|
|
49
|
-
| [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. |
|
49
|
+
| [Pre-built agent templates](./agents/) (ReAct, RAG, multi-agent, Live API). | [Vertex AI evaluation](https://cloud.google.com/vertex-ai/generative-ai/docs/models/evaluation-overview) and an interactive playground. | Production-ready infra with [monitoring, observability](https://googlecloudplatform.github.io/agent-starter-pack/guide/observability), and [CI/CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/deployment) on [Cloud Run](https://cloud.google.com/run) or [Agent Engine](https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/overview). | Extend and customize templates according to your needs. 🆕 Now integrating with [Gemini CLI](https://github.com/google-gemini/gemini-cli) |
|
50
50
|
|
51
51
|
---
|
52
52
|
|
@@ -59,30 +59,34 @@ Ready to build your AI agent? Simply run this command:
|
|
59
59
|
python -m venv .venv && source .venv/bin/activate
|
60
60
|
|
61
61
|
# Install the agent starter pack
|
62
|
-
pip install agent-starter-pack
|
62
|
+
pip install --upgrade agent-starter-pack
|
63
63
|
|
64
64
|
# Create a new agent project
|
65
65
|
agent-starter-pack create my-awesome-agent
|
66
66
|
```
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
---
|
72
|
-
|
73
|
-
🆕 The starter pack offers full support for Agent Engine, a new fully managed solution to deploy agents. Simply run this command to get started:
|
68
|
+
<details>
|
69
|
+
<summary> ✨ Alternative: Using uv</summary>
|
74
70
|
|
71
|
+
If you have [`uv`](https://github.com/astral-sh/uv) installed, you can create and set up your project with a single command:
|
75
72
|
```bash
|
76
|
-
agent-starter-pack create my-agent
|
73
|
+
uvx agent-starter-pack create my-fullstack-agent
|
77
74
|
```
|
75
|
+
This command handles creating the project without needing to pre-install the package into a virtual environment.
|
76
|
+
</details>
|
78
77
|
|
79
|
-
|
78
|
+
**That's it!** You now have a fully functional agent project—complete with backend, frontend, and deployment infrastructure—ready for you to explore and customize.
|
79
|
+
|
80
|
+
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).
|
81
|
+
|
82
|
+
---
|
80
83
|
|
81
84
|
## 🤖 Agents
|
82
85
|
|
83
86
|
| Agent Name | Description |
|
84
87
|
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
|
85
88
|
| `adk_base` | A base ReAct agent implemented using Google's [Agent Development Kit](https://github.com/google/adk-python) |
|
89
|
+
| `adk_gemini_fullstack` | A production-ready fullstack research agent with Gemini that demonstrates complex agentic workflows, modular agent design, and Human-in-the-Loop steps. [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) |
|
86
90
|
| `agentic_rag` | A RAG agent for document retrieval and Q&A. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview). |
|
87
91
|
| `langgraph_base_react` | An agent implementing a base ReAct agent using LangGraph |
|
88
92
|
| `crewai_coding_crew` | A multi-agent system implemented with CrewAI created to support coding activities |
|
@@ -99,7 +103,7 @@ Looking to explore more ADK examples? Check out the [ADK Samples Repository](htt
|
|
99
103
|
The `agent-starter-pack` offers two key features to accelerate and simplify the development of your agent:
|
100
104
|
- **🔄 [CI/CD Automation (Experimental)](https://googlecloudplatform.github.io/agent-starter-pack/cli/setup_cicd)** - One command to set up a complete GitHub + Cloud Build pipeline for all environments
|
101
105
|
- **📥 [Data Pipeline for RAG with Terraform/CI-CD](https://googlecloudplatform.github.io/agent-starter-pack/guide/data-ingestion)** - Seamlessly integrate a data pipeline to process embeddings for RAG into your agent system. Supporting [Vertex AI Search](https://cloud.google.com/generative-ai-app-builder/docs/enterprise-search-introduction) and [Vector Search](https://cloud.google.com/vertex-ai/docs/vector-search/overview).
|
102
|
-
|
106
|
+
* **🤖 Gemini CLI Integration** - Use the [Gemini CLI](https://github.com/google-gemini/gemini-cli) and the included `GEMINI.md` context file to ask questions about your template, agent architecture, and the path to production. Get instant guidance and code examples directly in your terminal.
|
103
107
|
|
104
108
|
## High-Level Architecture
|
105
109
|
|
@@ -1,26 +1,26 @@
|
|
1
1
|
agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
|
2
|
-
agents/adk_base/app/agent.py,sha256=
|
2
|
+
agents/adk_base/app/agent.py,sha256=6Q6QegQDxEaAck989DPIb3ArHMZtw_YJBqhHFqg-UjQ,2182
|
3
3
|
agents/adk_base/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
|
4
4
|
agents/adk_base/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
5
|
-
agents/adk_base/template/.templateconfig.yaml,sha256=
|
5
|
+
agents/adk_base/template/.templateconfig.yaml,sha256=EWfw7zqlQsxKrmMdiqwSemIhx3ke6i6a5mqZ3z94KDI,893
|
6
6
|
agents/adk_base/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
7
|
-
agents/adk_gemini_fullstack/README.md,sha256=
|
8
|
-
agents/adk_gemini_fullstack/app/agent.py,sha256=
|
7
|
+
agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
|
8
|
+
agents/adk_gemini_fullstack/app/agent.py,sha256=NXOkYFxDccJaSq55CTS-UYY8z5-WgBZqexII0Ybzk9c,22662
|
9
9
|
agents/adk_gemini_fullstack/app/config.py,sha256=x--axECPKWW3oLANKz2_4zzHEBIU7if8iYNZRjlTNV0,1563
|
10
10
|
agents/adk_gemini_fullstack/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
|
11
11
|
agents/adk_gemini_fullstack/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
12
|
-
agents/adk_gemini_fullstack/template/.templateconfig.yaml,sha256=
|
12
|
+
agents/adk_gemini_fullstack/template/.templateconfig.yaml,sha256=yRLZdEON4faicYe9hklktxv06OCx1sdP9ihuniKuPfU,1658
|
13
13
|
agents/adk_gemini_fullstack/tests/integration/test_agent.py,sha256=VypgpEWrQegJBgc58V-BlIsbqh-Hii-hwmkwcz5feFw,1969
|
14
14
|
agents/agentic_rag/README.md,sha256=mxMLkq6tAghFaDmc2sc2sEQ5vn9kGWdiRxfTykwpLz0,2268
|
15
|
-
agents/agentic_rag/app/agent.py,sha256=
|
15
|
+
agents/agentic_rag/app/agent.py,sha256=tKtzez7vGu6JgMWmZN7QrKkyLBvHu1ondAuICjKoC-g,3983
|
16
16
|
agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0Wp6gEFVk,4561
|
17
17
|
agents/agentic_rag/app/templates.py,sha256=8N_uRchwiN7hlH9Y8rdJ1CAtOhpHUWZkXZZ7IU-YJJk,867
|
18
18
|
agents/agentic_rag/notebooks/adk_app_testing.ipynb,sha256=kWYd-ButNGemupiPDIzhlQO0elxWCwiea0nhmnsW8cg,9619
|
19
19
|
agents/agentic_rag/notebooks/evaluating_adk_agent.ipynb,sha256=OMTiT3gAFWPvE9pPL8z7tsDwOU-l8wem5wH-OXPPlvk,56805
|
20
|
-
agents/agentic_rag/template/.templateconfig.yaml,sha256=
|
20
|
+
agents/agentic_rag/template/.templateconfig.yaml,sha256=xZlSDarlNwppW6gjHXdxQMbUZAVpXwHPalVTS4Zbln8,1223
|
21
21
|
agents/agentic_rag/tests/integration/test_agent.py,sha256=mxsKFyZrwXzIvAoxlqZv2JndM3VTVTKcugRYdF3APr4,2112
|
22
22
|
agents/crewai_coding_crew/README.md,sha256=4No7sfHQVHELARGiT3fWANJzDR0NP48ow4ct3FoPwlA,1672
|
23
|
-
agents/crewai_coding_crew/app/agent.py,sha256=
|
23
|
+
agents/crewai_coding_crew/app/agent.py,sha256=yd-P2Jzx3Do4FQuhwDsok-YRNYFi9Vl8OTqSlbdn4Sw,3260
|
24
24
|
agents/crewai_coding_crew/app/crew/crew.py,sha256=pqeeJ4txP-gcVT3PKEAw2zZ4x8g4cDlnFFbf0_zZRr4,2000
|
25
25
|
agents/crewai_coding_crew/app/crew/config/agents.yaml,sha256=Cn9zTcP3C-8MvlV19cYdlxR0iIs2_FOy2gKOJLUpNRo,1154
|
26
26
|
agents/crewai_coding_crew/app/crew/config/tasks.yaml,sha256=SSFuiSQPhi4dM0V5HdNuMqtN7JJr5RUCMhhBzUkPBpc,1511
|
@@ -29,29 +29,31 @@ agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW4
|
|
29
29
|
agents/crewai_coding_crew/template/.templateconfig.yaml,sha256=4SLcpHgDcf_6mjJCxPVciQ002QVz09V04uvbtMLZs4A,1051
|
30
30
|
agents/crewai_coding_crew/tests/integration/test_agent.py,sha256=0uvfmM3FSdESIU7ICb2oqABsQqylQU2PE3UBwbpif-A,1629
|
31
31
|
agents/langgraph_base_react/README.md,sha256=KZQ0e8q9CqnIEiItH9Tc2Ceb2mC3sBcyQUo-ZAmO-zs,482
|
32
|
-
agents/langgraph_base_react/app/agent.py,sha256=
|
32
|
+
agents/langgraph_base_react/app/agent.py,sha256=yzCc5JaOJgItoBiZOzHPiSy9aD2HGeGI_pH7nrysSmg,2505
|
33
33
|
agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb,sha256=PlW41fL-ji9NKkimW6u25YRLGWN2pgoX2G8w5nzIEPE,58737
|
34
34
|
agents/langgraph_base_react/template/.templateconfig.yaml,sha256=jHh3WDNT70KMbA2zy3Da_J_jIWeGfeiqIKfUs5B8OBk,1049
|
35
35
|
agents/langgraph_base_react/tests/integration/test_agent.py,sha256=wg2Y8V4l7dh7rhWy7Z8zioDW5ILRsz7RZJ-mz0AhK3U,1619
|
36
36
|
agents/live_api/README.md,sha256=c3lu5WguOUBc5hO_UtNZfVhfYxvSzMXuGFICn9M38mU,2897
|
37
|
-
agents/live_api/app/agent.py,sha256=
|
37
|
+
agents/live_api/app/agent.py,sha256=dYE2qd64OhL-fOgwzrjqN50LYXAgJ1TWbx6ohqtV5Rc,2434
|
38
38
|
agents/live_api/app/server.py,sha256=ZXriNDl_zo7WDRBke85lyzMsy66qGzPaRXY1FMy4Fdw,7793
|
39
39
|
agents/live_api/template/.templateconfig.yaml,sha256=DD_hihMsuqmd5VWS18vVGZ3ZGVVpFWVXJ2dU07eKb6k,964
|
40
40
|
agents/live_api/tests/integration/test_server_e2e.py,sha256=D2VETDIyTD2fQyQ6DXwLr-POSYyVzzzcpIFLt5Ppyx4,8398
|
41
41
|
agents/live_api/tests/load_test/load_test.py,sha256=HHZyfC4gqiQtZVF_CbbxENGgWQccMLpwMv0IdoQ6cbQ,1275
|
42
42
|
agents/live_api/tests/unit/test_server.py,sha256=_TjlgQgNkjerIaBGnu8P8_KB8ZlSolDcivALpUOn_Rw,4786
|
43
|
-
|
44
|
-
src/base_template
|
43
|
+
llm.txt,sha256=cZkWdzV2hRPIcV57E5J2zjnEiRntM6MrisFLstE4iYY,12140
|
44
|
+
src/base_template/.gitignore,sha256=bM9stR1IiKW5RVcryDyXj8ZgmKbN3x-3OCneDsmRZUg,2589
|
45
|
+
src/base_template/GEMINI.md,sha256=WzscHWlQeYkKORZ-453P8KM9IHuj1kAxW-69c7Ytuwk,133
|
46
|
+
src/base_template/Makefile,sha256=037wvhexHIZyWW451D4vkvNnldTznxDFZ0sleUvl8jU,6115
|
45
47
|
src/base_template/README.md,sha256=d9vGHGZzpgbcgu-J-9gHr3NOV7nuRzgFzdSxSzwY3xs,10694
|
46
|
-
src/base_template/pyproject.toml,sha256=
|
48
|
+
src/base_template/pyproject.toml,sha256=B7pnk8dhEWLEqPYQ0wqbbRGAVPZSjnPPP1imoFnilJw,2840
|
47
49
|
src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
|
48
50
|
src/base_template/app/utils/gcs.py,sha256=jKblaWOGQEigw3esaawcfX178shhZi2Fyk0fJSA4T68,1501
|
49
51
|
src/base_template/app/utils/tracing.py,sha256=2rv1Ukh2jTBENDwoghCItJ28l-Sjz9gMlzdojlVgJa4,6052
|
50
52
|
src/base_template/app/utils/typing.py,sha256=DP5OZC3IGvqA1XbvWt8kI3gyAK3ZjzUSL5Ca17wNeLI,4249
|
51
53
|
src/base_template/deployment/README.md,sha256=qWTCWyEj1bZuny3XyCelXPgljh6yu_GDwfPNUeFoXBY,5245
|
52
|
-
src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=
|
53
|
-
src/base_template/deployment/cd/staging.yaml,sha256=
|
54
|
-
src/base_template/deployment/ci/pr_checks.yaml,sha256=
|
54
|
+
src/base_template/deployment/cd/deploy-to-prod.yaml,sha256=3NslaDpk4dHNDC594Dsc7Ggboh_4jRixhZ5SYbBCdyM,4376
|
55
|
+
src/base_template/deployment/cd/staging.yaml,sha256=Fy_Qw2lvA35BQUeSjPsWWfYgOmtvSZSkS38RgT9dZmQ,8004
|
56
|
+
src/base_template/deployment/ci/pr_checks.yaml,sha256=VFdF6q_-zETCMlJkJ0znW8T7gCYE59BZNliNPz2Bh18,1517
|
55
57
|
src/base_template/deployment/terraform/apis.tf,sha256=98vqe53RLtFwnQq_9N1widR8J0c1SGqwhCXp_GohITA,1497
|
56
58
|
src/base_template/deployment/terraform/build_triggers.tf,sha256=_XDFj6kPd21NmEKKRjpqYIa48P8VHCMVG_6thLqrS0Y,6363
|
57
59
|
src/base_template/deployment/terraform/iam.tf,sha256=-KrOngRch4gKnPkZy0ybQQq0RW5-TI80tJ-VJLg-AdA,5597
|
@@ -78,11 +80,11 @@ src/cli/utils/cicd.py,sha256=m2BxwV39323rVzJCjJjB37IPdSNQdxVgXGrgnhdbb84,26040
|
|
78
80
|
src/cli/utils/datastores.py,sha256=gv1V6eDcOEKx4MRNG5C3Y-VfixYq1AzQuaYMLp8QRNo,1058
|
79
81
|
src/cli/utils/gcp.py,sha256=cnuCyN144eiyYc9aJNEK9JnyWN66rdevugoMdDYC1UU,4032
|
80
82
|
src/cli/utils/logging.py,sha256=0lHe4EPi1A8sOx9xkA7gS4UNl0GsIyp2ahydkkuCzLY,1570
|
81
|
-
src/cli/utils/template.py,sha256=
|
83
|
+
src/cli/utils/template.py,sha256=rb3QoP-5AxEXYImsSR6wJhcF8bZRo-PzU1H6uNMsrk0,29709
|
82
84
|
src/cli/utils/version.py,sha256=F4udQmzniPStqWZFIgnv3Qg3l9non4mfy2An-Oveqmc,2916
|
83
85
|
src/data_ingestion/README.md,sha256=LNxSQoJW9JozK-TbyGQLj5L_MGWNwrfLk6V6RmQ2oBQ,4032
|
84
86
|
src/data_ingestion/pyproject.toml,sha256=-1Mf2QB8K70ICQV5UPZDpf-fN3UwEQLVzQyxfakCSTY,445
|
85
|
-
src/data_ingestion/uv.lock,sha256=
|
87
|
+
src/data_ingestion/uv.lock,sha256=nzF1JbCYbbkkWEaFanR3WrZ6ql6CrFXkeieCTgFJUmg,162793
|
86
88
|
src/data_ingestion/data_ingestion_pipeline/pipeline.py,sha256=UAS6dxV954yARP0NdDbCf5kzap3NfmoX52eZ2mZtWXs,3331
|
87
89
|
src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py,sha256=tWGqL0zUB3V5JxR1SpX7LMjCW5r6JEGnvgF8tAxZ12s,7784
|
88
90
|
src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py,sha256=QbPmk6V7JPGo5Yc1BhL-1W_t9CXEN0iY5NKaGWlfSbM,10667
|
@@ -104,19 +106,18 @@ src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder,sha256=Zb
|
|
104
106
|
src/frontends/adk_gemini_fullstack/frontend/components.json,sha256=OUAALKbVpmIHQ16HcK1BgLBbVf_rV7s08PuGqgCFJ-o,423
|
105
107
|
src/frontends/adk_gemini_fullstack/frontend/eslint.config.js,sha256=3ADH23ANA4NNBKFy6nCVk65e8bx1DrVd_FIaYNnhuqA,734
|
106
108
|
src/frontends/adk_gemini_fullstack/frontend/index.html,sha256=cGmA25GOzciMX6ABt1SW_SqnrgPXGGf-1Pbkx2eMByQ,306
|
107
|
-
src/frontends/adk_gemini_fullstack/frontend/package-lock.json,sha256=
|
108
|
-
src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=
|
109
|
+
src/frontends/adk_gemini_fullstack/frontend/package-lock.json,sha256=DMSGcDHDWvcxRVbgaPqI2O0Z7HJk5PAiZmLfAVifPns,218303
|
110
|
+
src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=bUzgvwGx8oVL2wHYbSNizO0EI1CjLd0jcWirJI-cxwA,1312
|
109
111
|
src/frontends/adk_gemini_fullstack/frontend/tsconfig.json,sha256=LtqiCB6w68AjbIegDnbXa1YXKM_RQZZVVkAjfUNxyBo,753
|
110
112
|
src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json,sha256=1BewvjsiZMJqSGXTqe94jo5yKdpi7yqI7UGoHgTv9mg,593
|
111
|
-
src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=
|
112
|
-
src/frontends/adk_gemini_fullstack/frontend/public/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
113
|
+
src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=nmeV8oQoQe7SxIVNalYeR8Dw9LOQrcxTWyBUYxLr_Ns,1359
|
113
114
|
src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=X624JJ2LaDm1ztjb23r15f2fRzilVp6CNpw80HtuCAg,21473
|
114
115
|
src/frontends/adk_gemini_fullstack/frontend/src/global.css,sha256=uNpkk45y9XVsmQs84D0KHN8B2i55ElSFZxHu6zml5E8,5037
|
115
116
|
src/frontends/adk_gemini_fullstack/frontend/src/main.tsx,sha256=WYYxbfb0WHrY1BW7KB-pCxb3jslb1UeCDa26l9Ve0SQ,328
|
116
117
|
src/frontends/adk_gemini_fullstack/frontend/src/utils.ts,sha256=Utm02hSGixxQ_T4hqlZqpdc8BuK1B2Mgk5X0vNK3V_4,170
|
117
118
|
src/frontends/adk_gemini_fullstack/frontend/src/vite-env.d.ts,sha256=ZZlpNvuwQpFfe3SiAPzd5-QQ8ypmmxq5WXz6pLD63bU,38
|
118
119
|
src/frontends/adk_gemini_fullstack/frontend/src/components/ActivityTimeline.tsx,sha256=FfDYEJyBc5vZYOBATcLyJRl1IYjb1B-0qv79dN8DqBI,9616
|
119
|
-
src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx,sha256=
|
120
|
+
src/frontends/adk_gemini_fullstack/frontend/src/components/ChatMessagesView.tsx,sha256=pRyJ9NJedSVL_58mYyy4ENKfjmcFs9IxdMzVmci5F4I,14517
|
120
121
|
src/frontends/adk_gemini_fullstack/frontend/src/components/InputForm.tsx,sha256=8YjXJ2251qAunm5nEgVSto70pe3yoxGGqbU3hDSIB30,1875
|
121
122
|
src/frontends/adk_gemini_fullstack/frontend/src/components/WelcomeScreen.tsx,sha256=cs3ogNX5U4_divL_3AA_75PPh5m7JqkfO8upemcPEQk,2064
|
122
123
|
src/frontends/adk_gemini_fullstack/frontend/src/components/ui/badge.tsx,sha256=RK5qi9QBQLZRULdg46yX_sdQ05NTBq4EkuegeLa6I4A,1627
|
@@ -175,28 +176,29 @@ src/frontends/streamlit/frontend/utils/stream_handler.py,sha256=-XVRfLH6ck1KP6NS
|
|
175
176
|
src/frontends/streamlit/frontend/utils/title_summary.py,sha256=B0cadS_KPW-tsbABauI4J681aqjEtuKFDa25e9R1WKc,3030
|
176
177
|
src/resources/containers/data_processing/Dockerfile,sha256=VoB9d5yZiiWnqRfWrIq0gGNMzZg-eVy733OgP72ZgO0,950
|
177
178
|
src/resources/containers/e2e-tests/Dockerfile,sha256=Q_aTyX_iaFY8j06XZkpMuggJnNO5daiLmmrvqaZHMxw,1611
|
179
|
+
src/resources/docs/adk-cheatsheet.md,sha256=SHtckZqDg60Bz_Id7qc2TY6ftz_X2bh88RQi4gCYb4E,58717
|
178
180
|
src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
|
179
181
|
src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
|
180
182
|
src/resources/idx/.idx/dev.nix,sha256=XQ4T1xt5I-8SVwnI37v56RFFlxa58Ko-a9G2-oelYAI,1602
|
181
|
-
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=
|
182
|
-
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=
|
183
|
-
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=
|
184
|
-
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=
|
185
|
-
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=
|
186
|
-
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=
|
187
|
-
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=
|
188
|
-
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=
|
189
|
-
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=
|
190
|
-
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=
|
191
|
-
src/resources/locks/uv-live_api-cloud_run.lock,sha256=
|
183
|
+
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=0OrJhKC_JVKgX-S9fFxRujnKEvmOEpd8vCyfkesqLAs,359057
|
184
|
+
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=itu4YI-tXc1hN7ncu0_uK2qbEhFY3Wu2tO4GoysGfSA,444902
|
185
|
+
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=0OrJhKC_JVKgX-S9fFxRujnKEvmOEpd8vCyfkesqLAs,359057
|
186
|
+
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=itu4YI-tXc1hN7ncu0_uK2qbEhFY3Wu2tO4GoysGfSA,444902
|
187
|
+
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=TAMmD1WW_Ge35kKaY4w1FdN3aEih7_kRSWc7kXQobOA,523699
|
188
|
+
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=5IM5puIbWmY4a3PGTcaIiG-Iu6E-QillJh5b105pDL4,681704
|
189
|
+
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=jZVg40hOaiMhCF4dB6BMpQ8WanHPhGFYVRMqPX_Hg8I,813314
|
190
|
+
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=QX5ZQX9c7s9FnPyCXfVdBFDfz8rsQ___iDcZvuukZ34,1045488
|
191
|
+
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=D3N9GNNKiX8pK2Yivw6f77oID4wRAs1MhUIoSXGv-3g,671381
|
192
|
+
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=dATDd1pQguY0Mo_2MCKn24cRzk7ZtAK0DG7_08RkLNY,873288
|
193
|
+
src/resources/locks/uv-live_api-cloud_run.lock,sha256=aFvPKu0r23qSH2V9_1rTUuJNBG9UseDLnT6QM_g3nfo,795390
|
192
194
|
src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
|
193
195
|
src/resources/setup_cicd/github.tf,sha256=scTBgeZlCM74N-pzhVKsnTN0PX9a5GboNl1HN3-LlCM,2791
|
194
196
|
src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
|
195
197
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
196
198
|
src/utils/lock_utils.py,sha256=RSE6n3hBkH64xNm3Q5wrR0Pqbeo-oc7xaTOhA9yzHjk,2275
|
197
199
|
src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
|
198
|
-
agent_starter_pack-0.
|
199
|
-
agent_starter_pack-0.
|
200
|
-
agent_starter_pack-0.
|
201
|
-
agent_starter_pack-0.
|
202
|
-
agent_starter_pack-0.
|
200
|
+
agent_starter_pack-0.7.0.dist-info/METADATA,sha256=0Op9EZV9jjK0MPZ1SJ5rpATz_-cdMjEIxkwFy0KiGII,11146
|
201
|
+
agent_starter_pack-0.7.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
202
|
+
agent_starter_pack-0.7.0.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
203
|
+
agent_starter_pack-0.7.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
204
|
+
agent_starter_pack-0.7.0.dist-info/RECORD,,
|
agents/adk_base/app/agent.py
CHANGED
@@ -60,7 +60,7 @@ def get_current_time(query: str) -> str:
|
|
60
60
|
|
61
61
|
root_agent = Agent(
|
62
62
|
name="root_agent",
|
63
|
-
model="gemini-2.
|
63
|
+
model="gemini-2.5-flash",
|
64
64
|
instruction="You are a helpful AI assistant designed to provide accurate and useful information.",
|
65
65
|
tools=[get_weather, get_current_time],
|
66
66
|
)
|
@@ -17,6 +17,6 @@ example_question: "What's the weather in San Francisco?"
|
|
17
17
|
settings:
|
18
18
|
requires_data_ingestion: false
|
19
19
|
deployment_targets: ["agent_engine", "cloud_run"]
|
20
|
-
extra_dependencies: ["google-adk~=1.4.
|
20
|
+
extra_dependencies: ["google-adk~=1.4.2"]
|
21
21
|
tags: ["adk"]
|
22
22
|
frontend_type: "None"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Gemini Fullstack Agent Development Kit (ADK) Quickstart
|
2
2
|
|
3
|
-
> 🔍 **Sample Agent**: This agent is part of the [ADK Samples](https://github.com/google/adk-samples) collection, showcasing agent implementations using the Agent Development Kit.
|
3
|
+
> 🔍 **Sample Agent**: This agent is part of the [ADK Samples](https://github.com/google/adk-samples/tree/main/python/agents/gemini-fullstack) collection, showcasing agent implementations using the Agent Development Kit.
|
4
4
|
|
5
5
|
The **Gemini Fullstack Agent Development Kit (ADK) Quickstart** is a production-ready blueprint for building a sophisticated, fullstack research agent with Gemini. It's built to demonstrate how the ADK helps structure complex agentic workflows, build modular agents, and incorporate critical Human-in-the-Loop (HITL) steps.
|
6
6
|
|
@@ -25,6 +25,3 @@ The **Gemini Fullstack Agent Development Kit (ADK) Quickstart** is a production-
|
|
25
25
|
</tr>
|
26
26
|
</tbody>
|
27
27
|
</table>
|
28
|
-
|
29
|
-
Here's a screenshot of the application in action:
|
30
|
-
<img src="../../docs/images/adk_gemini_fullstack_preview.png" alt="Gemini Fullstack ADK Preview">
|
@@ -182,12 +182,33 @@ class EscalationChecker(BaseAgent):
|
|
182
182
|
plan_generator = LlmAgent(
|
183
183
|
model=config.worker_model,
|
184
184
|
name="plan_generator",
|
185
|
-
description="Generates
|
185
|
+
description="Generates or refine the existing 5 line action-oriented research plan, using minimal search only for topic clarification.",
|
186
186
|
instruction=f"""
|
187
|
-
You are a research strategist. Your job is to create a high-level RESEARCH PLAN, not a summary.
|
188
|
-
|
189
|
-
|
187
|
+
You are a research strategist. Your job is to create a high-level RESEARCH PLAN, not a summary. If there is already a RESEARCH PLAN in the session state,
|
188
|
+
improve upon it based on the user feedback.
|
189
|
+
|
190
|
+
RESEARCH PLAN(SO FAR):
|
191
|
+
{{ research_plan? }}
|
192
|
+
|
193
|
+
**GENERAL INSTRUCTION: CLASSIFY TASK TYPES**
|
194
|
+
Your plan must clearly classify each goal for downstream execution. Each bullet point should start with a task type prefix:
|
195
|
+
- **`[RESEARCH]`**: For goals that primarily involve information gathering, investigation, analysis, or data collection (these require search tool usage by a researcher).
|
196
|
+
- **`[DELIVERABLE]`**: For goals that involve synthesizing collected information, creating structured outputs (e.g., tables, charts, summaries, reports), or compiling final output artifacts (these are executed AFTER research tasks, often without further search).
|
197
|
+
|
198
|
+
**INITIAL RULE: Your initial output MUST start with a bulleted list of 5 action-oriented research goals or key questions, followed by any *inherently implied* deliverables.**
|
199
|
+
- All initial 5 goals will be classified as `[RESEARCH]` tasks.
|
200
|
+
- A good goal for `[RESEARCH]` starts with a verb like "Analyze," "Identify," "Investigate."
|
190
201
|
- A bad output is a statement of fact like "The event was in April 2024."
|
202
|
+
- **Proactive Implied Deliverables (Initial):** If any of your initial 5 `[RESEARCH]` goals inherently imply a standard output or deliverable (e.g., a comparative analysis suggesting a comparison table, or a comprehensive review suggesting a summary document), you MUST add these as additional, distinct goals immediately after the initial 5. Phrase these as *synthesis or output creation actions* (e.g., "Create a summary," "Develop a comparison," "Compile a report") and prefix them with `[DELIVERABLE][IMPLIED]`.
|
203
|
+
|
204
|
+
**REFINEMENT RULE**:
|
205
|
+
- **Integrate Feedback & Mark Changes:** When incorporating user feedback, make targeted modifications to existing bullet points. Add `[MODIFIED]` to the existing task type and status prefix (e.g., `[RESEARCH][MODIFIED]`). If the feedback introduces new goals:
|
206
|
+
- If it's an information gathering task, prefix it with `[RESEARCH][NEW]`.
|
207
|
+
- If it's a synthesis or output creation task, prefix it with `[DELIVERABLE][NEW]`.
|
208
|
+
- **Proactive Implied Deliverables (Refinement):** Beyond explicit user feedback, if the nature of an existing `[RESEARCH]` goal (e.g., requiring a structured comparison, deep dive analysis, or broad synthesis) or a `[DELIVERABLE]` goal inherently implies an additional, standard output or synthesis step (e.g., a detailed report following a summary, or a visual representation of complex data), proactively add this as a new goal. Phrase these as *synthesis or output creation actions* and prefix them with `[DELIVERABLE][IMPLIED]`.
|
209
|
+
- **Maintain Order:** Strictly maintain the original sequential order of existing bullet points. New bullets, whether `[NEW]` or `[IMPLIED]`, should generally be appended to the list, unless the user explicitly instructs a specific insertion point.
|
210
|
+
- **Flexible Length:** The refined plan is no longer constrained by the initial 5-bullet limit and may comprise more goals as needed to fully address the feedback and implied deliverables.
|
211
|
+
|
191
212
|
**TOOL USE IS STRICTLY LIMITED:**
|
192
213
|
Your goal is to create a generic, high-quality plan *without searching*.
|
193
214
|
Only use `google_search` if a topic is ambiguous or time-sensitive and you absolutely cannot create a plan without a key piece of identifying information.
|
@@ -204,6 +225,7 @@ section_planner = LlmAgent(
|
|
204
225
|
description="Breaks down the research plan into a structured markdown outline of report sections.",
|
205
226
|
instruction="""
|
206
227
|
You are an expert report architect. Using the research topic and the plan from the 'research_plan' state key, design a logical structure for the final report.
|
228
|
+
Note: Ignore all the tag nanes ([MODIFIED], [NEW], [RESEARCH], [DELIVERABLE]) in the research plan.
|
207
229
|
Your task is to create a markdown outline with 4-6 distinct sections that cover the topic comprehensively without overlap.
|
208
230
|
You can use any markdown format you prefer, but here's a suggested structure:
|
209
231
|
# Section Name
|
@@ -224,10 +246,42 @@ section_researcher = LlmAgent(
|
|
224
246
|
thinking_config=genai_types.ThinkingConfig(include_thoughts=True)
|
225
247
|
),
|
226
248
|
instruction="""
|
227
|
-
You are a diligent and
|
228
|
-
|
229
|
-
|
230
|
-
|
249
|
+
You are a highly capable and diligent research and synthesis agent. Your comprehensive task is to execute a provided research plan with **absolute fidelity**, first by gathering necessary information, and then by synthesizing that information into specified outputs.
|
250
|
+
|
251
|
+
You will be provided with a sequential list of research plan goals, stored in the `research_plan` state key. Each goal will be clearly prefixed with its primary task type: `[RESEARCH]` or `[DELIVERABLE]`.
|
252
|
+
|
253
|
+
Your execution process must strictly adhere to these two distinct and sequential phases:
|
254
|
+
|
255
|
+
---
|
256
|
+
|
257
|
+
**Phase 1: Information Gathering (`[RESEARCH]` Tasks)**
|
258
|
+
|
259
|
+
* **Execution Directive:** You **MUST** systematically process every goal prefixed with `[RESEARCH]` before proceeding to Phase 2.
|
260
|
+
* For each `[RESEARCH]` goal:
|
261
|
+
* **Query Generation:** Formulate a comprehensive set of 4-5 targeted search queries. These queries must be expertly designed to broadly cover the specific intent of the `[RESEARCH]` goal from multiple angles.
|
262
|
+
* **Execution:** Utilize the `google_search` tool to execute **all** generated queries for the current `[RESEARCH]` goal.
|
263
|
+
* **Summarization:** Synthesize the search results into a detailed, coherent summary that directly addresses the objective of the `[RESEARCH]` goal.
|
264
|
+
* **Internal Storage:** Store this summary, clearly tagged or indexed by its corresponding `[RESEARCH]` goal, for later and exclusive use in Phase 2. You **MUST NOT** lose or discard any generated summaries.
|
265
|
+
|
266
|
+
---
|
267
|
+
|
268
|
+
**Phase 2: Synthesis and Output Creation (`[DELIVERABLE]` Tasks)**
|
269
|
+
|
270
|
+
* **Execution Prerequisite:** This phase **MUST ONLY COMMENCE** once **ALL** `[RESEARCH]` goals from Phase 1 have been fully completed and their summaries are internally stored.
|
271
|
+
* **Execution Directive:** You **MUST** systematically process **every** goal prefixed with `[DELIVERABLE]`. For each `[DELIVERABLE]` goal, your directive is to **PRODUCE** the artifact as explicitly described.
|
272
|
+
* For each `[DELIVERABLE]` goal:
|
273
|
+
* **Instruction Interpretation:** You will interpret the goal's text (following the `[DELIVERABLE]` tag) as a **direct and non-negotiable instruction** to generate a specific output artifact.
|
274
|
+
* *If the instruction details a table (e.g., "Create a Detailed Comparison Table in Markdown format"), your output for this step **MUST** be a properly formatted Markdown table utilizing columns and rows as implied by the instruction and the prepared data.*
|
275
|
+
* *If the instruction states to prepare a summary, report, or any other structured output, your output for this step **MUST** be that precise artifact.*
|
276
|
+
* **Data Consolidation:** Access and utilize **ONLY** the summaries generated during Phase 1 (`[RESEARCH]` tasks`) to fulfill the requirements of the current `[DELIVERABLE]` goal. You **MUST NOT** perform new searches.
|
277
|
+
* **Output Generation:** Based on the specific instruction of the `[DELIVERABLE]` goal:
|
278
|
+
* Carefully extract, organize, and synthesize the relevant information from your previously gathered summaries.
|
279
|
+
* Must always produce the specified output artifact (e.g., a concise summary, a structured comparison table, a comprehensive report, a visual representation, etc.) with accuracy and completeness.
|
280
|
+
* **Output Accumulation:** Maintain and accumulate **all** the generated `[DELIVERABLE]` artifacts. These are your final outputs.
|
281
|
+
|
282
|
+
---
|
283
|
+
|
284
|
+
**Final Output:** Your final output will comprise the complete set of processed summaries from `[RESEARCH]` tasks AND all the generated artifacts from `[DELIVERABLE]` tasks, presented clearly and distinctly.
|
231
285
|
""",
|
232
286
|
tools=[google_search],
|
233
287
|
output_key="section_research_findings",
|
@@ -17,7 +17,7 @@ example_question: "A report on the latest Google I/O event"
|
|
17
17
|
settings:
|
18
18
|
requires_data_ingestion: false
|
19
19
|
deployment_targets: ["agent_engine", "cloud_run"]
|
20
|
-
extra_dependencies: ["google-adk~=1.4.
|
20
|
+
extra_dependencies: ["google-adk~=1.4.2"]
|
21
21
|
tags: ["adk"]
|
22
22
|
frontend_type: "adk_gemini_fullstack"
|
23
23
|
commands:
|
agents/agentic_rag/app/agent.py
CHANGED
@@ -26,7 +26,7 @@ from app.templates import format_docs
|
|
26
26
|
EMBEDDING_MODEL = "text-embedding-005"
|
27
27
|
LLM_LOCATION = "global"
|
28
28
|
LOCATION = "us-central1"
|
29
|
-
LLM = "gemini-2.
|
29
|
+
LLM = "gemini-2.5-flash"
|
30
30
|
|
31
31
|
credentials, project_id = google.auth.default()
|
32
32
|
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
|
@@ -18,7 +18,7 @@ settings:
|
|
18
18
|
requires_data_ingestion: true
|
19
19
|
deployment_targets: ["agent_engine", "cloud_run"]
|
20
20
|
extra_dependencies: [
|
21
|
-
"google-adk~=1.4.
|
21
|
+
"google-adk~=1.4.2",
|
22
22
|
"langchain-google-vertexai~=2.0.7",
|
23
23
|
"langchain~=0.3.24",
|
24
24
|
"langchain-core~=0.3.55",
|
agents/live_api/app/agent.py
CHANGED
@@ -22,7 +22,7 @@ from google.genai import types
|
|
22
22
|
# Constants
|
23
23
|
VERTEXAI = os.getenv("VERTEXAI", "true").lower() == "true"
|
24
24
|
LOCATION = "us-central1"
|
25
|
-
MODEL_ID = "gemini-2.
|
25
|
+
MODEL_ID = "gemini-live-2.5-flash-preview-native-audio"
|
26
26
|
|
27
27
|
# Initialize Google Cloud clients
|
28
28
|
credentials, project_id = google.auth.default()
|
@@ -56,13 +56,17 @@ tool_functions = {"get_weather": get_weather}
|
|
56
56
|
live_connect_config = types.LiveConnectConfig(
|
57
57
|
response_modalities=[types.Modality.AUDIO],
|
58
58
|
tools=list(tool_functions.values()),
|
59
|
-
# Change to desired language code (e.g., "es-ES" for Spanish, "fr-FR" for French)
|
60
|
-
speech_config=types.SpeechConfig(language_code="en-US"),
|
61
59
|
system_instruction=types.Content(
|
62
60
|
parts=[
|
63
61
|
types.Part(
|
64
|
-
text="""You are a helpful AI assistant designed to provide accurate and useful information."""
|
62
|
+
text="""You are a helpful AI assistant designed to provide accurate and useful information. You are able to accommodate different languages and tones of voice."""
|
65
63
|
)
|
66
64
|
]
|
67
65
|
),
|
66
|
+
speech_config=types.SpeechConfig(
|
67
|
+
voice_config=types.VoiceConfig(
|
68
|
+
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name="Kore")
|
69
|
+
)
|
70
|
+
),
|
71
|
+
enable_affective_dialog=True,
|
68
72
|
)
|