文章

【译】我们如何构建多智能体研究系统

【译】我们如何构建多智能体研究系统

我们的“研究”功能利用多个 Claude 智能体来更有效地探索复杂主题。在此,我们分享构建该系统时遇到的工程挑战与经验教训。

Claude 现在具备了研究能力,使其能够跨越网络、Google Workspace 及任何集成应用进行搜索,以完成复杂的任务。

这个多智能体系统从原型到产品的演进过程,让我们在系统架构、工具设计和提示工程方面学到了关键的经验。一个多智能体系统由多个协同工作的智能体(在循环中自主使用工具的 LLM)组成。我们的“研究”功能包含一个规划智能体,它根据用户查询来制定研究流程,然后使用工具创建并行的子智能体,同时搜索信息。多智能体系统在智能体协调、评估和可靠性方面引入了新的挑战。

本文将详细阐述对我们行之有效的原则——我们希望您在构建自己的多智能体系统时也能发现它们的价值。

多智能体系统的优势

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

这种不可预测性使得 AI 智能体特别适合执行研究任务。研究要求在调查展开时能够灵活地调整方向或探索相关的分支。模型必须能够自主运行多轮,根据中间发现来决定追求哪个方向。线性的、一次性的处理流程无法胜任这些任务。

搜索的本质是压缩:从浩瀚的语料库中提炼洞见。子智能体通过在各自的上下文中并行运作来促进压缩,它们同时探索问题的不同方面,然后将最重要的令牌(tokens)浓缩后提供给主研究智能体。每个子智能体还实现了关注点分离——拥有独立的工具、提示和探索轨迹——这减少了路径依赖,并实现了彻底、独立的调查。

一旦智能达到某个阈值,多智能体系统就成为扩展性能的关键方式。例如,尽管在过去十万年中,人类个体的智力并未发生巨大变化,但由于我们的集体智慧和协调能力,人类社会在信息时代的能力却实现了指数级的增长。即使是通用智能体,在作为个体运作时也会面临极限;而智能体群体则能完成远超个体的工作。

我们的内部评估显示,多智能体研究系统在处理涉及同时追求多个独立方向的广度优先查询时表现尤为出色。我们发现,在一个由 Claude Opus 4 担任主智能体、Claude Sonnet 4 担任子智能体的多智能体系统中,其在我们的内部研究评估基准上的表现比单智能体的 Claude Opus 4 高出 90.2%。例如,当被要求识别信息技术标准普尔500指数中所有公司的董事会成员时,多智能体系统通过将任务分解给子智能体找到了正确答案,而单智能体系统则因缓慢的顺序搜索而未能找到答案。

多智能体系统之所以有效,主要是因为它们有助于投入足够的令牌来解决问题。在我们的分析中,三个因素解释了 BrowseComp 评估(测试浏览智能体定位难寻信息的能力)中95%的性能差异。我们发现,令牌使用量本身解释了80%的差异,另外两个解释性因素是工具调用次数和模型选择。这一发现验证了我们的架构,该架构将工作分散到具有独立上下文窗口的智能体中,以增加并行推理的能力。最新的 Claude 模型在令牌使用效率上起到了巨大的倍增效应,因为升级到 Claude Sonnet 4 带来的性能提升比在 Claude Sonnet 3.7 上将令牌预算翻倍还要大。多智能体架构能有效地扩展令牌使用量,以应对超出单个智能体能力极限的任务。

但这也存在一个缺点:在实践中,这些架构会迅速消耗大量令牌。我们的数据显示,智能体通常比聊天交互多用约4倍的令牌,而多智能体系统则比聊天多用约15倍。为了保证经济可行性,多智能体系统需要用于那些任务价值足够高,能够支付其性能提升所带来的成本的场景。此外,一些要求所有智能体共享相同上下文或智能体之间存在许多依赖关系的领域,目前并不适合多智能体系统。例如,大多数编码任务的可并行化任务比研究要少,并且 LLM 智能体在实时协调和委派任务给其他智能体方面还不够出色。我们发现,多智能体系统在涉及大量并行化、信息量超出单个上下文窗口以及需要与众多复杂工具交互的高价值任务中表现卓越。

“研究”功能架构概述

