Course Code: TGS-2024042961 Conducted by: Tertiary Infotech Academy Pte Ltd (UEN 201200696W) Duration: 2 days · 16 training hours
Courseware and hands-on lab repository for the WSQ course Develop Multi AI Agent Applications with Gemini Agent ADK, built on Google's open-source Agent Development Kit (ADK) and the Gemini model family.
| Outcome | |
|---|---|
| LO1 | Analyze the range of LLM applications using Generative AI (GAI) and identify their industrial use cases |
| LO2 | Establish Google Gemini GAI designs and assess improvements on engineering processes |
| LO3 | Develop LLM applications and assess its feasibility |
| LO4 | Evaluate the performance effectiveness of Retrieval Augmented Generation (RAG) |
| Topic | Title | Labs |
|---|---|---|
| 1 | Overview of Agentic AI in Gemini ADK | 1–4 |
| 2 | Build A Multi Agent App with Gemini ADK | 5–12 |
| 3 | Build Agentic AI RAG in Gemini ADK | 13–15 |
| 4 | Build an Agentic AI App with Gemini Agent ADK and Streamlit | 16–18 |
Prerequisites: Python 3.13+, uv, and a free Gemini API key from Google AI Studio.
git clone https://github.com/tertiarycourses/TGS-2024042961-Develop-Multi-AI-Agent-Applications-with-Gemini-Agent-ADK.git
cd TGS-2024042961-Develop-Multi-AI-Agent-Applications-with-Gemini-Agent-ADK/labs
uv syncCreate a .env file in the labs/ folder:
GOOGLE_GENAI_USE_VERTEXAI=0
GOOGLE_API_KEY=your-google-api-key
OPENWEATHER_API_KEY=your-openweather-key # optional, tool labs
TAVILY_API_KEY=your-tavily-key # optional, search labsNever commit your
.envfile or API keys. It is git-ignored in this repository.
Run any agent:
uv run adk run <agent_folder> # terminal chat
uv run adk web # browser IDE at http://localhost:8000| # | Lab | Agent folder | Topic |
|---|---|---|---|
| 1 | Set Up the Gemini ADK Environment and Get an API Key | lab01 |
1 |
| 2 | Build Your First ADK Agent — A Retail Banking Assistant | lab02 |
1 |
| 3 | Give an Agent Tools — Live Weather and Web Search | lab03 |
1 |
| 4 | Swap the Model — Running an ADK Agent on a Non-Gemini LLM | lab04 |
1 |
| 5 | Give an Agent Memory — Sessions, State and the Runner | lab05 |
2 |
| 6 | Inspect the Agent Loop — Events, Tool Calls and Final Responses | lab06 |
2 |
| 7 | Multi-Agent Handoff — Joke Generator to Translator | lab07 |
2 |
| 8 | Hierarchical Multi-Agent System — The Tutor Agent | lab08 |
2 |
| 9 | Sequential Workflow Agent — Singapore Transport Route Planner | lab09 |
2 |
| 10 | Add a Guardrail — Blocking Unsafe Requests with a Callback | lab10 |
2 |
| 11 | Structured Output — Forcing Valid JSON with Pydantic | lab11 |
2 |
| 12 | Connect External Tools with MCP — StreamableHTTP and SSE | lab12 |
2 |
| 13 | Load, Split and Embed Documents into a Vector Store | lab13 |
3 |
| 14 | Build the Agentic RAG Agent — Retrieval as a Tool | lab14 |
3 |
| 15 | Evaluate RAG Performance — Retrieval Quality and Groundedness | lab15 |
3 |
| 16 | Declarative Agents — Configuring a Multi-Agent System in YAML | lab16 |
4 |
| 17 | Ship the Agent as a Web App with Streamlit | lab17 |
4 |
| 18 | Capstone — Design, Build and Assess Your Own Multi-Agent Application | lab18 |
4 |
Every lab is a self-contained folder holding its own agent script, data files and a
README.md lab sheet. See labs/LABS.md for the full index.
Define an agent
from google.adk.agents import Agent
root_agent = Agent(
model='gemini-2.0-flash',
name='root_agent',
description='A helpful assistant for user questions.',
instruction='Answer clearly and concisely.',
)Add a tool — the docstring and type hints are the contract the model reads.
def get_weather(city: str) -> dict:
"""Retrieves the current weather for a specified city.
Args:
city (str): The name of the city.
Returns:
dict: status and result or error msg.
"""
return {"status": "success", "report": "..."}
agent = Agent(..., tools=[get_weather])Multi-agent handoff
root_agent = Agent(
name='root_agent',
sub_agents=[math_tutor_agent, physics_tutor_agent, history_tutor_agent],
instruction='Route each question to the right specialist.',
)Sequential workflow
from google.adk.agents import SequentialAgent
workflow = SequentialAgent(
name='workflow_agent',
sub_agents=[input_agent, research_agent, report_agent],
)Guardrail — return None to allow, an LlmResponse to block.
def block_keyword_guardrail(callback_context, llm_request):
if "BLOCK" in last_user_message.upper():
return LlmResponse(content=types.Content(
role="model", parts=[types.Part(text="I cannot process this request.")]))
return None
agent = Agent(..., before_model_callback=block_keyword_guardrail)Structured output — note an agent with output_schema cannot also use tools.
from pydantic import BaseModel
class Recipe(BaseModel):
title: str
ingredients: list[str]
cooking_time: int
agent = Agent(..., output_schema=Recipe)| Artifact | File |
|---|---|
| Trainer Slides | courseware/Develop Multi AI Agent Applications with Gemini Agent ADK-v1.3.pptx |
| Learner Slides (PDF) | courseware/Develop Multi AI Agent Applications with Gemini Agent ADK-v1.3.pdf |
| Lesson Plan | courseware/LP-Develop Multi AI Agent Applications with Gemini Agent ADK.docx |
| Learner Guide | courseware/LG-Develop Multi AI Agent Applications with Gemini Agent ADK.docx |
| Learner Guide (Markdown) | LG-Develop Multi AI Agent Applications with Gemini Agent ADK.md |
The Learner Guide carries the full step-by-step instructions for all 18 labs, plus reference sections on core ADK patterns, evaluating a RAG pipeline, and assessing the feasibility of an agent application.
The Trainer Slides (v1.3, 160 slides) teach each lab as a four-part unit — briefing → process map → procedure with the actual commands → verification with troubleshooting — alongside comparison matrices, decision maps, worked code examples and native charts. Slide transitions are deliberately restrained (content fades, section dividers push), with click-through reveals on the process maps so a stage can be discussed before the next appears.
The assessment set is confidential and is not published in this repository.
- Google ADK Documentation
- Google AI Studio — free Gemini API keys
- Course page
- LMS / TMS
Tertiary Infotech Academy Pte Ltd · UEN 201200696W Email: enquiry@tertiaryinfotech.com · Tel: +65 6100 0613 · tertiarycourses.com.sg
© 2026 Tertiary Infotech Academy Pte Ltd. All rights reserved.