用 Google ADK 搭建多智能体:Planner + Writer 协作写文章
单个 AI 写文章,常常要么跑题、要么结构稀烂。解决思路是把活儿拆给多个各司其职的 AI:一个负责列大纲、一个负责写、一个负责挑毛病。Google 官方的 Agent Development Kit(ADK) 就是干这个的——它是 Google 开源的智能体框架,原生支持多智能体编排,还自带一个本地调试网页。本教程带你用 ADK 搭一个"规划员 + 写手 + 校验员"协作的博客写作智能体。
先搞懂:ADK 的多智能体是什么?
ADK 里,一个 Agent 就是一个 Python 对象,带"人设(instruction)"和"工具(tools)"。多智能体就是把这些 Agent 像乐高一样拼起来,框架帮你管理"谁先干、结果怎么传给下一个"。本教程用的三种编排原语:
| 原语 | 作用 | 本教程用法 |
|---|---|---|
| SequentialAgent | 按顺序一个接一个跑 | 规划 → 写作 → 校验 流水线 |
| LoopAgent | 循环跑,直到满足条件 | 大纲不合格就重新规划 |
| Agent + tools | 单个会调用工具的 Agent | 规划员、写手、校验员 |
为什么不直接让一个 AI 写完?单 Agent 容易"一口气写飞"。拆成多角色 + 校验循环,质量更稳定,也方便你单独调某个环节。这是生产级 Agent 的标准套路。
Step 1:装好 Python 与 ADK
ADK 需要 Python 3.10+。直接用 pip 安装(国内可加清华镜像):
# 安装 ADK
pip install google-adk
# 确认装好
adk --version
# 需要的话,装个虚拟环境隔离依赖(推荐)
python -m venv .venv
source .venv/bin/activate # Windows 用 .venv\Scripts\activate
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple。ADK 当前主版本为 2.x,命令以 adk --help 实际输出为准。Step 2:拿到 Gemini API Key
ADK 默认用 Google 的 Gemini 模型。去 Google AI Studio 免费申请一个 Key:
1. 打开 Google AI Studio(aistudio.google.com)
2. 点「Get API Key」创建一个密钥
3. 复制密钥,下面会写进 .env 文件
# 在项目目录建 .env,写入:
GOOGLE_API_KEY=你的key
Key 别提交到公开仓库:把 .env 加进 .gitignore。任何人拿到这个 Key 都能用你的额度调用 Gemini。
Step 3:建项目骨架
ADK 直接从项目目录加载 Agent。建一个文件夹,放上必要的文件:
mkdir bloggeragent && cd bloggeragent
touch requirements.txt .env __init__.py agent.py
# requirements.txt 写入:
google-adk
python-dotenv
# 安装依赖
pip install -r requirements.txt
agent.py 里要定义一个 root_agent 变量,框架会把它当作入口。__init__.py 里写 from . import agent 即可自动暴露。Step 4:写规划员(Planner)
在 agent.py 里,先写规划员。它只干一件事:根据主题产出一份清晰的 Markdown 大纲,并把结果存到 blog_outline:
import os
from dotenv import load_dotenv
from google.adk.agents import Agent
load_dotenv()
MODEL = os.getenv("MODEL", "gemini-flash-latest")
blog_planner = Agent(
name="BlogPlanner",
model=MODEL,
description="为技术文章生成可扫读的大纲。",
instruction="""
你是一位技术内容策划。请产出清晰的 Markdown 大纲,包含:
- 标题
- 简短引言
- 4~6 个主要小节(每节 2~3 个要点)
- 结论
只返回 Markdown 大纲本身。
""",
output_key="blog_outline",
)
Step 5:写写手 + 校验循环
加一个写手 Agent(读大纲扩写成文),再加一个校验 Agent,用 LoopAgent 把它们包起来——校验不过就重新规划:
from google.adk.agents import LoopAgent
blog_writer = Agent(
name="BlogWriter",
model=MODEL,
description="根据大纲扩写完整文章。",
instruction="你是技术写手。读取状态里的 blog_outline,写出一篇流畅、准确的中文文章。",
output_key="blog_draft",
)
class OutlineValidationChecker(Agent):
def __init__(self):
super().__init__(
name="OutlineValidationChecker",
model=MODEL,
description="校验大纲是否可用。",
instruction="检查状态里的 blog_outline:若有标题、引言、4~6 节和结论,回复 exactly 'ok',否则回复 exactly 'retry' 并列出缺失项。",
output_key="validation_result",
)
robust_planner = LoopAgent(
name="RobustBlogPlanner",
sub_agents=[blog_planner, OutlineValidationChecker],
max_iterations=3,
)
LoopAgent 的 max_iterations 防止死循环:校验最多重试 3 次,再不行就带着当前结果往下走,避免 Agent 卡在"永远不合格"里烧钱。
Step 6:组装主 Agent 并跑起来
用 SequentialAgent 把"稳健规划 → 写作"串成主流程,定义为 root_agent:
from google.adk.agents import SequentialAgent
root_agent = SequentialAgent(
name="BloggerAgent",
sub_agents=[robust_planner, blog_writer],
)
然后在终端启动本地调试界面:
adk web
打开 http://127.0.0.1:8000 ,就能在网页里和 Agent 对话,左边输入"写一篇关于 AI Agent 成本优化的文章",右边实时看到规划、校验、写作的每一步。
adk web 是调试神器:你能亲眼看到每个子 Agent 的输入输出、工具调用,定位"哪一步跑偏了"比盲调快十倍。Step 7:评估与部署(进阶)
ADK 自带评估能力,写几个用例防止回归;跑通后部署到 Google Cloud:
# 写评估用例(示例)
from google.adk.evaluation import EvalSet
eval_set = EvalSet(cases=[
{"input": "写一篇关于 RAG 的文章", "expected_tools": []}
])
# 部署到 Cloud Run(需 Google Cloud 项目)
adk deploy cloud_run
常见问题速查
| 你遇到的现象 | 大概率原因 & 解决 |
|---|---|
| adk 命令找不到 | 虚拟环境没激活,或 pip 装到了别的 Python |
| 报 API Key 错误 | .env 没建或没写 GOOGLE_API_KEY,检查路径 |
| 子 Agent 读不到上游结果 | 确认上游 Agent 设了 output_key,下游从状态读取 |
| 一直 retry 循环 | 把 LoopAgent 的 max_iterations 调小,或放宽校验指令 |