agent-starter-pack 0.6.1__py3-none-any.whl → 0.6.3__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.1.dist-info → agent_starter_pack-0.6.3.dist-info}/METADATA +1 -1
- {agent_starter_pack-0.6.1.dist-info → agent_starter_pack-0.6.3.dist-info}/RECORD +22 -22
- agents/adk_base/template/.templateconfig.yaml +1 -1
- agents/adk_gemini_fullstack/README.md +3 -121
- agents/adk_gemini_fullstack/app/agent.py +2 -7
- agents/adk_gemini_fullstack/app/config.py +13 -0
- agents/adk_gemini_fullstack/template/.templateconfig.yaml +1 -1
- agents/agentic_rag/template/.templateconfig.yaml +1 -1
- src/resources/locks/uv-adk_base-agent_engine.lock +28 -13
- src/resources/locks/uv-adk_base-cloud_run.lock +28 -13
- src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock +28 -13
- src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock +28 -13
- src/resources/locks/uv-agentic_rag-agent_engine.lock +22 -16
- src/resources/locks/uv-agentic_rag-cloud_run.lock +22 -16
- src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +101 -100
- src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +141 -80
- src/resources/locks/uv-langgraph_base_react-agent_engine.lock +16 -15
- src/resources/locks/uv-langgraph_base_react-cloud_run.lock +16 -15
- src/resources/locks/uv-live_api-cloud_run.lock +12 -12
- {agent_starter_pack-0.6.1.dist-info → agent_starter_pack-0.6.3.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.6.1.dist-info → agent_starter_pack-0.6.3.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.6.1.dist-info → agent_starter_pack-0.6.3.dist-info}/licenses/LICENSE +0 -0
@@ -2,14 +2,14 @@ agents/adk_base/README.md,sha256=eLf-F9Z4u_mQOchAnUaSrOAHXRSx8wUQN29kkwz1SF4,894
|
|
2
2
|
agents/adk_base/app/agent.py,sha256=Kt-0TQM4g9NLs7Q2KmRWPfPWWgyQEODVo0uCepLkqDw,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=y-u4rj4L90guST6mNxvjexYivwPVSn9jZTrK8kUQCfo,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=
|
9
|
-
agents/adk_gemini_fullstack/app/config.py,sha256=
|
7
|
+
agents/adk_gemini_fullstack/README.md,sha256=zWV88GJlmrIVg4OwS5rG6l0UKTrc23_VFXoLJwt3K2s,1782
|
8
|
+
agents/adk_gemini_fullstack/app/agent.py,sha256=bk67bpAge8_b-reI1VuF4PNTXFHqnD92hdVTVXslS4s,16402
|
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=0o1bJj1AOdRJEFD_1ejwK6JyX3I8R-4wA8Z2zIrFhAM,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
15
|
agents/agentic_rag/app/agent.py,sha256=thaU0njJ3W90DI54EVrFe4lwx9yMWZT4jSGRMnUSdY8,3987
|
@@ -17,7 +17,7 @@ agents/agentic_rag/app/retrievers.py,sha256=qfxwSEixMddvAu4FvUTZAFh1Gdp3RPY65s0W
|
|
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=qCelPx9VJ_428noi_SzbYZ1E6IPyi-k26lY1qLxeDtY,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
23
|
agents/crewai_coding_crew/app/agent.py,sha256=axa-prJ7N8Gi8ASUSjokLeWCE-Z_cU0A99WwuLGsZyQ,3264
|
@@ -178,25 +178,25 @@ src/resources/containers/e2e-tests/Dockerfile,sha256=Q_aTyX_iaFY8j06XZkpMuggJnNO
|
|
178
178
|
src/resources/idx/idx-template.json,sha256=07OQZCPp45Iqor2O7Tm1e1Gmsdd-AmmUofSvA7y-oRs,793
|
179
179
|
src/resources/idx/idx-template.nix,sha256=sesHGev_PYtVDg0J5tHkg0OO7IR1Bz2iAtl_if3Ar3M,892
|
180
180
|
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
|
181
|
+
src/resources/locks/uv-adk_base-agent_engine.lock,sha256=X-DXXxH9x4Dkg9SpWsONTM5JEEiEdqsYyrZ_jQ_wVn0,353381
|
182
|
+
src/resources/locks/uv-adk_base-cloud_run.lock,sha256=qed6p6kszJjvp2y3_IEdZCL2hOJVOkfQhFx8Qqh1ufM,434208
|
183
|
+
src/resources/locks/uv-adk_gemini_fullstack-agent_engine.lock,sha256=X-DXXxH9x4Dkg9SpWsONTM5JEEiEdqsYyrZ_jQ_wVn0,353381
|
184
|
+
src/resources/locks/uv-adk_gemini_fullstack-cloud_run.lock,sha256=qed6p6kszJjvp2y3_IEdZCL2hOJVOkfQhFx8Qqh1ufM,434208
|
185
|
+
src/resources/locks/uv-agentic_rag-agent_engine.lock,sha256=5YWdnUo_mqhM_Axja1mnVIDqERw-y8VgHs57TJSF5Ok,519482
|
186
|
+
src/resources/locks/uv-agentic_rag-cloud_run.lock,sha256=LNt_VD1bUjwZol2drWg-swIAmLtuMcuvbVEu2MCf9Pw,673460
|
187
|
+
src/resources/locks/uv-crewai_coding_crew-agent_engine.lock,sha256=TDsYJMLcWFFxaJ-NZYXyes24VjDHNlbNx8ht3bU-RKI,794055
|
188
|
+
src/resources/locks/uv-crewai_coding_crew-cloud_run.lock,sha256=HHyKWvau1GnB6T90h-97d_QstzgxMST-M33-SGxMTmc,1016961
|
189
|
+
src/resources/locks/uv-langgraph_base_react-agent_engine.lock,sha256=iHY7rPfeMQeUQy81nCEWzFheNPW49WoB3r5A92HOdiE,667164
|
190
|
+
src/resources/locks/uv-langgraph_base_react-cloud_run.lock,sha256=iA0OaAQMkxr3XCtDVsLmReD5xgZvgmYwG5XzdiRZOEI,865044
|
191
|
+
src/resources/locks/uv-live_api-cloud_run.lock,sha256=cQS22t_fueHl5qcjZ1VAUgHUY7DesxpmZinrH62rEnI,787149
|
192
192
|
src/resources/setup_cicd/cicd_variables.tf,sha256=PMflYe1TzQi63LORHkmeCktTYzXFplJgxffNH4DtuAQ,1244
|
193
193
|
src/resources/setup_cicd/github.tf,sha256=scTBgeZlCM74N-pzhVKsnTN0PX9a5GboNl1HN3-LlCM,2791
|
194
194
|
src/resources/setup_cicd/providers.tf,sha256=Km4z6IJt7x7PLaa0kyZbBrO2m3lpuIJZFD5jB7QBfF0,1122
|
195
195
|
src/utils/generate_locks.py,sha256=6V1B8V2BEuevWnXUsxZVTrLjXwFRII8UfsIGrQqZxVs,4320
|
196
196
|
src/utils/lock_utils.py,sha256=RSE6n3hBkH64xNm3Q5wrR0Pqbeo-oc7xaTOhA9yzHjk,2275
|
197
197
|
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.
|
198
|
+
agent_starter_pack-0.6.3.dist-info/METADATA,sha256=DhD0WFhpIaDa-TdaXBTAYS1bWDLLDDEqZvNuDl06_UI,10454
|
199
|
+
agent_starter_pack-0.6.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
200
|
+
agent_starter_pack-0.6.3.dist-info/entry_points.txt,sha256=U7uCxR7YulIhZ0L8R8Hui0Bsy6J7oyESBeDYJYMrQjA,56
|
201
|
+
agent_starter_pack-0.6.3.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
202
|
+
agent_starter_pack-0.6.3.dist-info/RECORD,,
|
@@ -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.1"]
|
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) 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>
|
@@ -24,125 +26,5 @@ The **Gemini Fullstack Agent Development Kit (ADK) Quickstart** is a production-
|
|
24
26
|
</tbody>
|
25
27
|
</table>
|
26
28
|
|
29
|
+
Here's a screenshot of the application in action:
|
27
30
|
<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
|
-
## ☁️ Deployment
|
79
|
-
|
80
|
-
You can quickly deploy your agent to a **development environment** on Google Cloud. You can deploy your latest code at any time with:
|
81
|
-
|
82
|
-
```bash
|
83
|
-
# Replace YOUR_DEV_PROJECT_ID with your actual Google Cloud Project ID
|
84
|
-
gcloud config set project YOUR_DEV_PROJECT_ID
|
85
|
-
make backend
|
86
|
-
```
|
87
|
-
|
88
|
-
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)**.
|
89
|
-
|
90
|
-
## How the Agent Thinks: A Two-Phase Workflow
|
91
|
-
|
92
|
-
The backend agent, defined in `app/agent.py`, follows a sophisticated workflow to move from a simple topic to a fully-researched report.
|
93
|
-
|
94
|
-
The following diagram illustrates the agent's architecture and workflow:
|
95
|
-
|
96
|
-

