构建有效 AI Agent
原文:Building Effective Agents
来源:Anthropic Research
翻译整理:2026-06-16
核心论点
“最成功的实现方案使用的是简单、可组合的模式,而非复杂的框架。”
这是 Anthropic 在大量实践后得出的核心结论——在 Agent 设计中,简单性是一种竞争优势,而不是妥协。
两个基本概念:工作流 vs Agent
在讨论”Agent 系统”时,需要区分两类截然不同的东西:
| 类型 | 定义 | 特点 |
|---|---|---|
| 工作流(Workflow) | LLM 和工具通过预定义代码路径编排 | 流程固定,可预测,可调试 |
| Agent | LLM 动态决定流程和工具使用方式 | 流程灵活,适应性强,更难控制 |
大多数生产系统实际上是工作流,而不是真正的 Agent。在不需要动态决策的场景下,使用工作流比使用 Agent 更可靠。
什么时候应该用 Agent
Agent 引入了更高的延迟和成本,只有在以下情况才值得:
- 任务是开放式的,步骤无法预先确定
- 需要根据环境反馈动态调整策略
- 任务复杂度足以抵消 Agent 带来的额外成本
默认选择应该是:从最简单的方案开始,只在有充分理由时才增加复杂度。
五种核心工作流模式
模式 1:Prompt 链(Prompt Chaining)
将任务分解为顺序执行的步骤,每步之间设置程序化检查点。
输入 → [LLM 步骤 1] → 检查点 → [LLM 步骤 2] → 检查点 → [LLM 步骤 3] → 输出
适用场景:任务可以自然分解为清晰的阶段,且每阶段输出是下一阶段的输入。
模式 2:路由(Routing)
先对输入进行分类,再将其导向专门的下游处理流程。
输入 → [分类器] → 客服问题 → [客服 LLM]
→ 技术问题 → [技术 LLM]
→ 退款问题 → [退款流程]
适用场景:不同类型的输入需要明显不同的处理策略,用一个通用 LLM 处理所有类型效果差。
模式 3:并行化(Parallelization)
两种变体:
- 并行独立子任务:将任务拆分,多个 LLM 同时处理不同部分
- 投票共识:对同一任务运行多次,通过多数投票提高可靠性
┌→ [LLM 实例 A] ──┐
输入 ──────→├→ [LLM 实例 B] ──┼→ 结果聚合 → 输出
└→ [LLM 实例 C] ──┘
适用场景:任务有多个独立子部分(并行),或对准确性要求极高、需要多数验证(投票)。
模式 4:编排者-工作者(Orchestrator-Workers)
核心 LLM 动态分解任务,分配给工作者 LLM 执行,再汇总结果。
[编排者 LLM]
├── 动态分解任务
├── 分配给 Worker A → 执行 → 返回结果
├── 分配给 Worker B → 执行 → 返回结果
└── 汇总所有结果 → 最终输出
适用场景:任务结构在运行前不可知,需要动态决定子任务划分方式。
模式 5:评估者-优化者(Evaluator-Optimizer)
一个 LLM 生成输出,另一个 LLM 评估并提供反馈,形成迭代改进循环。
[生成 LLM] → 初始输出 → [评估 LLM] → 反馈 → [生成 LLM] → 改进输出 → ...
适用场景:有明确的质量标准,且初版输出通常需要迭代改进(如代码生成、文本优化)。
三条实现原则
原则 1:保持设计简洁
从最简单的方案开始,只在数据证明需要时才增加复杂度。复杂框架不等于更好结果。
原则 2:通过显式规划步骤提升透明度
让 Agent 在执行前先输出计划,使其决策过程可观察、可调试。
原则 3:像工程 API 一样工程化 ACI
ACI(Agent-Computer Interface) = Agent 与工具之间的接口。
工具文档和测试应该得到与代码同等级别的工程投入。Anthropic 在 SWE-bench 实现中,在工具优化上花费的时间超过了在 prompt 优化上的时间。
真实应用案例
客户支持 Agent
结合要素:
- 自然对话界面(处理用户意图)
- 工具集成(访问订单数据、执行退款等操作)
- 多步骤问题处理能力
关键成功因素:在执行不可逆操作(如退款)前设置人工确认检查点。
代码生成 Agent
核心优势:利用自动化测试作为可靠的验证和迭代信号。
Agent 可以:生成代码 → 运行测试 → 根据测试失败信息修改代码 → 重新运行测试。这个循环可以在无需人工介入的情况下自主迭代。
工具开发最佳实践
- 使用熟悉的格式:工具输入/输出格式应匹配互联网常见文本模式,降低 LLM 理解成本
- 最小化格式开销:避免不必要的嵌套、冗余字段
- 提供使用示例:描述中包含「何时用」「如何用」的具体例子
- 大量测试:用多种输入场景测试工具,找出边缘情况
- 防错设计(Poka-yoke):在工具设计层面防止常见错误,而非依赖 LLM 不犯错
核心记忆点
简单 + 可组合 + 工具打磨 > 复杂框架
在 Agent 系统中,工具质量对最终性能的影响往往超过模型选择或 prompt 设计。