入门 📋 5 个步骤 第 414 / 470 篇

用 Google ADK 2.x 搭一个会调用工具的 Agent(Python 上手,含可视化调试)

用 Google 开源的 ADK 2.x 在几分钟内脚手架出一个带工具的 Python Agent,并用 adk web 的可视化 trace 看清每一步。

2026.09.12· 18 分钟阅读· 约 1599 字· 🧭 Google ADK / 💬 Gemini

Google 的 Agent Development Kit(ADK)是 2026 年 Agent 框架里比较特别的一个:它同时给你「自己画流程图」的确定性控制和「让模型自己决定下一步」的自主委派,而且能混在同一个应用里。听起来复杂,但上手只需要 5 分钟——本教程带你从零跑出第一个会调用工具的 Agent,并用它自带的调试界面把每一步看清楚。

🧭 本教程适合:刚接触 Agent 框架、想找一个「官方维护、文档齐、调试友好」起点的 Python 开发者。需要 Python 3.10+ 和一个 Gemini API Key(在 Google AI Studio 免费申请,不需要 Google Cloud 项目或绑卡)。

先对齐:ADK 在框架里的位置

不同框架对「模型和工具之间那个循环」的约束程度不一样:LangGraph 偏图、CrewAI 偏角色团队、OpenAI Agents SDK 偏轻量声明。ADK 2.x 的答案是「两种都要」——你可以用确定性图控制关键路径,也可以把子任务交给模型自主委派,并在同一个运行时里混用。本篇只做最小可用版本,把「能跑通」放第一位。

Step 1:装 ADK 并脚手架出项目

1 一条命令生成骨架
# 建议用虚拟环境
python -m venv .venv
# Windows: .venv\Scripts\activate
source .venv/bin/activate

pip install google-adk

# 脚手架:生成一个名为 my_agent 的 Agent 项目
adk create my_agent

生成出来的目录大致是这样(不同小版本文件名可能略有差异,以实际输出为准):

my_agent/
├── __init__.py     # 声明包
├── agent.py        # 你的 Agent 定义(核心)
└── .env            # 模型与密钥配置
💡 ADK 把 Agent 项目当普通 Python 包来管理,所以目录里必须有 __init__.py。如果你自己手动建目录,别忘了补这个文件,否则 adk web 会找不到你的 Agent。

Step 2:写工具——普通函数就行

2 没有装饰器,没有 schema 类

ADK 最省事的一点:工具就是普通 Python 函数。它读函数名、类型注解和 docstring,自动生成模型能看懂的调用说明。打开 agent.py,写成下面这样:

# my_agent/agent.py
from google.adk.agents import Agent

def get_current_time(city: str) -> dict:
    """返回指定城市的当前时间。

    Args:
        city: 城市名,例如 "Beijing"。
    """
    # 教程里用占位数据;真实项目换成时区库或接口调用
    return {"status": "success", "city": city, "time": "10:30"}

def convert_currency(amount: float, rate: float) -> dict:
    """按给定汇率把金额换算成目标币种。"""
    return {"status": "success", "result": round(amount * rate, 2)}

# 必须叫 root_agent —— ADK 靠这个名字找到入口
root_agent = Agent(
    model="gemini-flash-latest",   # 模型名以官方文档为准
    name="root_agent",
    description="一个能查时间、算汇率的小助手。",
    instruction=(
        "你是一个务实的助手。"
        "查时间用 get_current_time,换算金额用 convert_currency。"
        "工具没返回结果时,如实说明,不要编造数据。"
    ),
    tools=[get_current_time, convert_currency],
)

两个容易踩的点:① docstring 是给模型看的 API 契约,不是写给自己看的注释;② 工具返回值建议统一带一个 status 字段(success / error),这样出错时模型有东西可推理,而不是面对一个空结果瞎猜。

Step 3:配好密钥,先冒烟测试

3 终端里先聊一句

在 my_agent/.env 里填上你的 Gemini Key(从 Google AI Studio 拿,免费额度够练手):

# my_agent/.env
GOOGLE_API_KEY=你的_gemini_api_key
# 在「包含 my_agent 目录」的上级目录执行
adk run my_agent

# 出现输入提示后,直接问:
#   北京现在几点?
# 观察它是否会调用 get_current_time 工具
🔐 .env 里是真实密钥,务必把它加进 .gitignore,永远不要提交到仓库。团队协作时用环境变量或密钥管理服务注入。

Step 4:用 adk web 把每一步看清楚

4 自带可视化 trace,不用再 print 调试

这是 ADK 最值得用的功能:一个本地 Web 界面,聊天框旁边直接展示完整的事件轨迹——模型调了哪个工具、传了什么参数、返回了什么、最终答案怎么拼出来的。

# 同样在上级目录执行
adk web --port 8000

# 浏览器打开 http://localhost:8000
# 左侧选择 my_agent,右侧对话
# 每条回复旁边可展开事件轨迹:工具调用 → 参数 → 返回值 → 组装答案
✅ 这个界面同时也是你后续沉淀「评测用例」的地方——把调通过的问题留下来,就变成了回归测试集。调试和测试一次性搞定。

Step 5:加约束、加工具、想下一步

5 从「能跑」到「敢用」

跑通之后,按这三步加固:

  1. 在 instruction 里写红线:能做什么、绝对不能做什么、不确定时怎么办。约束写得越明确,Agent 越稳。
  2. 一个工具只做一件事:把「查订单 + 改订单」拆成两个工具,权限和审计都更清晰;写操作单独命名,方便加人工确认。
  3. 想清楚部署目标:ADK 支持托管运行时、Cloud Run、GKE 或任意容器平台。本地跑通后再决定部署方式,别过早纠结。

关于模型与额度:ADK 对 Gemini 优化最好,但架构上是模型无关的,也能接其它提供商的模型(需要装对应依赖)。免费额度有速率限制,跑批量任务前先确认配额;所有模型名、SDK 参数以官方文档当前版本为准,不要照抄旧文章。

常见问题速查

现象大概率原因 & 解决
adk web 里看不到我的 Agent执行目录不对(要在 my_agent 的上级目录),或缺少 __init__.py
报鉴权 / 模型错误.env 里的 Key 没生效或额度用尽,先确认变量名与文件位置
模型不调用工具docstring 太笼统,或 instruction 没说明「什么时候用哪个工具」
工具被调用但结果不对在 adk web 的事件轨迹里看实际传参,多数是参数类型或字段名不匹配
想换成别的模型改 model= 并安装对应依赖,具体写法查官方文档
📌 一句话总结 ADK 的取舍:它把「调试体验」和「确定性编排」都做进了同一个运行时。如果你正在选框架,先用它跑一个最小 Agent,感受一下 trace 界面对排查效率的提升,再决定要不要深入。
← 返回教程中心