Anthropic多智能体开发指南

Claude现在拥有研究能力,使其能够搜索网络、Google Workspace以及任何集成以完成复杂任务。

从原型到生产系统的这一多智能体系统之旅教会了我们关于系统架构、工具设计和提示工程的关键经验。一个多智能体系统由多个智能体(LLM自主使用工具的循环)共同工作组成。我们的研究功能涉及一个智能体,它根据用户查询规划研究过程,然后使用工具创建并行智能体同时搜索信息。具有多个智能体的系统在智能体协调、评估和可靠性方面引入了新的挑战。

这篇文章分解了对我们有用的原则——我们希望你能找到它们在构建你自己的多智能体系统时有用的。

1、多智能体系统的优点

研究工作涉及开放性问题,很难提前预测所需步骤。你不能为探索复杂主题硬编码固定的路径,因为这个过程本质上是动态的且依赖路径的。当人们进行研究时,他们往往会根据发现不断更新方法,跟随调查过程中出现的线索。

这种不可预测性使AI智能体特别适合于研究任务。研究需要灵活性,能够随着调查的展开而转向或探索旁支联系。该模型必须自主运行许多轮次,基于中间发现决定要追求的方向。线性的、一次性管道无法处理这些任务。

搜索的本质在于压缩:从庞大的语料库中提炼见解。子智能体通过在其自己的上下文窗口中并行操作来促进压缩,同时探索问题的不同方面,然后将最重要的标记浓缩为首席研究智能体。每个子智能体还提供了分离关注点——不同的工具、提示和探索轨迹——这减少了路径依赖性,并实现了彻底、独立的调查。

一旦智能达到一定阈值,多智能体系统就成为扩展性能的重要方式。例如,在过去的10万年里,虽然个人变得更聪明了,但在信息时代,由于我们的集体智慧和协调能力,人类社会在能力上呈指数级增长。即使是一般的智能体作为个体运作时也面临限制;一组智能体可以完成更多。

我们的内部评估显示,多智能体研究系统在涉及同时追求多个独立方向的广度优先查询方面表现尤为出色。我们发现,以克劳德Opus 4为主智能体,克劳德Sonnet 4为子智能体的多智能体系统在我们的内部研究评估中比单智能体克劳德Opus 4高出90.2%。例如,当被要求识别信息技术S&P 500公司中的所有董事会成员时,多智能体系统通过将任务分解给子智能体找到了正确答案,而单智能体系统未能找到答案,进行了缓慢的顺序搜索。

多智能体系统之所以有效,主要是因为它们帮助解决了足够令牌来解决问题。在我们的分析中,三个因素解释了浏览组件评估(测试浏览代理定位难以找到的信息的能力)中95%的性能差异。我们发现令牌使用本身解释了80%的变化,其余两个解释因素是工具调用的数量和模型选择。这一发现验证了我们的架构,即通过分布在具有单独上下文窗口的智能体之间的工作来增加并行推理的容量。最新的克劳德模型在令牌使用上起到了巨大的效率提升作用,升级到克劳德Sonnet 4的性能提升比在克劳德Sonnet 3.7上加倍令牌预算还要大。多智能体架构有效地扩展了令牌使用量,用于超出单个智能体限制的任务。

然而,有一个缺点:实际上,这些架构会快速消耗令牌。在我们的数据中,智能体通常使用的令牌量大约是聊天交互的4倍,而多智能体系统使用的令牌量大约是聊天的15倍。对于经济可行性来说,多智能体系统需要任务的价值足够高,以支付增加的性能。此外,一些需要所有智能体共享相同上下文或涉及大量智能体之间依赖关系的领域目前不适合多智能体系统。例如,大多数编码任务涉及的真正可并行化任务比研究少,LLM智能体在实时协调和委派其他智能体方面还不是很好。我们发现,多智能体系统在涉及大量并行化、超出单个上下文窗口的信息以及与众多复杂工具接口的有价值任务上表现出色。

2、研究架构概述

我们的研究系统使用了具有协调器-工作者模式的多智能体架构,其中主智能体协调整个过程,同时委托给专门的子智能体并行操作。

多智能体架构在行动中:用户查询通过主智能体流动,主智能体创建专门的子智能体以并行搜索不同方面。

当用户提交查询时,主智能体分析查询,制定策略,并生成子智能体以同时探索不同方面。如上图所示,子智能体通过迭代使用搜索工具收集信息起作用,这里是在2025年的AI代理公司,然后返回公司列表给主智能体,以便其编译最终答案。

