google-adk-agents

Insights Index

Build Production-Grade Multi-Agent Systems with Google’s Agent Development Kit (ADK)

Introduction: From Single-Purpose Bots to Autonomous Agent Teams

Let’s be honest — most AI applications today are still stuck in the “smart assistant” phase. They answer questions, summarize text, maybe even generate code — but they operate alone, like islands of intelligence.

But that’s changing fast.


At Google Cloud NEXT 2025, Google introduced the Agent Development Kit (ADK) — an open-source framework purpose-built for developing collaborative, multi-agent systems. If you’ve ever struggled with chaining tools, managing agent state, or building truly intelligent workflows across agents — ADK is your new best friend.


And here’s the kicker: ADK isn’t just experimental. It’s the same framework that powers production-grade tools like Agentspace and the Google Customer Engagement Suite (CES).


If you’re a developer, AI researcher, or enterprise builder looking to go beyond simple chatbot use cases, this kit is engineered for you.

What is the Agent Development Kit (ADK)?

Think of ADK as the full-stack development kit for building AI agents that aren’t just smart — but autonomous, collaborative, and production-ready.


It’s not another model wrapper or fancy interface. It’s a modular framework designed to:


  • Support multiple agents working together in a coordinated, hierarchical system
  • Give developers precise control over logic, tools, workflows, and delegation
  • Plug into your model of choice, from Gemini to Claude, Meta, or anything available via Vertex AI Model Garden

And here’s where it gets really compelling:


ADK is multi-agent by design — not as an afterthought. Whether you’re building a conversational assistant that delegates subtasks to specialized agents (like a travel planner or report writer), or creating a system of cooperating services (e.g., support agent, escalation bot, product search), ADK gives you the scaffolding to do it.


You’re not reinventing the wheel every time. You’re building on a production-tested framework that supports:


  • Bidirectional streaming (audio/video, not just text)
  • Tool orchestration with LLM agents
  • Sub-agent delegation using intelligent routing
  • Full lifecycle coverage — from dev to evaluation to deployment

Core Strengths of ADK: Build, Interact, Evaluate, Deploy

The Agent Development Kit (ADK) isn’t just a neat framework — it’s a complete stack for building serious, scalable, multi-agent AI systems. Google designed ADK around four core pillars that reflect the full agent development lifecycle:

1. Build: Modular by Default, Multi-Agent by Design

This is where ADK truly sets itself apart.


Forget monolithic agents with tangled logic. ADK encourages composability — where each agent has a clear purpose and role, and can be stacked in hierarchies to form intelligent systems. Think: a root agent coordinating a team of specialist agents, each with delegated responsibilities.


You can define:


  • Simple task agents (e.g., greeting, farewell)
  • Tool-using agents (e.g., weather, search, database)
  • Router agents that delegate dynamically

And thanks to clear instruction and description fields, these agents understand what they should (and shouldn’t) do. That makes LLM-driven auto-delegation surprisingly effective and intuitive.

2. Interact: Rich Multimodal Conversations

If you’re tired of text-only interfaces, you’ll love this.


ADK supports bidirectional streaming — both audio and video. Yes, really. You can have agents that listen and respond in natural conversation flows, opening the door to multimodal user experiences that feel less like chatbots and more like AI co-pilots.


You can interact with your agents using:


  • A command-line interface (CLI)
  • A slick visual Web UI
  • A Python API or API server

The underlying logic — what goes into agent.py — stays the same. It’s just the interface layer that changes, giving you consistent and portable agent behavior across environments.

3. Evaluate: Test with Precision Before You Deploy

One of the most overlooked parts of building AI agents is… testing. ADK nails it.


With ADK’s built-in evaluation tools, you can:


  • Evaluate final responses and step-by-step execution
  • Use predefined test datasets like evaluation.test.json
  • Run tests via CLI, Web UI, or programmatically with AgentEvaluator.evaluate()

Why does this matter? Because intelligent agents aren’t just about outputs — they’re about how decisions were made. You want transparency in routing, delegation, and tool usage. ADK gives you that.

4. Deploy: Containerized, Scalable, Production-Ready

Once you’ve tested your agentic system, you’re just a few steps away from production. ADK supports containerized deployment anywhere, but it’s especially powerful when paired with Google Cloud’s Vertex AI Agent Engine.


