开源 DeepResearch – 释放我们的搜索代理

结论

昨天,OpenAI 发布了Deep Research,这是一个通过浏览网页来总结内容并根据总结回答问题的系统。这个系统令人印象深刻,我们第一次尝试时就被震撼了。

博客文章中的主要结果之一是通用人工智能助手基准(GAIA)的性能有了显著提升,这也是我们最近一直在使用的基准,它们平均一次性成功获得近 67% 的正确答案,在特别具有挑战性的涉及多步骤推理和工具使用的“3 级”问题上,正确答案率为 47.6%(有关 GAIA 的介绍见下文)。

DeepResearch 由一个 LLM(可从 OpenAI、4o、o1、o3 等提供的当前 LLM 列表中选择)和一个​​内部“代理框架”组成,该框架指导 LLM 使用网络搜索等工具并分步组织其操作。

虽然功能强大的 LLM 现在已可在开源系统中免费使用(例如最近的 DeepSeek R1 模型),但 OpenAI 并未透露太多有关深度研究背后的代理框架的信息……

因此,我们决定开展一项 24 小时的任务来重现他们的结果,并在此过程中开源所需的框架!

时钟滴答作响,我们走吧!⏱️

什么是代理框架以及为什么它们很重要? 代理框架是 LLM 之上的一层,用于使所述 LLM 执行操作(例如浏览网页或阅读 PDF 文档),并将其操作组织成一系列步骤。要快速了解代理,请查看Andrew Ng 的精彩访谈和我们关于 smolagents 库的介绍博客文章。要更详细地了解代理,您可以订阅几天后开始的代理课程:链接在这里。

几乎每个人都已经通过玩聊天机器人体验到了 LLM 的强大力量。然而,并不是每个人都知道,将这些 LLM 集成到代理系统中可以赋予它们真正的超能力!

这是一个最近的例子,比较了有和没有代理框架(在本例中是简单的smolagents库)的一些前沿 LLM 的性能——使用代理框架可将性能提高多达 60 分! enter image description here 事实上,OpenAI 在其发布博客文章中也强调了深度研究在知识密集型的“人类最后考试”基准上的表现如何远远优于独立的LLM

那么,当我们将当前的顶级 LLM 融入代理框架中以努力实现目标时,会发生什么情况open-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% 的分数,因此高出了一个数量级!(尽管我们不知道它们在私人测试集上的实际表现如何。)

让我们看看我们是否可以利用开源工具做得更好!

建立开放的深度研究 使用 CodeAgent 我们将要解决的第一个对传统 AI 代理系统的改进是使用所谓的“代码代理”。正如Wang 等人 (2024)所指出的,让代理用代码表达其动作有几个优点,但最值得注意的是,代码是专门为表达复杂的动作序列而设计的。

考虑一下 Wang 等人给出的这个例子: enter image description here 这凸显了使用代码的几个优点:

代码操作比JSON简洁得多。 需要运行 4 个包含 5 个连续操作的并行流?在 JSON 中,您需要生成 20 个 JSON blob,每个都在其单独的步骤中;在 Code 中只需 1 个步骤。 论文显示,平均而言,代码操作所需的步骤比 JSON 少 30%,这相当于生成的令牌也减少了 30%。由于 LLM 调用通常是代理系统的度量成本,这意味着您的代理系统运行成本降低了约 30%。 代码允许重复使用来自公共库的工具 基准测试中表现更佳,原因有二: 更直观的表达动作的方式 法学硕士在培训中广泛接触代码 我们在agent_reasoning_benchmark上的实验证实了上述优势。

从构建中smolagents我们还可以列举一个值得注意的额外优势,即更好地处理状态:这对于多模式任务尤其有用。需要存储此图像/音频/其他以供以后使用吗?没问题,只需将其分配为状态中的变量,如果需要,您可以在 4 个步骤后重新使用它。在 JSON 中,您必须让 LLM 在字典键中命名它,并相信 LLM 稍后会明白它仍然可以使用它。

制造合适的工具 现在我们需要为代理提供正确的工具集。

1.网络浏览器。虽然需要像Operator这样的功能齐全的网络浏览器交互才能实现全部性能,但我们目前从一个非常简单的基于文本的网络浏览器开始进行第一个概念验证。您可以在此处找到代码

2.一个简单的文本检查器,能够读取一堆文本文件格式,在这里找到它。

这些工具取自微软研究院出色的Magentic-One代理,值得称赞!我们没有对它们进行太多改动,因为我们的目标是以尽可能低的复杂性获得尽可能高的性能。

以下是我们认为可以真正提高这些工具性能的改进的简短路线图(欢迎随时打开 PR 并做出贡献!):

扩展可读取的文件格式的数量。 提出更细粒度的文件处理。 用基于视觉的浏览器取代网络浏览器,我们已经开始这么做了。 结果🏅 在我们 24 小时以上的复制冲刺中,我们已经看到 GAIA 上的代理性能稳步提升!

我们已经从之前采用开放框架的 SoTA(Magentic-One 的准确率约为 46%)迅速上升到目前验证集上的 54% 的准确率。

性能的提升主要归功于让我们的代理用代码编写操作!事实上,当切换到用 JSON 而不是代码编写操作的标准代理时,相同设置的性能在验证集上会立即下降到平均 33%。

这是最终的代理系统。

我们在这里设置了现场演示供您尝试!

然而,这只是一个开始,还有很多事情需要改进!我们的开放工具可以做得更好,smolagents 框架也可以进行调整,我们很乐意探索更好的开放模型的性能来支持代理。

我们欢迎社区加入我们的事业,这样我们就可以共同利用开放研究的力量来构建一个伟大的开源代理框架!它将允许任何人在家中使用他们最喜欢的模型,使用完全本地化和定制的方法运行类似 DeepResearch 的代理!

社区复制品 当我们致力于这项工作并专注于 GAIA 时,社区中也出现了其他出色的深度研究开放式实现,特别是来自

dzhng, 阿萨夫洛维奇 尼克斯卡马拉 吉那爱和 舒默。 这些实现中的每一个都使用不同的库来索引数据、浏览网页和查询 LLM。在这个项目中,我们希望重现 OpenAI 提出的基准(pass@1 平均分数),使用视觉 LM 来基准测试并记录我们的发现,并将结果切换到开放 LLM(如 DeepSeek R1),使用视觉 LM,对传统工具调用与代码原生代理进行基准测试。

最重要的后续步骤 OpenAI 的深度研究可能得益于他们通过Operator推出的出色网络浏览器。

所以接下来我们要解决这个问题!一个更普遍的问题:我们将构建 GUI 代理,即“查看您的屏幕并可以直接使用鼠标和键盘进行操作的代理”。如果您对这个项目感到兴奋,并希望帮助每个人通过开源获得如此酷的功能,我们很乐意收到您的贡献!

我们还在招聘一名全职工程师来帮助我们完成这项工作以及更多工作,如果你有兴趣,可以申请 🙂

要开始使用 Open Deep Research,请尝试此处的示例。 检查smolagents仓库。 阅读有关 smolagents文档、介绍博客文章的更多信息。 enter link description here

评论