|
97
|
-
|
98
|
-
This process is broken into two main phases:
|
99
|
-
|
100
|
-
### Phase 1: Plan & Refine (Human-in-the-Loop)
|
101
|
-
|
102
|
-
This is the collaborative brainstorming phase.
|
103
|
-
|
104
|
-
1. **You provide a research topic.**
|
105
|
-
2. The agent generates a high-level research plan with several key goals (e.g., "Analyze the market impact," "Identify key competitors").
|
106
|
-
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.
|
107
|
-
|
108
|
-
### Phase 2: Execute Autonomous Research
|
109
|
-
|
110
|
-
Once you approve the plan, the agent's `research_pipeline` takes over and works autonomously.
|
111
|
-
|
112
|
-
1. **Outlining:** It first converts the approved plan into a structured report outline (like a table of contents).
|
113
|
-
2. **Iterative Research & Critique Loop:** For each section of the outline, it repeats a cycle:
|
114
|
-
* **Search:** It performs web searches to gather information.
|
115
|
-
* **Critique:** A "critic" model evaluates the findings for gaps or weaknesses.
|
116
|
-
* **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.
|
117
|
-
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.
|
118
|
-
|
119
|
-
You can edit key parameters (Gemini models, research loop iterations) in the `ResearchConfiguration` dataclass within `app/config.py`.
|
120
|
-
|
121
|
-
## 🔄 Frontend-Backend Integration
|
122
|
-
|
123
|
-
The frontend UI integrates with the backend through specific agent names that:
|
124
|
-
|
125
|
-
1. **Process agent outputs** - Different outputs are handled in specific ways (research findings vs. final report)
|
126
|
-
2. **Update the activity timeline** - Each agent's activity appears with appropriate titles and icons
|
127
|
-
3. **Track research metrics** - Website counts and progress indicators are based on agent activities
|
128
|
-
|
129
|
-
Important agent names for frontend functionality:
|
130
|
-
|
131
|
-
- `section_researcher` & `enhanced_search_executor`: Track websites consulted
|
132
|
-
- `report_composer_with_citations`: Processes final report with citations
|
133
|
-
- `interactive_planner_agent`: Updates AI messages during planning
|
134
|
-
- Other agents (`plan_generator`, `section_planner`, etc.): Used for timeline labels
|
135
|
-
|
136
|
-
If you modify agent names in `app/agent.py`, update the frontend code accordingly to maintain functionality.
|
137
|
-
|
138
|
-
## 🛠️ Technologies Used
|
139
|
-
|
140
|
-
### Backend
|
141
|
-
* [**Agent Development Kit (ADK)**](https://github.com/google/adk-python): The core framework for building the stateful, multi-turn agent.
|
142
|
-
* [**FastAPI**](https://fastapi.tiangolo.com/): High-performance web framework for the backend API.
|
143
|
-
* [**Google Gemini**](https://cloud.google.com/vertex-ai/generative-ai/docs): Used for planning, reasoning, search query generation, and final synthesis.
|
144
|
-
|
145
|
-
### Frontend
|
146
|
-
* [**React**](https://reactjs.org/) (with [Vite](https://vitejs.dev/)): For building the interactive user interface.
|
147
|
-
* [**Tailwind CSS**](https://tailwindcss.com/): For utility-first styling.
|
148
|
-
* [**Shadcn UI**](https://ui.shadcn.com/): A set of beautifully designed, accessible components.
|
@@ -14,12 +14,10 @@
|
|
14
14
|
|
15
15
|
import datetime
|
16
16
|
import logging
|
17
|
-
import os
|
18
17
|
import re
|
19
18
|
from collections.abc import AsyncGenerator
|
20
19
|
from typing import Literal
|
21
20
|
|
22
|
-
import google.auth
|
23
21
|
from google.adk.agents import BaseAgent, LlmAgent, LoopAgent, SequentialAgent
|
24
22
|
from google.adk.agents.callback_context import CallbackContext
|
25
23
|
from google.adk.agents.invocation_context import InvocationContext
|
@@ -32,11 +30,6 @@ from pydantic import BaseModel, Field
|
|
32
30
|
|
33
31
|
from .config import config
|
34
32
|
|
35
|
-
_, project_id = google.auth.default()
|
36
|
-
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
|
37
|
-
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
|
38
|
-
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
|
39
|
-
|
40
33
|
|
41
34
|
# --- Structured Output Models ---
|
42
35
|
class SearchQuery(BaseModel):
|
@@ -263,6 +256,8 @@ research_evaluator = LlmAgent(
|
|
263
256
|
Your response must be a single, raw JSON object validating against the 'Feedback' schema.
|
264
257
|
""",
|
265
258
|
output_schema=Feedback,
|
259
|
+
disallow_transfer_to_parent=True,
|
260
|
+
disallow_transfer_to_peers=True,
|
266
261
|
output_key="research_evaluation",
|
267
262
|
)
|
268
263
|
|
@@ -12,8 +12,21 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
+
import os
|
15
16
|
from dataclasses import dataclass
|
16
17
|
|
18
|
+
import google.auth
|
19
|
+
|
20
|
+
# To use AI Studio credentials:
|
21
|
+
# 1. Create a .env file in the /app directory with:
|
22
|
+
# GOOGLE_GENAI_USE_VERTEXAI=FALSE
|
23
|
+
# GOOGLE_API_KEY=PASTE_YOUR_ACTUAL_API_KEY_HERE
|
24
|
+
# 2. This will override the default Vertex AI configuration
|
25
|
+
_, project_id = google.auth.default()
|
26
|
+
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
|
27
|
+
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
|
28
|
+
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
|
29
|
+
|
17
30
|
|
18
31
|
@dataclass
|
19
32
|
class ResearchConfiguration:
|
@@ -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.1"]
|
21
21
|
tags: ["adk"]
|
22
22
|
frontend_type: "adk_gemini_fullstack"
|
23
23
|
commands:
|
@@ -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.1",
|
22
22
|
"langchain-google-vertexai~=2.0.7",
|
23
23
|
"langchain~=0.3.24",
|
24
24
|
"langchain-core~=0.3.55",
|
@@ -480,9 +480,10 @@ wheels = [
|
|
480
480
|
|
481
481
|
[[package]]
|
482
482
|
name = "google-adk"
|
483
|
-
version = "1.
|
483
|
+
version = "1.4.1"
|
484
484
|
source = { registry = "https://pypi.org/simple" }
|
485
485
|
dependencies = [
|
486
|
+
{ name = "anyio" },
|
486
487
|
{ name = "authlib" },
|
487
488
|
{ name = "click" },
|
488
489
|
{ name = "fastapi" },
|
@@ -498,16 +499,20 @@ dependencies = [
|
|
498
499
|
{ name = "opentelemetry-exporter-gcp-trace" },
|
499
500
|
{ name = "opentelemetry-sdk" },
|
500
501
|
{ name = "pydantic" },
|
502
|
+
{ name = "python-dateutil" },
|
501
503
|
{ name = "python-dotenv" },
|
502
504
|
{ name = "pyyaml" },
|
505
|
+
{ name = "requests" },
|
503
506
|
{ name = "sqlalchemy" },
|
507
|
+
{ name = "starlette" },
|
504
508
|
{ name = "typing-extensions" },
|
505
509
|
{ name = "tzlocal" },
|
506
510
|
{ name = "uvicorn" },
|
511
|
+
{ name = "websockets" },
|
507
512
|
]
|
508
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
513
|
+
sdist = { url = "https://files.pythonhosted.org/packages/06/c0/3585b6e731a144effd80a79400a46b25b65d0b65bdd535ccb51b2db01fe3/google_adk-1.4.1.tar.gz", hash = "sha256:fc29a3840343fae660447e594d4d4851176ddc970dcaae3082bc97f403e7e832", size = 1150267 }
|
509
514
|
wheels = [
|
510
|
-
{ url = "https://files.pythonhosted.org/packages/
|
515
|
+
{ url = "https://files.pythonhosted.org/packages/53/d3/c178d0e5af8c4905495d842c3f1fc78e299d344948f745164c6cb5486b29/google_adk-1.4.1-py3-none-any.whl", hash = "sha256:f789f27eab16c499719fa66cd9033ab69a34c381368df8e43a3f9bebdcf7e3ac", size = 1316934 },
|
511
516
|
]
|
512
517
|
|
513
518
|
[[package]]
|
@@ -807,7 +812,7 @@ wheels = [
|
|
807
812
|
|
808
813
|
[[package]]
|
809
814
|
name = "google-genai"
|
810
|
-
version = "1.
|
815
|
+
version = "1.21.1"
|
811
816
|
source = { registry = "https://pypi.org/simple" }
|
812
817
|
dependencies = [
|
813
818
|
{ name = "anyio" },
|
@@ -815,12 +820,13 @@ dependencies = [
|
|
815
820
|
{ name = "httpx" },
|
816
821
|
{ name = "pydantic" },
|
817
822
|
{ name = "requests" },
|
823
|
+
{ name = "tenacity" },
|
818
824
|
{ name = "typing-extensions" },
|
819
825
|
{ name = "websockets" },
|
820
826
|
]
|
821
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
827
|
+
sdist = { url = "https://files.pythonhosted.org/packages/49/8a/4a628e2e918f8c4a48ea778b68395b97b05b6873c6e528e78ccfb02a2c8d/google_genai-1.21.1.tar.gz", hash = "sha256:5412fde7f0b39574a4670a9a25e398824a12b3cddd632fdff66d1b9bcfdbfcb4", size = 205636 }
|
822
828
|
wheels = [
|
823
|
-
{ url = "https://files.pythonhosted.org/packages/
|
829
|
+
{ url = "https://files.pythonhosted.org/packages/92/5c/659c2b992d631a873ae8fed612ce92af423fdc5f7d541dec7ce8f4b1789e/google_genai-1.21.1-py3-none-any.whl", hash = "sha256:fa6fa5311f9a757ce65cd528a938a0f309bb3032516015bf5b3022e63b2fc46b", size = 206388 },
|
824
830
|
]
|
825
831
|
|
826
832
|
[[package]]
|
@@ -1492,7 +1498,7 @@ dev = [
|
|
1492
1498
|
[package.metadata]
|
1493
1499
|
requires-dist = [
|
1494
1500
|
{ name = "codespell", marker = "extra == 'lint'", specifier = "~=2.2.0" },
|
1495
|
-
{ name = "google-adk", specifier = "~=1.
|
1501
|
+
{ name = "google-adk", specifier = "~=1.4.1" },
|
1496
1502
|
{ name = "google-cloud-aiplatform", extras = ["evaluation", "agent-engines"], specifier = "~=1.95.1" },
|
1497
1503
|
{ name = "google-cloud-logging", specifier = "~=3.11.4" },
|
1498
1504
|
{ name = "jupyter", marker = "extra == 'jupyter'", specifier = "~=1.0.0" },
|
@@ -2212,7 +2218,7 @@ wheels = [
|
|
2212
2218
|
|
2213
2219
|
[[package]]
|
2214
2220
|
name = "pytest"
|
2215
|
-
version = "8.4.
|
2221
|
+
version = "8.4.1"
|
2216
2222
|
source = { registry = "https://pypi.org/simple" }
|
2217
2223
|
dependencies = [
|
2218
2224
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
@@ -2223,9 +2229,9 @@ dependencies = [
|
|
2223
2229
|
{ name = "pygments" },
|
2224
2230
|
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
2225
2231
|
]
|
2226
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
2232
|
+
sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714 }
|
2227
2233
|
wheels = [
|
2228
|
-
{ url = "https://files.pythonhosted.org/packages/
|
2234
|
+
{ url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474 },
|
2229
2235
|
]
|
2230
2236
|
|
2231
2237
|
[[package]]
|
@@ -2897,6 +2903,15 @@ wheels = [
|
|
2897
2903
|
{ url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 },
|
2898
2904
|
]
|
2899
2905
|
|
2906
|
+
[[package]]
|
2907
|
+
name = "tenacity"
|
2908
|
+
version = "8.5.0"
|
2909
|
+
source = { registry = "https://pypi.org/simple" }
|
2910
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a3/4d/6a19536c50b849338fcbe9290d562b52cbdcf30d8963d3588a68a4107df1/tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78", size = 47309 }
|
2911
|
+
wheels = [
|
2912
|
+
{ url = "https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687", size = 28165 },
|
2913
|
+
]
|
2914
|
+
|
2900
2915
|
[[package]]
|
2901
2916
|
name = "terminado"
|
2902
2917
|
version = "0.18.1"
|
@@ -3093,11 +3108,11 @@ wheels = [
|
|
3093
3108
|
|
3094
3109
|
[[package]]
|
3095
3110
|
name = "urllib3"
|
3096
|
-
version = "2.
|
3111
|
+
version = "2.5.0"
|
3097
3112
|
source = { registry = "https://pypi.org/simple" }
|
3098
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
3113
|
+
sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 }
|
3099
3114
|
wheels = [
|
3100
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3115
|
+
{ url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 },
|
3101
3116
|
]
|
3102
3117
|
|
3103
3118
|
[[package]]
|
@@ -509,9 +509,10 @@ wheels = [
|
|
509
509
|
|
510
510
|
[[package]]
|
511
511
|
name = "google-adk"
|
512
|
-
version = "1.
|
512
|
+
version = "1.4.1"
|
513
513
|
source = { registry = "https://pypi.org/simple" }
|
514
514
|
dependencies = [
|
515
|
+
{ name = "anyio" },
|
515
516
|
{ name = "authlib" },
|
516
517
|
{ name = "click" },
|
517
518
|
{ name = "fastapi" },
|
@@ -527,16 +528,20 @@ dependencies = [
|
|
527
528
|
{ name = "opentelemetry-exporter-gcp-trace" },
|
528
529
|
{ name = "opentelemetry-sdk" },
|
529
530
|
{ name = "pydantic" },
|
531
|
+
{ name = "python-dateutil" },
|
530
532
|
{ name = "python-dotenv" },
|
531
533
|
{ name = "pyyaml" },
|
534
|
+
{ name = "requests" },
|
532
535
|
{ name = "sqlalchemy" },
|
536
|
+
{ name = "starlette" },
|
533
537
|
{ name = "typing-extensions" },
|
534
538
|
{ name = "tzlocal" },
|
535
539
|
{ name = "uvicorn" },
|
540
|
+
{ name = "websockets" },
|
536
541
|
]
|
537
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
542
|
+
sdist = { url = "https://files.pythonhosted.org/packages/06/c0/3585b6e731a144effd80a79400a46b25b65d0b65bdd535ccb51b2db01fe3/google_adk-1.4.1.tar.gz", hash = "sha256:fc29a3840343fae660447e594d4d4851176ddc970dcaae3082bc97f403e7e832", size = 1150267 }
|
538
543
|
wheels = [
|
539
|
-
{ url = "https://files.pythonhosted.org/packages/
|
544
|
+
{ url = "https://files.pythonhosted.org/packages/53/d3/c178d0e5af8c4905495d842c3f1fc78e299d344948f745164c6cb5486b29/google_adk-1.4.1-py3-none-any.whl", hash = "sha256:f789f27eab16c499719fa66cd9033ab69a34c381368df8e43a3f9bebdcf7e3ac", size = 1316934 },
|
540
545
|
]
|
541
546
|
|
542
547
|
[[package]]
|
@@ -843,7 +848,7 @@ wheels = [
|
|
843
848
|
|
844
849
|
[[package]]
|
845
850
|
name = "google-genai"
|
846
|
-
version = "1.
|
851
|
+
version = "1.21.1"
|
847
852
|
source = { registry = "https://pypi.org/simple" }
|
848
853
|
dependencies = [
|
849
854
|
{ name = "anyio" },
|
@@ -851,12 +856,13 @@ dependencies = [
|
|
851
856
|
{ name = "httpx" },
|
852
857
|
{ name = "pydantic" },
|
853
858
|
{ name = "requests" },
|
859
|
+
{ name = "tenacity" },
|
854
860
|
{ name = "typing-extensions" },
|
855
861
|
{ name = "websockets" },
|
856
862
|
]
|
857
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
863
|
+
sdist = { url = "https://files.pythonhosted.org/packages/49/8a/4a628e2e918f8c4a48ea778b68395b97b05b6873c6e528e78ccfb02a2c8d/google_genai-1.21.1.tar.gz", hash = "sha256:5412fde7f0b39574a4670a9a25e398824a12b3cddd632fdff66d1b9bcfdbfcb4", size = 205636 }
|
858
864
|
wheels = [
|
859
|
-
{ url = "https://files.pythonhosted.org/packages/
|
865
|
+
{ url = "https://files.pythonhosted.org/packages/92/5c/659c2b992d631a873ae8fed612ce92af423fdc5f7d541dec7ce8f4b1789e/google_genai-1.21.1-py3-none-any.whl", hash = "sha256:fa6fa5311f9a757ce65cd528a938a0f309bb3032516015bf5b3022e63b2fc46b", size = 206388 },
|
860
866
|
]
|
861
867
|
|
862
868
|
[[package]]
|
@@ -1551,7 +1557,7 @@ dev = [
|
|
1551
1557
|
requires-dist = [
|
1552
1558
|
{ name = "codespell", marker = "extra == 'lint'", specifier = "~=2.2.0" },
|
1553
1559
|
{ name = "fastapi", specifier = "~=0.115.8" },
|
1554
|
-
{ name = "google-adk", specifier = "~=1.
|
1560
|
+
{ name = "google-adk", specifier = "~=1.4.1" },
|
1555
1561
|
{ name = "google-cloud-aiplatform", extras = ["evaluation"], specifier = "~=1.95.1" },
|
1556
1562
|
{ name = "google-cloud-logging", specifier = "~=3.11.4" },
|
1557
1563
|
{ name = "jupyter", marker = "extra == 'jupyter'", specifier = "~=1.0.0" },
|
@@ -2371,7 +2377,7 @@ wheels = [
|
|
2371
2377
|
|
2372
2378
|
[[package]]
|
2373
2379
|
name = "pytest"
|
2374
|
-
version = "8.4.
|
2380
|
+
version = "8.4.1"
|
2375
2381
|
source = { registry = "https://pypi.org/simple" }
|
2376
2382
|
dependencies = [
|
2377
2383
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
@@ -2382,9 +2388,9 @@ dependencies = [
|
|
2382
2388
|
{ name = "pygments" },
|
2383
2389
|
{ name = "tomli", marker = "python_full_version < '3.11'" },
|
2384
2390
|
]
|
2385
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
2391
|
+
sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714 }
|
2386
2392
|
wheels = [
|
2387
|
-
{ url = "https://files.pythonhosted.org/packages/
|
2393
|
+
{ url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474 },
|
2388
2394
|
]
|
2389
2395
|
|
2390
2396
|
[[package]]
|
@@ -3172,6 +3178,15 @@ wheels = [
|
|
3172
3178
|
{ url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 },
|
3173
3179
|
]
|
3174
3180
|
|
3181
|
+
[[package]]
|
3182
|
+
name = "tenacity"
|
3183
|
+
version = "8.5.0"
|
3184
|
+
source = { registry = "https://pypi.org/simple" }
|
3185
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a3/4d/6a19536c50b849338fcbe9290d562b52cbdcf30d8963d3588a68a4107df1/tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78", size = 47309 }
|
3186
|
+
wheels = [
|
3187
|
+
{ url = "https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687", size = 28165 },
|
3188
|
+
]
|
3189
|
+
|
3175
3190
|
[[package]]
|
3176
3191
|
name = "terminado"
|
3177
3192
|
version = "0.18.1"
|
@@ -3378,11 +3393,11 @@ wheels = [
|
|
3378
3393
|
|
3379
3394
|
[[package]]
|
3380
3395
|
name = "urllib3"
|
3381
|
-
version = "2.
|
3396
|
+
version = "2.5.0"
|
3382
3397
|
source = { registry = "https://pypi.org/simple" }
|
3383
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
3398
|
+
sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 }
|
3384
3399
|
wheels = [
|
3385
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3400
|
+
{ url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 },
|
3386
3401
|
]
|
3387
3402
|
|
3388
3403
|
[[package]]
|