打开网易新闻 查看更多图片

机器之心编译

编辑:佳琪、张倩

高端的食材,往往需要最朴素的烹饪方式。

AI 发展到后半场「大雾散去」,如何让大模型的智力落实成执行力,智能体似乎成了业界的共同答案。

从元宝到混元,各类智能体平台如雨后春笋般涌现。上个月,智谱发布 AutoGLM 的发布会上,智能体好像突破了次元壁,一句指令,就拿着手机在现场发了一个总计两万块钱的红包。

打开网易新闻 查看更多图片

我们正在见证一个重要的转折点:智能体正在将 AI 的能力从「能说会道」转变为「能做会干」。

作为最强大模型厂商的有力竞争者,Anthropic 推出的智能体功能也着实惊艳了我们一把。Computer Use 甚至已经可以做到跟 Claude 说一声想做一个 90 年代风格的个人网站,剩下的只需要坐在屏幕前看网页自己做自己就好了。

在过去一年中,Anthropic 与数十个行业团队合作,对大模型智能体进行了系统研究。但他们发现,那些表现最出色的 AI 智能体,并非建立在庞大复杂的框架或专业库之上,而是采用了简单、可组合的模式。

Anthropic 将一年的实践经验总结成了这篇博客,机器之心在不改变原意的基础上进行了编译。

打开网易新闻 查看更多图片

  • 原文链接:https://www.anthropic.com/research/building-effective-agents

什么是智能体?

「智能体」有多种定义。有人眼中的智能体是一个「全能管家」,能够独立思考、自主决策,灵活运用各种工具来完成复杂任务;也有人把它理解为一个「规矩员工」,按部就班地执行预设的工作流。

Anthropic 将两者统称为智能系统,但对工作流和智能体做出了区分:

  • 工作流是通过预定代码路径编排 LLM 和工具的系统
  • 智能体则是由 LLM 动态指导自身流程和工具使用的系统,能自主控制任务的完成方式

什么时候该用智能体?

在开发 AI 应用时,Anthropic 的研究团队给出了一个建议:能简单就不要复杂。有时候,根本不需要建造一个智能系统 —— 因为智能系统虽然功能强大,但往往会让响应变慢,成本也会更高。开发者需要权衡这种取舍。

当确实需要更复杂的系统时,工作流适合需要可预测和一致性的明确任务,而智能体则更适合需要灵活性和模型驱动决策的大规模场景。

不过对很多应用来说,配合检索和上下文示例,拿着一个好的 prompt 去问大模型通常就足够了。

何时使用框架以及如何使用

目前,有多个可以帮助开发者更容易地搭建 AI 智能体的框架,包括:

  • LangChain 的 LangGraph
  • 亚马逊 Bedrock 的 AI Agent 框架
  • 拖放式的大模型工作流构建工具 Rivet
  • 用于构建和测试复杂工作流的 GUI 工具 Vellum

这些框架确实简化了 AI 开发流程。但要注意的是,它们会在代码中增加额外的抽象层,这不仅让底层的运行逻辑变得不够透明,也增加了调试的难度。而且,开发者可能会在一些简单的场景中,不自觉地引入过度复杂的解决方案。

Anthropic 建议开发者从直接使用大模型的 API 开始:许多模式只需几行代码就能实现。如果选择使用框架,一定要理解其底层原理。经验表明,对框架底层机制的理解不足,往往是导致开发问题的主要原因。

具体示例请参考 Anthropic 的 cookbook。

  • 手册链接:https://github.com/anthropics/anthropic-cookbook/tree/main/patterns/agents

构建模块、工作流和智能体

基础构建模块:增强版 LLM

智能系统的基本构建模块是加持检索、记忆等功能,增强过的 LLM。目前,Anthropic 的模型可以主动使用这些能力 —— 生成自己的搜索查询、选择合适的工具,并决定保留哪些信息。

打开网易新闻 查看更多图片

增强过的大模型。

Anthropic 建议做这些拓展功能的过程中大家可以重点关注两点:

  • 根据具体的应用场景来定制功能
  • 确保为模型提供简单且文档完备的接口

除此之外,Anthropic 最近发布的模型上下文协议提供了一种新的实现方式。这个协议让开发者可以通过简洁的客户端代码,轻松地将 AI 模型与持续扩展的第三方工具生态系统进行集成。

工作流:提示链

提示链是一种将复杂任务拆解为多个步骤的方法,每个步骤代表调用一次大模型,后一步将基于前一步的结果继续处理。开发者可以在任意中间环节加入程序化的检查点(比如图中的「gate」),以确保流程按预期推进。

提示链工作流。

打开网易新闻 查看更多图片

什么时候更适合用提示链工作流呢?当一个复杂任务能够被清晰地拆分成一系列固定的子任务时,提示链就是最佳选择。这种方法让每个模型只需专注完成一个简单任务,虽然整体响应时间可能会略长,但准确率会得到显著提升。

典型应用案例:

  • 先生成营销文案,再将其翻译成其他语言
  • 先写文档大纲并进行合规性检查,再基于大纲撰写完整文档

工作流:智能分流

分流技术能够判断输入任务的类型,并将其分配给相应的专门模块。这种设计让每个模块都能针对特定任务进行优化,避免了不同类型任务之间的相互干扰。

如果不采用这种分发机制,仅提升针对某类问题的效果,往往会影响到其他类型问题的处理质量。

打开网易新闻 查看更多图片

智能分流的工作流。

什么时候适合用这种方法呢?当任务有明显的分类特征时,就很比较适合。AI 系统可以通过大语言模型或传统算法,准确识别任务类型并做出分流。

