跳到正文
Anthropic Engineering·· 2025-06-13精选AI 评分70

Anthropic 如何构建多智能体研究系统

How we built our multi-agent research system

AI 导读

Anthropic 官方发文复盘 Claude Research 多智能体系统的构建经验,该系统由 lead agent 规划研究流程并派生并行 subagent 搜索信息。

推荐理由

Anthropic 官方复盘多智能体研究系统的架构、提示词与评测经验,可迁移到自建 Agent 系统。

正文 · AI 翻译

Claude 现在具备研究能力,可以跨网络、Google Workspace 以及任何集成进行搜索,以完成复杂任务。

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

本文拆解了对我们有效的原则——希望你在构建自己的多智能体系统时,会发现它们同样有用。

多智能体系统的优势

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

这种不可预测性使 AI 智能体特别适合研究任务。研究要求随着调查展开而灵活转向或探索边缘关联。模型必须自主运行许多轮次,根据中间发现决定追求哪些方向。线性的、一次性的流水线无法处理这些任务。

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

一旦智能达到某个阈值,多智能体系统就成为扩展性能的重要方式。例如,尽管个体人类在过去 10 万年中变得更聪明,但在信息时代,人类社会的能力因我们的集体智能和协调能力而呈指数级增长。即使是通用智能体,作为个体运行时也面临限制;智能体群体可以完成多得多的事情。

我们的内部评估显示,多智能体研究系统尤其擅长涉及同时追求多个独立方向的广度优先查询。我们发现,在我们的内部研究评估中,以 Claude Opus 4 作为首席智能体、Claude Sonnet 4 作为子智能体的多智能体系统,比单智能体 Claude Opus 4 的性能高出 90.2%。例如,当被要求找出信息技术 S&P 500 指数中所有公司的董事会成员时,多智能体系统通过将其分解为子智能体的任务找到了正确答案,而单智能体系统则因缓慢的顺序搜索而未能找到答案。

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

这也有一个缺点:在实践中,这些架构会快速消耗 token。在我们的数据中,智能体通常使用的 token 约为聊天交互的 4 倍,而多智能体系统使用的 token 约为聊天的 15 倍。从经济可行性来看,多智能体系统要求任务的价值足够高,以支付其带来的性能提升。此外,一些需要所有智能体共享同一上下文或涉及智能体之间大量依赖关系的领域,目前并不适合多智能体系统。例如,与研究工作相比,大多数编码任务涉及的可真正并行的任务更少,而且 LLM 智能体目前还不擅长实时协调和委派给其他智能体。我们发现,多智能体系统擅长处理涉及大量并行化、信息超出单个上下文窗口以及需要与众多复杂工具交互的高价值任务。

Research 的架构概览

我们的 Research 系统采用多智能体架构,使用编排者-工作者模式,其中主智能体协调整个过程,同时委派给并行运行的专门子智能体。

多智能体架构的实际运行:用户查询流经一个主智能体,该主智能体创建专门的子智能体来并行搜索不同方面。

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

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

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

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

多智能体系统与单智能体系统有着关键差异,包括协调复杂度的快速增长。早期的智能体犯过一些错误,例如为简单查询生成 50 个子智能体、为不存在的来源无休止地搜索网络,以及用过多的更新互相干扰。由于每个智能体都由提示驱动,提示工程是我们改进这些行为的主要手段。以下是我们总结出的一些提示智能体的原则:

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

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

智能体的有效评估

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

立即用小样本开始评估。在智能体开发的早期,改动往往会产生巨大影响,因为有大量唾手可得的成果。一个提示的微调可能将成功率从 30% 提升到 80%。在效应量如此之大的情况下,只需几个测试用例就能发现变化。我们从一组约 20 个代表真实使用模式的查询开始。测试这些查询通常能让我们清楚地看到改动的影响。我们经常听说 AI 开发者团队推迟创建评估,因为他们认为只有包含数百个测试用例的大型评估才有用。然而,最好立即用几个示例开始小规模测试,而不是等到能构建更全面的评估时才动手。

LLM 作为评判者的评估方法若运用得当,便可实现规模化。 研究成果难以通过程序化方式进行评估,因为它们是自由形式的文本,且很少只有一个正确答案。LLM 天然适合为输出评分。我们使用了一个 LLM 评判者,依据评分标准中的各项准则来评估每个输出:事实准确性(陈述是否与来源相符?)、引用准确性(所引用的来源是否与陈述相符?)、完整性(是否涵盖了所有要求的方面?)、来源质量(是否优先使用一手来源而非质量较低的二手来源?)以及工具效率(是否以合理的次数使用了正确的工具?)。我们尝试使用多个评判者来评估每个组成部分,但发现使用单次 LLM 调用、单个提示词输出 0.0-1.0 的分数和通过-不通过等级,是最一致且与人类判断最吻合的方式。当评估测试用例确实有明确答案时,这种方法尤其有效,我们可以使用 LLM 评判者简单地检查答案是否正确(即,它是否准确列出了研发预算排名前三的制药公司?)。使用 LLM 作为评判者,使我们能够规模化地评估数百个输出。

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

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

