Gemini ADK教程
使用构建的示例代理集合 谷歌的代理开发工具包(ADK).
先决条件
- Python 3.13+
- Google API密钥(适用于Gemini型号)
- 可选:OpenWeather API密钥(适用于天气工具)
- 可选:Tavilly API密钥(用于网络搜索)
安装
# Clone the repository
git clone https://github.com/alfredang/gemini_tutorial.git
cd gemini_tutorial
# Install dependencies using uv
uv sync
# Or using pip
pip install google-adk python-dotenv requests tavily-python streamlit配置
创建 .env 每个代理目录中的文件,其中包含您的API密钥:
GOOGLE_GENAI_USE_VERTEXAI=0
GOOGLE_API_KEY=your-google-api-key
OPENWEATHER_API_KEY=your-openweather-key
TAVILY_API_KEY=your-tavily-key运行代理
使用ADK CLI运行任何代理:
# Terminal mode
adk run
# Web UI mode
adk web 代理示例
| 代理 | 描述 |
|---|---|
basic_agent | 简单的银行助理代理 |
multi_tools_agent | 使用OpenWeather和Tavily搜索工具的代理 |
agent_session | 使用Runner演示会话管理 |
agent_interact | 显示具有事件处理的代理交互模式 |
agent_handoff | 笑话生成器和翻译器之间的多代理切换 |
agent_guardrail | 代理与 before_model_callback 护栏阻挡关键字 |
agent_structured_output | 基于Pydantic的结构化输出(配方示例) |
agent_mcp | 带StreamableHTTP的MCP(模型上下文协议) |
agent_mcp_sse | 符合SSE(服务器发送事件)标准的MCP |
agent_model | 具有不同模型配置的代理 |
transport_agent | 新加坡交通规划的顺序工作流程 |
transport_agent_yaml | 基于YAML的代理配置(实验) |
transport_agent_streamlit | 传输代理的流线型web界面 |
stock_agent | 股票分析的分层多智能体系统 |
travel_agent | 多代理旅行规划师,配备专业子代理 |
tutor_agent | 配备特定学科导师的多代理辅导系统 |
关键概念
代理类型
| 代理类型 | 描述 |
|---|---|
Agent / LlmAgent | 基本LLM驱动代理 |
SequentialAgent | 按顺序运行子代理 |
ParallelAgent | 并行运行子代理 |
使用不同的模型
# Gemini (default)
model='gemini-2.0-flash'
# OpenAI via LiteLlm
from google.adk.models.lite_llm import LiteLlm
model=LiteLlm(model="openai/gpt-4o-mini")添加工具
from google.adk.tools import google_search
# Built-in tools
tools=[google_search]
# Custom function tools
def get_weather(city: str) -> dict:
return {"status": "success", "report": "..."}
tools=[get_weather]次级代理和交接
root_agent = Agent(
name="root_agent",
sub_agents=[agent1, agent2],
instruction="Transfer to agent1 for task A, agent2 for task B"
)护栏
def block_keyword_guardrail(callback_context, llm_request):
# Block requests containing certain keywords
if "BLOCK" in user_message.upper():
return LlmResponse(content=...)
return None
agent = Agent(
before_model_callback=block_keyword_guardrail,
...
)结构化输出
from pydantic import BaseModel
class Recipe(BaseModel):
title: str
ingredients: list[str]
agent = Agent(
output_schema=Recipe,
...
)使用Streamlit运行
cd transport_agent_streamlit
streamlit run app.py资源
许可证
麻省理工学院
