開源 DeepResearch – 釋放我們的搜尋智慧體

釋出於 2025 年 2 月 4 日
在 GitHub 上更新

內容提要

昨天,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 個點!

Benchmarks

事實上,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 等人給出的這個例子。

Code Agent

這凸顯了使用程式碼的幾個優點

  • 程式碼動作比 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 智慧體,即“能看到你的螢幕並能直接用滑鼠和鍵盤操作的智慧體”。如果你對這個專案感到興奮,並希望透過開源幫助每個人獲得如此酷炫的功能,我們非常歡迎你的貢獻!

我們還在招聘一名全職工程師來幫助我們進行這項及更多的工作,如果你感興趣,歡迎申請 🙂

社群

DeepSeek 的推理能力對於這樣的任務可能特別有用。但在我看來,特別是對於學術研究型別的任務,模型中固有的宣傳內容是不可接受的。我昨天測試了新的
DeepSeek-R1-Distill-Llama-70B-Uncensored-v2-Unbiased 模型。這是一個非常粗略的測試,但我印象深刻。我是新手,所以把這當作一個輕微的建議,以防它有幫助,僅此而已。

·

是的,我也對它印象深刻。它能很好地遵循指令,並糾正(故意的)錯誤。我正打算讓它在我的 RTX 4090 上透過解除安裝(offloading)良好地工作。

這聽起來很有趣,所以我根據描述點了個贊。然而,演示的實現肯定需要注意和改進。現在,在幾次等待了 100 多個使用者的佇列之後,我反覆收到“生成模型輸出時出錯
litellm.ContextWindowExceededError: litellm.BadRequestError: ContextWindowExceededError: OpenAIException - 錯誤程式碼: 400 - {'error': {'message': "此模型的最大上下文長度為 128000 個 token。但是,您的訊息導致了 419624 個 token。請減少訊息的長度。", 'type': 'invalid_request_error', 'param': 'messages', 'code': 'context_length_exceeded'}}”。所以這看起來很基礎,*. * 演示肯定需要精心設計,以便模型能夠在正確的時間和地點處理正確的 token 限制。否則……

我在演示網站上也遇到了和樓上一樣的問題。肯定是個 bug,因為我試了不同的提示,但由於排隊,每個都要等大約 1 小時。
生成模型輸出時出錯
litellm.ContextWindowExceededError: litellm.BadRequestError: ContextWindowExceededError: OpenAIException - 錯誤程式碼: 400 - {'error': {'message': "此模型的最大上下文長度為 128000 個 token。然而,您的訊息導致了 709582 個 token。請減少訊息的長度。", 'type': 'invalid_request_error', 'param': 'messages', 'code': 'context_length_exceeded'}}

非常酷,謝謝!我覺得 OpenAI 已經恨上開源了 :)))))
那些拼命想商業化的產品,一天之內就被做出來了。

這是朝著更強大的 AI 智慧體邁出的一大步。在 Automatio.ai,我們正在努力整合類似的自主網路智慧體,以簡化資料提取和網路自動化,讓使用者無需編碼即可構建強大的爬蟲。挑戰在於確保這些智慧體能夠可靠地瀏覽複雜的網站。您認為開源 AI 如何幫助彌合研究原型與現實世界自動化之間的差距?

太棒了。我非常感興趣參與。

我目前正在探索 OpenAI DeepResearch 的開源替代品,因為它確實是一個很棒的產品,是我自 2022 年 ChatGPT 釋出以來用過的最有用產品之一,因為研究結果質量非常高,不僅僅是簡單的“搜尋”功能。
我決定透過 Hugging Face Space 試用這個 Open Deep Research,但遇到了返回輸出超過 128K token 限制的問題。
image.png

@albertvillanova @clefourrier 有沒有辦法解決這個問題,或者設定指令來限制輸出 token,以確保它不會丟擲錯誤並能正常工作,即使有一些限制?
附言:在有侷限的情況下工作總比完全不能工作要好得多。

我們能得到一個帶說明的 readme 檔案嗎

我嘗試在本地執行這個,但在安裝了依賴後,使用 run.py 命令時遇到了一些錯誤。也許你們應該新增一個 readme 來指導設定。https://github.com/huggingface/smolagents/blob/gaia-submission-r1/examples/open_deep_research/run.py

·

是的,我也遇到了錯誤。不確定是否需要安裝整個倉庫,具體要安裝什麼等等。但我試了,還沒能讓它執行起來。

如何預見未來

Cursor 能夠很好地設定這個(並進行擴充套件);只需確保你添加了 smolagents 的文件,並將其指向 git 倉庫 src 目錄下的特定 open deep research 文件。

·

多說點吧,我的朋友……

嘿,夥計們!演示網站掛了 :/

無法訪問演示。

我嘗試將您的工具與付費的 Gemini Advanced 1.5 Pro with Deep Research 進行並排比較,以完成一個特別有趣且具有挑戰性的任務,但很難對結果進行基準測試。Gemini 總體表現不佳至一般,而且是在多次手動額外提示之後才達到的。

初始提示
“在過去 10 年中,馬薩諸塞州的房東因租戶提出的過失或故意造成精神痛苦的索賠而收到的最高判決是什麼?”
結果 - 它什麼也沒找到
我用如下提示進一步修正了工作流程
“請注意,這也可能出現在房東對租戶的訴訟中,其中租戶在反訴中獲勝”