You can:


  • Deploy via Cloud Run, Docker, or Vertex AI
  • Leverage Google’s enterprise-grade infrastructure
  • Scale without having to rework your code

This closes the loop — from prototype to production with minimal friction.

TL;DR for Developers

If you’re building with ADK, you’re getting:


  • Modular agent architecture
  • Multimodal interaction channels
  • Step-by-step execution visibility
  • Seamless, scalable deployment

In short, this isn’t just another SDK. It’s a framework that understands the realities of building serious GenAI applications.

Model & Tool Ecosystem: Choose Your Stack, Not Just Your Model

Let’s get real for a second. One of the biggest headaches in AI development? Lock-in. Most frameworks force you to pick a specific LLM or toolset. That’s fine for toy projects — but in production, you need flexibility.

And that’s exactly what ADK delivers.

Model Agnostic, but Gemini-Native

ADK doesn’t care which model you use. Out of the box, it supports:


  • Gemini 1.5 / 2.5 (Pro, Flash, Experimental)
  • Anthropic Claude models via LiteLLM
  • Meta’s LLaMA, Mistral AI, AI21, and many others through Vertex AI Model Garden
  • Your own hosted LLMs or any model accessible via API

If you’re in the Google Cloud ecosystem, you’ll feel right at home — ADK is deeply optimized for Gemini and Vertex AI. But even if you’re not, you’ve got freedom to plug in your preferred model stack.

That means no rewrites. No migrations. Just results.

Bring Your Tools: From Search to LangChain to CrewAI

Now here’s where ADK really shines for developers: tool integration.

You can equip your agents with:


  • Pre-built tools: like Search, Code Exec, and more
  • Custom Python functions (using docstrings for intent parsing)
  • MCP tools (Model Context Protocol) for external interactions
  • Third-party libraries: LangChain, LlamaIndex, CrewAI — anything Python-compatible
  • Even other agents as tools (hello, meta-agent design!)

That last one’s wild — imagine using a Claude-powered summarizer as a sub-agent tool in a Gemini-driven root agent. Totally possible with ADK.

Agents as Tools? Yes, Please.

With ADK, you don’t just plug in static tools — you plug in intelligence.

Because agents themselves can be tools, you unlock next-level use cases like:


  • Dynamic delegation of subtasks
  • Nested conversations
  • Hierarchical problem-solving

This is modular AI design, not spaghetti logic. You define behavior once, reuse it everywhere.

Example: WeatherAgent + Sub-Agents + Custom Tool

Let’s say you’ve got:


  • A WeatherAgent that pulls live weather data
  • A GreetingAgent for hellos
  • A FarewellAgent for goodbyes

Your root agent (WeatherAgent) uses a custom Python tool like:

def get_weather(city: str) -> Dict:
    # Normalization and mock response

And then delegates automatically based on user input:


  • “Hi”GreetingAgent
  • “What’s the weather in Tokyo?” → root agent + get_weather()
  • “Bye”FarewellAgent

This behavior is driven entirely by agent descriptions and hierarchy — no if-else branching or explicit routing code needed.

TL;DR: You’re in Control

Whether you prefer Gemini, Claude, or your custom LLM, and whether you want to use basic search tools or full LangGraph-based workflows — ADK adapts to you.


That’s not common in the GenAI space. Most frameworks give you a hammer and tell you to build a spaceship. ADK gives you a toolbox — and lets you design the control panel.

Getting Started: Build Your First Agent with ADK

Here’s the beautiful thing about ADK: despite its power, the developer experience is refreshingly Pythonic. You don’t need to learn a whole new DSL. If you know Python and how LLMs work, you’re good to go.

Let’s build a simple question-answering agent using Google Search via a built-in tool.

Setup: First Things First

Install ADK via pip:

pip install google-adk

This gives you the core framework, CLI tooling, and access to a clean Web UI for debugging and testing.

Define the Agent

Here’s a minimal but complete example:

from google.adk.agents import LlmAgent 
from google.adk.tools import google_search

dice_agent = LlmAgent(
    model="gemini-2.0-flash-exp",  # ✅ Choose your LLM
    name="question_answer_agent", # 🧠 Unique agent name
    description="A helpful assistant agent that can answer questions.", # 🗣️ Summary for delegation
    instruction="""Respond to the query using google search""",         # 🎯 What should this agent do?
    tools=[google_search],                                             # 🔧 Tool it can use
)