典型应用案例:

  • 在客服系统中,可以将一般咨询、退款申请、技术支持等不同类型的问题,分别引导到相应的处理流程。
  • 将简单 / 常见问题分配到 Claude 3.5 Haiku 等较小模型,将困难 / 罕见问题分配到 Claude 3.5 Sonnet 等更强大的模型,以优化成本和速度。

工作流:并行

大语言模型可以同时处理任务,并以编程方式聚合输出。这种并行化的工作流主要有两个特点:

  • 任务分段:将任务拆分为可并行运行的独立子任务,每个子任务可以同时进行处理,最后再整合结果。
  • 投票机制:对同一任务进行多次运行,获得多个不同版本的输出,从而选择最优结果或综合多个答案。

打开网易新闻 查看更多图片

并行工作流。

当子任务可以并行执行以提高速度,或需要多角度尝试以获得更高置信度的结果时,并行化的方法非常有效。对于涉及多个因素的复杂任务,让每次调用专注处理特定方面,会获得更好的效果。

典型应用案例:

任务分段:

  • 安全防护:一个模型负责处理用户请求,另一个专门负责内容审核,这比单个模型同时处理两项任务效果更好。
  • 性能评估:让不同的模型分别评估系统的各个性能指标,实现全面的自动化评估。

投票机制:

  • 代码安全检查:同时运行多个检测模型,共同发现和标记潜在的代码漏洞。
  • 内容审核:通过多个模型从不同角度评估内容安全性,通过调整投票阈值来平衡误判率。

工作流:领导 — 执行者

在这种工作流中,一个中央大语言模型会动态分解任务,分派给执行者模型,并汇总最终结果。

打开网易新闻 查看更多图片

领导 — 执行者工作流。

这种工作流最适合那些难以提前确定具体步骤的复杂任务。比如在编程中,一个功能需求可能涉及多个文件的修改,而具体要改哪些文件、如何修改,往往要根据实际情况来决定。

虽然这种方式看起来和并行任务很像,但这种工作流更灵活 —— 任务的拆分不是固定的,而是由 AI 系统根据具体情况动态决定的。

典型应用案例:

  • 需要对多个文件进行复杂修改的编程应用。
  • 需要从多个来源收集和分析相关信息的搜索任务。

工作流:评估 — 优化

在评估 — 优化工作流中,一个 LLM 调用生成响应,而另一个提供评估和反馈,形成循环。

打开网易新闻 查看更多图片

评估 - 优化工作流。

何时使用这个工作流:当存在明确的评估标准,并且通过迭代细化可以带来显著价值时,这个工作流特别有效。

有两个显著特点:首先,当人类明确表达他们的反馈时,LLM 的响应可以明显改进;其次,LLM 能够提供这样的反馈。这类似于人类作家在创作一篇精心打磨的文档时所经历的反复修改的写作过程。

典型应用案例:

  • 文学翻译:翻译模型可能在第一次翻译时遗漏一些细微的语言差异,而评估模型能够发现这些问题并提供有价值的修改建议。
  • 复杂搜索:某些信息收集任务需要多轮搜索和分析才能获得全面的结果,评估模型可以判断是否需要继续深入搜索。

智能体

智能体在生产中随着 LLM 在关键能力上的成熟而出现,这些能力包括理解复杂输入、进行推理和规划、可靠地使用工具以及从错误中恢复。

智能体的工作始于人类用户的命令,或与人类用户的互动讨论。一旦任务明确,智能体就会独立规划和操作,中途可能需要向人类索取更多信息或让人类做判断。

在执行过程的每一步,从环境中获得「真实情况」(例如工具调用结果或代码执行)以评估其进度至关重要。然后,智能体可以在检查点或遇到阻塞时暂停以获取人类反馈。任务通常在完成后终止,但也通常包含停止条件(例如最大迭代次数)以保持控制。

智能体能够处理复杂的任务,但其实现通常很简单。它们通常只是循环中根据环境反馈来使用工具的大型语言模型。因此,设计工具集及其文档清晰、周到至关重要。作者在附录 2 中扩展了工具开发的最佳实践。

打开网易新闻 查看更多图片

自动智能体。

何时使用智能体:智能体可以用于开放性问题,这种问题往往难以或不可能预测所需的步骤数量,并且你不能硬编码固定路径。LLM 可能会操作多个回合,你必须对其决策能力有一定程度的信任。智能体的自主性使它们成为在受信任环境中 scaling 任务的理想选择。

智能体的自主性意味着成本更高,并且可能存在错误累积的风险。作者建议在沙盒环境中进行广泛的测试,并设置适当的防护措施。

智能体的用途示例:

  • 一个代码智能体,用于解决涉及根据任务描述编辑多个文件的 SWE-bench 任务
  • Anthropic 的「Computer use」功能,其中 Claude 使用计算机完成任务。

打开网易新闻 查看更多图片

代码智能体的 High-level flow。

组合、定制这些模式

这些构建块不是规定性的。开发者可以塑造和组合这些构建块以适应不同用例。成功的关键是衡量性能并迭代实现。注意:只有在能够明显改善结果的情况下,你才应该考虑增加复杂性。

总结

在 LLM 领域取得成功并不在于构建最复杂的系统,而是在于为你的需求构建正确的系统。从简单的提示开始,用全面的评估优化它们,同时只有当更简单的解决方案无法实现时才添加多步骤智能体系统。

在部署智能体时,需要尝试遵循三个核心原则:

  • 在智能体设计中保持简单;
  • 要优先确保智能体的透明度,方法是清楚地展示它计划中的每一步;
  • 通过全面的工具文档和测试精心打造你的智能体 - 计算机界面(ACI)。

更多详情,请参考原博客。