我们的“研究”系统采用了一个协调者-工作者(orchestrator-worker)模式的多智能体架构,由一个主智能体协调整个流程,同时将任务委派给并行运作的专业子智能体。

agent

多智能体架构的运作流程:用户查询流经主智能体,主智能体创建专业的子智能体以并行搜索不同方面的信息。

当用户提交查询时,主智能体对其进行分析,制定策略,并生成子智能体以同时探索不同方面。如上图所示,子智能体充当智能过滤器,通过迭代使用搜索工具来收集信息(本例中是关于2025年AI智能体公司的信息),然后将公司列表返回给主智能体,以便其汇编最终答案。

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

agent

流程图展示了我们多智能体“研究”系统的完整工作流程。当用户提交查询时,系统会创建一个 LeadResearcher(首席研究员)智能体,进入一个迭代的研究过程。LeadResearcher 首先思考方法,并将其计划保存到内存(Memory)中以持久化上下文,因为如果上下文窗口超过20万令牌,它将被截断,而保留计划至关重要。然后,它创建专门的 Subagents(子智能体,此处显示两个,但可以是任意数量),并分配具体的研究任务。每个 Subagent 独立执行网络搜索,使用交错思考(interleaved thinking)评估工具结果,并将发现返回给 LeadResearcher。LeadResearcher 综合这些结果,并决定是否需要更多研究——如果需要,它可以创建额外的子智能体或完善其策略。一旦收集到足够的信息,系统退出研究循环,并将所有发现传递给一个 CitationAgent(引文智能体),该智能体处理文档和研究报告,以确定引文的具体位置。这确保了所有论述都恰当地归属于其来源。最终,附带引文的完整研究结果将返回给用户。

研究智能体的提示工程与评估

多智能体系统与单智能体系统相比存在关键差异,其中包括协调复杂性的迅速增长。早期的智能体曾犯过诸如为简单查询生成50个子智能体、为寻找不存在的来源而无休止地 scouring(搜刮)网络,以及通过过多的更新互相干扰等错误。由于每个智能体都由提示驱动,提示工程是我们改善这些行为的主要手段。以下是我们学到的一些提示原则:

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

我们的提示策略侧重于灌输良好的启发式规则,而非僵化的规定。我们研究了熟练的人类如何处理研究任务,并将这些策略编码到我们的提示中——例如将难题分解为小任务、仔细评估来源质量、根据新信息调整搜索方法,以及识别何时应注重深度(详细研究一个主题)与广度(并行探索多个主题)。我们还通过设置明确的护栏来主动减轻意外的副作用,防止智能体失控。最后,我们专注于建立一个具有可观测性和测试用例的快速迭代循环。

智能体的有效评估

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

  • 立即开始小样本评估。 在智能体开发的早期阶段,改动往往会产生巨大影响,因为有大量唾手可得的改进空间。一个提示的微调可能会将成功率从30%提升到80%。在这种效应规模下,只需几个测试用例就能发现变化。我们从大约20个代表真实使用模式的查询集开始。测试这些查询通常能让我们清楚地看到改动的影响。我们经常听说 AI 开发团队推迟创建评估,因为他们认为只有包含数百个测试用例的大型评估才有用。然而,最好是立即用少量示例开始小规模测试,而不是等到能够构建更全面的评估时再行动。
  • “LLM 作为评判者”的评估方法在执行得当时可以规模化。 研究产出很难通过编程方式评估,因为它们是自由格式的文本,且很少有唯一的正确答案。LLM 天然适合对这些产出进行评分。我们使用了一个 LLM 评判者,它根据一个评分标准来评估每个产出:事实准确性(声明是否与来源匹配?)、引文准确性(引用的来源是否与声明匹配?)、完整性(是否涵盖了所有要求的内容?)、来源质量(是否使用了主要来源而非质量较低的次要来源?)和工具效率(是否以合理的次数使用了正确的工具?)。我们尝试了用多个评判者来评估每个部分,但发现单次 LLM 调用、单个提示,输出0.0到1.0的分数和一个通过/不通过的等级,这种方式最为一致且与人类判断相符。当评估的测试用例确实有明确答案时,这种方法尤其有效,我们可以用 LLM 评判者简单地检查答案是否正确(例如,它是否准确列出了研发预算前三名的制药公司?)。使用 LLM 作为评判者使我们能够规模化地评估数百个产出。
  • 人工评估能捕捉到自动化遗漏的问题。 人工测试智能体能发现评估中遗漏的边缘案例。这些包括在不寻常查询上的幻觉答案、系统故障或微妙的来源选择偏见。在我们的案例中,人工测试人员注意到,我们早期的智能体总是选择经过SEO优化的内容农场,而不是像学术PDF或个人博客这样权威但排名较低的来源。在我们的提示中加入来源质量的启发式规则帮助解决了这个问题。即使在自动化评估的世界里,人工测试仍然至关重要。