Pro tip: That instruction field is everything. It tells the LLM how to behave and when to use tools. Keep it specific.

Run the Agent

Once you’ve defined the agent, launch the web UI:

adk web

You’re now chatting with your agent in a local browser, watching it process queries and call tools in real time.

Want to use it from code instead? ADK also gives you:


  • A Python API
  • A REST API server
  • A CLI tool for scripted tasks

And here’s the best part: your core agent definition stays the same no matter how you choose to interact with it.

What You’ve Just Built

You’ve created:


  • A Gemini-powered agent
  • That can search Google
  • Using tool orchestration
  • With clear intent-driven logic

And this is just the beginning. ADK’s strength kicks in when you start chaining agents and orchestrating behavior — which is exactly what we’ll tackle next.

Coming Up: Building a Multi-Agent System with Delegation

Now that you’ve built your first agent, let’s turn up the complexity. In the next section, I’ll show you how to:


  • Define custom tools
  • Create sub-agents
  • Use auto-delegation to handle greetings, farewells, and real-time weather

Shall we dive into the world of multi-agent orchestration?

Building a Multi-Agent System with ADK: Hierarchy, Delegation & Tooling

So you’ve built a basic agent. Great. But what happens when your application needs different types of expertise — like a main agent for weather queries and helper agents for greetings or farewells?


That’s where ADK’s delegation architecture shines. You define specialist agents, give them crystal-clear roles, and let your root agent handle who does what — automatically.


Let’s walk through a real-world scenario using a WeatherAgent with two sub-agents: GreetingAgent and FarewellAgent.

Step 1: Define a Tool – get_weather()

Agents in ADK don’t just generate text. They use tools — which are just Python functions. Here’s a sample tool to return mock weather data:

def get_weather(city: str) -> Dict:
    print(f"--- Tool: get_weather called for city: {city} ---")
    city_normalized = city.lower().replace(" ", "")
    
    mock_weather_db = {
        "newyork": {"status": "success", "report": "Sunny, 25°C"},
        "london": {"status": "success", "report": "Cloudy, 15°C"},
        "tokyo": {"status": "success", "report": "Light rain, 18°C"},
    }

    if city_normalized in mock_weather_db:
        return mock_weather_db[city_normalized]
    else:
        return {"status": "error", "error_message": f"No data for '{city}'."}

Best practice: Use clear docstrings so ADK can interpret tool intent, and handle errors gracefully.

Step 2: Define Sub-Agents for Delegation

Here’s how we set up two ultra-specific sub-agents using Claude via LiteLLM:

greeting_agent = Agent(
    model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
    name="greeting_agent",
    instruction="Your ONLY job is to provide a friendly greeting. Do not do anything else.",
    description="Handles greetings like 'Hi', 'Hello'."
)

farewell_agent = Agent(
    model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
    name="farewell_agent",
    instruction="Only say polite goodbyes. No other tasks.",
    description="Handles farewells like 'Bye', 'See you'."
)

Clear instruction and description fields are the key to making auto-delegation work. The LLM reads those and knows when it should pass the mic to someone else.

Step 3: Define the Root Agent with Sub-Agents

Here’s our main weather_agent_v2, powered by Gemini and coordinating everything:

root_agent = Agent(
    name="weather_agent_v2", 
    model="gemini-2.0-flash-exp",
    description="""
        You are the main Weather Agent. Use `get_weather` to provide weather info.
        - Delegate greetings to `greeting_agent`
        - Delegate farewells to `farewell_agent`
        - Only respond to weather queries yourself.
        - If unsure, say you can't help.
    """,
    tools=[get_weather],
    sub_agents=[greeting_agent, farewell_agent]
)

Just like that, you’ve created a cooperative agent team, where each part has a job and the LLM orchestrates the flow.

How Delegation Works

When a user says:


  • “Hi” → matched to GreetingAgent
  • “Bye” → matched to FarewellAgent
  • “What’s the weather in Tokyo?” → handled by WeatherAgent via get_weather()
  • “Can you play music?” → root agent says: I can’t handle that.

This behavior is driven entirely by agent descriptions and hierarchy — no if-else branching or explicit routing code needed.

Why This Matters

This isn’t just cool — it’s a game-changer for building:


  • Support agents with escalation paths
  • Workflow orchestrators with dynamic sub-tasking
  • Modular AI copilots for complex enterprise systems

