{"id":2369,"date":"2026-11-12T06:43:54","date_gmt":"2026-11-12T06:43:54","guid":{"rendered":"https:\/\/www.interviewbit.com\/varsity\/blog\/?p=2369"},"modified":"2026-11-12T06:43:58","modified_gmt":"2026-11-12T06:43:58","slug":"google-adk-tutori","status":"publish","type":"post","link":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/","title":{"rendered":"Google ADK Tutorial: Build Your First Agent with the Agent Development Kit"},"content":{"rendered":"\n<div class=\"wp-block-group vlf-insights is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"vlf-insights-title wp-block-paragraph\">Key Insights<\/p>\n\n\n\n<ul class=\"wp-block-list vlf-insights-list\">\n<li><strong>Google ADK is a code-first, open-source framework<\/strong> for building, debugging and deploying AI agents in Python, TypeScript, Go, Java and Kotlin. It is optimised for Gemini but supports other models through connectors such as LiteLLM, Ollama and vLLM.<\/li>\n\n\n\n<li><strong>ADK Python 2.0 is now the default install.<\/strong> It became generally available on 19 May 2026 and moved ADK to a graph-based execution engine. Use pip install &#8220;google-adk~=1.0&#8221; only if you must follow older 1.x code.<\/li>\n\n\n\n<li><strong>A working agent needs only a root_agent<\/strong> defined in agent.py. Agent is an alias of LlmAgent, and a name, model and instruction are enough to start testing in the adk web development UI.<\/li>\n\n\n\n<li><strong>Python functions become tools automatically.<\/strong> ADK wraps each function in tools=[&#8230;] as a FunctionTool, using its docstring and type hints as the schema. Google recommends returning a dictionary with a status key.<\/li>\n\n\n\n<li><strong>The Runner manages execution.<\/strong> It processes every event an agent yields and commits state through a SessionService. Sessions and state hold short-term context; a MemoryService stores long-term knowledge.<\/li>\n\n\n\n<li><strong>Orchestration has several options:<\/strong> LLM-driven delegation through sub_agents, Sequential, Parallel and Loop workflow agents, and ADK 2.0 graph workflows for explicit routing.<\/li>\n\n\n\n<li><strong>adk web is for development only.<\/strong> Production agents run on Agent Runtime (called Vertex AI Agent Engine until April 2026), Cloud Run or GKE, deployed with adk deploy.<\/li>\n\n\n\n<li><strong>Model IDs change quickly.<\/strong> The quickstart uses the gemini-flash-latest alias; production apps should pin a stable model ID and check Google&#8217;s deprecation schedule.<\/li>\n\n\n\n<li><strong>Reliability needs evaluation and guardrails:<\/strong> adk eval scores tool calls and responses, tracing exposes each step, and tool confirmations, callbacks and plugins limit risky actions.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Google&#8217;s Agent Development Kit (ADK) is an open-source framework for developing, orchestrating and deploying AI agents. Unlike a traditional chatbot that only replies to messages, an ADK agent can use tools, maintain context across turns and complete multi-step tasks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The framework provides building blocks for agents, tools, sessions, workflows and multi-agent coordination. It is optimised for Gemini models and is available in Python, TypeScript, Go, Java and Kotlin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This Google ADK tutorial explains the framework&#8217;s architecture, then guides you through building your first working agent in Python, adding a custom tool, connecting multiple agents and preparing for deployment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How does Google ADK Work?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Google ADK provides the components needed to create AI agents that understand instructions, use tools and coordinate tasks. It manages agent execution through an organised runtime that supports everything from a simple assistant to a multi-agent application. The subsections below cover agents, the kit and the execution loop.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Understanding AI Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An AI agent is a system that interprets instructions, decides what action to take and uses tools to complete tasks. A traditional chatbot maps each message to a reply, while an agent can fetch data or run a function mid-task and continue with the result. This guide on <a href=\"https:\/\/www.scaler.com\/blog\/ai-agents-what-it-is-how-it-works\/\">how AI agents work<\/a> covers the concept in depth.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ADK agents rely on five core capabilities. Each one maps to a framework feature you will use later in this tutorial:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Understanding user instructions written in natural language.<\/li>\n\n\n\n<li>Reasoning about the next action, such as answering or calling a tool.<\/li>\n\n\n\n<li>Calling external tools, from Python functions to third-party APIs.<\/li>\n\n\n\n<li>Maintaining conversational context across turns through sessions.<\/li>\n\n\n\n<li>Completing multi-step tasks by chaining tool calls or delegating to other agents.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What is the Agent Development Kit?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ADK is a framework of reusable building blocks for AI agents. You define an agent&#8217;s instructions, model, tools and behaviour in code, and ADK handles model requests, tool execution, conversation storage and routing. The <a href=\"https:\/\/adk.dev\/\">official ADK documentation<\/a> presents it as a way to build, debug and deploy reliable agents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The same primitives support individual agents and coordinated multi-agent systems. Without a framework, you would write your own tool-calling loop, state store and test harness. ADK ships these with a development UI, an evaluation command and deployment tooling.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How does an ADK Agent Execute a Task?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A task starts when a user sends a request. ADK passes the message, the agent&#8217;s instruction and the available tool definitions to the model, which either answers directly or returns a function call: a structured request to run a named tool with specific arguments.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ADK runs the tool and returns the result to the model, which uses it to generate the final response or calls another tool. Throughout this process, a runtime component called the Runner manages execution and records every step as an event in the session.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"342\" src=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-1-1024x342.png\" alt=\"Google ADK: agent Workflow\" class=\"wp-image-2375\" style=\"aspect-ratio:3;width:624px;height:auto\" srcset=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-1-1024x342.png 1024w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-1-300x100.png 300w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-1-768x256.png 768w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-1-1536x512.png 1536w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-1.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Google ADK helps developers build agents that can move beyond text generation by connecting model reasoning with tools and executable workflows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What are the Core Components of Google ADK?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ADK&#8217;s core components are the building blocks that determine how an agent behaves, interacts with users and executes tasks. Each plays a distinct role at runtime. For a framework-neutral view of these layers, see this overview of <a href=\"https:\/\/www.scaler.com\/blog\/ai-agent-architecture-how-it-works\/\">AI agent architecture<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An agent is ADK&#8217;s main unit of work. It combines a model, an instruction that defines its role and optional tools, then lets the model decide whether to reply, call a tool or hand the task to another agent. In Python, the key class is LlmAgent, which the <a href=\"https:\/\/adk.dev\/agents\/llm-agents\/\">ADK docs on LLM agents<\/a> note is often aliased as Agent.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tools<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tools are functions or external capabilities that an agent can call to retrieve information or perform actions, such as searching for information, calculating values or retrieving weather data. Developers can write custom Python function tools, load tools from Model Context Protocol (MCP) servers, generate them from OpenAPI specifications or wrap another agent with AgentTool.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sessions and State<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A session maintains the context of one conversation by storing its event history: every message, tool call and response. State is a key-value store inside the session for data the agent needs during execution, such as a user preference or an intermediate result. Both are essential for multi-turn conversations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Conversation history is short-term. Longer-term memory is separate: ADK&#8217;s <a href=\"https:\/\/adk.dev\/sessions\/\">session, state and memory guide<\/a> describes it as a searchable archive across past conversations, managed by a MemoryService.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Runners and Runtime<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Runner manages agent execution for each user request. It adds the query to the session, starts the agent and processes every event the agent yields, committing state changes through the SessionService, as the <a href=\"https:\/\/adk.dev\/runtime\/event-loop\/\">ADK event loop documentation<\/a> explains. Commands such as adk web and adk run create this runtime for you during testing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Multi-Agent Systems<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Multiple specialised agents can work together when a parent agent, often called a coordinator, lists them as sub_agents and delegates tasks based on their descriptions. Delegation divides complex workflows into smaller responsibilities. ADK supports several organisation patterns, including LLM-driven delegation, workflow agents and, in ADK 2.0, graph-based and collaborative workflows.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"342\" src=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-2-1024x342.png\" alt=\"Google ADK Component architecture\" class=\"wp-image-2377\" style=\"aspect-ratio:3;width:624px;height:auto\" srcset=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-2-1024x342.png 1024w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-2-300x100.png 300w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-2-768x256.png 768w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-2-1536x512.png 1536w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-2.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Agents define behaviour, tools provide capabilities, sessions maintain context, and runners manage execution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What are the Different Types of Agents in Google ADK?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ADK supports different agent patterns depending on the complexity and structure of a task. You can use a single LLM agent or combine specialised agents under workflow agents, which the docs also call template workflows. Workflow agents are deterministic: they run sub-agents by fixed logic, without a model choosing the order.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/adk.dev\/agents\/workflow-agents\/\">ADK workflow agents guide<\/a> notes that ADK 2.0 for Python and Go supersedes these templates with more flexible graph-based and dynamic workflows. The templates still run in Python, but consider graphs for new projects that need branching.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">LLM Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LLM agents use a language model to interpret instructions and decide which actions to take. Developers configure the model, the instruction and the tools, and the agent chooses when to call each tool. They suit flexible tasks that require reasoning and tool selection, such as a research assistant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sequential Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A SequentialAgent runs its sub-agents in a defined order. Sub-agents share session state, so one step can save its output with output_key and the next can read it through a {key} placeholder. A typical example is a research \u2192 summarisation \u2192 report generation pipeline.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Parallel Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A ParallelAgent runs independent sub-agents at the same time. When tasks do not depend on each other, this can reduce overall workflow time, because the slowest branch, not the sum of all branches, sets the pace. For example, separate agents can research different topics, and a later agent merges their findings.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Loop Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A LoopAgent repeats its sub-agents until a condition is met or an iteration limit is reached, which suits iterative tasks such as reviewing and improving a draft. Define clear stopping conditions: the <a href=\"https:\/\/adk.dev\/agents\/workflow-agents\/loop-agents\/\">ADK loop agent docs<\/a> combine max_iterations with a tool that sets tool_context.actions.escalate = True when the work is done.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The table below compares the four agent types by execution pattern and typical use case. Use it as a quick reference when structuring a new workflow.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Agent type<\/th><th>Execution pattern<\/th><th>Example use case<\/th><\/tr><\/thead><tbody><tr><td>LLM Agent<\/td><td>Model-driven decisions<\/td><td>Research assistant<\/td><\/tr><tr><td>Sequential Agent<\/td><td>Steps run in order<\/td><td>Research and report generation<\/td><\/tr><tr><td>Parallel Agent<\/td><td>Independent tasks run together<\/td><td>Multi-source research<\/td><\/tr><tr><td>Loop Agent<\/td><td>Repeated execution<\/td><td>Iterative content review<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"342\" src=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-3-1024x342.png\" alt=\"Google ADK build workflow\" class=\"wp-image-2378\" style=\"aspect-ratio:3;width:624px;height:auto\" srcset=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-3-1024x342.png 1024w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-3-300x100.png 300w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-3-1536x512.png 1536w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-3-768x256.png 768w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/image-3.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Choose an agent pattern based on task dependencies. A simple task may need one LLM agent, while complex workflows may benefit from multiple coordinated agents.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Build your First Agent Using Google ADK<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This tutorial shows how to create a simple Python-based AI agent using Google ADK and a Gemini model. It covers agent configuration, execution and interaction with the user. Every command follows the official <a href=\"https:\/\/adk.dev\/get-started\/python\/\">ADK Python quickstart<\/a>, so you can cross-check each step.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Check the Prerequisites<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ADK needs a supported Python version and model credentials before it can run. Without credentials, the agent loads but fails on the first prompt because it cannot reach the model. Make sure you have the following before you start:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Python 3.10 or later, as listed in the official quickstart, plus pip.<\/li>\n\n\n\n<li>A Gemini API key from Google AI Studio, or a Google Cloud project with Gemini access.<\/li>\n\n\n\n<li>Basic Python knowledge, including functions, imports and type hints.<\/li>\n\n\n\n<li>A terminal and a code editor, such as VS Code.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Requirements can change between releases, so check the quickstart before you begin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Install Google ADK<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ADK for Python is distributed as the google-adk package. Install it in a virtual environment to avoid dependency conflicts with other projects; this guide to <a href=\"https:\/\/www.scaler.com\/topics\/create-virtual-environment-python\/\">creating a Python virtual environment<\/a> explains the basics. Run these commands from an empty folder such as adk_tutorial:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Windows users activate the environment with .venv\\Scripts\\activate.bat in Command Prompt or .venv\\Scripts\\Activate.ps1 in PowerShell, and may need python or py instead of python3.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 -m venv .venv\n\nsource .venv\/bin\/activate # macOS \/ Linux\n\npip install google-adk<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This installs ADK 2.x, generally available since 19 May 2026, according to the <a href=\"https:\/\/adk.dev\/2.0\/\">ADK 2.0 release page<\/a>. Install &#8220;google-adk~=1.0&#8221; only for older 1.x code, and check the official documentation for current installation requirements.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Set Up API Authentication<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The agent connects to a supported Gemini model through an API key or Google Cloud credentials stored in environment variables. Never hardcode keys in source files, where they can leak through version control. Create a key in Google AI Studio and set it for your terminal session:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export GOOGLE_API_KEY=\"YOUR_API_KEY\" # macOS \/ Linux\n\n# $env:GOOGLE_API_KEY=\"YOUR_API_KEY\" # Windows PowerShell\n\n# set GOOGLE_API_KEY=YOUR_API_KEY # Windows Command Prompt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You will also save the key in the agent&#8217;s .env file in Step 4. The authentication method depends on your model provider and deployment environment; Gemini on Google Cloud, for example, uses project and location variables instead of an API key.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create the Agent Project<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ADK expects each agent to live in its own Python package folder, and the adk create command scaffolds one for you with the required files. Run it from your project folder, because adk web later looks for agent folders inside the directory where it starts:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adk create my_agent<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The command creates the following structure inside your project folder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adk_tutorial\/ # project folder: run adk commands from here\n\n\u251c\u2500\u2500 .venv\/\n\n\u2514\u2500\u2500 my_agent\/ # agent package created by adk create\n\n\u251c\u2500\u2500 __init__.py # imports agent.py so ADK can find root_agent\n\n\u251c\u2500\u2500 agent.py # agent definition\n\n\u2514\u2500\u2500 .env # API keys or project IDs<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add GOOGLE_API_KEY=&#8221;YOUR_API_KEY&#8221; to my_agent\/.env. Keep the framework&#8217;s conventions: __init__.py imports the agent module, and agent.py defines root_agent, which the quickstart calls the only required element of an ADK agent.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Define Your First Agent<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Replace the contents of my_agent\/agent.py with a simple assistant that answers general questions. The code imports ADK&#8217;s agent class and configures four settings: a name, a model, a description and an instruction. Together, these define what the agent is and how it behaves:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The name identifies the agent, the model selects Gemini, the description tells other agents what it does and the instruction sets its behaviour. Because Agent is an alias, from google.adk.agents import LlmAgent works too.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.agents.llm_agent import Agent # Agent is an alias for LlmAgent\n\nroot_agent = Agent(\n\nname=\"first_agent\",\n\nmodel=\"gemini-flash-latest\",\n\ndescription=\"A simple assistant for answering questions.\",\n\ninstruction=(\n\n\"You are a helpful assistant. \"\n\n\"Answer user questions clearly and concisely. \"\n\n\"If you are not sure about an answer, say so.\"\n\n),\n\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The gemini-flash-latest alias matches the official quickstart but always points to the newest Flash model. For production, pin a stable ID from the <a href=\"https:\/\/ai.google.dev\/gemini-api\/docs\/models\">Gemini models page<\/a>. Older IDs such as gemini-2.5-flash appear on the <a href=\"https:\/\/ai.google.dev\/gemini-api\/docs\/deprecations\">Gemini deprecations page<\/a>, so check their status first.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Run Your Agent<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ADK&#8217;s browser-based development interface lets you chat with agents, inspect their responses and review each step of execution. Launch it with the adk web command from the project folder that contains my_agent\/, not from inside the agent folder itself:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open <a href=\"http:\/\/localhost:8000\">http:\/\/localhost:8000<\/a>, select my_agent in the top-left menu and enter a prompt. Use adk run my_agent for a terminal chat instead. The interface helps you test behaviour before deployment, but the quickstart states that it is not meant for production.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adk web<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Test the Agent<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Testing confirms that the agent follows its instruction and that the model connection works end to end. Start with simple prompts that match the agent&#8217;s purpose, then compare each answer with the instruction you wrote. Try these three prompts first:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#8220;Explain what an AI agent is.&#8221;<\/li>\n\n\n\n<li>&#8220;What is the difference between an AI agent and a chatbot?&#8221;<\/li>\n\n\n\n<li>&#8220;Explain Google ADK in simple terms.&#8221;<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Check each reply against the instruction: is it concise, and does it admit uncertainty instead of guessing? Then open the turn&#8217;s events in the dev UI, where the execution trace shows the model request, the model response and any tool calls.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> A basic ADK agent can be created with a small amount of Python code, but production-ready agents require additional tool integration, testing, and deployment configuration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Add Tools to a Google ADK Agent<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tools extend an agent&#8217;s capabilities beyond generating text. By connecting Python functions or external services, developers can allow agents to retrieve information, perform calculations and execute specific tasks. This section adds a calculation tool to an agent and shows how to confirm that the model actually called it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What are Custom Tools?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A custom tool is a Python function exposed to an agent. When you add it to the tools list, ADK wraps it as a FunctionTool and builds a schema from its name, docstring, parameters and type hints. The model reads that schema to decide when to invoke the tool, so clear descriptions and parameters matter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/adk.dev\/tools-custom\/function-tools\/\">ADK function tools guide<\/a> recommends few parameters, simple types and a dictionary return value with a status key.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create a Custom Python Tool<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This function calculates the square of a number, validates its input and returns a dictionary, following ADK&#8217;s documented practice for function tools. Register it by passing the function itself, without parentheses, in the agent&#8217;s tools list so ADK can build its schema:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.agents.llm_agent import Agent\n\ndef calculate_square(number: float) -> dict:\n\n\"\"\"Calculates the square of a number.\n\nArgs:\n\nnumber: The number to square.\n\nReturns:\n\nA dictionary with the status and the squared value.\n\n\"\"\"\n\nif not isinstance(number, (int, float)):\n\n        return {\"status\": \"error\", \"error_message\": \"Input must be a number.\"}\n    return {\"status\": \"success\", \"result\": number * number}\nroot_agent = Agent(\n    name=\"calculator_agent\",\n    model=\"gemini-flash-latest\",\n\ndescription=\"An agent that can perform simple calculations.\",\n\ninstruction=(\n\n\"You help users with arithmetic. When the user asks for the square \"\n\n\"of a number, call the calculate_square tool and explain the result. \"\n\n\"Do not calculate squares yourself.\"\n\n),\n\ntools=&#91;calculate_square],\n\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The instruction states when to use the tool, which ADK&#8217;s docs recommend over simply listing it. Save the file and restart adk web if it is already running.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Test Tool Calling<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ask the agent, &#8220;What is the square of 12?&#8221; and open the turn&#8217;s events in the dev UI. You should see a function call with number: 12 and a function response containing 144. The sequence follows five steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>The user sends a request.<\/li>\n\n\n\n<li>The agent identifies the need for a calculation.<\/li>\n\n\n\n<li>The agent calls the Python function.<\/li>\n\n\n\n<li>The function returns a result.<\/li>\n\n\n\n<li>The agent explains the result to the user.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Validate tool inputs and outputs, even in simple functions. A readable error_message lets the agent recover from unexpected values instead of failing.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1999\" height=\"667\" src=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-1.png\" alt=\"\" class=\"wp-image-2371\" srcset=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-1.png 1999w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-1-300x100.png 300w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-1-1024x342.png 1024w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-1-768x256.png 768w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-1-1536x513.png 1536w\" sizes=\"auto, (max-width: 1999px) 100vw, 1999px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Tools let ADK agents interact with external functionality, making them more useful than standalone conversational models.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Build Multi-Agent Workflows with Google ADK<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Multi-agent workflows divide complex tasks among specialised agents. A coordinating agent can delegate work to other agents and combine their results, while a shared session carries data between them. The example below builds a two-agent research team and explains when each workflow pattern fits best.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create Specialised Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Give each agent one clearly defined responsibility, because focused instructions make agent behaviour easier to test and debug. In this example, a research agent gathers facts about a topic, and a summarisation agent turns those facts into a short, readable paragraph:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.agents.llm_agent import Agent\n\nMODEL = \"gemini-flash-latest\"\n\nresearch_agent = Agent(\n\nname=\"research_agent\",\n\nmodel=MODEL,\n\ndescription=\"Finds key facts about a topic the user names.\",\n\ninstruction=\"List the most important facts about the user's topic as short bullet points.\",\n\noutput_key=\"research_notes\",\n\n)\n\nsummary_agent = Agent(\n\nname=\"summary_agent\",\n\nmodel=MODEL,\n\ndescription=\"Turns research notes into a short, readable summary.\",\n\ninstruction=\"Summarise these notes in one paragraph: {research_notes?}\",\n\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">output_key saves the research agent&#8217;s reply to session state, and {research_notes?} inserts it into the summary agent&#8217;s instruction. The ? tells ADK to skip the placeholder if the value does not exist yet.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Connect Agents Using a Parent Agent<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A parent agent coordinates sub-agents through delegation, meaning it hands each request to the specialist best suited to it. ADK shows the parent&#8217;s model every sub-agent&#8217;s name and description, and the model decides which specialist handles each request:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root_agent = Agent(\n\nname=\"coordinator\",\n\nmodel=MODEL,\n\ndescription=\"Routes research and summarisation requests.\",\n\ninstruction=(\n\n\"Send fact-finding requests to research_agent and summarisation \"\n\n\"requests to summary_agent. Do not answer research questions yourself.\"\n\n),\n\nsub_agents=&#91;research_agent, summary_agent],\n\n)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agents pass outputs through the workflow via shared state. If every request should run research and then summary, use a fixed pipeline instead of the coordinator, because an agent instance can have only one parent:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from google.adk.agents import SequentialAgent\n\nroot_agent = SequentialAgent(name=\"research_pipeline\", sub_agents=&#91;research_agent, summary_agent])<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">ADK 2.0 can express the same order with the <a href=\"https:\/\/adk.dev\/graphs\/routes\/\">graph workflow syntax<\/a>, Workflow(name=&#8221;research_pipeline&#8221;, edges=[(&#8220;START&#8221;, research_agent, summary_agent)]), and adds <a href=\"https:\/\/adk.dev\/workflows\/collaboration\/\">collaborative modes<\/a> such as single_turn and task for sub-agents.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Choose the Right Workflow Pattern<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Choose a pattern based on how the steps depend on each other, not on how sophisticated the design looks. The wrong choice either adds needless model calls or removes flexibility the task needs. Use these rules of thumb when designing a workflow:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Sequential execution<\/strong> when each step needs the previous output, such as research before summarisation.<\/li>\n\n\n\n<li><strong>Parallel execution<\/strong> when steps are independent, such as researching three competitors at once.<\/li>\n\n\n\n<li><strong>Loop-based execution<\/strong> for iterative tasks like draft, critique and revise, with max_iterations set.<\/li>\n\n\n\n<li><strong>LLM delegation<\/strong> when the next step depends on what the user asks.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Manage dependencies explicitly and prevent unnecessary agent calls. Every LLM agent adds model requests, so a step that needs no reasoning is better as a function tool or a code node in a graph.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1842\" height=\"854\" src=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-2.png\" alt=\"\" class=\"wp-image-2372\" srcset=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-2.png 1842w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-2-300x139.png 300w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-2-1024x475.png 1024w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-2-768x356.png 768w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-2-1536x712.png 1536w\" sizes=\"auto, (max-width: 1842px) 100vw, 1842px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Multi-agent systems are useful when tasks have distinct responsibilities, but unnecessary agent complexity can increase latency and cost.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Deploy a Google ADK Agent<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Deployment makes an agent accessible beyond the local development environment, usually as an API that other applications call. ADK supports different deployment approaches depending on infrastructure and scalability requirements. Local testing and production deployment are separate stages, and this section covers both, along with authentication, permissions and monitoring.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Local Development and Testing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Local testing uses adk web, adk run or adk api_server to check tool execution, session behaviour and errors on your own machine, before any cloud resources are involved. Before deploying, test at least three kinds of input:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Normal prompts<\/strong> that match the agent&#8217;s purpose.<\/li>\n\n\n\n<li><strong>Edge cases<\/strong>, such as long inputs or follow-ups that depend on earlier turns.<\/li>\n\n\n\n<li><strong>Invalid inputs<\/strong>, such as text where a number is expected.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">None of these commands deploys your agent. They run only on your machine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deploying to Google Cloud<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/adk.dev\/deploy\/\">ADK deployment guide<\/a> lists three Google Cloud targets: Agent Runtime (called Vertex AI Agent Engine until April 2026), a fully managed service for agents; Cloud Run, for serverless containers; and GKE, for more control. This example deploys to <a href=\"https:\/\/adk.dev\/deploy\/cloud-run\/\">Cloud Run<\/a> and blocks unauthenticated access:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gcloud auth login\n\ngcloud config set project YOUR_PROJECT_ID\n\nadk deploy cloud_run --project=YOUR_PROJECT_ID --region=us-central1 my_agent \\\n\n-- --no-allow-unauthenticated<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use adk deploy agent_engine for <a href=\"https:\/\/adk.dev\/deploy\/agent-runtime\/deploy\/\">Agent Runtime<\/a> or adk deploy gke for GKE. By default, the Cloud Run deployment includes the API server but not the development UI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On Google Cloud, you usually replace the AI Studio key with project credentials. ADK&#8217;s <a href=\"https:\/\/adk.dev\/agents\/models\/google-gemini\/\">Gemini model docs<\/a> set GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION and GOOGLE_GENAI_USE_ENTERPRISE=True. Grant the service account only the permissions it needs, and keep secrets in a secrets manager.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring and Maintaining Agents<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Agent execution should be monitored after deployment, because model updates, untested user questions and failing external APIs can all change behaviour over time. Monitoring surfaces these problems before users report them. Track these signals from day one:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Latency<\/strong>, split into model time and tool time.<\/li>\n\n\n\n<li><strong>Token usage<\/strong>, which drives cost.<\/li>\n\n\n\n<li><strong>Tool errors<\/strong>, including timeouts and failed authentication.<\/li>\n\n\n\n<li><strong>Task completion rates<\/strong>, meaning how often requests are resolved.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">ADK can export traces to <a href=\"https:\/\/adk.dev\/integrations\/cloud-trace\/\">Google Cloud Trace<\/a>, where call_llm and execute_tool spans show each step. Evaluate responses regularly and update instructions as requirements change.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1774\" height=\"887\" src=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-3.png\" alt=\"\" class=\"wp-image-2373\" srcset=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-3.png 1774w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-3-300x150.png 300w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-3-1024x512.png 1024w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-3-768x384.png 768w, https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-image-3-1536x768.png 1536w\" sizes=\"auto, (max-width: 1774px) 100vw, 1774px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Deployment is not the final step. Agents require monitoring, evaluation, and maintenance to remain reliable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Google ADK vs Other AI Agent Frameworks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Developers can choose from several frameworks for building AI agents. This comparison looks at ecosystem, workflow orchestration, model flexibility and deployment options. No framework suits every project, so the right choice depends on your stack and requirements. The subsections below compare ADK with three widely used alternatives.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re exploring the broader ecosystem, check out our guide to <a href=\"https:\/\/www.interviewbit.com\/varsity\/blog\/top-agentic-ai-frameworks-compared\/\">top agentic AI frameworks<\/a>, which compares popular frameworks and their approaches to building AI agents.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google ADK vs LangChain<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">LangChain is a broad ecosystem for LLM application development. Its <a href=\"https:\/\/docs.langchain.com\/oss\/python\/langchain\/overview\">long chain documentation<\/a> describes create_agent, a configurable agent harness built on LangGraph, with a standard model interface across providers. ADK focuses more narrowly on agent development and orchestration, with built-in evaluation and direct Google Cloud deployment. The choice depends on your application and existing stack.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google ADK vs CrewAI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CrewAI takes a role-based multi-agent approach. Its <a href=\"https:\/\/docs.crewai.com\/en\/introduction\">CrewAI documentation<\/a> describes Crews of role-playing agents that collaborate and delegate tasks, plus Flows for event-driven control. ADK organises agents as parents and sub-agents, routed by descriptions, workflow agents or graphs, so development starts from agents and orchestration code rather than roles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google ADK vs Microsoft AutoGen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">AutoGen focuses on multi-agent applications built around agent communication. Its <a href=\"https:\/\/github.com\/microsoft\/autogen\">GitHub repository<\/a> now marks it as in maintenance mode and points new users to Microsoft Agent Framework, its successor. AutoGen connects to models such as OpenAI and Azure OpenAI through extensions, while ADK is Gemini-optimised but model-agnostic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The table below summarises each framework&#8217;s primary focus and the projects it suits best. Treat it as a starting point, then test your shortlist against a real task.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Framework<\/th><th>Primary focus<\/th><th>Best suited for<\/th><\/tr><\/thead><tbody><tr><td>Google ADK<\/td><td>Agent development and orchestration<\/td><td>Developers building agents in Google&#8217;s ecosystem<\/td><\/tr><tr><td>LangChain<\/td><td>LLM application development<\/td><td>Applications requiring broad integrations<\/td><\/tr><tr><td>CrewAI<\/td><td>Role-based multi-agent workflows<\/td><td>Collaborative agent teams<\/td><\/tr><tr><td>Microsoft AutoGen<\/td><td>Multi-agent applications<\/td><td>Agent communication and orchestration<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Because AutoGen is in maintenance mode, its row mainly applies to existing projects.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Choose an agent framework based on model compatibility, orchestration needs, integrations, deployment environment, and team familiarity.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Common Mistakes to Avoid When Building Google ADK Agents<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Building an agent involves more than connecting a model to a prompt. Developers must define clear instructions, control tool access, manage context and test execution behaviour. These five mistakes are common reasons a working demo fails with real users.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Writing Vague Agent Instructions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Unclear instructions produce inconsistent outputs, because the model fills gaps with its own assumptions. Define the agent&#8217;s role, responsibilities and boundaries instead. ADK&#8217;s documentation recommends stating the core task, persona, constraints and output format, and explaining when each tool should be used.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Giving Agents Too Many Tools<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every tool adds a description the model must read and choose between, so long tool lists make selection less reliable. Expose only the tools relevant to the agent&#8217;s purpose. For MCP servers, use the tool_filter parameter to load a subset, and move unrelated tools to specialised sub-agents.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ignoring Session and State Management<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Multi-turn applications need reliable context handling. Misspelt, overwritten or unsaved state keys leave the agent answering follow-ups with missing or outdated information. Use unique output_key names, and remember that in-memory services lose all data on restart, so choose persistent session storage for production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Skipping Testing and Error Handling<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Agents must be tested with normal, unexpected and invalid inputs, because model behaviour is not deterministic. Return readable errors when tools fail, and plan for model errors such as rate limits and timeouts. Inspect execution traces before deployment, and turn good sessions into adk eval test cases.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Overcomplicating Multi-Agent Workflows<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Not every task requires multiple agents. Each delegation adds model calls, latency and another place where context can be lost. Start with one agent and a few tools, and add a sub-agent only when a responsibility is clearly separate or needs different tools.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key point:<\/strong> Good agent design starts with a clear task, limited tool access, predictable workflows, and systematic testing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Google ADK gives developers a code-first path from a few lines of Python to a deployed, observable agent. In this tutorial, you built an assistant, added a custom tool and connected specialised agents through delegation and workflow agents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Before moving to advanced agent applications, make sure you understand sessions and state, test with realistic inputs and know which deployment target suits your project. This agentic AI roadmap can help you plan what to learn next.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want a structured programme in this area, <a href=\"https:\/\/www.interviewbit.com\/varsity\/iit-delhi\/ml-to-agentic-ai\">Varsity by InterviewBit delivers the Advanced Certification in AI: From ML to Agentic AI, offered by the Continuing Education Programme (CEP), IIT Delhi.<\/a> It runs from machine learning foundations to building AI agents, complementing the hands-on skills in this tutorial.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions About Google ADK<\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">How can you connect Google ADK agents to external APIs and third-party services?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wrap the API call in a Python function tool, generate tools from an OpenAPI specification with OpenAPIToolset, or connect to an MCP server with McpToolset, which converts the server&#8217;s tools into ADK tools. Use tool_filter to expose only the MCP tools the agent needs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">What is the difference between Google ADK and Google Vertex AI Agent Builder?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ADK is the open-source framework you use to write agent code. Vertex AI Agent Builder was Google Cloud&#8217;s managed suite for deploying and governing agents. According to the Gemini Enterprise Agent Platform release notes, it became part of Agent Platform on 22 April 2026, and Agent Engine became Agent Runtime.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">Can Google ADK agents use tools that require authentication?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. The ADK tool authentication guide covers API keys, bearer tokens, OAuth2, OpenID Connect and service accounts. OpenAPI-based tools accept an auth_scheme and auth_credential, and for OAuth, ADK pauses for user consent before retrying the call. Store production tokens in a secrets manager.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">How do you give a Google ADK agent access to a database?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use MCP Toolbox for Databases, an open-source MCP server with ready-made toolsets for databases including BigQuery. You define the allowed queries in Toolbox and load them with the toolbox-core client. Prefer narrow, read-only queries over free-form SQL access.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">How can you implement human approval in a Google ADK agent workflow?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use tool confirmation. Wrapping a function as FunctionTool(my_tool, require_confirmation=True) pauses the call until someone approves it, and passing a function instead of True requires approval only in specific cases. The feature is marked experimental, so test it carefully before production.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">What is the difference between session state and memory in Google ADK?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Session state holds data for the current conversation and is managed by a SessionService. Memory is a searchable archive that can span many past conversations, managed by a MemoryService and queried through tools such as load_memory. Use state for working data and memory for long-term recall.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">How do you debug tool-calling failures in a Google ADK application?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Open the turn&#8217;s event trace in the dev UI to see whether the model requested the tool, which arguments it sent and what the function returned. If the tool is never called, improve its docstring and the agent&#8217;s instruction. For deployed agents, Cloud Trace execute_tool spans show where failures occur.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">How can you evaluate the accuracy and reliability of AI agents built with Google ADK?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Save representative conversations as eval sets, define the expected tool calls and responses, and run adk eval. The ADK evaluation criteria include tool_trajectory_avg_score for tool calls and response_match_score, which uses ROUGE-1 similarity, plus rubric-based options for quality checks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">How do you manage API costs and token usage when building Google ADK agents?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use the smallest model that handles each step well, keep instructions concise and cap loops with max_iterations. Set include_contents=&#8217;none&#8217; for agents that do not need conversation history. ADK also supports context caching and context compaction, which summarises older session events.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">Can Google ADK agents work with models from providers other than Google?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. ADK is optimised for Gemini but model-agnostic. Its model documentation lists connectors such as LiteLlm for providers supported by LiteLLM, plus Ollama, vLLM and LiteRT-LM for self-hosted models. Check each model&#8217;s function-calling support before relying on tools.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">How do you secure Google ADK agents against unauthorised tool calls and prompt injection?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Expose only the actions an agent needs and validate arguments inside each tool. ADK&#8217;s safety and security guide recommends before_tool_callback checks, plugins such as Gemini-as-a-Judge or Model Armor to screen inputs and outputs, and sandboxed code execution. Treat tool outputs as untrusted, since they can carry injected instructions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">When should developers use a single Google ADK agent instead of a multi-agent architecture?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use a single agent when one instruction and a handful of tools can cover the task, as with most assistants and first projects. Move to multiple agents when responsibilities are clearly distinct, tool lists become too long for reliable selection or parts of the job need different models.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/\">Agent Development Kit documentation<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.cloud.google.com\/agent-builder\/agent-development-kit\/overview\">Google Cloud: Agent Development Kit overview<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/agents\/llm-agents\/\">ADK LLM agents<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/agents\/workflow-agents\/\">ADK template workflow agents<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/agents\/workflow-agents\/loop-agents\/\">ADK loop agents<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/workflows\/collaboration\/\">ADK collaborative agent teams<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/graphs\/routes\/\">ADK graph routes for agent workflows<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/sessions\/\">ADK session, state and memory<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/runtime\/event-loop\/\">ADK event loop<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/tools-custom\/function-tools\/\">ADK function tools<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/tools-custom\/mcp-tools\/\">ADK MCP tools<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/tools-custom\/authentication\/\">ADK tool authentication<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/tools-custom\/confirmation\/\">ADK tool action confirmations<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/google.github.io\/adk-docs\/tools\/google-cloud\/mcp-toolbox-for-databases\">MCP Toolbox for Databases in ADK<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/agents\/models\/\">ADK models overview<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/agents\/models\/google-gemini\/\">ADK Gemini model setup<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/context\/caching\/\">ADK context caching<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/context\/compaction\/\">ADK context compaction<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/evaluate\/criteria\/\">ADK evaluation criteria<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/safety\/\">ADK safety and security<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/deploy\/\">ADK deployment overview<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/deploy\/agent-runtime\/deploy\/\">Deploy ADK agents to Agent Runtime<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/deploy\/cloud-run\/\">Deploy ADK agents to Cloud Run<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/adk.dev\/integrations\/cloud-trace\/\">Google Cloud Trace observability for ADK<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.cloud.google.com\/gemini-enterprise-agent-platform\/release-notes\">Gemini Enterprise Agent Platform release notes<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/ai.google.dev\/gemini-api\/docs\/models\">Gemini API models<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.langchain.com\/oss\/python\/langchain\/overview\">LangChain overview<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.crewai.com\/en\/introduction\">CrewAI introduction<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/microsoft\/autogen\">Microsoft AutoGen on GitHub<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Key Insights Google&#8217;s Agent Development Kit (ADK) is an open-source framework for developing, orchestrating and deploying AI agents. Unlike a traditional chatbot that only replies to messages, an ADK agent can use tools, maintain context across turns and complete multi-step tasks. The framework provides building blocks for agents, tools, sessions, workflows and multi-agent coordination. It [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":2380,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7],"tags":[],"class_list":["post-2369","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-generative-ai"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"acf":{"reviewed_by":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Google ADK Tutorial: Build Your First AI Agent in Python<\/title>\n<meta name=\"description\" content=\"Learn Google ADK step by step: install the Agent Development Kit, build a Gemini agent in Python, add tools, create multi-agent workflows and deploy it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Google ADK Tutorial: Build Your First AI Agent in Python\" \/>\n<meta property=\"og:description\" content=\"Learn Google ADK step by step: install the Agent Development Kit, build a Gemini agent in Python, add tools, create multi-agent workflows and deploy it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/\" \/>\n<meta property=\"og:site_name\" content=\"Varsity Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-12T06:43:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-12T06:43:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-tutorial.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1010\" \/>\n\t<meta property=\"og:image:height\" content=\"673\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Varsity on Behalf of CEP IIT Delhi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Varsity on Behalf of CEP IIT Delhi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"24 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/\"},\"author\":{\"name\":\"Varsity on Behalf of CEP IIT Delhi\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#\\\/schema\\\/person\\\/7b5db9a94eddee529cd35968692d9c29\"},\"headline\":\"Google ADK Tutorial: Build Your First Agent with the Agent Development Kit\",\"datePublished\":\"2026-11-12T06:43:54+00:00\",\"dateModified\":\"2026-11-12T06:43:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/\"},\"wordCount\":5056,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/google-adk-tutorial.webp\",\"articleSection\":[\"Generative AI\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/\",\"url\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/\",\"name\":\"Google ADK Tutorial: Build Your First AI Agent in Python\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/google-adk-tutorial.webp\",\"datePublished\":\"2026-11-12T06:43:54+00:00\",\"dateModified\":\"2026-11-12T06:43:58+00:00\",\"description\":\"Learn Google ADK step by step: install the Agent Development Kit, build a Gemini agent in Python, add tools, create multi-agent workflows and deploy it.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/google-adk-tutorial.webp\",\"contentUrl\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/google-adk-tutorial.webp\",\"width\":1010,\"height\":673,\"caption\":\"google-adk-tutorial-\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/google-adk-tutori\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Google ADK Tutorial: Build Your First Agent with the Agent Development Kit\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/\",\"name\":\"Varsity Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#organization\",\"name\":\"Varsity Blog\",\"url\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/varsity-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/varsity-logo.png\",\"width\":275,\"height\":64,\"caption\":\"Varsity Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/varsity-by-interviewbit\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/#\\\/schema\\\/person\\\/7b5db9a94eddee529cd35968692d9c29\",\"name\":\"Varsity on Behalf of CEP IIT Delhi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bdb12370d043ff980b2b8f1ccb67f5a1f0e333aaca46cc35358b1af8b1d98334?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bdb12370d043ff980b2b8f1ccb67f5a1f0e333aaca46cc35358b1af8b1d98334?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bdb12370d043ff980b2b8f1ccb67f5a1f0e333aaca46cc35358b1af8b1d98334?s=96&d=mm&r=g\",\"caption\":\"Varsity on Behalf of CEP IIT Delhi\"},\"description\":\"Varsity by InterviewBit, in collaboration with CEP IIT Delhi, creates industry-relevant learning programmes designed to help learners build practical, in-demand skills. Through this author profile, we publish articles that complement our courses covering curriculum-aligned topics, foundational concepts, emerging trends, and advanced insights. Our goal is to help learners deepen their understanding beyond the classroom and apply their knowledge confidently in real-world contexts.\",\"url\":\"https:\\\/\\\/www.interviewbit.com\\\/varsity\\\/blog\\\/author\\\/varsity-on-behalf-of-cep-iit-delhi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Google ADK Tutorial: Build Your First AI Agent in Python","description":"Learn Google ADK step by step: install the Agent Development Kit, build a Gemini agent in Python, add tools, create multi-agent workflows and deploy it.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/","og_locale":"en_US","og_type":"article","og_title":"Google ADK Tutorial: Build Your First AI Agent in Python","og_description":"Learn Google ADK step by step: install the Agent Development Kit, build a Gemini agent in Python, add tools, create multi-agent workflows and deploy it.","og_url":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/","og_site_name":"Varsity Blog","article_published_time":"2026-11-12T06:43:54+00:00","article_modified_time":"2026-11-12T06:43:58+00:00","og_image":[{"width":1010,"height":673,"url":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-tutorial.webp","type":"image\/webp"}],"author":"Varsity on Behalf of CEP IIT Delhi","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Varsity on Behalf of CEP IIT Delhi","Est. reading time":"24 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#article","isPartOf":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/"},"author":{"name":"Varsity on Behalf of CEP IIT Delhi","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#\/schema\/person\/7b5db9a94eddee529cd35968692d9c29"},"headline":"Google ADK Tutorial: Build Your First Agent with the Agent Development Kit","datePublished":"2026-11-12T06:43:54+00:00","dateModified":"2026-11-12T06:43:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/"},"wordCount":5056,"commentCount":0,"publisher":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#organization"},"image":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-tutorial.webp","articleSection":["Generative AI"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/","url":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/","name":"Google ADK Tutorial: Build Your First AI Agent in Python","isPartOf":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#primaryimage"},"image":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#primaryimage"},"thumbnailUrl":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-tutorial.webp","datePublished":"2026-11-12T06:43:54+00:00","dateModified":"2026-11-12T06:43:58+00:00","description":"Learn Google ADK step by step: install the Agent Development Kit, build a Gemini agent in Python, add tools, create multi-agent workflows and deploy it.","breadcrumb":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#primaryimage","url":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-tutorial.webp","contentUrl":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/11\/google-adk-tutorial.webp","width":1010,"height":673,"caption":"google-adk-tutorial-"},{"@type":"BreadcrumbList","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/google-adk-tutori\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.interviewbit.com\/varsity\/blog\/"},{"@type":"ListItem","position":2,"name":"Google ADK Tutorial: Build Your First Agent with the Agent Development Kit"}]},{"@type":"WebSite","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#website","url":"https:\/\/www.interviewbit.com\/varsity\/blog\/","name":"Varsity Blog","description":"","publisher":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.interviewbit.com\/varsity\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#organization","name":"Varsity Blog","url":"https:\/\/www.interviewbit.com\/varsity\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/08\/varsity-logo.png","contentUrl":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-content\/uploads\/2026\/08\/varsity-logo.png","width":275,"height":64,"caption":"Varsity Blog"},"image":{"@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/varsity-by-interviewbit\/"]},{"@type":"Person","@id":"https:\/\/www.interviewbit.com\/varsity\/blog\/#\/schema\/person\/7b5db9a94eddee529cd35968692d9c29","name":"Varsity on Behalf of CEP IIT Delhi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/bdb12370d043ff980b2b8f1ccb67f5a1f0e333aaca46cc35358b1af8b1d98334?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bdb12370d043ff980b2b8f1ccb67f5a1f0e333aaca46cc35358b1af8b1d98334?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bdb12370d043ff980b2b8f1ccb67f5a1f0e333aaca46cc35358b1af8b1d98334?s=96&d=mm&r=g","caption":"Varsity on Behalf of CEP IIT Delhi"},"description":"Varsity by InterviewBit, in collaboration with CEP IIT Delhi, creates industry-relevant learning programmes designed to help learners build practical, in-demand skills. Through this author profile, we publish articles that complement our courses covering curriculum-aligned topics, foundational concepts, emerging trends, and advanced insights. Our goal is to help learners deepen their understanding beyond the classroom and apply their knowledge confidently in real-world contexts.","url":"https:\/\/www.interviewbit.com\/varsity\/blog\/author\/varsity-on-behalf-of-cep-iit-delhi\/"}]}},"_links":{"self":[{"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/posts\/2369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/comments?post=2369"}],"version-history":[{"count":3,"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/posts\/2369\/revisions"}],"predecessor-version":[{"id":2379,"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/posts\/2369\/revisions\/2379"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/media\/2380"}],"wp:attachment":[{"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/media?parent=2369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/categories?post=2369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.interviewbit.com\/varsity\/blog\/wp-json\/wp\/v2\/tags?post=2369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}