How Exa built a Web Research Multi-Agent System with LangGraph and LangSmith

Exa 如何使用 LangGraph 和 LangSmith 构建网络研究多代理系统

了解一下 Exa 如何利用 LangGraph 和 LangSmith 构建了一个多智能体网络研究系统来处理研究查询。

4 分钟阅读

Exa,以其高质量的搜索 API 而闻名,最近推出了他们迄今为止最具雄心的产品:一个深度研究代理,可以自主地探索网络,直到找到用户所需的结构化信息。

本案例研究探讨了 Exa 的工程团队如何利用 LangGraph 构建一个生产级的多代理系统,该系统每天处理数百个研究查询,并能在 15 秒到 3 分钟内提供结构化结果,具体取决于复杂性。

Exa 最初并非从代理式搜索开始,而是逐渐演变而来。该公司最初推出了一个搜索 API,然后发展到一个结合了 LLM 推理和搜索结果的答案端点。最终,他们现在推出了他们的深度研究代理:这是他们第一个真正的代理式搜索 API。

这反映了整个行业的一个更广泛趋势:LLM 应用随着时间的推移变得越来越代理化和长期运行。例如,我们在研究相关任务中看到了这一点——最初是 RAG,现在已经演变成深度研究。我们在编码领域也看到了这一点,从简单的自动完成,到问答,再到现在异步、长期运行的编码代理。

这种演变也在重塑团队思考和使用框架和工具的方式。我们通过一个流行的开源集成与 Exa 团队长期以来一直是紧密的合作伙伴,但直到现在才在产品上进行合作。他们最初的答案端点不依赖于任何框架,但随着他们转向更复杂的深度研究架构,他们重新评估了他们的选择,并决定使用 LangGraph。这再次模仿了我们看到的常见趋势——随着架构变得越来越复杂,LangGraph 越来越多地成为构建系统的首选框架。

多代理架构设计

Exa 的研究代理遵循一个复杂的、完全建立在 LangGraph 上的多代理模式。

  1. 规划器:分析研究查询并动态生成多个并行任务。
  2. 任务:可以利用专业工具和推理的独立研究单元。
  3. 观察者:在所有规划、推理、输出和引用中维护完整的上下文。

Exa 架构中的一个关键洞察是其有意的上下文工程。虽然观察者在所有组件之间保持完全可见性,但单个任务只接收来自其他任务的最终清理后的输出,而不是中间的推理状态。

与僵化的工作流程不同,Exa 的系统会根据查询的复杂性动态调整要启动的研究任务数量。每个任务接收:

  • 特定的任务指令
  • 必需的输出格式(始终为 JSON schema)
  • 对专业 Exa API 工具的访问权限

这种灵活性使系统能够从简单的单任务查询扩展到需要大量并行调查的复杂、多方面研究。

演进代理蓝图

Exa 的许多设计选择都与Anthropic 深度研究系统中的设计相呼应。这是故意的。和我们一样,Exa 团队阅读了那篇博客文章,觉得它很棒,并从中获得了许多经验。

以下是他们在此基础上的一些关键见解和决策:

搜索片段 vs. 完整结果

Exa 系统中上下文工程最有趣的例子之一是它如何处理搜索内容。该系统不是自动抓取完整的页面内容,而是首先尝试对搜索片段进行推理。

这种方法在保留研究质量的同时,显著减少了 token 使用量,因为只有在片段级推理不足时,代理才会请求完整内容。这种在搜索片段和完整结果之间切换的能力由 Exa API 提供支持。

结构化输出

与许多生成非结构化报告的研究系统不同,Exa 的代理在每个级别都保持结构化的 JSON 输出。输出格式可以在运行时指定。

这一设计选择源于 Exa 对该代理的预期用途。与面向消费者的研究工具不同,他们专门为 API 消费设计了他们的系统。在作为 API 使用时,拥有可靠的输出格式至关重要。这种结构化输出是通过函数调用生成的。

通过 LangSmith 获得可观测性

对 Exa 而言,LangSmith 最关键的功能之一是可观测性,尤其是在 token 使用方面。

"LangSmith 提供的可观测性——了解 token 使用情况——非常重要。而且设置起来非常容易。"——Mark Pekala,Exa 软件工程师。

这种对 token 消耗、缓存率和推理 token 使用量的可见性对于为 Exa 的生产定价模型提供信息并确保大规模成本效益至关重要。

结论

Exa 的深度研究代理展示了 LangGraph 如何在生产中实现复杂的多代理系统。通过利用 LangGraph 的协调能力和 LangSmith 的可观测性功能,Exa 构建了一个能够以令人印象深刻的速度和可靠性处理真实客户查询的系统。

构建类似系统的团队的关键启示:

  1. 从可观测性开始:token 跟踪和系统可见性对于生产部署至关重要。
  2. 为可重用性而设计:架构良好的代理流程可以为多个产品提供支持。
  3. 优先考虑结构化输出:API 消费者需要可靠、可解析的结果。
  4. 动态任务生成:灵活的任务创建比僵化的工作流程更具可扩展性。

随着代理生态系统的不断发展,Exa 的实现提供了一个引人注目的例子,说明了如何构建能够提供真实业务价值的生产级代理系统。


要了解有关使用 LangGraph 构建多代理系统的更多信息,请访问我们的文档:langchain-ai.github.io/langgraph。要试用 Exa 的深度研究 API,请访问 exa.ai

© . This site is unofficial and not affiliated with LangChain, Inc.