It’s how you go from “smart chatbot” to intelligent system.

Evaluation & Deployment: From Prototype to Production

So you’ve designed your agent. It talks, delegates, fetches weather, and says polite goodbyes. But before you launch it to users or customers, you need to ask the critical question:

“Does this agent behave the way I intended — every single time?”

That’s where ADK’s integrated evaluation framework comes in.

Systematic Evaluation with Built-In Testing

ADK includes powerful evaluation tooling that lets you:


  • Validate the agent’s final responses
  • Trace step-by-step tool usage and delegation
  • Compare against predefined test cases (e.g., evaluation.test.json)

Here’s how you can run an evaluation programmatically:

from google.adk.evaluation import AgentEvaluator

AgentEvaluator.evaluate(
    agent=my_root_agent,
    test_data_path="evaluation.test.json"
)

Or use the command-line version:

adk eval --agent agent.py --test evaluation.test.json

You can also run these tests directly from the Web UI, where you get visual traces of execution paths — perfect for debugging auto-delegation and tool behavior.


This is crucial for production-readiness. In real-world use, you need to know your agent won’t hallucinate or fumble under edge-case inputs.

Deployment: Ready for the Real World

Once you’re satisfied with the evaluation results, it’s time to ship. ADK supports multiple deployment modes, depending on your infra:


  • Local containers using Docker
  • Cloud Run for serverless deployments
  • Vertex AI Agent Engine for fully managed, enterprise-grade runtime (recommended for scale)

The workflow is frictionless:


  1. Containerize your agent logic
  2. Choose your runtime
  3. Push, scale, monitor

With Vertex AI Agent Engine, you also get:


  • Native support for Gemini models
  • Easy scaling with minimal ops overhead
  • Seamless integration with Google’s IAM, networking, and logging

Bonus: Plug Into Your Existing Stack

ADK is designed to slot cleanly into enterprise ecosystems. Out-of-the-box, it supports:


  • 100+ connectors for tools like BigQuery, AlloyDB, NetApp
  • Workflow orchestration via Application Integration
  • Secure API access through Apigee

This means your agents can:


  • Pull live data from internal systems
  • Trigger backend workflows
  • Integrate with existing customer support pipelines
  • Respect existing API auth layers

In short: you’re not duct-taping an AI agent on top of your stack — you’re weaving it into the fabric of your infrastructure.

ADK vs Genkit: Which One Should You Use?

Google now offers two major frameworks for AI development: the Agent Development Kit (ADK) and Genkit. On the surface, they might seem similar. But once you dig into the use cases, the differences are crystal clear.

What ADK is Best At

ADK is purpose-built for one thing:

Building intelligent, autonomous, multi-agent systems.

If your project involves:


  • Multiple agents coordinating or delegating tasks
  • Tool-using agents with clear behavioral logic
  • Rich interactions (streaming, multimodal)
  • Precision in routing, orchestration, and control

…then ADK is your go-to framework.

It’s opinionated — and that’s a good thing. You get structured abstractions like:


  • Agent, LlmAgent, WorkflowAgent
  • Sub-agent delegation
  • Streaming interaction UIs
  • Integrated evaluation + deployment lifecycle

Basically, if you’re building an AI system that feels like a team, not a monologue — ADK is built for that.

What Genkit is Best At

Genkit, on the other hand, is a developer-first toolkit for building general-purpose GenAI experiences. Think:


  • Experimenting with prompts
  • Building summarizers, classifiers, or one-shot LLM tools
  • Testing chain-of-thought prompts and refining agent responses

Genkit is lower level and more flexible. It doesn’t force structure — instead, it gives you:


  • Prompt templates
  • Model selectors (Google, Vertex AI, OpenAI, Claude, etc.)
  • Tooling for quick iteration
  • Logging and traceability

It’s like a Swiss Army knife for LLM development.

Quick Comparison

Feature ADK Genkit
Multi-Agent Support ✅ Native 🚫 Not built-in
Tool Orchestration ✅ Core feature ⚠️ DIY (custom code)
Streaming UI ✅ Built-in audio/video ❌ Not supported
Evaluation Framework ✅ Step-by-step and CLI ✅ But more ad hoc
Model Support Gemini, Vertex AI, LiteLLM (Claude, Meta, Mistral) Same, plus OpenAI, community plugins
Deployment Fully managed (Vertex AI), Docker, Cloud Run Flexible, but requires custom setup
Ideal For Collaborative, production-grade agent systems Rapid prototyping, experimentation, single-agent tools

