開源 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 的文件、介紹性博文。