生产可靠性与工程挑战

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

智能体是有状态的,错误会累积。智能体可以长时间运行,在多次工具调用中保持状态。这意味着我们需要持久地执行代码,并在过程中处理错误。如果没有有效的缓解措施,微小的系统故障对智能体来说可能是灾难性的。当错误发生时,我们不能只是从头重新开始:重启代价高昂,也会让用户感到沮丧。因此,我们构建了能够从错误发生时智能体所处位置恢复的系统。我们还利用模型的智能来优雅地处理问题:例如,让智能体知道某个工具正在失败,并让它自行调整,效果出奇地好。我们将基于 Claude 构建的 AI 智能体的适应能力,与重试逻辑和定期检查点等确定性保障措施结合起来。

调试受益于新方法。智能体会做出动态决策,并且即使在提示完全相同的情况下,每次运行也是非确定性的。这让调试变得更加困难。例如,用户会报告智能体“找不到明显的信息”,但我们看不出原因。是智能体使用了糟糕的搜索查询?选择了劣质来源?还是遇到了工具故障?加入完整的生产环境追踪让我们能够诊断智能体失败的原因,并系统地修复问题。除了标准的可观测性之外,我们还监控智能体的决策模式和交互结构——所有这些都无需监控单个对话的内容,以维护用户隐私。这种高层次的观测能力帮助我们诊断根本原因、发现意外行为并修复常见故障。

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

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

结论

在构建 AI 智能体时,最后一公里往往占据了大部分旅程。在开发者机器上运行的代码库需要大量工程工作才能成为可靠的生产系统。智能体系统中错误的复合性质意味着,传统软件中的小问题可能会让智能体完全偏离轨道。一个步骤失败就可能导致智能体探索完全不同的轨迹,从而带来不可预测的结果。由于本文中描述的所有原因,原型与生产之间的差距往往比预期的更大。

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

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

致谢

由 Jeremy Hadfield、Barry Zhang、Kenneth Lien、Florian Scholz、Jeremy Fox 和 Daniel Ford 撰写。这项工作体现了 Anthropic 多个团队为让 Research 功能成为可能所做的集体努力。特别感谢 Anthropic 应用工程团队,他们的奉献将这一复杂的多智能体系统推向了生产环境。我们也感谢早期用户的出色反馈。

附录

以下是一些关于多智能体系统的其他杂项建议。

对在多轮中改变状态的智能体进行终态评估。评估在多轮对话中修改持久状态的智能体会带来独特的挑战。与只读研究任务不同,每个动作都可能为后续步骤改变环境,从而产生传统评估方法难以处理的依赖关系。我们发现,专注于终态评估而非逐轮分析是成功的。与其判断智能体是否遵循了特定流程,不如评估它是否达到了正确的最终状态。这种方法承认智能体可能会找到通往同一目标的替代路径,同时仍确保它们交付预期的结果。对于复杂的工作流,将评估分解为应发生特定状态变化的离散检查点,而不是试图验证每一个中间步骤。

长时程对话管理。生产级智能体常常参与跨越数百轮的对话,需要谨慎的上下文管理策略。随着对话延长,标准上下文窗口变得不足,需要智能压缩和记忆机制。我们实现了这样的模式:智能体在继续新任务之前,先总结已完成的工作阶段,并将关键信息存储到外部记忆中。当接近上下文限制时,智能体可以生成具有干净上下文的全新子智能体,同时通过谨慎的交接保持连续性。此外,它们可以从记忆中检索已存储的上下文(如研究计划),而不是在达到上下文限制时丢失先前的工作。这种分布式方法可防止上下文溢出,同时在扩展交互中保持对话连贯性。

子智能体输出到文件系统以最小化“传话游戏”。对于某些类型的结果,子智能体的直接输出可以绕过主协调器,从而提高保真度和性能。与其要求子智能体通过主智能体传达一切,不如实现工件系统,让专门化的智能体能够创建独立持久化的输出。子智能体调用工具将其工作存储到外部系统,然后将轻量级引用传回协调器。这可以防止多阶段处理过程中的信息丢失,并减少通过对话历史复制大型输出所带来的 token 开销。该模式对于代码、报告或数据可视化等结构化输出尤其有效,因为在这些场景中,子智能体的专门化提示词比通过通用协调器过滤能产生更好的结果。

来源:Anthropic Engineering · anthropic.com