如果你关注 AI Agent 开发领域,一定听说过 LangChain、CrewAI、AutoGen 这些名字。但 2025 年 Google 开源的 ADK(Agent Development Kit) 正在改变游戏规则——它是第一个将 MCP 协议原生支持、图执行引擎和 Gemini 深度整合三者合一的框架。
本文不是泛泛的功能介绍,而是一次深度实测。我们将从 MCP 工具集成、工作流编排、动态路由三个核心能力入手,用真实代码验证 Google ADK 到底能不能替代你手头的 Agent 框架。
一、Google ADK 是什么?为什么值得关注?
Google ADK 2.0 是谷歌开源的代码优先(code-first)AI 智能体开发框架,用纯 Python 定义 Agent 行为、工具调用和多 Agent 编排逻辑。
与 LangChain / CrewAI / AutoGen 的本质区别
| 维度 | Google ADK 2.0 | LangChain | CrewAI | AutoGen |
|---|---|---|---|---|
| 设计理念 | 代码优先 + 图执行引擎 | 链式调用 + YAML 配置 | 角色扮演 + 任务委派 | 多 Agent 对话 |
| MCP 支持 | ✅ 原生内置 | ⚠️ 需第三方插件 | ❌ 无 | ❌ 无 |
| 工作流编排 | ✅ 图结构(顺序/并行/循环/条件) | ⚠️ LangGraph 单独使用 | ⚠️ 顺序执行为主 | ⚠️ 对话驱动 |
| 模型绑定 | Gemini 优先,支持任意模型 | 模型无关 | 模型无关 | 模型无关 |
| Google 生态 | ✅ Vertex AI / Cloud Run / BigQuery 原生 | ❌ | ❌ | ❌ |
| 类型安全 | ✅ 完整 Python 类型提示 | ⚠️ 部分 | ⚠️ 弱 | ⚠️ 弱 |
| 学习曲线 | 中等(需理解图执行模型) | 陡峭 | 低 | 中等 |
一句话总结:如果你已经决定用 Gemini 作为主力模型,或者需要 MCP 协议连接外部工具,Google ADK 是目前最顺滑的选择。如果你需要模型无关的灵活性,LangChain 仍然是更成熟的选择。
二、核心特性深度解析
2.1 MCP 协议原生支持——告别胶水代码
MCP(Model Context Protocol)是 Anthropic 提出的开放协议,让 AI 模型以标准化方式调用外部工具和数据源。Google ADK 是第一个原生内置 MCP 客户端的主流框架。
传统方式(LangChain 等)需要你自己写 MCP 客户端、处理协议握手、序列化/反序列化:
# ❌ 传统方式:手动集成 MCP(伪代码)
from mcp_client import MCPClient
client = MCPClient("http://localhost:3000")
tools = await client.list_tools()
# 手动将每个 MCP 工具包装为 LangChain Tool
langchain_tools = []
for tool in tools:
langchain_tools.append(
StructuredTool.from_function(
func=lambda **kwargs: client.call_tool(tool.name, kwargs),
name=tool.name,
description=tool.description,
)
)
Google ADK 方式——一行代码接入任意 MCP 服务器:
from google.adk.tools.mcp_tools import MCPToolset
from google.adk import Agent
# ✅ ADK 方式:一行接入 MCP 服务器
mcp_tools = MCPToolset.from_url("http://localhost:3000")
agent = Agent(
name="mcp_agent",
model="gemini-2.5-flash",
instruction="你是一个可以使用外部工具的助手。",
tools=[mcp_tools],
)
这意味着你可以直接接入社区里数千个现成的 MCP 服务器——文件系统、数据库、API 网关、浏览器自动化——而不需要写任何适配代码。
2.2 工作流编排——图执行引擎
ADK 2.0 最强大的能力是 Workflow 类——一个基于图结构的执行引擎,支持四种编排模式:
顺序执行(Sequential)
from google.adk import Agent, Workflow
# 三个专业 Agent
researcher = Agent(
name="researcher",
model="gemini-2.5-flash",
instruction="搜集用户问题的相关信息,返回关键事实。",
)
writer = Agent(
name="writer",
model="gemini-2.5-flash",
instruction="根据提供的事实撰写一篇简洁的文章。",
)
reviewer = Agent(
name="reviewer",
model="gemini-2.5-flash",
instruction="审查文章质量,修正错误,优化表达。",
)
# 顺序管道:研究 → 写作 → 审查
pipeline = Workflow(
name="content_pipeline",
edges=[("START", researcher, writer, reviewer)],
)
并行执行(Fan-out / Fan-in)
# 并行分析多个维度,最后汇总
sentiment_agent = Agent(name="sentiment", instruction="分析情感倾向。")
topic_agent = Agent(name="topic", instruction="提取核心话题。")
entity_agent = Agent(name="entity", instruction="识别关键实体。")
summary_agent = Agent(name="summary", instruction="汇总以上分析结果。")
parallel_workflow = Workflow(
name="parallel_analysis",
edges=[
("START", sentiment_agent, topic_agent, entity_agent), # 扇出
(sentiment_agent, topic_agent, entity_agent, summary_agent), # 扇入
],
)
条件路由(Conditional Routing)
from google.adk import Agent, Workflow
def route_by_category(ctx):
"""根据分类结果路由到不同的处理 Agent"""
category = ctx.state.get("category", "general")
if category == "technical":
return "tech_expert"
elif category == "billing":
return "billing_expert"
return "general_expert"
tech = Agent(name="tech_expert", instruction="处理技术问题。")
billing = Agent(name="billing_expert", instruction="处理账单问题。")
general = Agent(name="general_expert", instruction="处理一般问题。")
routed_workflow = Workflow(
name="smart_router",
edges=[
("START", "classifier"), # 先分类
("classifier", route_by_category, [tech, billing, general]),
],
)
循环执行(Loop)
# 迭代优化:生成 → 评估 → 不满意则重新生成
generator = Agent(name="generator", instruction="生成回答。")
evaluator = Agent(
name="evaluator",
instruction="评估回答质量,打分 1-10。低于 7 分则要求重新生成。",
)
loop_workflow = Workflow(
name="iterative_refinement",
edges=[
("START", generator, evaluator),
(evaluator, "retry_check", [generator, "END"]), # 条件循环
],
max_iterations=3, # 最多迭代 3 次
)
2.3 LLM 驱动的动态路由
除了硬编码的条件路由,ADK 还支持让 LLM 自己决定下一步该调用哪个 Agent:
from google.adk import Agent
# 协调者 Agent 动态决定委派给谁
coordinator = Agent(
name="coordinator",
model="gemini-2.5-flash",
instruction="""你是一个任务协调者。根据用户需求,将任务委派给合适的专家:
- 数据分析问题 → data_analyst
- 代码相关问题 → code_expert
- 文档撰写需求 → writer
直接输出委派目标和原因。""",
sub_agents=[data_analyst, code_expert, writer],
)
这种混合模式——确定性工作流 + LLM 动态决策——是 ADK 最独特的设计。你可以在关键路径上用图结构保证可预测性,在需要灵活性的节点上让 LLM 做判断。
三、快速上手教程
3.1 安装
# 创建虚拟环境
python3 -m venv adk-env && source adk-env/bin/activate
# 安装 ADK(含 CLI 工具)
pip install "google-adk[cli]"
# 配置 Gemini API Key
export GEMINI_API_KEY="your-key-here"
3.2 第一个 MCP Agent
# my_agent/__init__.py
from google.adk import Agent
from google.adk.tools.mcp_tools import MCPToolset
# 接入文件系统 MCP 服务器
fs_tools = MCPToolset.from_command(
command=["npx", "-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
)
root_agent = Agent(
name="file_assistant",
model="gemini-2.5-flash",
instruction="帮助用户管理文件。可以列出、读取、创建文件。",
tools=[fs_tools],
)
# 启动交互式测试
adk run my_agent
# 或启动 Web UI
adk web my_agent
3.3 实战:构建一个多步骤工作流 Agent
下面是一个完整的「研究报告生成」工作流——从搜索信息到生成报告,全程自动化:
from google.adk import Agent, Workflow
from google.adk.tools.mcp_tools import MCPToolset
# MCP 工具:接入搜索引擎
search_tools = MCPToolset.from_url("http://localhost:3001")
# Step 1: 信息收集
collector = Agent(
name="collector",
model="gemini-2.5-flash",
instruction="根据用户主题搜索 3-5 个关键信息点,以 JSON 列表返回。",
tools=[search_tools],
)
# Step 2: 深度分析
analyst = Agent(
name="analyst",
model="gemini-2.5-flash",
instruction="分析收集到的信息,提取关键洞察和趋势。",
)
# Step 3: 报告撰写
writer = Agent(
name="writer",
model="gemini-2.5-flash",
instruction="将分析结果整理为结构化报告,包含摘要、正文、结论。",
)
# Step 4: 质量审查
reviewer = Agent(
name="reviewer",
model="gemini-2.5-flash",
instruction="审查报告:检查事实准确性、逻辑连贯性、语言质量。给出修改建议。",
)
# 组装工作流
root_agent = Workflow(
name="research_pipeline",
edges=[
("START", collector, analyst, writer, reviewer),
],
)
运行效果:用户输入一个主题 → 自动搜索 → 分析 → 写报告 → 审查 → 输出最终结果。整个过程无需人工干预,每一步的输出自动作为下一步的输入。
四、与竞品的详细对比
4.1 vs LangChain + LangGraph
LangGraph 是 LangChain 生态中的工作流解决方案,功能上与 ADK Workflow 类似。核心区别:
- ADK:一个框架搞定 Agent + 工具 + 工作流 + MCP
- LangChain + LangGraph:需要组合多个包,配置更复杂,但生态更丰富
如果你已经深度使用 LangChain 生态,迁移到 ADK 的成本不低。但如果是新项目,ADK 的「全家桶」体验明显更顺滑。
4.2 vs CrewAI
CrewAI 擅长「角色扮演」式的多 Agent 协作,上手极快。但在以下场景不如 ADK:
- 需要确定性执行流程(CrewAI 的执行顺序由 LLM 决定,不可预测)
- 需要 MCP 工具集成(CrewAI 不支持)
- 需要条件分支和循环(CrewAI 只支持顺序执行)
4.3 vs AutoGen
AutoGen 的核心是多 Agent 对话模式,适合需要「讨论式」决策的场景。ADK 更适合「管道式」任务处理。两者设计哲学不同,没有绝对优劣。
五、适用场景与局限性
最适合的场景
- Google Cloud 技术栈:如果你已经在用 Vertex AI、Cloud Run、BigQuery,ADK 的原生集成能省去大量适配工作
- MCP 工具生态:需要接入大量外部工具,且希望用标准化协议管理
- 可预测的工作流:客服管道、数据处理流水线、内容生成链——需要确定性执行顺序的场景
- 混合编排:部分步骤需要确定性(图结构),部分步骤需要灵活性(LLM 路由)
当前局限性
- Gemini 绑定倾向:虽然支持其他模型,但最佳体验仍需 Gemini API
- 社区生态尚在成长:相比 LangChain 的数千个集成,ADK 的第三方工具还较少
- 文档不够完善:部分高级功能(如自定义中间件、插件系统)的文档还在补全中
- 仅 Python / Java / Go:JavaScript/TypeScript 版本刚起步,前端集成不太方便
六、FAQ
Q1: Google ADK 是免费的吗?
A: ADK 框架本身完全免费开源(Apache 2.0 协议)。但使用 Gemini 模型需要 Google AI API 费用,有免费额度可用。你也可以接入其他模型来避免费用。
Q2: ADK 支持哪些 LLM 模型?
A: 原生优化了 Gemini 2.5 系列(Flash / Pro)。通过自定义 Model Provider,也可以接入 OpenAI GPT-4o、Anthropic Claude、本地 Ollama 模型等。但部分高级功能(如工具调用的结构化输出)在 Gemini 上表现最好。
Q3: MCP 工具在哪里找?
A: MCP 协议已有数千个社区贡献的服务器实现。可以在 MCP Servers GitHub 找到官方仓库,涵盖文件系统、数据库、浏览器自动化、Slack、GitHub 等常见场景。
Q4: ADK 工作流和 LangGraph 有什么区别?
A: 功能上类似,都是图结构执行引擎。区别在于 ADK 是内置能力(零配置),LangGraph 需要额外安装和配置。ADK 的 API 更简洁,LangGraph 的可视化调试工具更成熟。
Q5: 生产环境部署推荐什么方案?
A: 最简方案是 Docker + Cloud Run。ADK 提供了内置的 Runner.serve() 方法启动 HTTP 服务,配合 Dockerfile 即可容器化部署。大规模场景推荐 Vertex AI Agent Engine,自动处理扩缩容和监控。
七、总结评价
Google ADK 2.0 是目前对 MCP 协议支持最好的 Agent 框架,没有之一。它的工作流编排能力——顺序、并行、循环、条件路由——让复杂的 Agent 管道变得可预测、可测试。
推荐指数:⭐⭐⭐⭐(4/5)
扣分项:对非 Gemini 模型的支持还不够平滑,社区生态相比 LangChain 仍有差距。
一句话推荐:如果你用 Gemini + 需要 MCP + 需要确定性工作流,ADK 是当前最优解。否则,LangChain 仍然是更通用的选择。
相关资源:
延伸阅读: