Google ADK Tutorial: Build Your First AI Agent in 2026 (Step-by-Step)
Learn how to build production-ready AI agents with Google's Agent Development Kit (ADK) v1.0.0. Step-by-step tutorial covering installation, multi-agent systems, SkillToolset, and Vertex AI deployment.
Google's Agent Development Kit (ADK) has quietly become one of the most powerful open-source frameworks for building production-ready AI agents in 2026. Released in early 2026 and now at version 1.0.0 for Python, TypeScript, Go, and Java, ADK lets developers go from zero to a deployed multi-agent system in hours.
This tutorial walks you through everything: what ADK is, why it matters, how to install it, and how to build your first functioning AI agent with real-world tools. By the end, you'll have a working agent running locally that can search the web, read files, and chain tasks together.
What Is Google ADK (Agent Development Kit)?
Google ADK is an open-source, model-agnostic framework for developing and deploying AI agents. While optimized for Gemini models and Google Cloud, it works with any LLM — including OpenAI's GPT-5 series, Anthropic's Claude, and local models via Ollama.
What sets ADK apart from older agent frameworks like LangChain or AutoGen is its progressive disclosure architecture. Instead of dumping all knowledge into a giant system prompt on every call, ADK's SkillToolset loads domain context only when needed — resulting in up to 90% fewer baseline tokens per call.
As of April 2026, ADK supports:
- Python (
pip install google-adk) - TypeScript/Node.js (
npm install @google/adk) - Go (ADK Go 1.0.0, released March 2026, with OpenTelemetry + self-healing plugins)
- Java (ADK Java 1.0.0, March 2026)
Why ADK Is Worth Learning Right Now
The AI agent space in April 2026 is crowded. You have LangGraph, CrewAI, AutoGen, and a dozen no-code tools. So why learn ADK specifically?
1. Production-grade from day one. ADK is built for deployment on Vertex AI Agent Engine, Cloud Run, or Docker. The same code you write locally deploys to Google Cloud with minimal changes.
2. Multi-agent architecture baked in. ADK's Sequential, Parallel, and Loop workflow agents let you orchestrate complex agent hierarchies without custom glue code. Agent A can delegate to Agent B, which spawns Agent C.
3. The SkillToolset changes how agents scale. Most frameworks hit a wall around 10+ capabilities because context windows fill up. ADK's three-level skill loading (L1 metadata ~100 tokens, L2 instructions, L3 resources) keeps costs linear as you add capabilities.
4. Model-agnostic but Google-optimized. If you are already on Gemini 3.1 Flash or Gemini 3 Pro, ADK is the native way to build agents. But it also connects to OpenAI-compatible APIs.
5. Active development velocity. ADK Go 1.0.0 shipped March 2026 with self-healing logic. The Python SDK gets weekly updates. The community on GitHub (google/adk-python) is active and growing fast.
Step 1: Install Google ADK
You need Python 3.10+ and a Gemini API key (free tier available at ai.google.dev).
# Create a virtual environment
python3 -m venv adk-env
source adk-env/bin/activate
Install ADK
pip install google-adk
Verify installation
python -c "import google.adk; print(google.adk.version)"
As of April 2026, the latest stable version is 0.4.0 (Python). Set your API key:
export GOOGLEAPIKEY="your-gemini-api-key-here"
Or create a .env file in your project root (recommended):
GOOGLEAPIKEY=your-gemini-api-key-here
Step 2: Your First ADK Agent
Let's build a research assistant that searches the web and summarizes findings. Create this file structure:
myagent/
├── agent.py
├── .env
└── requirements.txt
agent.py:
from google.adk.agents import LlmAgent
from google.adk.tools import googlesearch
researchagent = LlmAgent(
model="gemini-2.0-flash",
name="researchassistant",
description="A research assistant that searches the web and summarizes findings.",
instruction=(
"You are a research assistant. When given a topic:\n"
"1. Use googlesearch to find current, reliable information\n"
"2. Synthesize results into a clear, structured summary\n"
"3. Always cite your sources\n"
"4. Flag any conflicting information"
),
tools=[googlesearch],
)
Run it:
adk run agent.py
ADK launches a web UI at http://localhost:8000. You can chat with your agent, see every tool call, and inspect token usage in real time.
Step 3: Add Tools — File Analysis and Code Execution
Let's add file reading and sandboxed Python code execution to our agent:
from google.adk.agents import LlmAgent
from google.adk.tools import googlesearch, builtincodeexecution
import csv
def analyzecsvdata(filepath: str) -> dict:
rows = []
with open(filepath, 'r') as f:
reader = csv.DictReader(f)
for row in reader:
rows.append(row)
return {
"rowcount": len(rows),
"columns": list(rows[0].keys()) if rows else [],
"sample": rows[:3]
}
researchagent = LlmAgent(
model="gemini-2.0-flash",
name="dataresearchassistant",
description="Research assistant with web search, file analysis, and code execution.",
instruction=(
"You can search the web, analyze CSV files, and execute Python code.\n"
"For data tasks, prefer code execution to compute statistics.\n"
"Always explain your reasoning before using a tool."
),
tools=[
googlesearch,
builtincodeexecution,
analyzecsvdata,
],
)
The builtincode_execution tool gives your agent a sandboxed Python environment. It can write and run code to process data, generate charts, or perform calculations — then return results to the conversation.
Step 4: Build a Multi-Agent Pipeline
This is where ADK gets genuinely impressive. Here's a two-agent pipeline where one agent researches a topic and another writes a blog post from the findings:
from google.adk.agents import LlmAgent, SequentialAgent
from google.adk.tools import googlesearch
from google.adk.runners import Runner
Agent 1: Researcher
researcher = LlmAgent(
model="gemini-2.0-flash",
name="researcher",
description="Gathers and verifies information on a topic.",
instruction=(
"Research the topic thoroughly. Output structured JSON with:\n"
"- keyfacts: list of 5-10 verified facts\n"
"- sources: list of URLs\n"
"- contradictions: any conflicting info found"
),
tools=[googlesearch],
outputkey="researchdata", # Pass output to next agent
)
Agent 2: Writer
writer = LlmAgent(
model="gemini-2.0-flash",
name="writer",
description="Transforms research into polished blog content.",
instruction=(
"Using researchdata from the previous step, write a blog post with:\n"
"- Engaging H1 title\n"
"- H2 subheadings for each major point\n"
"- Inline citations\n"
"- 600-800 words, conversational tone"
),
outputkey="blogpost",
)
Chain them
blogpipeline = SequentialAgent(
name="blogcreator",
description="Research a topic and write a blog post.",
subagents=[researcher, writer],
)
runner = Runner(agent=blogpipeline)
result = runner.run("Quantum computing breakthroughs in 2026")
print(result.get("blogpost"))
The SequentialAgent automatically passes each agent's outputkey into the next agent's context. No manual state management needed. You can add a third PublisherAgent that posts the result to WordPress or a CMS, and it slots right in.
Step 5: The SkillToolset — Smart Context Management
For production agents handling 10+ domains, use ADK's SkillToolset to load knowledge on demand:
from google.adk import models
from google.adk.tools.skills import SkillToolset
from google.adk.agents import LlmAgent
seoskill = models.Skill(
frontmatter=models.Frontmatter(
name="seo-checklist",
description="SEO optimization for blog posts: title tags, meta descriptions, headings.",
),
instructions=(
"When optimizing for SEO:\n"
"1. Title: 50-60 chars, primary keyword near the start\n"
"2. Meta description: 150-160 chars, include CTA\n"
"3. H2 headings: include secondary keywords\n"
"4. Internal links: minimum 2 per post"
),
)
securityskill = models.Skill(
frontmatter=models.Frontmatter(
name="security-review",
description="Code security review: SQL injection, XSS, auth vulnerabilities.",
),
instructions=(
"Check for: SQL injection in queries, XSS in user inputs,\n"
"JWT expiry validation, CSRF tokens on forms, rate limiting on auth endpoints."
),
)
skilltoolset = SkillToolset(skills=[seoskill, securityskill])
smartagent = LlmAgent(
model="gemini-2.0-flash",
name="smartassistant",
description="Multi-domain assistant that loads expertise on demand.",
instruction="Help with tasks across domains. Load the relevant skill before starting.",
tools=[skilltoolset],
)
This architecture uses three levels of progressive disclosure:
- L1 Metadata (~100 tokens per skill): Just the name and description. Loaded at startup for all skills.
- L2 Instructions (loaded on demand): Full instructions for the specific skill the agent decides to use.
- L3 Resources (loaded on demand): Files, examples, or reference data for the skill.
A 10-skill agent starts each conversation with ~1,000 tokens of L1 metadata instead of 10,000 tokens of full instructions. Google's benchmarks show roughly a 90% reduction in baseline context costs using this pattern. For a high-volume production agent making thousands of calls per day, this difference is substantial.
Step 6: Deploy to Vertex AI Agent Engine
Once your agent is working locally, deploying to Google Cloud is a single command:
# Install Vertex AI extension
pip install google-adk[vertexai]
Authenticate
gcloud auth application-default login
Deploy
adk deploy vertexai --project YOURPROJECTID --region us-central1 agent.py
What you get with Vertex AI Agent Engine (April 2026):
- Auto-scaling from 0 to thousands of concurrent sessions
- Managed memory banks — persistent agent memory across sessions without you managing a database
- Built-in evaluation — run test suites to measure agent quality before pushing to production
- OpenTelemetry traces — full visibility into every tool call, model response, and latency
Pricing (April 2026): Agent Engine charges per 1,000 invocations. Standard Python agent invocations start at $0.002 per invocation with a free tier of 1,000 invocations/month. Gemini 2.0 Flash inference is billed separately at $0.10/million input tokens and $0.40/million output tokens.
ADK vs Alternatives: The Honest Comparison
Here is how ADK compares to alternatives as of April 2026:
Google ADK excels at production deployments where you need multi-agent orchestration, cost efficiency at scale (SkillToolset), and native Google Cloud integration. The learning curve is steeper than no-code tools but the payoff in production quality is real.
LangGraph is better when you need fine-grained control over stateful graph execution and your team is already deep in the LangChain ecosystem. More verbose, more boilerplate than ADK.
CrewAI is excellent for role-based agent simulations and rapid prototyping. Not the best choice for high-throughput production systems.
n8n AI Agents wins for non-developers and business teams who want workflow automation without code. ADK handles complexity that n8n cannot.
AutoGen (Microsoft) is research-oriented. Great for experiments but not optimized for production deployment.
If you are deploying on Google Cloud or need the SkillToolset's token efficiency, ADK is the right choice.
Common Pitfalls to Avoid
Forgetting maxiterations. Without a cap, LlmAgent can loop indefinitely. Always set:
agent = LlmAgent(..., maxiterations=10)
Using Gemini Pro when Flash is enough. For routing, summarization, and simple reasoning, Gemini 2.0 Flash is 5x cheaper and 2.5x faster than Pro. Use Pro only for complex multi-step reasoning.
Skipping the local dev UI. The adk run web UI at localhost:8000 shows every tool call, intermediate step, and token count. It is invaluable during development — use it before deploying.
Ignoring tool output validation. If a custom tool reads files or calls external APIs, validate what it returns before passing to the LLM. Never let raw API keys or passwords flow through tool outputs.
Key Takeaways
Google ADK v1.0.0 (April 2026) makes building production AI agents genuinely accessible to developers who know Python. The key advantages:
- One-line install:
pip install google-adk - Local dev UI at localhost:8000 with full trace visibility
- SkillToolset reduces token costs by ~90% at scale
- SequentialAgent/ParallelAgent makes multi-agent pipelines declarative and simple
- One-command deploy to Vertex AI at ~$0.002/invocation with auto-scaling
- Model-agnostic — works with Gemini, GPT-5, Claude, and local models
The ADK Go 1.0.0 release (March 2026) with self-healing plugins signals Google's long-term commitment to this ecosystem. If you are building AI agents professionally in 2026, ADK is worth the investment.
Get started with the official docs at adk.dev and the Google ADK Python GitHub. The official quickstart gets you to a working agent in about 15 minutes.
Related Articles
Google Gemma 4 Complete Guide: Benchmarks, Local Setup & Use Cases (April 2026)
Google released Gemma 4 on April 2, 2026 — four open-weight models ranking #3 globally, running on phones, Raspberry Pi, and local GPUs under Apache 2.0. Full benchmark breakdown, setup guide, and real-world use cases.
Mistral Voxtral TTS: Open-Weight Voice AI That Undercuts ElevenLabs by 73%
Mistral AI released Voxtral TTS on March 26, 2026 — a 4B-parameter open-weight TTS model that beats ElevenLabs Flash v2.5 in quality benchmarks and costs 73% less at $0.016 per 1,000 characters.
Windsurf IDE Complete Guide 2026: Cascade, SWE-1.5, Pricing & Setup
Complete guide to Windsurf IDE in 2026 — how Cascade agent works, SWE-1.5 model benchmarks, full pricing breakdown ($15/mo Pro), and step-by-step setup for developers.