Google ADK
Google's comprehensive Agent Development Kit for building multi-agent systems powered by Gemini and other models. It provides a layered architecture supporting simple LLM agents, pipeline agents with sequential/parallel/loop workflows, and custom agents with arbitrary orchestration logic. Deep integration with Google Cloud services and Vertex AI.
Architecture Overview
ADK uses a hierarchical agent architecture where a root agent can delegate to sub-agents. Agents are organized as a tree, with each agent having access to tools, a model, and optional sub-agents. The framework supports three agent types: LLM agents (model-driven), pipeline agents (workflow-driven with SequentialAgent, ParallelAgent, LoopAgent), and custom agents (code-driven). Session and memory services handle state persistence.
When to Use Google ADK
- Gemini-powered multi-modal agents
- Google Cloud-integrated enterprise workflows
- Multi-agent systems with hierarchical delegation
- Pipeline-based data processing agents
- Vertex AI deployed production agents
Strengths & Weaknesses
Strengths
- Multi-modal support via Gemini (text, image, video, audio)
- Deep Google Cloud and Vertex AI integration
- Flexible agent hierarchy: LLM, pipeline, and custom agents
- Built-in session management and memory services
- A2A protocol support for cross-framework interop
Weaknesses
- Google ecosystem focus may limit portability
- Newer framework with a rapidly evolving API
- Smaller community compared to LangChain or CrewAI
Quick Start
from google.adk.agents import Agent
from google.adk.runners import Runner
from google.adk.sessions import InMemorySessionService
def get_weather(city: str) -> dict:
"""Get the current weather for a city."""
return {"status": "success", "report": f"Sunny, 25°C in {city}"}
weather_agent = Agent(
name="weather_agent",
model="gemini-2.0-flash",
description="An agent that provides weather information.",
instruction="You are a helpful weather assistant. Use tools to answer weather queries.",
tools=[get_weather],
)
# Set up session and runner
session_service = InMemorySessionService()
runner = Runner(agent=weather_agent, app_name="weather_app", session_service=session_service)
session = session_service.create_session(app_name="weather_app", user_id="user1")
# Run the agent
from google.adk.runners import RunConfig
response = runner.run(
user_id="user1",
session_id=session.id,
new_message="What's the weather in Paris?",
)
for event in response:
if event.is_final_response():
print(event.content.parts[0].text)Features at a Glance
| Developer | |
| Language | Python |
| License | Apache-2.0 |
| GitHub Stars | 18k+ |
| MCP Support | Yes |
| Multi-Agent | Yes |
Notable Users
Resources
Explore Related Content
Multi-Agent Systems
Coordinating multiple AI agents to collaborate, delegate, and solve complex problems together.
GuideChoosing Your Stack
Pick the right framework and tools for your specific use case with a clear decision matrix.
PatternSupervisor Pattern
A central orchestrator agent decomposes tasks and coordinates specialized worker agents.