“那裡可能有一些有用的結果,但是,請按照我提出的兩個標準‘過去 10 年內’和‘在馬薩諸塞州’重新生成,然後嘗試評估為什麼您的流程在其最終輸出中犯了這個明顯的錯誤,並與我分享您的自我分析”

“請考慮幾種方法,可以在滿足我標準的同時擴充套件您的篩選範圍。1. 提出‘過失造成精神痛苦’或‘故意造成精神痛苦’的訴訟有多種法律框架。可能是在消費者保護法第 93A 章的背景下,也可能是在 M.G.L. c. 186, §14 的背景下,特別是在驅逐案件的反訴中。2. 如果您搜尋引用了那些具有里程碑意義的舊案例的案件,特別是 simon vs. solomon 和 Haddad v. Gonzalez,它們會非常有幫助。3. 尋找普通案例比尋找有約束力的判例法更困難,一些建議是,某些初審法院,如馬薩諸塞州住房法院西部分院,會公佈其‘法院報告’,這基本上是他們幾乎所有案件裁決的資料轉儲。3. 您明智地抓取了 masscases.com,因為它有未公佈和已公佈的判決,這對我很有用,而且他們使用對抓取友好的 URL 方案。judyrecords.com, trellis.law, docketalarm 都選擇允許被谷歌爬取以便出現在谷歌搜尋結果中。我所尋求的資訊幾乎總是可以純粹從提供給谷歌的資訊中推斷出來,例如 {massachusetts emotional distress tenant site:trellis.law}(不帶大括號)會返回許多案例。請再試一次”

“Rader v Odermatt 是一個完全符合我標準的案例的絕佳例子。租戶在反訴中勝訴,甚至獲得了通常不鼓勵且罕見的重複性損害賠償。請嘗試評估您是如何錯過這個案例的,輸出一份修訂後的列表,並在您的工作流程中輸出您的自我分析”

我省略了谷歌提供的自我分析,它大體上是正確的,但正如它自己認識到的,它未能對我的修訂給予適當的權重。當然,另一個主要障礙是,對於準法律、有時是技術性的,以及由於徹頭徹尾的政治偏見,大多數下級法院的案件,在某種程度上意味著“真實案件”,非常難找到,更難抓取。我嘗試用抓取策略進行提示,但最終幾乎沒有找到有意義的結果。我準備了一些結果來評估其有效性。不幸的是,您的工具在第一個提示時就給了我與其他使用者一樣的錯誤。

文章作者

演示又上線了!

·

不會持續太久 :(

Screenshot_20250207_213738_Brave.jpg

我成功在本地運行了 run.py .. 請在 https://github.com/huggingface/smolagents/issues/501 檢視解決方案.. 我在那裡提到了步驟。

我從頭到尾都讀完了。感謝這篇文章

緩衝區

我很想讀一下這個 open_deep_research 資料夾的一個好的 README.md,瞭解如何使用和調整那個示例 :)

太棒了

📻 🎙️ 嘿,我為這篇部落格文章製作了一個播客,快來聽聽吧!

該播客由 ngxson/kokoro-podcast-generator 生成,使用了 DeepSeek-R1 和 Kokoro-TTS

·

這很酷。

嘿,很棒的博文!我注意到你們公佈了用於 Gaia/Math 基準測試的模型——感謝分享。

我想知道你們是用哪個伺服器來執行這些模型的?我目前在使用 vLLM,但它似乎還不支援 tool_choice="required"。為了讓它工作,我不得不調整模型程式碼來強制它返回一個工具以供執行。

預先感謝任何見解!

我嘗試在我的本地設定中執行這個智慧體,我想說,它相當令人印象深刻。我試了 OpenAI Deep Research 頁面上(https://openai.com/index/introducing-deep-research/)同樣的問題,只是為了比較工作流程和輸出。

它建立的行動計劃很清晰,並逐一執行了所有工作流程步驟,儘管中間出現了一些錯誤,但這並沒有中斷程序。最終,它根據所有收集到的資料給出了最終建議。

附上的是使用 gpt-4o 模型的結果。使用 o1 模型肯定會得到更好的推理結果。
plan.jpg
final-answer.jpg

我們能新增一個搜尋 arxiv 和 pubmed 文章然後呈現研究成果的功能嗎?我認為這將是一個很好的開始。

·

像一個爬蟲,會從研究文章中收集資料然後輸入到 DeepSeek?

看來又向 closedAI 開了一槍 :))

是的

此評論已被隱藏

我會想辦法讓所有技術都開源,併為這個世界帶來開源的人性

@m-ric 你好,我正在嘗試利用基於 SimpleTextBrowserVisitTool 來從 URL 獲取頁面內容。但我發現對於某些 URL,比如 https://www.businessresearchinsights.com/market-reports/software-resellers-market-117159,它可能會返回 錯誤 403 啟用 JavaScript 和 cookie 以繼續。所以我想知道 Open DR 在生成最終報告或進行分析時是如何處理這類問題的。是直接跳過,還是透過 GoogleSearchTool 從頁面獲取內容片段?

註冊登入 以發表評論

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