4.8 KiB
4.8 KiB
name, description
| name | description |
|---|---|
| ck-google-adk-python | Builds AI agents using Google Agent Development Kit (ADK) for Python. Activate when user says 'build a Google ADK agent', 'create agent with ADK', 'Google Agent Development Kit', 'multi-agent with ADK', or 'ADK tool calling'. Accepts agent goals, tool definitions, and orchestration requirements. |
Overview
Scaffolds and implements AI agents using Google's Agent Development Kit (ADK) for Python, covering single agents, multi-agent pipelines, tool definitions, and deployment to Vertex AI Agent Engine.
When to Use
- Building autonomous agents that use tools to complete tasks
- Creating multi-agent systems with specialized sub-agents
- Implementing agents that need Google Cloud service integrations
- Deploying production agents on Vertex AI Agent Engine
- Building agents with structured tool calling and state management
Don't Use When
- Project uses a different agent framework (LangChain, CrewAI, AutoGen)
- Simple single-turn LLM calls without tool use (use direct Gemini API)
- Frontend-only application with no agent orchestration needs
- Budget constraints prohibit Vertex AI usage (ADK has local dev mode though)
Steps / Instructions
1. Install ADK
pip install google-adk
# For Vertex AI deployment:
pip install google-adk[vertexai]
2. Define a Simple Agent
# agent.py
from google.adk.agents import Agent
from google.adk.tools import FunctionTool
import os
def get_weather(city: str) -> dict:
"""Get current weather for a city."""
# Replace with real weather API call
return {"city": city, "temperature": 22, "condition": "sunny"}
weather_tool = FunctionTool(func=get_weather)
root_agent = Agent(
name="weather_agent",
model="gemini-1.5-pro",
description="Answers weather questions for any city.",
instruction="""You help users get weather information.
Use the get_weather tool to fetch current conditions.
Always confirm the city before reporting.""",
tools=[weather_tool],
)
3. Run Locally
# main.py
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
from google.genai.types import Content, Part
from agent import root_agent
async def main():
session_service = InMemorySessionService()
runner = Runner(
agent=root_agent,
app_name="weather_app",
session_service=session_service,
)
session = await session_service.create_session(
app_name="weather_app",
user_id="user_001",
)
message = Content(parts=[Part(text="What's the weather in Tokyo?")])
async for event in runner.run_async(
user_id="user_001",
session_id=session.id,
new_message=message,
):
if event.is_final_response():
print(event.content.parts[0].text)
import asyncio
asyncio.run(main())
4. Multi-Agent Pattern
from google.adk.agents import Agent
from google.adk.agents.sequential import SequentialAgent
research_agent = Agent(
name="researcher",
model="gemini-1.5-pro",
instruction="Research the given topic and return key facts.",
tools=[search_tool],
)
writer_agent = Agent(
name="writer",
model="gemini-1.5-pro",
instruction="Write a concise summary based on the research provided.",
)
pipeline = SequentialAgent(
name="research_writer",
sub_agents=[research_agent, writer_agent],
)
5. Tool Definition Best Practices
from typing import Annotated
from pydantic import Field
def search_database(
query: Annotated[str, Field(description="Search query string")],
limit: Annotated[int, Field(description="Max results to return", ge=1, le=50)] = 10,
) -> list[dict]:
"""Search the product database and return matching items."""
# implementation
pass
- Use type annotations — ADK generates JSON schema from them
- Write clear docstrings — used as tool description for the model
- Return dicts/lists that serialize cleanly to JSON
- Handle errors gracefully and return error info in the dict
6. Session State Management
from google.adk.sessions import DatabaseSessionService
# Persist sessions across restarts
session_service = DatabaseSessionService(
db_url=os.environ["DATABASE_URL"]
)
7. Deploy to Vertex AI Agent Engine
from google.adk.deployment import deploy_agent
deploy_agent(
agent=root_agent,
project=os.environ["GOOGLE_CLOUD_PROJECT"],
location="us-central1",
staging_bucket=os.environ["GCS_STAGING_BUCKET"],
)
Notes
- Set
GOOGLE_API_KEYorGOOGLE_APPLICATION_CREDENTIALSfor authentication - Use
adk webCLI for interactive local testing with a built-in UI - ADK auto-traces tool calls — view in Google Cloud Trace
- Always validate tool inputs; the model may pass unexpected types