传统方法使用检索增强生成(RAG)采用静态检索。也就是说,它们获取一些最相似输入查询的块,并使用这些块生成响应。相比之下,我们的架构使用多步搜索,动态找到相关信息,适应新发现,并分析结果以制定高质量的答案。

显示我们多智能体研究系统完整工作流程的过程图。当用户提交查询时,系统创建LeadResearcher智能体,进入迭代研究过程。LeadResearcher首先思考方法并将其计划保存到Memory中以持久化上下文,因为如果上下文窗口超过200,000个标记,它会被截断,保留计划非常重要。然后,它创建具有特定研究任务的专门Subagents(这里显示两个,但可以是任意数量)。每个Subagent独立执行网络搜索,使用交错思考评估工具结果,并将发现返回给LeadResearcher。LeadResearcher综合这些结果,并决定是否需要进一步研究——如果是,它可以创建额外的子智能体或优化其策略。一旦收集到足够的信息,系统退出研究循环并将所有发现传递给CitationAgent,CitationAgent处理文档和研究报告以确定具体引用位置。这确保所有声明都正确归因于其来源。最后的研究结果,包括引用,然后返回给用户。

3、研究智能体的提示工程和评估

多智能体系统与单智能体系统有关键区别,包括协调复杂性的迅速增长。早期的智能体犯了错误,比如对简单查询生成50个子智能体,无休止地在网络中寻找不存在的来源,并通过过多的更新分散彼此注意力。由于每个智能体都由提示引导,提示工程是我们改善这些行为的主要杠杆。以下是我们在提示智能体时学到的一些原则:

  1. 像你的智能体一样思考。 为了迭代提示,你必须理解其效果。为了帮助我们做到这一点,我们使用我们的控制台构建了模拟,使用系统中的确切提示和工具,然后逐步观察智能体的工作。这立即揭示了失败模式:智能体继续工作,尽管已经获得了足够的结果,使用过于冗长的搜索查询,或选择了不正确的工具。有效的提示依赖于开发准确的智能体心理模型,这可以使最重要的变化显而易见。
  2. 教协调器如何委派。 在我们的系统中,主智能体将查询分解为子任务,并向子智能体描述这些任务。每个子智能体需要一个目标、输出格式、关于工具和来源的指导,以及明确的任务边界。如果没有详细的任务描述,智能体会重复工作,留下空白,或者找不到必要的信息。我们开始时允许主智能体给出简单的短指令,如“研究半导体短缺”,但我们发现这些指令往往太模糊,导致子智能体误解任务或与其他智能体执行完全相同的搜索。例如,一个子智能体探索了2021年的汽车芯片危机,而另外两个子智能体则重复工作,调查当前2025年的供应链,没有有效的分工。
  3. 根据查询复杂性分配努力。 智能体难以判断不同任务的适当努力程度,因此我们在提示中嵌入了缩放规则。简单的事实查找只需要1个智能体和3-10个工具调用,直接比较可能需要2-4个子智能体,每个子智能体调用10-15次工具,而复杂的研究所需的子智能体超过10个,并有明确的职责划分。这些明确的指南帮助主智能体高效分配资源,防止在简单查询上的过度投资,这是我们早期版本的常见失败模式。
  4. 工具设计和选择至关重要。 智能体-工具界面与人机界面一样重要。使用正确的工具是高效的——通常是必要的。例如,一个智能体搜索只存在于Slack中的上下文注定会失败。有了MCP服务器,模型可以访问外部工具,这个问题会加剧,因为智能体遇到质量参差不齐的未知工具。我们给了智能体明确的启发式方法:例如,先检查所有可用工具,根据用户意图匹配工具使用,搜索网络进行广泛的外部探索,或偏好专用工具而非通用工具。不良的工具描述会让智能体走上完全错误的道路,因此每个工具都需要明确的目的和清晰的描述。
  5. 让智能体自我改进。 我们发现Claude 4模型是非常出色的提示工程师。当给出提示和失败模式时,它们能够诊断为什么智能体失败并提出改进建议。我们甚至创建了一个工具测试智能体——当给定一个有缺陷的MCP工具时,它尝试使用该工具,然后重写工具描述以避免失败。通过测试该工具几十次,这个智能体发现了关键的细微差别和错误。通过改进工具人体工程学的过程,未来使用新描述的智能体任务完成时间减少了40%,因为它们能够避免大多数错误。
  6. 先广泛,再缩小范围。 搜索策略应反映专家的人类研究方式:先探索全景,再深入细节。智能体常常默认使用过长、具体的查询,返回的结果很少。我们通过提示智能体从简短、宽泛的查询开始,评估可用内容,然后逐步缩小焦点来对抗这种倾向。
  7. 引导思维过程。 扩展思维模式,这引导Claude输出额外的标记以进行可见的思维过程,可以用作可控的草稿板。主智能体使用思维来计划其方法,评估哪些工具适合任务,确定查询复杂性和子智能体数量,并定义每个子智能体的角色。我们的测试表明,扩展思维提高了指令遵循、推理和效率。子智能体也计划,然后在工具结果后使用交错思维来评估质量,识别差距,并完善下一个查询。这使得子智能体在适应任何任务时更加有效。
  8. 并行工具调用转变速度和性能。 复杂的研究任务自然涉及探索许多来源。我们的早期智能体执行顺序搜索,这非常缓慢。为了提高速度,我们引入了两种并行化方式:(1) 主智能体并行启动3-5个子智能体而不是顺序执行;(2) 子智能体并行使用3个以上的工具。这些变化将复杂查询的研究时间缩短了高达90%,允许研究在几分钟内完成更多的工作,而不是几小时,同时覆盖比其他系统更多的信息。

