开源 DeepResearch – 释放我们的搜索智能体
内容提要
昨天,OpenAI 发布了 Deep Research,这是一个能够浏览网页、总结内容并根据总结回答问题的系统。这个系统令人印象深刻,我们初次尝试时就被其震撼到了。
这篇博文中的一个主要成果是在通用人工智能助手基准(GAIA)上取得了显著的性能提升,这也是我们最近一直在研究的一个基准。他们在 1-shot 平均测试中成功达到了近 67% 的正确率,而在特别具有挑战性的“3 级”问题(涉及多步推理和工具使用)上达到了 47.6% 的正确率(关于 GAIA 的介绍见下文)。
DeepResearch 由一个 LLM(可以从 OpenAI 当前提供的 LLM 列表中选择,如 4o、o1、o3 等)和一个内部的“智能体框架”组成,该框架引导 LLM 使用网页搜索等工具,并将其行动组织成多个步骤。
尽管现在强大的 LLM 已经可以在开源社区免费获得(例如最近的 DeepSeek R1 模型),但 OpenAI 并未透露太多关于 Deep Research 底层智能体框架的信息……
因此,我们决定进行一项为期 24 小时的任务,以复现他们的结果,并在此过程中开源所需的框架!
时间紧迫,我们开始吧!⏱️
目录
什么是智能体框架,为何它们如此重要?
智能体框架是在 LLM 之上的一个层,它让 LLM 能够执行动作(如浏览网页或阅读 PDF 文档),并将其操作组织成一系列步骤。如需快速了解智能体,请查看吴恩达的精彩访谈以及我们关于 smolagents 库的介绍性博文。要更深入地了解智能体,您可以订阅我们几天后开始的智能体课程:点击此处链接。
几乎每个人都已经通过玩聊天机器人体验到 LLM 的强大之处……然而,并非所有人都意识到,将这些 LLM 集成到智能体系统中可以赋予它们真正的超能力!
下面是一个最近的例子,比较了几个前沿 LLM 在有和没有智能体框架(此例中为简单的 smolagents 库)的情况下的性能——使用智能体框架将性能提升了高达 60 个点!
事实上,OpenAI 也在其发布博文中强调了 Deep Research 在知识密集型的“人类最后一次考试”基准测试中,性能远超独立的 LLM。
那么,当我们把当前顶级的 LLM 集成到一个智能体框架中,朝着 open-DeepResearch
(开源 DeepResearch)的目标努力时,会发生什么呢?
简要说明:我们将以同样的 GAIA 挑战来对我们的结果进行基准测试,但请记住,这只是一个进行中的工作。DeepResearch 是一项巨大的成就,其开源复现需要时间。特别是,要完全达到同等水平,需要改进浏览器使用和交互,就像 OpenAI Operator 所提供的那样,即超越我们在此第一步中探索的纯文本网页交互。
首先,让我们来了解一下这个挑战的范围:GAIA。
GAIA 基准测试
GAIA 可以说是最全面的智能体基准测试。它的问题非常困难,触及了基于 LLM 系统的许多挑战。下面是一个难题的例子:
在 2008 年的画作《乌兹别克斯坦的刺绣》中展示的水果中,哪些曾作为 1949 年 10 月远洋客轮早餐菜单的一部分,而该客轮后来被用作电影《最后的航行》的浮动道具?请按画中水果从 12 点钟位置开始顺时针排列的顺序,以逗号分隔的列表形式给出这些物品,并使用每种水果的复数形式。
你可以看到这个问题涉及多个挑战
- 以受限格式回答,
- 使用多模态能力(从图像中提取水果),
- 收集多条信息,其中一些信息相互依赖
- 识别图片中的水果
- 找出哪艘远洋客轮被用作《最后的航行》的浮动道具
- 找到上述远洋客轮 1949 年 10 月的早餐菜单
- 按正确顺序将问题解决的轨迹串联起来。
解决这个问题既需要高水平的规划能力,也需要严谨的执行能力,而这两个方面都是单独使用 LLM 时的弱项。
所以,这对智能体系统来说是一个极好的测试集!
在 GAIA 的公开排行榜上,GPT-4 在没有任何智能体设置的情况下,在验证集上的得分甚至不到 7%。而在光谱的另一端,凭借 Deep Research,OpenAI 在验证集上达到了 67.36% 的分数,这简直是数量级的提升!(虽然我们不知道它们在私有测试集上的实际表现如何。)
让我们看看用开源工具能否做得更好!
构建一个开放的 Deep Research
使用 CodeAgent
我们首先要解决的、超越传统 AI 智能体系统的改进是使用所谓的“代码智能体”(code agent)。正如 Wang 等人 (2024) 所展示的,让智能体用代码表达其动作有几个优点,其中最显著的是代码天生就是为表达复杂的动作序列而设计的。
考虑一下 Wang 等人给出的这个例子。
这凸显了使用代码的几个优点
- 代码动作比 JSON 简洁得多。
- 需要并行运行 4 个流,每个流包含 5 个连续的动作?用 JSON,你需要生成 20 个 JSON 块,每个都在一个单独的步骤中;用代码,只需要 1 个步骤。
- 平均而言,该论文显示代码动作所需的步骤比 JSON 少 30%,这相当于生成的 token 数量也减少了相同的比例。由于 LLM 调用通常是智能体系统的主要成本,这意味着你的智能体系统运行成本降低了约 30%。
- 代码能够重用通用库中的工具
- 在基准测试中表现更佳,原因有二
- 表达动作的方式更直观
- LLM 在训练中广泛接触代码
我们在 agent_reasoning_benchmark 上的实验证实了上述优点。
通过构建 smolagents
,我们还可以引出一个显著的额外优势,即更好地处理状态:这对于多模态任务尤其有用。需要为以后使用存储这个图像/音频/其他内容吗?没问题,只需在你的状态中将其赋值给一个变量,如果需要,你可以在 4 个步骤后重新使用它。而在 JSON 中,你必须让 LLM 在一个字典键中命名它,并相信 LLM 之后能理解它仍然可以使用。
打造合适的工具 🛠️
现在我们需要为智能体提供一套合适的工具。
1. 一个网页浏览器。虽然像 Operator 那样功能齐全的网页浏览器交互是达到最佳性能所必需的,但我们目前为了第一个概念验证,先从一个极其简单的基于文本的网页浏览器开始。你可以在这里找到代码。
2. 一个简单的文本检查器,能够读取多种文本文件格式,代码在这里。
这些工具取自微软研究院优秀的 Magentic-One 智能体,向他们致敬!我们没有对它们做太多改动,因为我们的目标是用尽可能低的复杂性获得尽可能高的性能。
以下是我们认为能够真正提升这些工具性能的简短改进路线图(欢迎随时提交 PR 并做出贡献!):
- 扩展可读取的文件格式数量。
- 提供更细粒度的文件处理方式。
- 用基于视觉的网页浏览器替换当前的,我们已经开始在这里进行这项工作。
结果 🏅
在我们 24 小时以上的复现冲刺中,我们已经看到我们的智能体在 GAIA 上的性能稳步提升!
我们很快就超越了之前使用开源框架的最高水平(Magentic-One 约 46%),达到了我们目前在验证集上 55.15% 的性能。
这次性能的提升主要归功于让我们的智能体用代码来编写它们的动作!实际上,当切换到一个用 JSON 而非代码编写动作的标准智能体时,相同设置的性能立即下降到验证集上的平均 33%。
我们已经在这里设置了一个实时演示,供您试用!
然而,这仅仅是个开始,还有很多地方需要改进!我们的开源工具可以做得更好,smolagents 框架也可以进行调整,我们还希望探索更优秀的开源模型来支持这个智能体。
我们欢迎社区加入我们的这项事业,以便我们能共同利用开放研究的力量,构建一个卓越的开源智能体框架!这将使任何人都能在家里运行一个类似 DeepResearch 的智能体,使用他们最喜欢的模型,并采用完全本地化和定制化的方法!
社区复现
在我们专注于 GAIA 的工作期间,社区中也涌现出了其他优秀的 Deep Research 开源实现,特别是由以下人员贡献的:
这些实现各自使用了不同的库来进行数据索引、网页浏览和查询 LLM。在这个项目中,我们希望复现 OpenAI 提出的基准测试(pass@1 平均分),对切换到开源 LLM(如 DeepSeek R1)、使用视觉语言模型(vision LM)进行基准测试和记录我们的发现,并对传统工具调用与原生代码智能体进行基准比较。
最重要的后续步骤
OpenAI 的 Deep Research 很可能得益于他们在 Operator 中引入的出色网页浏览器。
所以我们接下来要攻克这个难题!在一个更普遍的问题上:我们将构建 GUI 智能体,即“能看到你的屏幕并能直接用鼠标和键盘操作的智能体”。如果你对这个项目感到兴奋,并希望通过开源帮助每个人获得如此酷炫的功能,我们非常欢迎你的贡献!
我们还在招聘一名全职工程师来帮助我们进行这项及更多的工作,如果你感兴趣,欢迎申请 🙂
- 要开始使用 Open Deep Research,请在此处尝试示例。
- 查看 smolagents 仓库。
- 阅读更多关于 smolagents 的文档、介绍性博文。