Core Concepts
Reasoning
Memory & Retrieval
Agent Types
Design Patterns
Training & Alignment
Frameworks
Tools
Safety & Security
Evaluation
Meta
Core Concepts
Reasoning
Memory & Retrieval
Agent Types
Design Patterns
Training & Alignment
Frameworks
Tools
Safety & Security
Evaluation
Meta
This is an old revision of the document!
Google Agent Development Kit (ADK) is an open-source, code-first Python framework for building, evaluating, and deploying AI agents. With 18.6K GitHub stars, ADK is Google's official agent framework — optimized for Gemini models but fully model-agnostic, supporting deployment from local development to Google Cloud at scale.
framework python google gemini agents multi-agent cloud
Google ADK was released as part of Google's push to make agent development accessible through software engineering best practices rather than prompt-centric approaches. The framework emphasizes a code-first philosophy where agents are defined in Python with clear structure, tools are regular functions, and deployment scales from adk run on a laptop to Vertex AI Agent Engine in production. ADK 2.0 Alpha introduced graph-based orchestration for complex multi-agent workflows, signaling Google's commitment to the framework as a first-class development platform.
agent.py) with tools as regular functions; also supports YAML configgemini-3-flash-preview with native thinking capabilitiesadk create, adk run, adk web for project lifecycle managementADK follows a modular project structure with clear separation of concerns:
Project Structure:
my_agent/
├── agent.py # Root agent definition (required)
├── .env # API keys (GOOGLE_API_KEY)
└── __init__.py
Runtime Architecture:
┌──────────────────────────────────────────────────┐
│ ADK Runtime │
│ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Root Agent │ │
│ │ ┌──────────┐ ┌────────────┐ ┌───────────┐ │ │
│ │ │ Model │ │Instructions│ │ Tools │ │ │
│ │ │(Gemini/ │ │(System │ │(Functions/│ │ │
│ │ │ OpenAI) │ │ Prompt) │ │ Built-in) │ │ │
│ │ └──────────┘ └────────────┘ └───────────┘ │ │
│ └──────────────────┬───────────────────────────┘ │
│ │ │
│ ┌──────────────────▼───────────────────────────┐ │
│ │ Sub-Agents / Graph Orchestration │ │
│ │ (Hierarchical | Agents-as-Tools | DAG) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────┬────────────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌───────────┐ ┌──────────┐
│ adk run │ │ adk web │ │ Vertex AI│
│ (CLI) │ │ (Dev UI) │ │ (Cloud) │
└──────────┘ └───────────┘ └──────────┘
Building an agent with Google ADK:
from google.adk.agents.llm_agent import Agent from google.adk.runners import Runner from google.adk.sessions import InMemorySessionService # Define a tool as a regular Python function def get_current_weather(city: str) -> dict: """Get the current weather for a city.""" # Real API call would go here return { "city": city, "temperature": "22C", "condition": "Sunny", "humidity": "45%" } def search_news(topic: str) -> dict: """Search for recent news on a topic.""" return { "topic": topic, "articles": ["Article 1", "Article 2", "Article 3"] } # Define the agent root_agent = Agent( model="gemini-2.0-flash", name="assistant", description="A helpful assistant with weather and news tools.", instruction=( "You are a helpful assistant. Use available tools to " "answer questions about weather and current events." ), tools=[get_current_weather, search_news], ) # Run interactively session_service = InMemorySessionService() runner = Runner(agent=root_agent, app_name="my_app", session_service=session_service)
ADK integrates deeply with Google Cloud services:
| Service | Integration |
|---|---|
| Vertex AI Agent Engine | Production deployment with CLI config |
| Cloud Run | Containerized agent deployment |
| BigQuery | Forecast tools, project/app naming |
| GKE | GKECodeExecutor for sandboxed code execution |
| Bigtable | Experimental toolset for database operations |
| OAuth | Configurable audience/prompt for Google services |