最近在学习AI Agent的设计模式时,发现了Anthropic发布的一篇好文《Building Effective agents》,仔细学习了下,值得跟大家分享。
在AI代理开发领域,Anthropic最新发布的研究报告为行业指明了方向。经过与数十个跨行业团队的深度合作,Anthropic发现了一个令人意外的真相:最成功的LLM代理实现都采用简单、可组合的模式,而非复杂的框架。
这一发现颠覆了许多开发者的认知。在追求技术复杂性的浪潮中,简单性反而成为了制胜的关键。
核心理念:简单胜过复杂
Anthropic在报告开篇就强调了这一核心观点。经过大量实践验证,研究团队发现,那些依赖复杂框架的项目往往面临维护困难、调试复杂、性能不稳定等问题。相反,采用简单实现方式的项目不仅开发效率更高,而且在生产环境中表现更加稳定可靠。
"我们与数十个构建LLM代理的团队合作过。一致的发现是,最成功的实现使用简单、可组合的模式,而不是复杂的框架。"
工作流与代理的本质区别
Anthropic对代理系统进行了清晰的分类,将所有变体归类为"代理系统",但在架构上区分了工作流和代理两种重要类型:
• 工作流系统 - 通过预定义的代码路径来编排LLM和工具的协作
• 代理系统 - LLM动态指导自己的流程和工具使用,保持对任务完成方式的控制权
这种区分的关键在于动态性与预定义性的差异。工作流适合流程相对固定的场景,而代理则更适合需要灵活应对的复杂任务。
增强型LLM:现代代理的核心架构
Anthropic提出了增强型LLM的概念,这是构建现代AI代理的基础架构:
增强型LLM = LLM + 检索 + 工具 + 记忆
这个公式看似简单,但蕴含着深刻的设计哲学。通过为这些外部依赖定义良好的接口,比如使用MCP(模型上下文协议),开发者可以轻松地集成各种功能模块。正如文章所建议的,我们也可以使用Spring AI这样的框架来屏蔽具体实现的差异,让开发更加专注于业务逻辑。

五大工作流模式详解
Anthropic总结了五种核心的工作流模式,每种都有其特定的应用场景和技术实现:
1. 提示链(Prompt Chaining)
提示链的核心思想是用延迟换取更高的准确性,通过将复杂任务分解为多个简单的LLM调用来提升整体效果。

典型应用场景包括:
• 生成营销文案,然后翻译成不同语言
• 先写文档大纲,检查大纲是否符合标准,再基于大纲写完整文档
2. 路由(Routing)
路由模式通过智能分发来优化处理效率。系统可以将不同类型的客户服务查询(一般问题、退款请求、技术支持)导向不同的下游流程、提示和工具。

更重要的是,路由还能实现成本与速度的智能优化:将简单常见问题导向Claude 3.5 Haiku这样的轻量模型,将复杂罕见问题导向Claude 3.5 Sonnet这样的强大模型。
3. 并行化(Parallelization)

并行化模式包含两种主要应用:
分段处理:一个模型实例处理用户查询,另一个筛查不当内容。这种分工比让同一个LLM同时处理防护和核心响应效果更好。
投票机制:多个不同的提示审查代码漏洞,或评估内容是否不当,通过不同的投票阈值来平衡误报和漏报。
4. 编排者-工作者(Orchestrator-Workers)
这种模式特别适合无法预测子任务需求的复杂任务。与并行化的关键区别在于其灵活性——子任务不是预定义的,而是由编排者根据具体输入确定。

典型应用场景:
• 需要对多个文件进行复杂更改的编程产品
• 需要从多个来源收集和分析信息的搜索任务
5. 评估者-优化器(Evaluator-Optimizer)
这实际上是反思模式的实现。当有明确的评估标准,且迭代改进能提供可衡量价值时,这种模式特别有效。

应用实例包括文学翻译中的细节优化,以及需要多轮搜索分析的复杂搜索任务。
真正的代理:动态决策的艺术
当工作流模式无法满足需求时,就需要真正的代理系统。代理的核心特征是能够动态决策,在执行过程中从环境获得"真实反馈"来评估进展。
在执行过程中,代理必须从环境中获得"真实情况"(如工具调用结果或代码执行结果)来评估其进展,这一点至关重要。
因此,清晰周到地设计工具集及其文档变得极其重要。Anthropic在附录中专门展开了工具开发的最佳实践。
代理适用于开放性问题,这些问题难以或无法预测所需步骤数量,也无法硬编码固定路径。Anthropic自己的实现包括:
• 解决SWE-bench任务的编程代理,涉及基于任务描述对多个文件的编辑
• "计算机使用"参考实现,Claude使用计算机完成任务
模式组合与定制化
这些构建块并非规定性的,而是开发者可以根据不同用例进行塑造和组合的通用模式。成功的关键在于衡量性能并不断迭代实现。
重申:只有当复杂性能明显改善结果时,你才应该考虑增加复杂性。
成功的三大核心原则
LLM领域的成功不在于构建最复杂的系统,而在于构建适合需求的正确系统。Anthropic建议从简单提示开始,通过全面评估进行优化,只有在简单解决方案不足时才添加多步骤代理系统。
在实现代理时,应遵循三个核心原则:
• 保持代理设计的简单性
• 通过明确显示代理的规划步骤来优先考虑透明度
• 通过全面的工具文档和测试精心设计代理-计算机接口(ACI)
工具设计的重要性
在附录中,Anthropic特别强调了工具设计的重要性。
一个经验法则是:投入到人机界面(HCI)的努力有多大,就应该计划在创建良好的代理-计算机接口(ACI)上投入同样的努力。
在构建SWE-bench代理时,Anthropic实际上花在优化工具上的时间比整体提示更多。例如,他们发现模型在代理移出根目录后使用相对文件路径的工具时会出错。为了解决这个问题,他们将工具改为始终需要绝对文件路径——结果发现模型完美地使用了这种方法。
框架可以帮助快速入门,但在转向生产环境时,不要犹豫减少抽象层并使用基本组件构建。遵循这些原则,你可以创建不仅强大,而且可靠、可维护、受用户信任的代理。
这份来自Anthropic的指南为AI代理开发指明了清晰的方向:简单性、透明性和精心设计的接口是构建成功AI代理的三大支柱。在追求技术创新的同时,回归本质、注重实用性,或许才是通往AI代理成功应用的正确道路。
参考原文:https://www.anthropic.com/research/building-effective-agents