我们的提示策略侧重于培养良好的启发式方法,而不是严格的规则。我们研究了熟练的人类如何处理研究任务,并在提示中编码了这些策略——如将困难的问题分解成更小的任务,仔细评估来源的质量,根据新信息调整搜索方法,以及认识到何时专注于深度(详细调查一个主题)还是广度(并行探索许多主题)。我们还通过设置明确的护栏主动缓解了意外副作用,以防止智能体失控。最后,我们专注于快速迭代循环,结合可观测性和测试案例。

4、有效评估智能体

良好的评估对于构建可靠的AI应用程序至关重要,智能体也不例外。然而,评估多智能体系统提出了独特的挑战。传统的评估通常假设AI每次遵循相同的步骤:给定输入X,系统应该遵循路径Y产生输出Z。但多智能体系统不是这样工作的。即使起点相同,智能体也可能采取完全不同的有效路径来达到目标。一个智能体可能会搜索三个来源,而另一个智能体可能会搜索十个,或者它们可能会使用不同的工具找到相同的答案。因为我们并不总是知道正确的步骤是什么,所以我们通常不能仅仅检查智能体是否按照我们预先规定的“正确”步骤行事。相反,我们需要灵活的评估方法,判断智能体是否达成了正确的结果,同时遵循合理的流程。

从小样本开始立即评估。 在早期智能体开发阶段,变化往往会产生显著影响,因为存在大量的低垂果实。一个提示调整可能会将成功率从30%提高到80%。由于效果如此之大,只需几个测试用例就可以看到变化。我们开始时使用大约20个代表实际使用模式的查询集。测试这些查询通常允许我们清楚地看到变化的影响。我们经常听到AI开发团队推迟创建评估,因为他们认为只有包含数百个测试用例的大规模评估才有用。然而,最好立即从小规模测试开始,而不是等到可以建立更全面的评估。

LLM作为法官的评估在做得好时可以扩展。 研究输出难以程序化评估,因为它们是自由形式的文本,很少有单一正确答案。LLM非常适合评分输出。我们使用LLM法官根据评分标准对每个输出进行评估:事实准确性(声明是否与来源匹配?)、引文准确性(引用的来源是否与声明匹配?)、完整性(是否涵盖了所有请求的方面?)、来源质量(是否使用了一级来源而不是较低质量的二级来源?)以及工具效率(是否合理地使用了正确的工具?)。我们尝试了多个法官来评估每个组成部分,但发现单个LLM调用使用单一提示输出0.0-1.0的分数和通过/失败等级是最一致且与人类判断一致的。这种方法在评估测试用例确实有明确答案时尤其有效,我们可以使用LLM法官简单地检查答案是否正确(即,它是否准确列出了研发预算最高的三家制药公司的名单?)。使用LLM作为法官让我们能够大规模评估数百个输出。

人类评估捕捉自动化遗漏的内容。 测试智能体的人类发现评估遗漏的边缘情况。这些包括在异常查询上的幻觉答案、系统故障或微妙的来源选择偏差。在我们的案例中,人类测试者注意到我们的早期智能体始终选择SEO优化的内容农场,而不是权威但排名较低的来源,如学术PDF或个人博客。在提示中添加来源质量启发式方法有助于解决这个问题。即使在自动化评估的世界中,手动测试仍然是必不可少的。

