A small series of Google Agent Development Kit examples that build up from a single prompt-driven agent to tool-using, multi-agent, and sequential-agent patterns.
The goal is to keep each example narrow enough to inspect quickly while still showing practical agent engineering concepts: instructions, tool calling, sub-agent routing, structured output, external APIs, and sequential orchestration.
Path: 01-first-agent/
A minimal ADK agent with a single instruction set and no tools.
What it demonstrates:
- Defining a root agent
- Giving an agent a name, model, description, and instruction
- Using a simple persona to make behaviour easy to observe
Main file:
01-first-agent/pirate_agent/agent.py
Path: 02-simple-tool-agent/
An agent that calls a Python tool to retrieve the current Bitcoin price from the CoinGecko API, then responds in a theatrical style.
What it demonstrates:
- Registering a Python function as an agent tool
- Calling an external HTTP API from a tool
- Separating agent instructions from tool implementation
- Adding basic tests around tool behaviour
Main files:
02-simple-tool-agent/bitcoin_bard/agent.py
02-simple-tool-agent/bitcoin_bard/tools.py
02-simple-tool-agent/tests/test_tools.py
Path: 03-distinct-sub-agents/
A routing agent that determines whether the user needs help with a cat or a dog, then delegates to the relevant specialist sub-agent.
What it demonstrates:
- Building a root agent with sub-agents
- Routing user intent to a more specific assistant
- Giving each sub-agent its own tools and instruction set
- Keeping domain-specific actions isolated in separate modules
Main files:
03-distinct-sub-agents/cat_or_dog_assistant/agent.py
03-distinct-sub-agents/cat_or_dog_assistant/sub_agents/
Path: 04-sequential-agent/
A sequential agent that first extracts a country code, then uses that context to check public holidays and weather before suggesting activities.
What it demonstrates:
- Sequential agent orchestration
- Passing context between stages
- Structured output with Pydantic
- Calling external services from tools
- Combining multiple signals before producing a final response
Main files:
04-sequential-agent/activity_planner/agent.py
04-sequential-agent/activity_planner/sub_agents/country_code_exrtractor/
04-sequential-agent/activity_planner/sub_agents/activity_suggestor/
External services used:
- Nager.Date for country codes and public holidays
- Open-Meteo for geocoding and weather forecasts
Each example is self-contained. From the example directory, create a Python environment and install dependencies:
cd 02-simple-tool-agent
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtConfigure Google ADK authentication for your environment, then run the agent with your preferred ADK workflow.
For example, from an example directory:
adk webor:
adk run bitcoin_bardAdjust the package name to match the example you are running.
Some examples include pytest coverage for their tool functions.
Run tests from the relevant example directory:
pytestThis repository is a practical learning path for agent engineering with Google ADK. It is intentionally example-led: each folder isolates one pattern so it is easier to compare agent behaviours, understand tool boundaries, and experiment with orchestration styles.
The examples are useful for exploring:
- Prompt and instruction design
- Tool contracts
- Agent routing
- Multi-agent structure
- Sequential workflows
- External API integration
- Structured model output
- Each example keeps the agent boundary small so changes in instructions, tools, and orchestration are easy to compare.
- Tool functions are separated from agent definitions, which makes behaviour easier to test and avoids hiding application logic inside prompts.
- The sequence moves from single-agent behaviour to routing and staged orchestration, mirroring the design pressure in larger agent systems.