Claude的Agent开发圣经| Agent的设计模式
2025所谓智能体元年,从年初的雨后春笋,到年底彻底爆发。
如果你也在设计Agent,不妨先看下Anthropic官方的这几篇文章,堪称智能体开发的必读圣经:
-
《Building effective agents》
-
《How we built our multi-agent research system》
-
《Effective context engineering for AI agents》
-
《Equipping agents for the real world with Agent Skills》
以上文章我会连续更新解读,感兴趣点击关注哦~
首先,今天这篇我会以道法术器来解读「构建高效Agent的设计哲学与框架选型」,原文附在最后。
道:尽可能简单的解决方案
“大道至简,衍化至繁”,使用大模型构建AI应用时,Anthropic建议大家:找到尽可能简单的解决方案,仅在需要时增加复杂性。
也就是说,对于很多AI应用场景并不需要构建Agent,使用检索和上下文示例优化单个 LLM 调用通常就足够了,而Agent通常是以延迟和成本来换取更好的答案。
技术服务于业务,选择工作流or智能体?可以参考如下:
- AI Workflow(工作流):可以预先定义明确调用步骤的任务,采用工作流能提供可预测性和一致性。
- AI Agent(智能体):大规模灵活性和模型驱动决策的任务,由大模型自主决定执行步骤。
法:常见的设计模式
类似传统编程的设计模式,Agent也有一些常见的设计模式,从基础构建块逐步增加复杂性,从简单的组合工作流程到自主决策的智能体。
01
增强型LLM
智能体系统的基础构建是通过检索、工具和内存等来增强LLM的功能,针对用户输入,由LLM进行意图识别并确定调用什么工具来实现任务。
比如通过MCP来调用第三方天气查询工具,从而扩展LLM能力。
02
提示词链 Prompt Chaining
有些任务虽然复杂,但能清晰地拆解为几个固定子任务,那么就可以让LLM每次任务调用都更简单明确,权衡延迟以获得更高的准确性。
如图所示,提示词链工作流将任务分解为一系列步骤,其中每个LLM调用都会处理前一个步骤的输出,并且可以在任何中间步骤上添加程序检查,以确保流程仍按计划进行。
03
路由 Routing
对于输入有不同类别并需要采用不同处理方式的场景,就可以使用路由工作流对输入进行分类,将其定向到专属的后续任务。
该工作流允许分离关注点,并且可以避免优化一种输入类型可能会损害其他输入的性能。
此外,这里的任务类别分类,可以通过LLM或更传统的分类模型/算法准确处理分类。
04
并行化 Parallelization
当子任务可以并行执行来提高速度,或者需要多个视角和尝试以获得更高准确性时,可以采用并行化工作流方案。
这种并行化工作流,有两个关键变体:
- 分段:将任务分解为独立的子任务并行运行
- 投票:多次运行同一任务以获得不同的输出
该方案的优势是,每个考虑因素都由单独的LLM调用处理,LLM可以集中注意力,从而实现更好的效果。
05
协调者-辅助者 Orchestrator-workers
当无法预测所需子任务时,可以采用「协调者-辅助者」工作流,先由协调者LLM动态分解任务,子任务委托给不同的辅助者LLM,并综合其结果。
与并行化模式相比,「协调-辅助」工作流更具灵活性,子任务不是预定义的,而是由业务流程协调LLM根据输入判断的。
06
评估器-优化器 Evaluator-optimizer
当存在明确的评估标准,并且迭代优化提供可衡量价值时,可以使用「评估器-优化器」工作流,一个LLM调用生成响应,另一个调用则循环提供评估和反馈。
07
自主性智能体Agent
对于复杂的开放式问题,往往无法硬编码固定路径,就可以使用具有自主性的智能体模式。
- 开始:始于用户的一条指令或交互式讨论,一旦任务明确,Agent便会自主规划与执行。
- 执行:在执行过程中,每一步都能从环境中获取“真实情况”(如工具调用结果或代码执行),以评估自身进度;还可以在检查点或遇到阻塞时暂停,以获取人类反馈。
- 结束:任务通常在完成后终止,但也可以人为设置停止条件(如最大迭代次数)以保持可控。
如上图所示,Agent虽然可以处理复杂任务,但实现其实并不复杂,通常只是基于环境反馈、循环使用工具的一个大语言模型。
术:Agent架构设计
以上7个设计模式作为原子架构,在实际业务场景的智能体架构设计中如何组合应用呢?我举2个例子来说明。
首先,以最最简单的“查询某地附近的美食”为例,该架构如何设计?
回顾第二部分的设计模式,可以组合使用「增强型」+「评估-优化型」这两个设计模式,详见下图:
当用户提出“帮我查一下中关村附近的美食”,执行流程:
① 先由增强型LLM进行意图理解并判断是否需要调用工具生成结果;
② 假设第一次LLM通过联网搜索工具查到小红书推荐的海淀区必打卡的几家美食店,然后将结果交给Evaluator LLM判断是否满足要求,Evaluator LLM判断这里得到的答案位置分散、不够全面,不符合中关村附近的要求;
③ 所以返给Generator LLM进行二次生成,这次Generator LLM分析要获取具备更全面且有时效性的信息,调用地图MCP的周边检索工具,并将最新结果交给Evaluator LLM;
④ 评估第二次得到的结果满足要求,就输出给用户;
然后,再看下字节开源的深度研究智能体deerflow的官方架构设计。
如下图所示,整体采用的是「协调者-辅助者」+「智能体」设计架构。
针对用户问题,先由Coordinator进行意图识别,将符合深度研究的问题交给planner(自主规划)进行任务分解,当用户确认进行深度研究后,由research_team(协调者)判断是否需要调用coder,以及安排几个researcher(辅助者)执行子任务,research_team综合结果后交给planner判断获取的信息是否足够,然后交给reporter生成最终的研究报告。
器:开发与框架
在具体开发中,Agent分为两派:
- 一派是使用Dify、Coze、n8n类软件搭建Agent,其本质是将模型作为返回字符串的后端;
- 另一派是真正AI驱动的原生Agent,需要低代码开发,可以直接使用LLM API,也可以借助Agent框架来简化开发。
市面上第一代LangChain和LlamaIndex定义了通用LLM应用框架范式,层出不穷的新一代框架更专注复杂工作流控制和多智能体协作。
主流的Agent框架选型参考如下:
框架的优势是将共有的、重复的工作进行封装和抽象,例如LLM调用、状态管理、工具调用等,从而简化开发难度,让我们更专注于业务逻辑;
但框架的劣势是通过构建额外的抽象层,从而掩盖了底层的提示和响应,使它们难以调试。
所以,Anthropic建议先从直接使用LLM API开始,当了解底层代码后,再使用框架,从而能够更好地进行问题定位。