多智能体系统具有涌现行为,这些行为在没有特定编程的情况下出现。例如,主智能体的小变化可能会不可预测地改变子智能体的行为。成功需要理解交互模式,而不仅仅是单个智能体的行为。因此,这些智能体的最佳提示不仅是严格指令,而是协作框架,定义了劳动分工、解决问题的方法和努力预算。正确实现这一点依赖于精心提示和工具设计、稳健的启发式方法、可观察性和紧密反馈回路。请参阅我们的烹饪书中的开源提示,了解我们系统中的示例提示。

5、生产可靠性和工程挑战

在传统软件中,一个错误可能会破坏功能、降低性能或导致宕机。在智能体系统中,小的更改可能会引发大的行为变化,这使得编写复杂智能体的可靠生产代码变得异常困难,这些智能体需要在长时间运行的过程中保持状态。

智能体是有状态的,错误会累积。 智能体可以长时间运行,跨多次工具调用维护状态。这意味着我们需要持久执行代码并在途中处理错误。如果没有有效的缓解措施,小的系统故障对智能体可能是灾难性的。当错误发生时,我们不能简单地从头开始重新启动:重新启动既昂贵又让用户沮丧。相反,我们构建了系统,可以在智能体出错时从中断处恢复。我们还利用模型的智能优雅地处理问题:例如,让智能体知道某个工具失效并让它适应效果非常好。我们将基于克劳德构建的智能体的适应性与确定性保障(如重试逻辑和定期检查点)相结合。

调试受益于新方法。 智能体做出动态决策,即使提示相同,运行之间也是非确定性的。这使得调试更加困难。例如,用户会报告智能体“找不到明显的信息”,但我们无法看到原因。是智能体使用了糟糕的搜索查询?选择了较差的来源?还是遇到了工具故障?添加完整的生产跟踪让我们能够诊断智能体为何失败并系统地解决问题。除了标准的可观察性外,我们监控智能体的决策模式和交互结构——而不监控个别对话的内容,以维护用户隐私。这种高级别的可观察性帮助我们诊断根本原因,发现意外行为,并修复常见故障。

部署需要仔细协调。 智能体系统是一个高度状态化的提示、工具和执行逻辑网络,几乎连续运行。这意味着每当我们要部署更新时,智能体可能处于其过程中的任何阶段。因此,我们需要防止我们善意的代码更改破坏现有的智能体。我们不能同时将每个智能体更新到新版本。相反,我们使用彩虹部署来避免中断正在运行的智能体,通过逐渐将流量从旧版本转移到新版本,同时保持两者同时运行。

同步执行创建瓶颈。 目前,我们的主智能体同步执行子智能体,等待每组子智能体完成后再继续。这简化了协调,但在智能体之间的信息流中创建了瓶颈。例如,主智能体无法引导子智能体,子智能体无法协调,整个系统可能在等待单个子智能体完成搜索时被阻塞。异步执行将启用额外的并行性:智能体并发工作并在需要时创建新子智能体。但这种异步性增加了结果协调、状态一致性以及子智能体之间错误传播的挑战。随着模型能够处理更长、更复杂的研究任务,我们预计性能提升将证明复杂性是值得的。

6、结束语

在构建AI智能体时,最后一英里往往成为旅程的大部分。在开发人员机器上工作的代码库需要大量工程才能成为可靠的生产系统。智能体系统中错误的复合性质意味着传统软件中的小问题可能会完全破坏智能体。一步失败可能导致智能体探索完全不同的轨迹,导致不可预测的结果。正如本文所述的所有原因,原型和生产之间的差距往往比预期的要大。

尽管存在这些挑战,多智能体系统已被证明对开放式研究任务很有价值。用户表示,Claude帮助他们发现了未曾考虑过的商业机会,导航复杂的医疗选项,解决棘手的技术问题,并通过发现他们独自无法找到的研究联系节省了多达几天的工作。多智能体研究系统可以在仔细工程、全面测试、细致的提示和工具设计、强大的运营实践以及对当前智能体能力有深刻理解的研究、产品和工程团队之间的紧密合作下可靠地大规模运行。我们已经看到这些系统正在改变人们解决复杂问题的方式。

显示Clio嵌入图,展示人们今天使用研究功能的最常见方式。最常见的使用案例类别是开发专业领域的软件系统(10%),开发和优化专业和技术内容(8%),制定业务增长和收入生成策略(8%),协助学术研究和教育材料开发(7%),以及研究和验证有关人物、地点或组织的信息(5%)。


原文链接:How we built our multi-agent research system

汇智网翻译整理,转载请标明出处