Anthropic 官方发布了一篇《如何构建高效的智能体》。
这篇文章干货满满,非常值得一读。
文章总结了他们和众多跨行业客户合作的经验。分享了他们开发智能体的经验教训和实用建议。
实践证明:真正成功的应用,往往采用简单、可组合的模式,而非复杂的框架。
还总结了 3 大核心原则,以及 6 种常见模式。
以下是我根据原文整理的核心要点。
Agent 和 Workflow 的区别
Agent 和 Workflow 这两个词,以及它们对应的中文翻译,已经被滥用了。
所以,在构建智能系统之前,很有必要对其下一个清晰的定义。
在 Anthropic 内部,将其统称为 Agentic System(智能体系统)。
但在架构上进行了区分:
- 工作流(Workflow):就像预先设定好的程序,让大模型和各种工具按固定的路径运行。
- 智能体(Agent):更灵活!它们可以根据情况,动态地决定下一步该做什么,这类系统在完成任务的过程中始终保持着控制权。
清晰的定义是很有必要的,可避免团队成员理解不一致,降低沟通成本。
何时(以及何时不)使用智能体
建议:尽可能寻找最简单的解决方案,仅在必要时增加复杂性。
这可能意味着:很多时候,根本就不需要构建智能体系统(Agentic System)。
- 如果任务简单:直接调用大模型 API。
- 如果任务有更高的复杂性:
- 需要更高的可预测性和一致性?用工作流。
- 需要灵活性和模型驱动的决策?用智能体。
对于大多数应用,其实通过检索(Retrieval)和为上下文提供一些示例(Few-shots),就可以很好地完成任务了。
不要过早把问题复杂化,一切从最简单开始。
何时及如何使用框架?
要想实现智能体系统,有很多框架可以用,比如:
- LangGraph
- Amazon Bedrock 的 AI Agent framework
- Rivet
- Vellum
框架虽然为我们提供了便利,但同时也会带来复杂度。
能直接调用大模型 API 几行代码就能实现的,就不要使用框架。
如果确实要使用框架,需确保理解框架的底层代码。
常见模式
实际应用场景中,有以下 6 种常见模式。
- 增强型语言模型(The augmented LLM):这是最基础的构建块,通过检索、工具和记忆等增强功能强化的 LLM。
- 提示词链(Prompt chaining):把多个 prompt 串联起来,让 LLM 一步一步完成任务。
- 路由(Routing):根据不同的情况,把任务分配给不同的工具或 LLM。
- 并行化(Parallelization):同时运行多个任务,提高效率。
- 协调者-工作者(Orchestrator-worker):一个“协调者”负责分配任务,多个“工作者”负责执行。
- 评估者-优化者(Evaluator-optimizer):一个“评估者”负责评估结果,一个“优化者”负责改进。
要想深入了解这些模式的流程图及应用场景,请点击文末 ↙ “阅读原文” 查看。
组合并定制这些模式
很多工作流看似复杂,但实际上,多数是这些模式的组合。
模式并非一成不变的,应根据自身的实际场景进行定制和组合。
🎯 成功的关键:衡量性能,对实现方式进行不断迭代。
只有在复杂性能够显著改善结果时,才应考虑增加复杂元素。
何时使用智能体(Agents)
开放式问题很难或无法预测所需的步骤数量,并且你无法对固定路径进行硬编码,适合使用智能体。
智能体(Agents)可以处理复杂的任务,但其实现方式往往很直接。它们通常只是大语言模型,根据环境反馈循环使用工具。
因此,清晰且周全地设计工具集及其文档至关重要。
智能体的自主性意味着更高的成本和错误加剧的可能性。建议在沙盒环境中进行广泛测试,并设置适当的防护措施。
Anthropic 提供了它们自己实现的两个智能体的实现代码,一个是 SWE-bench tasks
,另一个是 Computer Use
,原文中有代码链接。
要同等重视工具的提示工程
这部分内容在文章的附录 2 中。
无论构建何种智能体,工具都是重要的组成部分。
与整体提示词一样,工具定义和规范也应得到同样多的提示工程关注。
建议:
- 在模型陷入困境之前,给它足够的 Tokens 来进行 “思考”。
- 保持格式与模型在互联网文本中自然出现的格式相近。
- 确保不存在格式方面的“额外负担”,比如不必精确统计数千行代码,也无需对所编写的任何代码进行字符串转义。
经验法则:
在创建智能体-计算机交互(ACI)时,应参照在人机交互(HCI)上所投入的精力。即 HCI 投入多少精力,就应该在 ACI 上投入等量精力。
Anthropic 声称:他们在构建 SWE-bench
智能体的过程中,花在优化工具上的时间,比优化整体提示词的时间更多。
总结
在大模型领域,成功的关键不是做最复杂的系统,而是做适合自己的正确的系统。
从简单的提示词入手,通过全面评估对其进行优化,只有在更简单的解决方案无法满足需求时,才添加多步骤的智能体系统,以避免不必要的复杂设计导致诸如更高的延迟、成本,以及更难调试等问题。
遵循三条核心原则:
- 尽可能保持简单,避免不必要的复杂性。
- 明确展示智能体的规划步骤,优先考虑透明度。
- 通过详尽的工具文档记录与测试,精心打造智能体-计算机接口(ACI)。
如果早期使用了框架快速构建的应用,可以重构为使用基础组件实现的,应该毫不犹豫地重构。
文章链接:
https://www.anthropic.com/engineering/building-effective-agents
下一步
之前推荐过一篇 《OpenAI 官方发布的 34 页《构建智能体实践指南》(PDF)》,主要讲的是 OpenAI 集合了众多客户的使用经验与见解,提炼而成的实用且可操作的最佳实践。
两篇文章结合着看,会更有收获。
希望这篇文章对你有所帮助。
如果觉得有用,欢迎点赞、收藏、转发。
也欢迎关注我,一起学习 AI 知识。