OpenDevin出技術(shù)報告了,大模型Agent開發(fā)者必讀
今年 3 月,「全球首位 AI 軟件工程師」Devin 引爆了 AI 圈。與此前 AI 編程助手不同的是,Devin 并不只是輔助編程的角色,而是能夠獨立地、端到端地完成整個開發(fā)項目。
Devin 的出世讓我們領(lǐng)略了大模型 Agent 的強大能力。很快,業(yè)界就出現(xiàn)了眾多嘗試復(fù)刻它的開源項目,其中 OpenDevin 脫穎而出,受到了人們最多的關(guān)注。
OpenDevin 是一個開發(fā)通過軟件與世界互動的通用智能體的平臺,其特點包括:
- 大模型 Agent、接口和環(huán)境之間交互的交互機制;
- Agent 可用的沙盒操作系統(tǒng) + Web 瀏覽器環(huán)境;
- 可創(chuàng)建和執(zhí)行代碼的接口;
- 多 Agent 支持;
- 評估框架。
目前,OpenDevin 的 GitHub 已經(jīng)獲得了超過 2.9 萬 Star 量。
近日,OpenaDevin 團隊發(fā)布了該工具的技術(shù)報告。
報告地址:https://arxiv.org/pdf/2407.16741
在技術(shù)報告中,OpenDevin 的作者,來自伊利諾伊大學(xué)香檳分校、卡耐基梅隆大學(xué)等機構(gòu)的學(xué)者們詳細介紹了 OpenDevin,這是一個社區(qū)驅(qū)動的平臺,旨在開發(fā)通過軟件與世界交互的通用和專業(yè) AI Agent。
更重要的是,OpenDevin 不僅是一個概念框架,它還包括一個全面且可立即使用的 Agent、環(huán)境和評估實現(xiàn)。截至本報告發(fā)布時,OpenDevin 包含一個 Agent 中心,其中已實現(xiàn) 10 多個智能體,包括一個基于 CodeAct 架構(gòu)實現(xiàn)的強大的通用智能體,并增加了用于 Web 瀏覽和代碼編輯功能。用戶與智能體的交互是通過聊天界面實現(xiàn)的,該界面可視化智能體當前操作并允許實時反饋。此外,評估框架目前支持 15 個基準,可使用它們來評估智能體性能。
OpenDevin 架構(gòu)
本文中,作者從以下幾個方面描述 OpenDevin:(1)如何定義和實現(xiàn)智能體;(2)動作執(zhí)行如何促進觀察;(3)如何管理和擴展智能體常用的技能;(4)如何將多個智能體組合在一起以解決任務(wù)。
如何定義和實現(xiàn)智能體
智能體可以感知環(huán)境狀態(tài),并在解決用戶指定的任務(wù)時生成要執(zhí)行的操作。
狀態(tài)和事件流。在 OpenDevin 中,狀態(tài)是一種數(shù)據(jù)結(jié)構(gòu),它封裝了智能體執(zhí)行任務(wù)的所有相關(guān)信息。此狀態(tài)的一個關(guān)鍵組成部分是事件流,是按照時間順序收集過去的動作和觀察。
動作。受 CodeAct 的啟發(fā),OpenDevin 通過一組核心的動作將智能體與環(huán)境連接起來。動作 IPythonRunCellAction 和 CmdRunAction 使智能體能夠在沙盒環(huán)境(例如,安全隔離的 Linux 操作系統(tǒng))內(nèi)執(zhí)行任意 Python 代碼和 bash 命令。而 BrowserInteractiveAction 支持智能體與 Web 瀏覽器交互。
觀察。觀察描述了智能體觀察到的環(huán)境變化。它可能由智能體的動作引起,也可能不是:它可以是 1) 用戶提出的自然語言指令,2) 智能體先前動作的執(zhí)行結(jié)果(例如,代碼執(zhí)行結(jié)果等)。
實現(xiàn)新的智能體。智能體設(shè)計簡單但功能強大,從而允許用戶輕松創(chuàng)建和定制用于各種任務(wù)的智能體。核心在于 step 函數(shù),它將當前狀態(tài)作為輸入并根據(jù)智能體的邏輯生成適當?shù)膭幼?。圖 2 顯示了智能體抽象的簡化示例代碼。
觀察動作執(zhí)行結(jié)果
Agent Runtime 為智能體提供了與人類軟件開發(fā)人員相當?shù)膭幼骺臻g,使 OpenDevin 能夠處理各種軟件開發(fā)和基于 Web 的任務(wù),包括復(fù)雜的軟件開發(fā)工作流程、數(shù)據(jù)分析項目、Web 瀏覽任務(wù)等。它允許智能體訪問 bash 終端來運行代碼和命令行工具,利用 Jupyter notebook 即時編寫和執(zhí)行代碼,并與 Web 瀏覽器交互以執(zhí)行基于 Web 的任務(wù)(例如,信息搜索)。
可擴展的智能體 - 計算機接口
作者構(gòu)建了一個 AgentSkills 庫,這是一個旨在增強智能體功能的工具箱,能夠提供基本 bash 命令或 python 代碼無法輕松獲得的實用程序。
多智能體交互
OpenDevin 允許多個智能體進行交互。為了實現(xiàn)這一目標,作者使用了一種特殊的動作類型 AgentDelegateAction,它允許智能體將特定的子任務(wù)委托給另一個智能體。
評估
本節(jié)將 OpenDevin (以下實驗結(jié)果中簡寫為 OD)與開源可復(fù)現(xiàn)的基線方法進行了比較。這 15 個基準涵蓋軟件工程、網(wǎng)頁瀏覽等任務(wù)。
表 3 表明,雖然 OpenDevin 智能體可能無法在每個類別中都達到最佳性能,但其設(shè)計考慮了通用性。
表 4 報告了智能體在軟件工程基準上的結(jié)果。
具體而言:
SWE-bench 旨在評估智能體解決 GitHub 問題的能力,如 bug 報告或功能請求。如表 4 所示,本文最新版本的 CodeActAgent v1.8 ,基于 claude-3.5-sonnet,與其他專門用于軟件開發(fā)的開源智能體相比,解決問題率高達 26%。
HumanEvalFix。OpenDevin CodeActAgent 成功修復(fù)了 Python 拆分中 79.3% 的錯誤,明顯優(yōu)于所有非智能體方法,幾乎是 StarCoder2-15B 性能的兩倍。
基于 GPT-4o 的 OpenDevin 智能體在 ML-Bench 上實現(xiàn)了 76.47% 的最高成功率,優(yōu)于 SWE-Agent(42.64%)。
Gorilla APIBench 考察智能體使用 API 的能力。使用 GPT-4o 的 OpenDevin 的成功率為 36.4%,優(yōu)于未針對 API 調(diào)用進行專門微調(diào)的基線。
ToolQA 評估智能體使用外部工具的能力。與所有基線相比,采用 GPT-4o 的 OpenDevin 表現(xiàn)出最高的性能。智能體在與 CSV 和數(shù)據(jù)庫工具使用相關(guān)的任務(wù)上表現(xiàn)更好,但在數(shù)學(xué)和計算器工具使用方面需要改進。
表 5 報告了網(wǎng)頁瀏覽基準的評估結(jié)果。
表 6 報告了各種輔助基準的結(jié)果。
其中,GAIA 用于評估智能體解決一般任務(wù)的能力,結(jié)果顯示,智能體在 GAIA 上取得了 32.1 分,比原來的 AutoGPT 有了明顯的提高。
GPQA 用于評估智能體在解決具有挑戰(zhàn)性的研究生水平問題時協(xié)調(diào)使用工具的能力。結(jié)果如表 6、7 所示,OpenDevin 集成了支持多種工具使用以及 web 搜索的功能,使得智能體能夠更好地解決復(fù)雜的多步驟問題。
了解更多結(jié)果,請參考原論文。