agent-starter-pack 0.6.2__py3-none-any.whl → 0.6.4__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.2.dist-info → agent_starter_pack-0.6.4.dist-info}/METADATA +2 -1
- {agent_starter_pack-0.6.2.dist-info → agent_starter_pack-0.6.4.dist-info}/RECORD +26 -27
- agents/adk_base/app/agent.py +1 -1
- agents/adk_base/template/.templateconfig.yaml +1 -1
- agents/adk_gemini_fullstack/README.md +2 -147
- 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
- src/base_template/Makefile +1 -1
- src/resources/locks/uv-adk_base-agent_engine.lock +109 -59
- src/resources/locks/uv-adk_base-cloud_run.lock +150 -81
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +109 -59
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +150 -81
- src/resources/locks/uv-agentic_rag-agent_engine.lock +122 -80
- src/resources/locks/uv-agentic_rag-cloud_run.lock +163 -102
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +470 -219
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +570 -221
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +120 -83
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +161 -105
- src/resources/locks/uv-live_api-cloud_run.lock +142 -87
- src/frontends/adk_gemini_fullstack/frontend/public/vite.svg +0 -1
- {agent_starter_pack-0.6.2.dist-info → agent_starter_pack-0.6.4.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.6.2.dist-info → agent_starter_pack-0.6.4.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.6.2.dist-info → agent_starter_pack-0.6.4.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.6.
|
3
|
+
Version: 0.6.4
|
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
|
@@ -83,6 +83,7 @@ agent-starter-pack create my-agent -d agent_engine -a adk_base
|
|
83
83
|
| Agent Name | Description |
|
84
84
|
|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
|
85
85
|
| `adk_base` | A base ReAct agent implemented using Google's [Agent Development Kit](https://github.com/google/adk-python) |
|
86
|
+
| `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
87
|
| `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
88
|
| `langgraph_base_react` | An agent implementing a base ReAct agent using LangGraph |
|
88
89
|
| `crewai_coding_crew` | A multi-agent system implemented with CrewAI created to support coding activities |
|
@@ -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=
|
7
|
+
agents/adk_gemini_fullstack/README.md,sha256=yQFFcESALj5Q6eweyIyPx__U74obUM88aCBJYNV2UWs,1674
|
8
8
|
agents/adk_gemini_fullstack/app/agent.py,sha256=bk67bpAge8_b-reI1VuF4PNTXFHqnD92hdVTVXslS4s,16402
|
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,19 +29,19 @@ 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
43
|
src/base_template/.gitignore,sha256=mJKTZIcVdAFiIUQicRfPNGUg6WvwcfTEC2xbmAaU34g,2579
|
44
|
-
src/base_template/Makefile,sha256=
|
44
|
+
src/base_template/Makefile,sha256=b1LwWHtHziYNB8vTsnnhe8KbcYkP3lIsdWXh59lRnIU,5459
|
45
45
|
src/base_template/README.md,sha256=d9vGHGZzpgbcgu-J-9gHr3NOV7nuRzgFzdSxSzwY3xs,10694
|
46
46
|
src/base_template/pyproject.toml,sha256=0fM80KjqgmbiNxfM5jSXTnrze41nlPsYvFUEsKhlF08,2840
|
47
47
|
src/base_template/app/__init__.py,sha256=UyAgc2l8nkVIUPUzL9hKR7EgzCsc2jSYcOcjHNNmpMU,59
|
@@ -109,7 +109,6 @@ src/frontends/adk_gemini_fullstack/frontend/package.json,sha256=fsPrhf27JfN35B80
|
|
109
109
|
src/frontends/adk_gemini_fullstack/frontend/tsconfig.json,sha256=LtqiCB6w68AjbIegDnbXa1YXKM_RQZZVVkAjfUNxyBo,753
|
110
110
|
src/frontends/adk_gemini_fullstack/frontend/tsconfig.node.json,sha256=1BewvjsiZMJqSGXTqe94jo5yKdpi7yqI7UGoHgTv9mg,593
|
111
111
|
src/frontends/adk_gemini_fullstack/frontend/vite.config.ts,sha256=hxnoqbvxU6kljtTYOE49jhzurHiyr0cZvxugWSPvKsM,1150
|
112
|
-
src/frontends/adk_gemini_fullstack/frontend/public/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
113
112
|
src/frontends/adk_gemini_fullstack/frontend/src/App.tsx,sha256=X624JJ2LaDm1ztjb23r15f2fRzilVp6CNpw80HtuCAg,21473
|
114
113
|
src/frontends/adk_gemini_fullstack/frontend/src/global.css,sha256=uNpkk45y9XVsmQs84D0KHN8B2i55ElSFZxHu6zml5E8,5037
|
115
114
|
src/frontends/adk_gemini_fullstack/frontend/src/main.tsx,sha256=WYYxbfb0WHrY1BW7KB-pCxb3jslb1UeCDa26l9Ve0SQ,328
|
@@ -178,25 +177,25 @@ src/resources/containers/e2e-tests/Dockerfile,sha256=Q_aTyX_iaFY8j06XZkpMuggJnNO
|
|
178
177
|
src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
|
179
178
|
src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
|
180
179
|
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
|
180
|
+
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=teMKoCsUYEmuMTgTGQj6RkdoNTUdg4qEKQSJx-iEthI,359032
|
181
|
+
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=HrQCBGDXVPIqeAO2nAl09cEqcvWe8x7fNBP8M8c7bro,444877
|
182
|
+
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=teMKoCsUYEmuMTgTGQj6RkdoNTUdg4qEKQSJx-iEthI,359032
|
183
|
+
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=HrQCBGDXVPIqeAO2nAl09cEqcvWe8x7fNBP8M8c7bro,444877
|
184
|
+
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=tUtdkyWYAqJQxY3A83MJpBO4ob-nyOphZtd8Ye9w6nA,525204
|
185
|
+
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=NcYrDEWNG37mLSd14UDFY9x5m2jCjoS943L_NMvaeGc,684231
|
186
|
+
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=nep-Xh1bP0lSWGfZBwBdkichQ6NzDY04Zhg9-1u-K4E,814819
|
187
|
+
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=NmYdb4pV-2gRdtN-wERDPabbSieDkREBizkmbkJcsTg,1048015
|
188
|
+
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=E2XpgMFHufviXXwJcyqNu8aLQ-pmVKy3b8151vy1Hlw,672886
|
189
|
+
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=Rcr6mBYO1SB8vYwN257CQOvnQ3xpW8brJKMbPmHKREc,875815
|
190
|
+
src/resources/locks/uv-live_api-cloud_run.lock,sha256=y1quwN7HpuFL3CVZ58dsnQ-c4kX0S9w9MBwhfbaYQGE,797917
|
192
191
|
src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
|
193
192
|
src/resources/setup_cicd/github.tf,sha256=scTBgeZlCM74N-pzhVKsnTN0PX9a5GboNl1HN3-LlCM,2791
|
194
193
|
src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
|
195
194
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
196
195
|
src/utils/lock_utils.py,sha256=RSE6n3hBkH64xNm3Q5wrR0Pqbeo-oc7xaTOhA9yzHjk,2275
|
197
196
|
src/utils/watch_and_rebuild.py,sha256=vP4yIiA7E_lj5sfQdJUl8TXas6V7msDg8XWUutAC05Q,6679
|
198
|
-
agent_starter_pack-0.6.
|
199
|
-
agent_starter_pack-0.6.
|
200
|
-
agent_starter_pack-0.6.
|
201
|
-
agent_starter_pack-0.6.
|
202
|
-
agent_starter_pack-0.6.
|
197
|
+
agent_starter_pack-0.6.4.dist-info/METADATA,sha256=x7-k1tV6DfP6Clfd08rcW98Fb6VTOhl3dGrXO-a1cCM,10729
|
198
|
+
agent_starter_pack-0.6.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
199
|
+
agent_starter_pack-0.6.4.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
200
|
+
agent_starter_pack-0.6.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
201
|
+
agent_starter_pack-0.6.4.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.
|
20
|
+
extra_dependencies: ["google-adk~=1.4.2"]
|
21
21
|
tags: ["adk"]
|
22
22
|
frontend_type: "None"
|
@@ -1,5 +1,7 @@
|
|
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/tree/main/python/agents/gemini-fullstack) collection, showcasing agent implementations using the Agent Development Kit.
|
4
|
+
|
3
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.
|
4
6
|
|
5
7
|
<table>
|
@@ -23,150 +25,3 @@ The **Gemini Fullstack Agent Development Kit (ADK) Quickstart** is a production-
|
|
23
25
|
</tr>
|
24
26
|
</tbody>
|
25
27
|
</table>
|
26
|
-
|
27
|
-
<img src="../../docs/images/adk_gemini_fullstack_preview.png" alt="Gemini Fullstack ADK Preview">
|
28
|
-
|
29
|
-
This project adapts concepts from the [Gemini FullStack LangGraph Quickstart](https://github.com/google-gemini/gemini-fullstack-langgraph-quickstart) for the frontend app.
|
30
|
-
|
31
|
-
## 🚀 Getting Started: From Zero to Running Agent in 1 Minute
|
32
|
-
|
33
|
-
**Prerequisites:**
|
34
|
-
|
35
|
-
* **[Python 3.10+](https://www.python.org/downloads/)**
|
36
|
-
* **[Node.js and npm](https://nodejs.org/)**
|
37
|
-
* **[Google Cloud SDK](https://cloud.google.com/sdk/docs/install)**
|
38
|
-
|
39
|
-
### Step 1: Create Your Agent Project
|
40
|
-
|
41
|
-
|
42
|
-
This command uses the [Agent Starter Pack](goo.gle/agent-starter-pack) to create a new directory (`my-fullstack-agent`) with all the necessary code.
|
43
|
-
```bash
|
44
|
-
# Create and activate a virtual environment
|
45
|
-
python -m venv .venv && source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
46
|
-
|
47
|
-
# Install the starter pack and create your project
|
48
|
-
pip install --upgrade agent-starter-pack
|
49
|
-
agent-starter-pack create my-fullstack-agent -a adk_gemini_fullstack
|
50
|
-
```
|
51
|
-
|
52
|
-
<details>
|
53
|
-
<summary>⚡️ Alternative: Using uv</summary>
|
54
|
-
|
55
|
-
If you have [`uv`](https://github.com/astral-sh/uv) installed, you can create and set up your project with a single command:
|
56
|
-
|
57
|
-
```bash
|
58
|
-
uvx agent-starter-pack create my-fullstack-agent -a adk_gemini_fullstack
|
59
|
-
```
|
60
|
-
This command handles creating the project without needing to pre-install the package into a virtual environment.
|
61
|
-
|
62
|
-
</details>
|
63
|
-
|
64
|
-
You'll be prompted to select a deployment option (Agent Engine or Cloud Run) and verify your Google Cloud credentials.
|
65
|
-
|
66
|
-
### Step 2: Install Dependencies & Run the Agent
|
67
|
-
|
68
|
-
Now, navigate into your new project, install the dependencies, and start the servers with a single command.
|
69
|
-
|
70
|
-
```bash
|
71
|
-
cd my-fullstack-agent && make install && make dev
|
72
|
-
```
|
73
|
-
|
74
|
-
Your agent should now be running!
|
75
|
-
* Backend API: `http://localhost:8000`
|
76
|
-
* Frontend UI: `http://localhost:5173`
|
77
|
-
|
78
|
-
## 🔑 Using Google AI Studio API Keys
|
79
|
-
|
80
|
-
If you prefer to use [AI Studio](https://aistudio.google.com/) API keys:
|
81
|
-
|
82
|
-
1. Create a `.env` file in the `/app` directory with:
|
83
|
-
```
|
84
|
-
GOOGLE_GENAI_USE_VERTEXAI=FALSE
|
85
|
-
GOOGLE_API_KEY=YOUR_AI_STUDIO_API_KEY
|
86
|
-
```
|
87
|
-
|
88
|
-
<details>
|
89
|
-
<summary>Or export the variables directly</summary>
|
90
|
-
|
91
|
-
```bash
|
92
|
-
export GOOGLE_GENAI_USE_VERTEXAI=FALSE
|
93
|
-
export GOOGLE_API_KEY=YOUR_AI_STUDIO_API_KEY
|
94
|
-
```
|
95
|
-
</details>
|
96
|
-
|
97
|
-
|
98
|
-
2. Replace `YOUR_AI_STUDIO_API_KEY` with your actual key from [AI Studio](https://aistudio.google.com/app/apikey)
|
99
|
-
|
100
|
-
3. This setting will use your API key instead of the default Vertex AI configuration.
|
101
|
-
|
102
|
-
## ☁️ Deployment
|
103
|
-
|
104
|
-
You can quickly deploy your agent to a **development environment** on Google Cloud. You can deploy your latest code at any time with:
|
105
|
-
|
106
|
-
```bash
|
107
|
-
# Replace YOUR_DEV_PROJECT_ID with your actual Google Cloud Project ID
|
108
|
-
gcloud config set project YOUR_DEV_PROJECT_ID
|
109
|
-
make backend
|
110
|
-
```
|
111
|
-
|
112
|
-
For robust, **production-ready deployments** with automated CI/CD, please follow the detailed instructions in the **[Agent Starter Pack Development Guide](https://googlecloudplatform.github.io/agent-starter-pack/guide/development-guide.html#b-production-ready-deployment-with-ci-cd)**.
|
113
|
-
|
114
|
-
## How the Agent Thinks: A Two-Phase Workflow
|
115
|
-
|
116
|
-
The backend agent, defined in `app/agent.py`, follows a sophisticated workflow to move from a simple topic to a fully-researched report.
|
117
|
-
|
118
|
-
The following diagram illustrates the agent's architecture and workflow:
|
119
|
-
|
120
|
-

|
121
|
-
|
122
|
-
This process is broken into two main phases:
|
123
|
-
|
124
|
-
### Phase 1: Plan & Refine (Human-in-the-Loop)
|
125
|
-
|
126
|
-
This is the collaborative brainstorming phase.
|
127
|
-
|
128
|
-
1. **You provide a research topic.**
|
129
|
-
2. The agent generates a high-level research plan with several key goals (e.g., "Analyze the market impact," "Identify key competitors").
|
130
|
-
3. The plan is presented to **you**. You can approve it, or chat with the agent to add, remove, or change goals until you're satisfied. Nothing happens without your explicit approval.
|
131
|
-
|
132
|
-
### Phase 2: Execute Autonomous Research
|
133
|
-
|
134
|
-
Once you approve the plan, the agent's `research_pipeline` takes over and works autonomously.
|
135
|
-
|
136
|
-
1. **Outlining:** It first converts the approved plan into a structured report outline (like a table of contents).
|
137
|
-
2. **Iterative Research & Critique Loop:** For each section of the outline, it repeats a cycle:
|
138
|
-
* **Search:** It performs web searches to gather information.
|
139
|
-
* **Critique:** A "critic" model evaluates the findings for gaps or weaknesses.
|
140
|
-
* **Refine:** If the critique finds weaknesses, the agent generates more specific follow-up questions and searches again. This loop continues until the research meets a high-quality bar.
|
141
|
-
3. **Compose Final Report:** After the research loop is complete, a final agent takes all the verified findings and writes a polished report, automatically adding inline citations that link back to the original sources.
|
142
|
-
|
143
|
-
You can edit key parameters (Gemini models, research loop iterations) in the `ResearchConfiguration` dataclass within `app/config.py`.
|
144
|
-
|
145
|
-
## 🔄 Frontend-Backend Integration
|
146
|
-
|
147
|
-
The frontend UI integrates with the backend through specific agent names that:
|
148
|
-
|
149
|
-
1. **Process agent outputs** - Different outputs are handled in specific ways (research findings vs. final report)
|
150
|
-
2. **Update the activity timeline** - Each agent's activity appears with appropriate titles and icons
|
151
|
-
3. **Track research metrics** - Website counts and progress indicators are based on agent activities
|
152
|
-
|
153
|
-
Important agent names for frontend functionality:
|
154
|
-
|
155
|
-
- `section_researcher` & `enhanced_search_executor`: Track websites consulted
|
156
|
-
- `report_composer_with_citations`: Processes final report with citations
|
157
|
-
- `interactive_planner_agent`: Updates AI messages during planning
|
158
|
-
- Other agents (`plan_generator`, `section_planner`, etc.): Used for timeline labels
|
159
|
-
|
160
|
-
If you modify agent names in `app/agent.py`, update the frontend code accordingly to maintain functionality.
|
161
|
-
|
162
|
-
## 🛠️ Technologies Used
|
163
|
-
|
164
|
-
### Backend
|
165
|
-
* [**Agent Development Kit (ADK)**](https://github.com/google/adk-python): The core framework for building the stateful, multi-turn agent.
|
166
|
-
* [**FastAPI**](https://fastapi.tiangolo.com/): High-performance web framework for the backend API.
|
167
|
-
* [**Google Gemini**](https://cloud.google.com/vertex-ai/generative-ai/docs): Used for planning, reasoning, search query generation, and final synthesis.
|
168
|
-
|
169
|
-
### Frontend
|
170
|
-
* [**React**](https://reactjs.org/) (with [Vite](https://vitejs.dev/)): For building the interactive user interface.
|
171
|
-
* [**Tailwind CSS**](https://tailwindcss.com/): For utility-first styling.
|
172
|
-
* [**Shadcn UI**](https://ui.shadcn.com/): A set of beautifully designed, accessible components.
|
@@ -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.
|
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.
|
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
|
)
|
src/base_template/Makefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
install:
|
2
|
-
@command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.6.12/install.sh | sh; source
|
2
|
+
@command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/0.6.12/install.sh | sh; source $HOME/.local/bin/env; }
|
3
3
|
uv sync --dev{% if cookiecutter.agent_name != 'live_api' and "adk" not in cookiecutter.tags %} --extra streamlit{%- endif %} --extra jupyter --frozen{% if cookiecutter.agent_name == 'live_api' %} && npm --prefix frontend install{%- endif %}
|
4
4
|
{%- if cookiecutter.settings.get("commands", {}).get("override", {}).get("install") %} && {{cookiecutter.settings.get("commands", {}).get("override", {}).get("install")}}{%- endif %}
|
5
5
|
{%- if cookiecutter.settings.get("commands", {}).get("extra", {}) %}
|