Everyone is shipping “AI agents” in 2026. Most of them are a single prompt in a while loop with a brittle JSON parser taped to the side.
A real agent is different. It plans, it calls tools, it recovers from bad tool output, and it stays observable when something goes wrong in production at 3 a.m. That gap — between a demo and a system you can actually operate — is exactly what Google’s Agent Development Kit (ADK) was built to close.
I earned the Gemini Enterprise Certified Partner Specialist track recently, and the most useful thing I took away was not a badge. It was a much clearer mental model of how Google wants you to build agents — and where ADK genuinely beats the framework you are probably using today.
This is the hands-on version. No marketing slides. Just what ADK is, how to build a real agent with it, and how it stacks up against LangGraph and CrewAI.
What the Agent Development Kit Actually Is
ADK is an open-source framework for building, evaluating and deploying AI agents — the same toolkit Google uses internally for products like Agentspace. It is model-agnostic (Gemini first, but you can wire in others), and it runs anywhere: your laptop, Cloud Run, or Gemini Enterprise.
The mental model is small and worth memorizing:
- Agent — an LLM plus instructions plus a set of tools. The unit you compose everything from.
- Tool — a plain function the agent can call. ADK reads your function signature and docstring to build the schema automatically.
- Runner — the execution loop that drives the agent: prompt the model, call tools, feed results back, repeat until done.
- Session — the memory and state that persists across turns.
That is the whole core. Everything else — multi-agent orchestration, evaluation, deployment — is built on those four pieces.
Build a Real Agent in About 30 Lines
Here is a working agent that does something useful: it answers questions about an order by calling a real tool. Notice that the tool is just a normal Python function with a clear docstring — ADK turns it into a callable schema for you.
from google.adk.agents import Agent
def get_order_status(order_id: str) -> dict: """Look up the delivery status of a customer order.
Args: order_id: The customer-facing order number, e.g. "A-10423". """ # In production this would hit your orders API. orders = {"A-10423": {"status": "shipped", "eta": "2026-06-29"}} return orders.get(order_id, {"status": "unknown"})
root_agent = Agent( name="support_agent", model="gemini-2.5-flash", instruction=( "You are a concise customer-support agent. " "When a user asks about an order, call get_order_status and " "answer in one sentence. Never invent an order status." ), tools=[get_order_status],)Run it locally with the ADK dev UI and you get a chat window, a live trace of every tool call, and the raw model reasoning — all without writing a single line of frontend code:
pip install google-adkadk webThe first time you watch the trace panel show user → model → tool call → tool result → model → answer, the appeal clicks. You are not guessing what the agent did. You can see it.
Where ADK Pulls Ahead: Tools, Eval and Deployment
Three things separate ADK from a hand-rolled agent loop.
Tools are first-class and typed. Your function signature is the contract. No hand-written JSON schemas to drift out of sync with the code. ADK also ships ready-made tools (search, code execution) and can wrap other agents as tools — which is how you compose specialists.
Evaluation is built in, not bolted on. ADK lets you define test cases — an input plus the expected tool trajectory and final response — and run them as a suite. This is the part most teams skip and later regret. An agent that worked last week silently breaks when you change a prompt; an eval suite catches it before your users do.
# tests/order.evalset.json drives `adk eval` — assert the agent# actually calls get_order_status, not just that the text "looks right".Deployment is a short hop, not a rewrite. The same agent runs locally, on Cloud Run, or on the fully managed Vertex AI Agent Engine. When you move to Gemini Enterprise, you inherit identity, data-source connectors and scaling without re-architecting the agent itself.
ADK vs LangGraph vs CrewAI
The honest comparison most “agent framework” posts avoid. None of these is strictly best — they optimize for different things.
| Dimension | Google ADK | LangGraph | CrewAI |
|---|---|---|---|
| Core model | Agents + tools + runner | Explicit state graph | Role-playing crew of agents |
| Best at | Production agents on Google Cloud | Fine-grained control flow | Fast multi-agent prototypes |
| Tool definition | Python function + docstring | Manual tool/schema wiring | Function or class tools |
| Built-in evaluation | Yes (adk eval) |
No (bring your own) | Limited |
| Local dev experience | adk web UI with live traces |
Code + LangSmith (paid) | CLI / code |
| Managed deployment | Vertex AI Agent Engine | DIY / LangGraph Platform | DIY |
| Lock-in risk | Low (open source, model-agnostic) | Low | Low |
| Sweet spot | Ship and operate on GCP | Complex, branching workflows | Get a multi-agent demo running today |
The short version: reach for LangGraph when your problem is really a state machine with tricky branching. Reach for CrewAI when you want a multi-agent demo by lunch. Reach for ADK when the agent has to live in production on Google Cloud — with evaluation, tracing and a managed runtime you are not maintaining yourself.
From One Agent to a Team
Single agents are the start. The interesting systems are multi-agent: a coordinator that delegates to specialists. ADK models this directly — an agent can have sub-agents, and it routes work to them based on their descriptions.
from google.adk.agents import Agent
billing = Agent(name="billing", model="gemini-2.5-flash", instruction="Answer billing and refund questions.")shipping = Agent(name="shipping", model="gemini-2.5-flash", instruction="Answer delivery and tracking questions.")
coordinator = Agent( name="coordinator", model="gemini-2.5-pro", instruction="Route each request to the right specialist and summarize the answer.", sub_agents=[billing, shipping],)The coordinator uses a stronger model to reason about routing; the specialists use a cheaper, faster one to do the narrow work. That split — smart router, cheap workers — is one of the most effective cost patterns in production agent systems, and ADK makes it a few lines instead of a framework.
The Gemini Enterprise Angle
Building the agent is half the story. The other half is everything around it: connecting it to real company data (Workspace, databases, third-party apps), giving it an identity, and scaling it to actual users. That is what the Gemini Enterprise platform adds on top of ADK — the agent you built locally is the same agent that runs there, just with enterprise connectors and governance wrapped around it.
That continuity is the real selling point. You are not prototyping in one tool and rebuilding in another. The 30-line agent above is, structurally, the same thing you deploy to thousands of users.
Summary
The Agent Development Kit is Google’s answer to a real problem: most “agents” are demos, and demos do not survive production. ADK gives you four clean primitives — agent, tool, runner, session — typed tools, a built-in evaluation suite, live local tracing, and a short path from your laptop to a managed runtime on Gemini Enterprise.
If you are choosing a framework in 2026: CrewAI gets you a demo fastest, LangGraph gives you the most control over complex flows, and ADK is the one built to be operated in production on Google Cloud. Pick for where the agent has to live, not just where it has to be born.
If you are building agents — or working through the Gemini Enterprise track yourself — reach out. I am sharing what I build under #GoogleCloud, #GoogleCloudPartners and #GoogleCloudAmbassador.

