agent-starter-pack 0.18.1__py3-none-any.whl → 0.19.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.
Potentially problematic release.
This version of agent-starter-pack might be problematic. Click here for more details.
- agent_starter_pack/agents/adk_a2a_base/.template/templateconfig.yaml +22 -0
- agent_starter_pack/agents/adk_a2a_base/README.md +22 -0
- agent_starter_pack/agents/adk_a2a_base/app/__init__.py +17 -0
- agent_starter_pack/agents/adk_a2a_base/app/agent.py +70 -0
- agent_starter_pack/agents/adk_a2a_base/notebooks/adk_a2a_app_testing.ipynb +600 -0
- agent_starter_pack/agents/adk_a2a_base/notebooks/evaluating_adk_agent.ipynb +1535 -0
- agent_starter_pack/agents/adk_a2a_base/tests/integration/test_agent.py +58 -0
- agent_starter_pack/base_template/.gitignore +1 -1
- agent_starter_pack/base_template/Makefile +11 -11
- agent_starter_pack/base_template/README.md +1 -1
- agent_starter_pack/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/deploy-to-prod.yaml +10 -2
- agent_starter_pack/base_template/{% if cookiecutter.cicd_runner == 'github_actions' %}.github{% else %}unused_github{% endif %}/workflows/staging.yaml +26 -5
- agent_starter_pack/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/deploy-to-prod.yaml +18 -3
- agent_starter_pack/base_template/{% if cookiecutter.cicd_runner == 'google_cloud_build' %}.cloudbuild{% else %}unused_.cloudbuild{% endif %}/staging.yaml +34 -3
- agent_starter_pack/cli/utils/cicd.py +20 -4
- agent_starter_pack/cli/utils/register_gemini_enterprise.py +79 -84
- agent_starter_pack/cli/utils/template.py +2 -0
- agent_starter_pack/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +104 -2
- agent_starter_pack/deployment_targets/agent_engine/tests/load_test/load_test.py +144 -0
- agent_starter_pack/deployment_targets/agent_engine/tests/{% if cookiecutter.is_adk_a2a %}helpers.py{% else %}unused_helpers.py{% endif %} +138 -0
- agent_starter_pack/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/agent_engine_app.py +88 -4
- agent_starter_pack/deployment_targets/agent_engine/{{cookiecutter.agent_directory}}/utils/deployment.py +4 -0
- agent_starter_pack/deployment_targets/cloud_run/Dockerfile +3 -0
- agent_starter_pack/deployment_targets/cloud_run/deployment/terraform/dev/service.tf +7 -0
- agent_starter_pack/deployment_targets/cloud_run/deployment/terraform/service.tf +16 -2
- agent_starter_pack/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +218 -1
- agent_starter_pack/deployment_targets/cloud_run/tests/load_test/README.md +2 -2
- agent_starter_pack/deployment_targets/cloud_run/tests/load_test/load_test.py +51 -4
- agent_starter_pack/deployment_targets/cloud_run/{{cookiecutter.agent_directory}}/server.py +66 -0
- agent_starter_pack/resources/locks/uv-adk_a2a_base-agent_engine.lock +4224 -0
- agent_starter_pack/resources/locks/uv-adk_a2a_base-cloud_run.lock +4819 -0
- agent_starter_pack/resources/locks/uv-adk_base-agent_engine.lock +230 -236
- agent_starter_pack/resources/locks/uv-adk_base-cloud_run.lock +290 -296
- agent_starter_pack/resources/locks/uv-adk_live-agent_engine.lock +230 -236
- agent_starter_pack/resources/locks/uv-adk_live-cloud_run.lock +290 -296
- agent_starter_pack/resources/locks/uv-agentic_rag-agent_engine.lock +234 -239
- agent_starter_pack/resources/locks/uv-agentic_rag-cloud_run.lock +294 -299
- agent_starter_pack/resources/locks/uv-crewai_coding_crew-agent_engine.lock +221 -228
- agent_starter_pack/resources/locks/uv-crewai_coding_crew-cloud_run.lock +279 -286
- agent_starter_pack/resources/locks/uv-langgraph_base_react-agent_engine.lock +226 -233
- agent_starter_pack/resources/locks/uv-langgraph_base_react-cloud_run.lock +298 -305
- {agent_starter_pack-0.18.1.dist-info → agent_starter_pack-0.19.0.dist-info}/METADATA +2 -1
- {agent_starter_pack-0.18.1.dist-info → agent_starter_pack-0.19.0.dist-info}/RECORD +46 -36
- {agent_starter_pack-0.18.1.dist-info → agent_starter_pack-0.19.0.dist-info}/WHEEL +0 -0
- {agent_starter_pack-0.18.1.dist-info → agent_starter_pack-0.19.0.dist-info}/entry_points.txt +0 -0
- {agent_starter_pack-0.18.1.dist-info → agent_starter_pack-0.19.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Copyright 2025 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
description: "A base ReAct agent built with Google's Agent Development Kit (ADK) and Agent2Agent (A2A) Protocol. #experimental"
|
|
16
|
+
example_question: "What's the weather in San Francisco?"
|
|
17
|
+
settings:
|
|
18
|
+
requires_data_ingestion: false
|
|
19
|
+
deployment_targets: ["agent_engine", "cloud_run"]
|
|
20
|
+
extra_dependencies: ["google-adk>=1.16.0,<2.0.0", "a2a-sdk~=0.3.9"]
|
|
21
|
+
tags: ["adk", "a2a"]
|
|
22
|
+
frontend_type: "None"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# ADK with Agent2Agent (A2A) Protocol: Minimal Agent Example
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://github.com/GoogleCloudPlatform/agent-starter-pack/blob/main/docs/images/adk_logo.png?raw=true" width="200" alt="ADK Logo" style="margin-right: 40px; vertical-align: middle;">
|
|
5
|
+
<img src="https://github.com/a2aproject/A2A/blob/main/docs/assets/a2a-logo-white.svg?raw=true" width="200" alt="A2A Logo" style="vertical-align: middle;">
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
A basic agent built using the **[Google Agent Development Kit (ADK)](https://google.github.io/adk-docs/)** with **[Agent2Agent (A2A) Protocol](https://a2a-protocol.org/)** support. This example demonstrates core ADK concepts like agent creation and tool integration, while enabling distributed agent communication through the A2A protocol for interoperability with agents across different frameworks and languages.
|
|
9
|
+
|
|
10
|
+
This agent uses the `gemini-2.5-flash` model and is equipped with two simple tools:
|
|
11
|
+
* `get_weather`: Simulates fetching weather (hardcoded for SF).
|
|
12
|
+
* `get_current_time`: Simulates fetching the time (hardcoded for SF).
|
|
13
|
+
|
|
14
|
+
## Additional Resources
|
|
15
|
+
|
|
16
|
+
### ADK Resources
|
|
17
|
+
- **ADK Documentation**: Learn more about ADK concepts and capabilities in the [official documentation](https://google.github.io/adk-docs/)
|
|
18
|
+
- **ADK Samples**: Explore more examples and use cases in the [official ADK Samples Repository](https://github.com/google/adk-samples)
|
|
19
|
+
|
|
20
|
+
### A2A Resources
|
|
21
|
+
- **A2A Documentation**: Learn about the Agent2Agent protocol and distributed agent communication in the [official A2A documentation](https://a2a-protocol.org/latest/specification/)
|
|
22
|
+
- **A2A Samples**: Explore A2A agent implementations and integration examples in the [A2A Samples Repository](https://github.com/a2aproject/a2a-samples)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Copyright 2025 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from .agent import app
|
|
16
|
+
|
|
17
|
+
__all__ = ["app"]
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Copyright 2025 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import datetime
|
|
16
|
+
import os
|
|
17
|
+
from zoneinfo import ZoneInfo
|
|
18
|
+
|
|
19
|
+
import google.auth
|
|
20
|
+
from google.adk.agents import Agent
|
|
21
|
+
from google.adk.apps.app import App
|
|
22
|
+
|
|
23
|
+
_, project_id = google.auth.default()
|
|
24
|
+
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
|
|
25
|
+
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
|
|
26
|
+
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_weather(query: str) -> str:
|
|
30
|
+
"""Simulates a web search. Use it get information on weather.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
query: A string containing the location to get weather information for.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
A string with the simulated weather information for the queried location.
|
|
37
|
+
"""
|
|
38
|
+
if "sf" in query.lower() or "san francisco" in query.lower():
|
|
39
|
+
return "It's 60 degrees and foggy."
|
|
40
|
+
return "It's 90 degrees and sunny."
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def get_current_time(query: str) -> str:
|
|
44
|
+
"""Simulates getting the current time for a city.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
city: The name of the city to get the current time for.
|
|
48
|
+
|
|
49
|
+
Returns:
|
|
50
|
+
A string with the current time information.
|
|
51
|
+
"""
|
|
52
|
+
if "sf" in query.lower() or "san francisco" in query.lower():
|
|
53
|
+
tz_identifier = "America/Los_Angeles"
|
|
54
|
+
else:
|
|
55
|
+
return f"Sorry, I don't have timezone information for query: {query}."
|
|
56
|
+
|
|
57
|
+
tz = ZoneInfo(tz_identifier)
|
|
58
|
+
now = datetime.datetime.now(tz)
|
|
59
|
+
return f"The current time for query {query} is {now.strftime('%Y-%m-%d %H:%M:%S %Z%z')}"
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
root_agent = Agent(
|
|
63
|
+
name="root_agent",
|
|
64
|
+
model="gemini-2.5-flash",
|
|
65
|
+
description="An agent that can provide information about the weather and time.",
|
|
66
|
+
instruction="You are a helpful AI assistant designed to provide accurate and useful information.",
|
|
67
|
+
tools=[get_weather, get_current_time],
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
app = App(root_agent=root_agent, name="app")
|