So Which One Should You Use?

Use ADK if you’re:


  • Building a multi-agent system
  • Need delegation, orchestration, streaming, and control
  • Targeting enterprise-grade deployments (esp. on Google Cloud)

Use Genkit if you’re:


  • Prototyping GenAI apps quickly
  • Focusing on prompt engineering and small-scale use cases
  • Wanting to explore multiple LLMs in an unstructured workflow

TL;DR: ADK is your framework. Genkit is your lab.

Why ADK Shines Inside Google Cloud

While ADK is technically cloud-agnostic — yes, you can deploy it anywhere — it’s optimized to run inside Google Cloud like a finely tuned engine. If you’re already in the GCP ecosystem (or planning to be), the benefits are just too good to ignore.

1. Native Gemini Model Integration

ADK was designed from the ground up to take advantage of Google’s Gemini family of models — including:


  • Gemini 1.5 Pro
  • Gemini 2.5 Flash / Experimental

These models come with built-in support for:


  • Advanced tool usage
  • Long-context reasoning
  • Multimodal inputs

In other words, ADK + Gemini is like pairing Formula 1 tires with an F1 car — you’re not just building smarter agents; you’re unleashing them with extreme performance.

2. Vertex AI Agent Engine = Zero-Ops Scaling

Once your agent is evaluated and ready, Vertex AI Agent Engine gives you:


  • Auto-scaling infrastructure
  • Enterprise-grade reliability
  • Native model hosting and execution
  • Easy deployment from ADK with minimal config

No Kubernetes. No load balancer config. No DevOps headaches. Just deploy and go.

3. Built-In Access to Google Cloud Data and APIs

This one’s big. Your ADK agents can tap directly into:


  • BigQuery for data analysis
  • AlloyDB for transactional workloads
  • NetApp for file storage
  • Over 100+ prebuilt connectors for CRM, ERP, messaging, finance systems

You also get seamless integration with:


  • Apigee API Gateway to leverage existing internal APIs
  • Application Integration to trigger workflows
  • IAM roles and security policies to control access at scale

And best of all? No data duplication needed.

Your agents don’t pull data into some black box. They query directly from source — securely, in real time.

Example Use Case

Let’s say you’re building an enterprise assistant that:


  • Answers internal policy questions
  • Pulls HR data from BigQuery
  • Escalates to human help via Slack
  • Logs actions in your CRM

You can orchestrate all of that within ADK, connecting to:


  • Gemini Pro for reasoning
  • BigQuery via connector
  • Slack via Application Integration
  • CRM via Apigee

And then deploy the whole thing on Vertex AI Agent Engine, with monitoring and access control baked in.

TL;DR: ADK + Google Cloud = Enterprise-Ready Intelligence

If you’re serious about building production AI applications — not just demos — ADK is the framework that:


  • Plays well with your data
  • Plugs into your infra
  • Scales with your business

It’s not just open-source — it’s optimized for enterprise use, on day one.

Build the Next Generation of AI Agents with ADK

We’re at a pivotal moment in the evolution of AI.


The shift from single-purpose bots to autonomous multi-agent systems is no longer a theory — it’s happening now. And if you’re building serious AI applications, you need a framework that’s production-grade, flexible, and future-proof.


That’s exactly what Google’s Agent Development Kit (ADK) delivers:


  • ✅ Modular, multi-agent design from the ground up
  • ✅ Deep integration with Gemini and Vertex AI
  • ✅ Rich support for tool orchestration and delegation
  • ✅ Step-by-step evaluation and zero-ops deployment
  • ✅ Compatibility with the best LLMs — Claude, Meta, Mistral, and more

Whether you’re crafting an enterprise-ready AI assistant, orchestrating intelligent workflows, or building an internal AI co-pilot — ADK gives you the structure, control, and scalability you need.

Final Takeaway

If Genkit is the lab bench, ADK is the factory floor.
It’s where you stop experimenting and start building real, scalable, intelligent systems.

Ready to Build?

Start your journey here:


And don’t forget — it’s as simple as:

pip install google-adk

Now go build something amazing.



Leave a Comment