《Building effective agents》学习总结
https://www.anthropic.com/engineering/building-effective-agents
1. 智能体的定义与分类
• 定义多样性:不同团队对“智能体”的理解存在差异,Anthropic将其统一归类为Agentic Systems(自主系统),并区分两种核心架构:
• 工作流(Workflows):基于预定义代码路径协调LLM与工具,流程固定(如按步骤调用工具)。
• 智能体(Agents):动态自主控制系统,LLM自行规划任务路径和工具使用,灵活性更高。
2. 何时使用智能体
• 简单优先原则:多数场景下,优化单次LLM调用(如结合检索或上下文示例)已足够,仅在以下情况考虑复杂系统:
• 工作流适用场景:任务结构明确、需一致性输出(如固定流程的客服工单处理)。
• 智能体适用场景:任务开放性强、需动态决策(如多文件代码修改、复杂信息搜集)。
• 权衡因素:智能体以更高延迟和成本换取性能,需评估必要性。
3. 框架使用建议
• 慎用框架:LangChain、Amazon Bedrock等框架可简化开发,但可能引入抽象层,导致调试困难。
• 最佳实践:
• 优先直接调用LLM API实现基础模式(如提示链)。
• 若用框架,需透彻理解底层逻辑,避免“黑箱”操作。
4. 核心构建块与工作流模式
• 基础构建块:增强型LLM
集成检索、工具、记忆等能力,通过Model Context Protocol标准化工具接口,提升LLM与环境的交互效率。
• 五大工作流模式:
-
提示链(Prompt Chaining)
◦ 机制:分解任务为多步骤,前序输出作为后续输入,可插入程序化检查(如大纲审核后再生成文档)。◦ 适用场景:可清晰拆解的任务(如营销文案生成→翻译)。
-
路由(Routing)
◦ 机制:分类输入后导向专用流程(如客服问题分类至退款/技术支持流程)。◦ 适用场景:任务类别差异大且分类准确率高(如模型分级路由:简单问题用Haiku,复杂问题用Sonnet)。
-
并行化(Parallelization)
◦ 变体:◦ 分段(Sectioning):独立子任务并行(如内容生成与合规审查并行)。
◦ 投票(Voting):多模型生成结果聚合(如漏洞检测需多轮投票)。
◦ 适用场景:需加速或高置信度结果(如自动化评估多维度指标)。
-
协调者-工作者(Orchestrator-Workers)
◦ 机制:中央协调器动态分配子任务(如编码代理拆分多文件修改)。◦ 适用场景:子任务不可预测(如复杂代码库修改需动态规划)。
-
评估优化器(Evaluator-Optimizer)
◦ 机制:生成器与评估器循环迭代(如文学翻译的多次润色)。◦ 适用场景:需明确评估标准且迭代优化有效(如多轮搜索分析)。
5. 智能体的核心特征与应用
• 自主性体现:
• 动态规划任务路径,通过工具调用与环境交互(如读取代码执行结果)。
• 支持人机协同:任务中可暂停等待人工输入或遇阻时求助。
• 适用场景:
• 开放性问题(如GitHub Issue修复需多文件修改)。
• 需长期运行且信任模型决策(如Anthropic的“计算机使用”代理)。
• 风险控制:沙盒测试、迭代次数限制等防护机制必不可少。
6. 实际应用案例(附录1)
• 客户支持:
• 结合对话流与工具调用(调取订单数据、执行退款),按成功解决问题计费。
• 编码代理:
• 通过自动化测试验证代码,解决SWE-bench任务,需人工审核确保系统兼容性。
7. 工具设计的提示工程(附录2)
• 设计原则:
• 清晰性:工具描述需含示例、边界说明(如绝对路径vs相对路径)。
• 易用性:避免复杂格式(如JSON转义),贴近自然文本格式(如Markdown代码块)。
• 防错设计:参数命名和结构减少误用(如强制绝对路径避免目录切换错误)。
• 测试迭代:通过大量用例观察工具使用错误,持续优化接口设计。
8. 核心原则总结
• 三原则:
- 简约设计:仅在必要时增加复杂性。
- 透明化过程:展示代理的决策步骤(如显示规划日志)。
- 优化代理-计算机接口(ACI):工具文档与测试并重。
• 成功关键:以需求为导向,平衡性能与复杂度,通过评估迭代持续优化。