微信扫码
添加专属顾问
我要投稿
探索谷歌ADK的全流程设计和多智能体框架,掌握构建复杂应用的核心技能。 核心内容: 1. 端到端全流程设计及其智能编排系统和多智能体架构 2. ADK工具集成生态和部署解决方案 3. ADK的核心Agent类型和多智能体框架设计特点
它融入很多框架不曾涉及的概念
灵活工作流引擎• 支持两种编排模式:
Sequential顺序执行/Parallel并行执行/Loop循环执行)构建确定性流程LlmAgent转移机制)实现自适应行为流模块化协作体系• 采用分层组合架构:通过多个专业化Agent的层级组合构建可扩展应用 • 核心能力:
多维度能力扩展
全场景部署矩阵
三维评估体系
负责任AI实践框架
ADK提供三类核心Agent来构建复杂应用:
LLM智能体基于大语言模型(LLM)驱动,具备自然语言理解、逻辑推理、动态决策能力,可自主选择工具链,适合需要灵活语言处理的任务。
流程控制智能体包括顺序执行(Sequential)、并行处理(Parallel)、循环操作(Loop)三种模式,通过预定义流程精确控制其他Agent的执行逻辑,适用于结构化业务流程。
自定义智能体通过继承BaseAgent基类开发,支持实现个性化业务逻辑、特殊控制流或定制化系统集成,满足高度定制化场景需求。
三类Agent可通过组合使用构建复杂智能系统,开发者可根据场景需求灵活选用。
| 组件 | 技术特性 | 实现机制 | 设计考量 |
|---|---|---|---|
| LLM智能体 | - 支持动态任务委派( transfer_to_agent)- 可绑定工具集 | - 通过 output_key保存输出到状态 | description供路由决策- 指令需包含委派逻辑 |
| 工作流智能体 | - 三类子类: ▪ SequentialAgent▪ ParallelAgent▪ LoopAgent | sub_agents定义子任务流- 自动管理上下文分支( InvocationContext.branch) | - 循环执行需设置 max_iterations或终止条件 |
| 自定义智能体 | BaseAgent- 实现 _run_async_impl方法- 非LLM逻辑(如数据库操作) | session.state- 通过 EventActions(escalate=True)终止循环 | - 需自行处理状态持久化 |
| 类型 | 执行控制 | 状态管理 | 典型代码特征 |
|---|---|---|---|
| 顺序智能体 | sub_agents列表顺序执行- 前序智能体的 output_key自动成为后序输入 | InvocationContext- 状态键直接传递 | <br>SequentialAgent(<br> sub_agents=[A, B, C]<br>)<br> |
| 并行智能体 | - 执行顺序不确定 | - 每个子智能体获得独立 branch路径 | <br>ParallelAgent(<br> sub_agents=[X, Y],<br> state_keys=["api1","api2"]<br>)<br> |
| 循环智能体 | - 每次迭代共享状态 | EventActions.escalate终止- 可读取历史迭代状态 | <br>LoopAgent(<br> max_iterations=5,<br> sub_agents=[process, check]<br>)<br> |
| 机制 | 触发方式 | 数据流向 | 适用场景 |
|---|---|---|---|
| 共享状态 | session.state- 通过 output_key自动保存 | 生产者 → 状态字典 → 消费者 | - 循环迭代中的中间结果 |
| LLM委派 | transfer_to_agent()调用- 由 AutoFlow拦截处理 | 当前智能体 → 目标智能体(需在 sub_agents范围内) | - 需要LLM理解语义的场景(如客服转接) |
| 显式调用 | AgentTool包装智能体- 父智能体的LLM显式调用工具 | 父智能体 → 子智能体 → 结果返回父智能体 | - 需要获取直接返回值的场景(如数学计算服务) |
| 模式 | 智能体组合 | 关键ADK特性 | 实现示例 |
|---|---|---|---|
| 协调器模式 | transfer_to_agent- 子智能体明确 description | - 路由智能体根据问题类型 转接至「支付」或「技术」子智能体 | |
| 生成-评审 | SequentialAgent | output_key="draft"- 评审器读取 state['draft'] | - 生成文本 → 检查事实性 → 输出最终结果 |
| 并行收集 | SequentialAgentParallelAgent[采集器1, 采集器2],聚合器 ] | output_key- 聚合器读取多个状态键 | - 并行获取销售/库存数据 → 合并生成报告 |
| 迭代优化 | LoopAgent处理器, 条件检查器(触发 escalate)] | EventActions(escalate=True)终止循环- 处理器更新 state['current_result'] | - 生成代码 → 运行测试 → 未通过则继续优化 |
| 人工介入 | - 通过 CallbackContext恢复流程 | - 大额交易时暂停流程 → 等待人工批准 → 继续执行 |
这些特性使ADK既能保证工具调用的规范性,又保持了LLM驱动的灵活性,适合构建需要复杂系统交互的智能体应用。
| 特点分类 | 核心能力 | 技术实现 |
|---|---|---|
| 模块化设计 | ||
| 动态调用机制 | ||
| 上下文感知 | ToolContext提供:• State(状态管理) • EventActions(流程控制) • 认证/数据服务 | |
| 多类型工具支持 | 1. 内置工具(如Google Search) 2. 自定义Function Tools 3. 第三方工具(LangChain等) | |
| 开发规范 | • 语义化函数名(如 get_weather)• 类型注解(Type Hints) • 结构化docstring | |
| 智能引导 | • 指定调用条件(如"当用户询问天气时") • 定义错误处理策略(如"返回错误时重试") |
关键优势:
当然,它也支持当下最流行的mcp功能
| 协议与框架分离 | MCPToolset桥接实现互通 |
| 双向集成模式 | 2. ADK工具通过MCP服务暴露给其他客户端 |
| 动态工具发现 | |
| 异步通信机制 | |
| 连接生命周期管理 | exit_stack),避免资源泄漏 |
| 协议转换层 | - MCP工具描述 → ADK工具接口 - ADK工具结果 → MCP响应格式 |
| 混合部署支持 | |
| 状态保持 |
关键实现要点:
客户端模式:ADK通过MCPToolset封装以下操作:
npx运行Node.js服务)list_tools→BaseTool)call_tool转发到MCP服务)服务端模式:需自行实现:
adk_to_mcp_tool_type)TextContent)典型应用场景:
| 全托管服务 | |||
| 容器化服务 | |||
| 自定义容器 | |||
| 本地服务化 |
graph TD
A[ADK构建的Agent] --> B[标准Docker镜像]
B --> C{部署目标}
C --> D[自建K8s集群]
C --> E[第三方容器服务]
C --> F[边缘设备]
graph TD
A[定义评估目标] --> B[准备测试数据]
B --> C{选择评估方式}
C -->|单元测试| D[创建.test.json文件]
C -->|集成测试| E[创建.evalset.json文件]
D --> F[运行pytest/adk eval]
E --> G[运行adk web/adk eval]
F --> H[生成评估报告]
G --> H
1. 双维度评估体系
2. 动态阈值配置
{
"criteria": {
"tool_trajectory_avg_score": 0.9,
"response_match_score": 0.7
}
}
3. 会话状态流程
graph LR
S[初始状态] --> T1[用户提问1]
T1 --> A1[Agent响应1]
A1 --> T2[用户提问2]
T2 --> A2[Agent响应2]
A2 --> F[最终状态验证]
1. 质量保障矩阵
2. 典型应用场景
Google Cloud Vertex AI通过多层防护机制确保AI Agent的安全性、可靠性与品牌价值观对齐:
| 防护层 | 关键措施 | 应用场景 |
|---|---|---|
| 身份与授权 | - User-Auth(OAuth用户令牌) | |
| 输入/输出过滤 | - Gemini内置安全过滤器(内容分级拦截) - 回调函数验证参数 | |
| 沙箱化代码执行 | - 自定义无网络隔离环境 | |
| 评估与追踪 | - 工具调用链路分析 | |
| 网络隔离(VPC-SC) |
| 风险类型 | 应对方案 |
|---|---|
| 目标偏离/误操作 | |
| 有害内容生成 | |
| 数据泄露 | |
| 间接提示注入 |
graph TD
A[用户输入] --> B{安全护栏?}
B -- 安全 --> C[工具调用]
B -- 拦截 --> D[返回预设响应]
C --> E[身份验证]
E --> F[参数校验]
F --> G[执行: 沙箱/最小权限]
G --> H[输出过滤]
H --> I[评估日志]
tool_context动态限制(如仅允许查询特定表)。通过以上分层防护,可构建既强大又安全的AI Agent系统。
adk比较crewai、agno、pocektflow、langgraph这些框架
crewai和agno等,都有编排的概念,但他们更偏向于多agent的架构,pocketflow和langraph这两者则本身是以图引擎作为编排的手段的 。
crewai更像是在架构一整套的公司与组织的运行机制,其工具集合试用过后发现,其实内部很多都是adapter模式去引用了更多成熟的工具库,但这种机制也有弊端,因为只是简单的适配器
agno很轻量,与crewai比较,要轻量的多,其内部也有rag等工具集的集成,对知识库等也有涉及,并且其实本身内部也有一个简单的webui,并且性能埋点方面,它也有集成一个自己的性能、调试的框架(默认是开的,还需要通过环境变量去关闭,挺隐蔽的,需要注意一下)
langraph就不多评价了,毕竟用的不多,文档比较复杂
pocektflow其实是graph派的,但是是绝对轻量级的,说起来,它倒是和adk一样,对agent有事前事中事后的概念,我是觉得post处理这些,对于llm的类型的应用真的很重要。
它的官网上也有总结很多MAS(多agent的设计模式)
它这两张图已经总结的非常好了,就不多说了
当然,谷歌的adk也有对应的涉及模式的总结,其实两者可以合并一下,单独出一篇,agent设计模式
agno的teams,对应的则是MAS的设计模式,它里面就三种
crewai也有teams的概念,不过crewai的我确实不是特别喜欢,因为代码库其实不小
Abstraction** | App-Specific Wrappers | Vendor-Specific Wrappers | Lines | Size |
|---|---|---|---|---|
(e.g., QA, Summarization) | (e.g., OpenAI, Pinecone, etc.) | |||
(e.g., FileReadTool, SerperDevTool) | (e.g., OpenAI, Anthropic, Pinecone, etc.) | |||
(e.g., CodeAgent, VisitWebTool) | (e.g., DuckDuckGo, Hugging Face, etc.) | |||
(e.g., Semantic Search) | (e.g., PostgresStore, SqliteSaver, etc.) | |||
(e.g., Tool Agent, Chat Agent) | (e.g., OpenAI, Pinecone, etc.) | (core-only) | ||
| PocketFlow | Graph | None | None | 100 |
基于对Google ADK框架的全面分析,结合行业主流框架的公开资料,我们可以得出以下客观比较:
企业级工程化设计
混合编排范式
Google技术栈整合
| 维度 | ADK | CrewAI | PocketFlow | AutoGen |
|---|---|---|---|---|
首选ADK的场景
考虑替代方案的场景
框架融合迹象
ADK的潜在挑战
综上,ADK代表了当前企业级AI Agent开发的工程化标杆,特别适合深度使用Google Cloud的团队。其设计理念正在影响整个行业,但开发者仍需根据具体技术栈和场景需求做出选择。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-30
Cursor 2.0的一些有趣的新特性
2025-10-30
Anthropic 发布最新研究:LLM 展现初步自省迹象
2025-10-30
让Agent系统更聪明之前,先让它能被信任
2025-10-30
Rag不行?谷歌DeepMind同款,文档阅读新助手:ReadAgent
2025-10-29
4大阶段,10个步骤,助你高效构建企业级智能体(Agent)
2025-10-29
DocReward:让智能体“写得更专业”的文档奖励模型
2025-10-29
沃尔沃RAG实战:企业级知识库,早就该放弃小分块策略
2025-10-29
大模型的Funcation Calling是什么?
2025-08-21
2025-08-21
2025-08-19
2025-09-16
2025-10-02
2025-09-08
2025-09-17
2025-08-19
2025-09-29
2025-08-20
2025-10-29
2025-10-29
2025-10-28
2025-10-28
2025-10-27
2025-10-26
2025-10-25
2025-10-23