多智能体系统具有涌现行为,这些行为是在没有特定编程的情况下产生的。例如,对主智能体的小改动可能会不可预测地改变子智能体的行为。要取得成功,需要理解交互模式,而不仅仅是单个智能体的行为。因此,这些智能体的最佳提示不仅仅是严格的指令,而是定义了劳动分工、解决问题的方法和投入预算的协作框架。要做到这一点,依赖于精心的提示和工具设计、可靠的启发式规则、可观测性以及紧密的反馈循环。请参阅我们Cookbook 中的开源提示,查看我们系统中的示例提示。

生产环境的可靠性与工程挑战

在传统软件中,一个错误可能会破坏某个功能、降低性能或导致服务中断。在智能体系统中,微小的变化会级联成巨大的行为变化,这使得为必须在长时间运行过程中维持状态的复杂智能体编写代码变得异常困难。

  • 智能体是状态化的,错误会累积。 智能体可以长时间运行,在多次工具调用中维持状态。这意味着我们需要持久地执行代码并在此过程中处理错误。没有有效的缓解措施,微小的系统故障对智能体来说可能是灾难性的。当错误发生时,我们不能简单地从头开始:重启不仅成本高昂,也让用户感到沮丧。因此,我们构建了能够从错误发生的地方恢复的系统。我们还利用模型的智能来优雅地处理问题:例如,告知智能体某个工具正在失灵并让它自行适应,这种方法效果惊人。我们将基于 Claude 构建的 AI 智能体的适应性与重试逻辑和定期检查点等确定性保障措施相结合。
  • 调试需要新方法。 智能体做出动态决策,并且即使提示相同,每次运行也具有非确定性。这使得调试更加困难。例如,用户会报告智能体“找不到明显的信息”,但我们看不出原因。是智能体使用了糟糕的搜索查询?选择了差劲的来源?还是遇到了工具故障?增加完整的生产环境追踪让我们能够诊断智能体失败的原因并系统地修复问题。除了标准的可观测性,我们还监控智能体的决策模式和交互结构——所有这些都在不监控单个对话内容的情况下进行,以保护用户隐私。这种高层次的可观测性帮助我们诊断根本原因、发现意外行为并修复常见故障。
  • 部署需要精心协调。 智能体系统是由提示、工具和执行逻辑构成的、几乎持续运行的高度状态化的网络。这意味着每当我们部署更新时,智能体可能正处于其流程的任何一个环节。因此,我们需要防止我们善意的代码更改破坏现有的智能体。我们不能同时将所有智能体更新到新版本。相反,我们使用彩虹部署(rainbow deployments)来避免干扰正在运行的智能体,通过在保持新旧版本同时运行的情况下,逐步将流量从旧版本转移到新版本。
  • 同步执行会造成瓶颈。 目前,我们的主智能体是同步执行子智能体的,即等待每批子智能体完成后再继续。这简化了协调,但在智能体之间的信息流中造成了瓶颈。例如,主智能体无法引导子智能体,子智能体之间无法协调,并且整个系统可能会因为等待单个子智能体完成搜索而被阻塞。异步执行将能实现额外的并行性:智能体可以并发工作并在需要时创建新的子智能体。但这种异步性在结果协调、状态一致性和错误在子智能体间的传播方面增加了挑战。随着模型能够处理更长、更复杂的研究任务,我们预计性能的提升将证明这种复杂性是值得的。

结论**

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

尽管存在这些挑战,多智能体系统已被证明在开放式研究任务中非常有价值。用户表示,Claude 帮助他们发现了未曾考虑过的商业机会,驾驭了复杂的医疗保健选项,解决了棘手的技术错误,并通过揭示他们自己可能无法发现的研究联系,节省了长达数天的工作时间。通过精心的工程设计、全面的测试、注重细节的提示和工具设计、稳健的运营实践,以及对当前智能体能力有深刻理解的研究、产品和工程团队之间的紧密协作,多智能体研究系统能够可靠地大规模运行。我们已经看到这些系统正在改变人们解决复杂问题的方式。

agent

一张 Clio 嵌入图,展示了当今人们使用“研究”功能最常见的方式。排名前列的用例类别包括:开发跨专业领域的软件系统(10%)、开发和优化专业及技术内容(8%)、制定业务增长和收入生成策略(8%)、协助学术研究和教育材料开发(7%),以及研究和核实关于人物、地点或组织的信息(5%)。

致谢

由 Jeremy Hadfield、Barry Zhang、Kenneth Lien、Florian Scholz、Jeremy Fox 和 Daniel Ford 撰写。这项工作反映了 Anthropic 多个团队的集体努力,他们共同使“研究”功能成为可能。特别感谢 Anthropic 的应用工程团队,他们的奉献精神将这个复杂的多智能体系统带入了生产环境。我们也感谢早期用户提供的宝贵反馈。


附录

以下是关于多智能体系统的一些额外杂项技巧。

  • 对经过多轮交互后状态发生改变的智能体进行终态评估。 评估在多轮对话中修改持久状态的智能体带来了独特的挑战。与只读的研究任务不同,每个动作都可能改变后续步骤的环境,从而产生传统评估方法难以处理的依赖关系。我们发现,专注于终态评估而非逐轮分析是成功的关键。与其评判智能体是否遵循了特定流程,不如评估它是否达到了正确的最终状态。这种方法承认智能体可能通过不同路径达到同一目标,同时仍能确保它们交付预期的结果。对于复杂的工作流,可以将评估分解为离散的检查点,在这些检查点上应该已经发生了特定的状态变化,而不是试图验证每个中间步骤。
  • 长程对话管理。 生产环境中的智能体常常参与跨越数百轮的对话,这需要精心的上下文管理策略。随着对话的延长,标准的上下文窗口变得不足,需要智能的压缩和记忆机制。我们实现了一些模式,其中智能体在进入新任务前会总结已完成的工作阶段并将关键信息存储在外部记忆中。当接近上下文限制时,智能体可以生成具有干净上下文的新子智能体,同时通过精心的交接保持连续性。此外,当达到上下文限制时,它们可以从记忆中检索存储的上下文(如研究计划),而不是丢失之前的工作。这种分布式方法在保持长时间对话连贯性的同时,防止了上下文溢出。
  • 将子智能体的输出写入文件系统,以最大限度地减少“传话游戏”效应。 对于某些类型的结果,子智能体的直接输出可以绕过主协调者,从而提高保真度和性能。与其要求子智能体通过主智能体传达所有信息,不如实现一个工件(artifact)系统,让专门的智能体可以创建独立持久化的输出。子智能体调用工具将其工作成果存储在外部系统中,然后将轻量级的引用传递回协调者。这可以防止在多阶段处理过程中的信息丢失,并减少因在对话历史中复制大量输出而产生的令牌开销。这种模式对于结构化输出(如代码、报告或数据可视化)尤其有效,因为子智能体的专业化提示所产生的结果比通过通用协调者过滤后的结果更好。

原文:https://www.anthropic.com/engineering/multi-agent-research-system

【非原文内容】学习总结

本文详细阐述了 Anthropic 公司构建其多智能体研究系统(Research feature)的历程。文章指出,多智能体系统通过并行处理、任务分解和动态调整,能高效解决传统线性模型难以处理的复杂、开放式研究问题。核心架构采用“协调者-工作者”模式,由主智能体(Lead Agent)规划并委派任务给多个并行的子智能体(Subagents)。

文章分享了关键的工程经验,强调了提示工程(教会智能体协作与策略)、灵活评估(采用“LLM作评判者”和人工测试)以及生产可靠性(处理状态管理、错误累积和复杂部署)的重要性。尽管挑战重重,但精心设计的的多智能体系统已证明在加速深度研究、发现新洞见方面具有巨大价值。

本文由作者按照 CC BY 4.0 进行授权