OpenDevin:一個(gè)面向通用型Agent AI軟件開(kāi)發(fā)者的開(kāi)放平臺(tái)
一、結(jié)論寫(xiě)在前面
Code ??https://github.com/OpenDevin/OpenDevin??
Benchmark ??https://hf.co/spaces/OpenDevin/evaluation??
Slack ??https://bit.ly/OpenDevin-Slack??
論文標(biāo)題:OpenDevin: An Open Platform for AI Software Developers as Generalist Agents
論文鏈接:??https://arxiv.org/pdf/2407.16741??
軟件是論文人類擁有的最強(qiáng)大的工具之一;它使熟練的程序員能夠以復(fù)雜而深刻的方式與世界互動(dòng)。同時(shí),得益于大型語(yǔ)言模型(LLMs)的改進(jìn),與周?chē)h(huán)境互動(dòng)并產(chǎn)生影響的AIagent 也得到了快速發(fā)展。
論文介紹OpenDevin,這是一個(gè)社區(qū)驅(qū)動(dòng)的平臺(tái),旨在開(kāi)發(fā)通過(guò)軟件與世界交互的通才及專才AI agent 。其特點(diǎn)包括:
(1) 一種交互機(jī)制,允許用戶界面、agent 和環(huán)境通過(guò)強(qiáng)大而靈活的事件流架構(gòu)進(jìn)行交互。
(2) 一個(gè)由沙盒操作系統(tǒng)和一個(gè)網(wǎng)頁(yè)瀏覽器組成的環(huán)境,agent 可以利用這些環(huán)境來(lái)完成任務(wù)。
(3) 一個(gè)接口,允許agent 以類似于實(shí)際軟件工程師的方式與環(huán)境交互。論文提供agent 以下能力:(a) 創(chuàng)建復(fù)雜的軟件,(b) 執(zhí)行代碼,以及(c) 瀏覽網(wǎng)站以收集信息。
(4) 多agent 委托,允許多個(gè)專業(yè)agent 協(xié)同工作。
(5) 評(píng)估框架,便于對(duì)agent 在廣泛任務(wù)上的表現(xiàn)進(jìn)行評(píng)估。
重要的是,OpenDevin不僅是一個(gè)概念框架,還包括了agent 、環(huán)境和評(píng)估的全面且即用的實(shí)現(xiàn)。截至目前,OpenDevin包含一個(gè)擁有超過(guò)10個(gè)已實(shí)現(xiàn)agent 的agent 中心,其中包括一個(gè)基于CodeAct架構(gòu)實(shí)現(xiàn)的強(qiáng)大通用agent,并增加了網(wǎng)頁(yè)瀏覽[52]和代碼編輯功能[2]。用戶通過(guò)聊天界面與系統(tǒng)交互,該界面可視化agent 的當(dāng)前動(dòng)作并允許實(shí)時(shí)反饋。此外,評(píng)估框架目前支持15個(gè)基準(zhǔn)測(cè)試,論文用這些基準(zhǔn)來(lái)評(píng)估論文的agent。
二、論文的簡(jiǎn)單介紹
2.1 論文的背景
隨著AIagent 逐漸能夠解決復(fù)雜問(wèn)題,其開(kāi)發(fā)與評(píng)估也變得更具挑戰(zhàn)性。近期,眾多努力致力于創(chuàng)建開(kāi)源框架以促進(jìn)agent 的開(kāi)發(fā)。這些agent 框架通常包含:
(1) agent 與世界交互的接口(如基于JSON的函數(shù)調(diào)用或代碼執(zhí)行)
(2) agent 運(yùn)作的環(huán)境
(3)人機(jī)或agent 間通信的交互機(jī)制。這些框架通過(guò)多種方式簡(jiǎn)化了開(kāi)發(fā)流程(見(jiàn)表1,SC部分)。
在設(shè)計(jì)AIagent 時(shí),論文還可考慮人類如何與世界互動(dòng)。目前,人類與世界互動(dòng)的最強(qiáng)方式是通過(guò)軟件——軟件驅(qū)動(dòng)著論文生活的方方面面,從基本需求的物流支持到科學(xué)技術(shù)及AI本身的進(jìn)步。鑒于軟件的強(qiáng)大功能及其在高效開(kāi)發(fā)、使用和部署方面的現(xiàn)有工具,它為AIagent 以復(fù)雜方式與世界交互提供了理想的接口。然而,構(gòu)建能夠有效開(kāi)發(fā)軟件的agent 也帶來(lái)了獨(dú)特的挑戰(zhàn)。論文如何使agent 能夠有效創(chuàng)建和修改復(fù)雜軟件系統(tǒng)中的代碼?論文如何為他們提供工具,以便實(shí)時(shí)收集信息進(jìn)行問(wèn)題調(diào)試或獲取任務(wù)所需信息?論文如何確保開(kāi)發(fā)過(guò)程的安全性,避免對(duì)用戶系統(tǒng)產(chǎn)生負(fù)面影響?
2.2 OpenDevin架構(gòu)
論文使用OpenDevin描述了:(1) 如何定義和實(shí)現(xiàn)agent ,(2) 每個(gè)動(dòng)作執(zhí)行如何導(dǎo)致觀察結(jié)果,(3) 如何可靠地管理和執(zhí)行agent 僅使用的技能,以及(4) 如何將多個(gè)agent 組合在一起以解決任務(wù)。圖3提供了概覽。
2.2.1 agent 定義與實(shí)現(xiàn)
一個(gè)agent 能夠感知環(huán)境狀態(tài)(例如,先前的動(dòng)作和觀察結(jié)果),并在解決用戶特定任務(wù)時(shí)產(chǎn)生執(zhí)行動(dòng)作。
狀態(tài)與事件流。在OpenDevin中,狀態(tài)是一種數(shù)據(jù)結(jié)構(gòu),封裝了agent 執(zhí)行所需的所有相關(guān)信息。該狀態(tài)的一個(gè)關(guān)鍵組成部分是事件流,它是一個(gè)按時(shí)間順序排列的過(guò)去動(dòng)作和觀察結(jié)果的集合,包括agent 自身的動(dòng)作和用戶交互(例如,指令、反饋)。然而,狀態(tài)不僅僅局限于事件流。
圖1:OpenDevin 用戶界面(UI,SD)允許用戶查看文件、檢查執(zhí)行的bash命令/Python代碼、觀察agent 的瀏覽器活動(dòng),并直接與agent 交互。
還包括agent 操作的輔助信息,例如LLM調(diào)用的累積成本、用于跟蹤多agent 委托的元數(shù)據(jù)以及其他執(zhí)行相關(guān)參數(shù)。
行動(dòng)。受 CodeAct [63] 啟發(fā),OpenDevin 通過(guò)一組核心通用行動(dòng)將agent 與環(huán)境連接。IPythonRunCellAction 和 CmdRunAction 使agent 能在沙盒環(huán)境(如安全隔離的 Linux 操作系統(tǒng))中執(zhí)行任意 Python 代碼和 bash 命令。BrowserInteractiveAction 允許使用 BrowserGym 引入的特定領(lǐng)域語(yǔ)言與網(wǎng)絡(luò)瀏覽器交互?;诰幊陶Z(yǔ)言(PL)的行動(dòng)空間既強(qiáng)大又靈活,可使用不同形式的工具(如 Python 函數(shù)、REST API 等)執(zhí)行任何任務(wù) ,同時(shí)保持可靠性和易維護(hù)性。這種設(shè)計(jì)也兼容需要預(yù)定義工具列表的現(xiàn)有工具調(diào)用agent。用戶可以輕松使用 OpenDevin 原始行動(dòng)支持的 PL 定義工具(如為計(jì)算器編寫(xiě) Python 函數(shù)),并通過(guò)類 JSON 的函數(shù)調(diào)用體驗(yàn) 使這些工具可供agent 使用。此外,框架強(qiáng)大的基于 PL 的原語(yǔ)使agent 能在直接相關(guān) API 不可用時(shí)自行創(chuàng)建工具(如生成 Python 函數(shù) )。
觀察。觀察描述agent 觀察到的環(huán)境變化。這可能由agent 的行動(dòng)引起,也可能不是:它可以是 1) 用戶指示agent 執(zhí)行特定任務(wù)的自然語(yǔ)言消息,2) agent 先前行動(dòng)的執(zhí)行結(jié)果(如代碼執(zhí)行結(jié)果、可訪問(wèn)性樹(shù) 、網(wǎng)頁(yè)截圖等)。
實(shí)現(xiàn)新agent 。agent 抽象設(shè)計(jì)簡(jiǎn)單而強(qiáng)大,允許用戶輕松創(chuàng)建和定制各種任務(wù)的agent 。agent 抽象的核心在于 step 函數(shù),它以當(dāng)前狀態(tài)為輸入,基于agent 邏輯生成適當(dāng)?shù)男袆?dòng)。圖 2 展示了agent 抽象的簡(jiǎn)化示例代碼。通過(guò)提供這種抽象,OpenDevin 允許用戶專注于定義所需的agent 行為和邏輯,而無(wú)需關(guān)心行動(dòng)執(zhí)行的底層細(xì)節(jié)。
圖 3:OpenDevin 由三個(gè)主要組件組成:1) agent 抽象,社區(qū)可以在此貢獻(xiàn)不同實(shí)現(xiàn)的agent (S2.1)到agent 中心(S3);2) 事件流,用于跟蹤動(dòng)作和觀察的歷史記錄;3) agent 運(yùn)行時(shí),執(zhí)行所有agent 動(dòng)作并轉(zhuǎn)化為觀察結(jié)果(2.2)
2.2.2 agent 運(yùn)行時(shí):動(dòng)作執(zhí)行如何產(chǎn)生觀察結(jié)果
agent 運(yùn)行時(shí)提供了一個(gè)通用環(huán)境,使agent 具備與人類軟件開(kāi)發(fā)者相當(dāng)?shù)膭?dòng)作空間,使 OpenDevin agent 能夠處理廣泛的軟件開(kāi)發(fā)和基于網(wǎng)絡(luò)的任務(wù),包括復(fù)雜的軟件開(kāi)發(fā)工作流程、數(shù)據(jù)分析項(xiàng)目、網(wǎng)頁(yè)瀏覽任務(wù)等。它允許agent 訪問(wèn) bash 終端以運(yùn)行代碼和命令行工具,使用 Jupyter 筆記本進(jìn)行即時(shí)編寫(xiě)和執(zhí)行代碼,并與網(wǎng)絡(luò)瀏覽器交互以進(jìn)行基于網(wǎng)絡(luò)的任務(wù)(例如,信息搜索)。
Linux SSH 沙盒。對(duì)于每個(gè)任務(wù)會(huì)話,OpenDevin 會(huì)啟動(dòng)一個(gè)安全隔離的 Docker 容器沙盒,其中所有來(lái)自agent 的 bash 命令都在此執(zhí)行。OpenDevin 通過(guò) SSH 協(xié)議連接到沙盒,執(zhí)行agent 發(fā)送的任意命令,并將執(zhí)行結(jié)果作為觀察結(jié)果返回給agent 。一個(gè)可配置的工作區(qū)目錄,包含用戶希望agent 處理的文件,會(huì)被掛載到這個(gè)安全沙盒中,供 OpenDevin agent 訪問(wèn)。
Jupyter IPython。Linux 沙盒還支持運(yùn)行一個(gè)交互式 Jupyter 服務(wù)器,agent 可以使用它進(jìn)行交互式 Python 代碼執(zhí)行和調(diào)試。
Web 瀏覽器。OpenDevin 實(shí)現(xiàn)了一個(gè)基于 Playwright 的 Chromium 瀏覽器。它通過(guò) BrowserGym 定義的一組瀏覽器動(dòng)作原語(yǔ) 與agent 進(jìn)行交互,例如導(dǎo)航、點(diǎn)擊、輸入、滾動(dòng)。執(zhí)行這些動(dòng)作后,瀏覽器運(yùn)行時(shí)會(huì)提供關(guān)于瀏覽器當(dāng)前狀態(tài)的豐富觀察結(jié)果,包括 HTML、DOM、可訪問(wèn)性樹(shù)、截圖、打開(kāi)的標(biāo)簽頁(yè)等。這些觀察結(jié)果還可以通過(guò)可配置的屬性進(jìn)行增強(qiáng),使agent 更好地理解網(wǎng)頁(yè)觀察結(jié)果,例如使用截圖上的標(biāo)記集、可見(jiàn)元素標(biāo)記、焦點(diǎn)元素、可交互元素標(biāo)記、視口內(nèi)元素過(guò)濾 等。
表1:不同AIagent 框架的比較。SwE指的是“軟件工程”。標(biāo)準(zhǔn)化工具庫(kù):如果框架包含可重用的工具用于不同的agent 實(shí)現(xiàn);內(nèi)置沙盒與代碼執(zhí)行:如果支持沙盒執(zhí)行任意agent 生成的代碼;內(nèi)置網(wǎng)頁(yè)瀏覽器:如果為agent 提供完全功能的網(wǎng)頁(yè)瀏覽器訪問(wèn);人機(jī)協(xié)同:如果支持多輪人機(jī)協(xié)同(例如,人類可以在任務(wù)執(zhí)行過(guò)程中中斷agent ,和/或提供額外反饋和指令);AgentHub:如果托管多種agent 實(shí)現(xiàn);評(píng)估框架:如果提供對(duì)實(shí)施agent 在挑戰(zhàn)性基準(zhǔn)上的系統(tǒng)評(píng)估;agent 質(zhì)量控制(QC):如果框架集成測(cè)試(SE)以確保整體框架軟件質(zhì)量
2.2.3 agent技能:可擴(kuò)展的agent-計(jì)算機(jī)接口
SWE-Agent強(qiáng)調(diào)了精心設(shè)計(jì)的agent-計(jì)算機(jī)接口(ACI,即特定任務(wù)的專用工具)在成功解決復(fù)雜任務(wù)中的重要性。然而,創(chuàng)建、維護(hù)和分發(fā)大量工具可能是一個(gè)艱巨的工程挑戰(zhàn),尤其是在論文希望這些工具可供不同agent實(shí)現(xiàn)使用時(shí)。為了應(yīng)對(duì)這些挑戰(zhàn),論文構(gòu)建了AgentSkills庫(kù),這是一個(gè)旨在增強(qiáng)agent能力的工具箱,提供了通過(guò)基本bash命令或Python代碼不易獲得的實(shí)用程序。
易于創(chuàng)建和擴(kuò)展工具。AgentSkills設(shè)計(jì)為包含不同實(shí)用函數(shù)(即工具)的Python包,這些函數(shù)會(huì)自動(dòng)導(dǎo)入到Jupyter IPython環(huán)境中(82.2)。將Python函數(shù)定義為工具的簡(jiǎn)易性降低了社區(qū)成員為技能庫(kù)貢獻(xiàn)新工具的門(mén)檻。Python包的通用性也使得不同的agent實(shí)現(xiàn)能夠通過(guò)論文的核心動(dòng)作IPythonRunCellAction輕松利用這些工具。
嚴(yán)格測(cè)試和維護(hù)。論文遵循軟件工程的最佳實(shí)踐,為AgentSkills中的工具編寫(xiě)了廣泛的單元測(cè)試,以確保其可靠性和可用性。
納入標(biāo)準(zhǔn)與理念。在AgentSkills庫(kù)中,論文的目標(biāo)并非包裝所有可能的Python包并重新教授agent 其使用方法(例如,LLM已知曉能讀取CSV文件的pandas庫(kù),因此論文無(wú)需再創(chuàng)建工具來(lái)教導(dǎo)agent 讀取相同文件格式)。論文僅在以下情況添加新技能:(1)對(duì)于LLM而言,直接編寫(xiě)代碼實(shí)現(xiàn)該功能并非易事(例如,編輯代碼并替換特定行),和/或(2)涉及調(diào)用外部模型(例如,調(diào)用語(yǔ)音轉(zhuǎn)文本模型,或代碼編輯模型)。
當(dāng)前支持的技能。AgentSkills庫(kù)包含從SWE-Agent[72]改編的文件編輯工具,如edit file,允許從指定行修改現(xiàn)有文件;滾動(dòng)功能scroll up和scroll down用于查看文件的不同部分。此外,它還包含支持閱讀多模態(tài)文檔的工具,如parse-image和parse-pdf,分別利用視覺(jué)-語(yǔ)言模型(例如,GPT-4V)從圖像中提取信息和從PDF中讀取文本。
2.2.4 agent 委托:協(xié)作多agent 交互
OpenDevin同樣支持多個(gè)agent 之間的交互。為此,論文采用了一種特殊動(dòng)作類型AgentDelegateAction,使一個(gè)agent 能夠?qū)⑻囟ㄗ尤蝿?wù)委托給另一個(gè)agent 。例如,具備有限網(wǎng)頁(yè)瀏覽能力的通用型CodeActAgent,可以通過(guò)AgentDelegateAction將網(wǎng)頁(yè)瀏覽任務(wù)委托給專門(mén)的BrowsingAgent,以執(zhí)行更復(fù)雜的瀏覽活動(dòng)(例如,導(dǎo)航網(wǎng)頁(yè)、點(diǎn)擊按鈕、提交表單,等等)。
2.3 AgentHub:社區(qū)貢獻(xiàn)agent 的集線器
基于論文的agent 抽象,OpenDevin支持廣泛的社區(qū)貢獻(xiàn)agent 實(shí)現(xiàn),供終端用戶選擇,并作為不同agent 任務(wù)的基準(zhǔn)。
CodeAct Agent。CodeActAgent 是基于 CodeAct 框架 的默認(rèn)通用型agent 。在每個(gè)步驟中,agent 可以(1)通過(guò)自然語(yǔ)言與人類交流,以請(qǐng)求澄清、確認(rèn)等,或者(2)通過(guò)執(zhí)行代碼(即 CodeAct)來(lái)完成任務(wù),包括執(zhí)行 bash 命令、Python 代碼或特定于瀏覽器的編程語(yǔ)言。這種通用動(dòng)作空間使得agent (v1.5 及以上版本)能夠執(zhí)行多種任務(wù),包括編輯文件、瀏覽網(wǎng)頁(yè)、運(yùn)行程序等。
瀏覽agent 。論文實(shí)現(xiàn)了一個(gè)名為 Browsing Agent 的通用型網(wǎng)絡(luò)agent ,作為網(wǎng)絡(luò)agent 任務(wù)的簡(jiǎn)單而有效的基線。該agent 類似于 WebArena中的agent ,但具有改進(jìn)的觀察和動(dòng)作,僅使用零樣本提示。在每個(gè)步驟中,agent 通過(guò)任務(wù)描述、瀏覽動(dòng)作空間描述、使用可訪問(wèn)性樹(shù)的當(dāng)前瀏覽器觀察、先前動(dòng)作以及帶有鏈?zhǔn)剿伎纪评淼膭?dòng)作預(yù)測(cè)示例來(lái)提示大型語(yǔ)言模型(LLM)。LLM 的預(yù)期響應(yīng)將包含鏈?zhǔn)剿伎纪评硪约邦A(yù)測(cè)的下一個(gè)動(dòng)作,包括完成任務(wù)并向用戶傳達(dá)結(jié)果的選項(xiàng)。
GPTSwarm agent 。GPTSwarm 開(kāi)創(chuàng)性地使用可優(yōu)化的圖來(lái)構(gòu)建agent 系統(tǒng),通過(guò)模塊化統(tǒng)一語(yǔ)言agent 框架。每個(gè)節(jié)點(diǎn)代表一個(gè)獨(dú)特的操作,而邊定義協(xié)作和通信路徑。這種設(shè)計(jì)允許自動(dòng)優(yōu)化節(jié)點(diǎn)和邊,推動(dòng)多agent 系統(tǒng)的進(jìn)步。
微型agent (Micro Agent)。此外,OpenDevin 支持創(chuàng)建微型agent ,這是一種針對(duì)特定任務(wù)的agent 。微型agent 復(fù)用了現(xiàn)有通用agent (例如,CodeAct Agent)的大部分實(shí)現(xiàn)。其設(shè)計(jì)旨在降低agent 開(kāi)發(fā)的門(mén)檻,社區(qū)成員可以分享針對(duì)其特定用例表現(xiàn)良好的專用提示。無(wú)需編程,用戶只需提供agent 的名稱、描述、輸入和輸出的模式,以及可選的專用提示(例如,展示如何執(zhí)行特定任務(wù)的示例演示),即可創(chuàng)建微型agent ,例如生成 git 提交消息的 CommitWriterAgent,以及用于糾正整個(gè)代碼庫(kù)拼寫(xiě)錯(cuò)誤的 TypoFixerAgent。
2.4 評(píng)估
為了系統(tǒng)地跟蹤構(gòu)建通用數(shù)字agent 的進(jìn)展,如表 2 所示,論文將 15 個(gè)已建立的基準(zhǔn)集成到 OpenDevin 中。這些基準(zhǔn)涵蓋軟件工程、網(wǎng)頁(yè)瀏覽和雜項(xiàng)輔助任務(wù)。這里論文將 OpenDevin 與不基于基準(zhǔn)內(nèi)容進(jìn)行手動(dòng)提示工程的開(kāi)源可復(fù)現(xiàn)基線進(jìn)行比較。請(qǐng)注意,為了簡(jiǎn)潔起見(jiàn),本節(jié)余下部分論文將 OpenDevin 簡(jiǎn)稱為 OD。
2.4.1 結(jié)果概覽
在 OpenDevin 中,論文的目標(biāo)是開(kāi)發(fā)能夠通過(guò)軟件接口與世界交互的通用數(shù)字agent。論文認(rèn)識(shí)到,軟件agent 不僅應(yīng)在代碼編輯方面表現(xiàn)出色,還應(yīng)在網(wǎng)頁(yè)瀏覽和各種輔助任務(wù)中表現(xiàn)優(yōu)異,例如回答有關(guān)代碼倉(cāng)庫(kù)的問(wèn)題或進(jìn)行在線研究。
表 2:OpenDevin 中的評(píng)估基準(zhǔn)
表 3:OpenDevin agent 的選定評(píng)估結(jié)果(84)。完整結(jié)果請(qǐng)參見(jiàn)表 4(軟件)、表 5(網(wǎng)頁(yè))、表 6(雜項(xiàng)輔助)
表3展示了一系列精選的評(píng)估結(jié)果。盡管OpenDevinagent 在每個(gè)類別中可能無(wú)法達(dá)到頂尖性能,但它們的設(shè)計(jì)考慮到了通用性。值得注意的是,同一個(gè)CodeActagent ,無(wú)需對(duì)其系統(tǒng)提示進(jìn)行任何修改,就在三大任務(wù)類別(軟件開(kāi)發(fā)、網(wǎng)頁(yè)交互和雜項(xiàng)任務(wù))中展示了競(jìng)爭(zhēng)性的表現(xiàn)。與通常為特定任務(wù)類別設(shè)計(jì)和優(yōu)化的基準(zhǔn)agent 相比,這一點(diǎn)尤為顯著。
2.4.2 軟件工程
接下來(lái),論文在表4中報(bào)告軟件工程基準(zhǔn)的具體結(jié)果。
2.4.2.1 SWE-Bench
SWE-bench旨在評(píng)估agent 解決真實(shí)GitHub問(wèn)題的能力,如錯(cuò)誤報(bào)告或功能請(qǐng)求。agent 與倉(cāng)庫(kù)交互并通過(guò)文件編輯和代碼執(zhí)行嘗試修復(fù)問(wèn)題。agent 修改后的代碼倉(cāng)庫(kù)會(huì)針對(duì)一個(gè)測(cè)試套件進(jìn)行測(cè)試,該套件包含了從人類開(kāi)發(fā)者對(duì)同一問(wèn)題的修復(fù)中添加的新測(cè)試。每個(gè)測(cè)試實(shí)例都附帶一段“提示文本”,包含自然語(yǔ)言建議,指導(dǎo)如何解決問(wèn)題。在本文中,論文報(bào)告的所有結(jié)果均未使用提示文本。為了便于訪問(wèn)和高效測(cè)試,創(chuàng)建了一個(gè)規(guī)范子集,即SWE-bench Lite。出于成本節(jié)約考慮,論文默認(rèn)使用此子集進(jìn)行測(cè)試。
結(jié)果。如表4所示,論文最新版本的 CodeActAgent v1.8 通用agent ,使用 claude-3.5-sonnet 模型,達(dá)到了 26% 的解決率,與其他專門(mén)用于軟件開(kāi)發(fā)的開(kāi)源agent 相比具有競(jìng)爭(zhēng)力。論文還使用 gpt-4o-mini 評(píng)估了 CodeActAgent v1.8。雖然它僅解決了 6.3% 的問(wèn)題,但其成本不到其他模型的 1%。
2.4.2.2 HumanEvalFix
HumanEvalFix要求agent 在提供的測(cè)試用例幫助下修復(fù)給定函數(shù)中的bug。這些bug的設(shè)計(jì)確保了一個(gè)或多個(gè)測(cè)試用例會(huì)失敗。論文專注于該基準(zhǔn)測(cè)試的Python子集,允許模型通過(guò)多輪自我調(diào)試來(lái)解決bug,并結(jié)合測(cè)試執(zhí)行的反饋。論文遵循Muennighoff等人 [37] 的設(shè)置,使用pass@k [8]。
結(jié)果。如表4所示,OpenDevin CodeActAgent成功修復(fù)了Python分支中79.3%的bug。這顯著優(yōu)于所有非agent 方法,幾乎是StarCoder2-15B [28, 32] 性能的兩倍。雖然SWE-Agent達(dá)到了87.7%,但Yang等人 [72] 為模型提供了一個(gè)完整的示范,展示了成功修復(fù)測(cè)試數(shù)據(jù)集中一個(gè)bug的樣本軌跡("1-shot"),而論文對(duì)OpenDevin的評(píng)估是0-shot(無(wú)示例)。由于HumanEvalFix是由人類創(chuàng)建的,所有bug都經(jīng)過(guò)仔細(xì)驗(yàn)證,在這個(gè)基準(zhǔn)測(cè)試中達(dá)到100%是完全可行的,這也是論文在OpenDevin未來(lái)迭代中希望實(shí)現(xiàn)的目標(biāo)。
2.4.2.3 ML-Bench
ML-Bench 評(píng)估agent 在18個(gè)GitHub倉(cāng)庫(kù)中解決機(jī)器學(xué)習(xí)任務(wù)的能力。該基準(zhǔn)包含9,641個(gè)任務(wù),涵蓋169個(gè)多樣化的ML問(wèn)題,要求agent 根據(jù)用戶指令生成bash腳本或Python代碼。在沙盒環(huán)境中,agent 可以迭代執(zhí)行命令并接收反饋,使其能夠逐步理解倉(cāng)庫(kù)上下文并滿足用戶需求。按照原始論文的設(shè)置,論文對(duì)ML-Bench的四分之一子集進(jìn)行agent 評(píng)估。
結(jié)果。如表4所示,搭載GPT-4o的OpenDevinagent 在ML-Bench上取得了76.47%的最高成功率,超越了SWE-Agent (42.0470)。性能隨著模型能力的降低而下降。這些結(jié)果展示了Devinagent 在復(fù)雜ML任務(wù)中的有效性。論文注意到,在ML-LLM-Bench設(shè)置下,與非agent 方法相比,agent 顯示出減少幻覺(jué)和語(yǔ)法錯(cuò)誤的潛力[57]。
2.4.2.4 Gorilla APIBench
Gorilla APIBench評(píng)估agent 使用API的能力。它包含涉及TorchHub、TensorHub和HuggingFace的任務(wù)。在評(píng)估過(guò)程中,模型會(huì)收到一個(gè)與API使用相關(guān)的問(wèn)題,例如“識(shí)別一個(gè)能夠?qū)浺糁械目谡Z(yǔ)轉(zhuǎn)換為文本的API”。正確性評(píng)估基于模型的API調(diào)用是否在正確的領(lǐng)域內(nèi)。
結(jié)果。如表4所示,使用GPT-4o的OpenDevin以36.4%的成功率,優(yōu)于未專門(mén)微調(diào)用于API調(diào)用的基線模型。盡管Gorilla在APIBench上表現(xiàn)更佳,但Patil等人特別針對(duì)API調(diào)用對(duì)這一模型進(jìn)行了微調(diào)。
2.4.2.5 ToolQA
ToolQA[81]評(píng)估agent 使用外部工具的能力。該基準(zhǔn)包括涉及航班狀態(tài)、咖啡價(jià)格、Yelp數(shù)據(jù)和Airbnb數(shù)據(jù)等主題的任務(wù),需要使用各種工具,如文本工具、數(shù)據(jù)庫(kù)工具、數(shù)學(xué)工具、圖形工具、代碼工具和系統(tǒng)工具。它分為兩個(gè)難度級(jí)別:簡(jiǎn)單和困難。簡(jiǎn)單問(wèn)題側(cè)重于單一工具的使用,而困難問(wèn)題則強(qiáng)調(diào)推理。在評(píng)估中,使用簡(jiǎn)單子集來(lái)評(píng)估工具使用能力。
結(jié)果。與所有基線相比,使用GPT-4o的OpenDevin表現(xiàn)出最高性能。
2.4.2.6 BioCoder
BioCode是一個(gè)倉(cāng)庫(kù)級(jí)代碼生成基準(zhǔn),評(píng)估agent 在生物信息學(xué)相關(guān)任務(wù)上的表現(xiàn),特別是檢索和準(zhǔn)確利用上下文的能力。原始提示包含相關(guān)代碼的上下文;然而,論文已將其移除,以展示OpenDevin在多輪交互中進(jìn)行上下文檢索、自我調(diào)試和推理的能力。BioCoder包含157個(gè)Python函數(shù)和50個(gè)Java函數(shù),每個(gè)函數(shù)針對(duì)生物信息學(xué)中的特定領(lǐng)域,如蛋白質(zhì)組學(xué)、基因組學(xué)和其他專業(yè)領(lǐng)域。該基準(zhǔn)通過(guò)在現(xiàn)有倉(cāng)庫(kù)中生成代碼來(lái)針對(duì)實(shí)際代碼,其中相關(guān)代碼已被屏蔽。
結(jié)果。表4顯示,使用GPT-4o的OpenDevin達(dá)到了44.0\%的成功率。這一成績(jī)超越了所有基于提示的非agent 基線模型,其中單獨(dú)使用GPT-4僅能達(dá)到較低水平。BioCoder被證明是對(duì)非agent 方法特別具有挑戰(zhàn)性的基準(zhǔn),因?yàn)樗鼈儧](méi)有整合任何倉(cāng)庫(kù)級(jí)別的檢索方法,使得這些模型缺乏訪問(wèn)關(guān)鍵的倉(cāng)庫(kù)級(jí)別信息,如全局變量和函數(shù)聲明。
表5:OpenDevin網(wǎng)頁(yè)瀏覽評(píng)估結(jié)果
2.4.2.7 BIRD
BIRD 是一個(gè)針對(duì)文本到SQL任務(wù)(即,將自然語(yǔ)言翻譯成可執(zhí)行SQL)的基準(zhǔn),旨在現(xiàn)實(shí)且大規(guī)模的數(shù)據(jù)庫(kù)環(huán)境中進(jìn)行。論文從開(kāi)發(fā)集中選取300個(gè)樣本整合到OpenDevin中,并基于執(zhí)行準(zhǔn)確性進(jìn)行評(píng)估。
此外,論文擴(kuò)展了設(shè)置,允許agent 進(jìn)行多輪交互以得出最終的SQL查詢,使其能夠通過(guò)觀察SQL執(zhí)行結(jié)果來(lái)糾正歷史結(jié)果。
結(jié)果。如表4所示,OpenDevin與GPT-4o在BIRD的一個(gè)子集上達(dá)到了47.3%的執(zhí)行準(zhǔn)確率,展示了OpenDevin作為SQLagent 的潛力。這一結(jié)果優(yōu)于使用代碼LLM進(jìn)行提示的方法,例如CodeLlama-7B-Instruct(18.3%)和CodeQwen-7B-Chat(31.3%)。
2.4.3 網(wǎng)頁(yè)瀏覽
論文在表5中報(bào)告了網(wǎng)頁(yè)瀏覽基準(zhǔn)的評(píng)估結(jié)果。
2.4.3.1 WebArena
WebArena 是一個(gè)可自托管的、基于執(zhí)行的網(wǎng)頁(yè)agent 基準(zhǔn),允許agent 自由選擇完成給定任務(wù)的路徑。WebArena包含812個(gè)人工精選的任務(wù)指令,涵蓋購(gòu)物、論壇、開(kāi)發(fā)者平臺(tái)和內(nèi)容管理系統(tǒng)等多個(gè)領(lǐng)域。每個(gè)任務(wù)都配有一個(gè)手寫(xiě)的測(cè)試用例,通過(guò)檢查網(wǎng)頁(yè)元素的狀態(tài)或agent 返回的文本答案來(lái)驗(yàn)證agent 的成功。
結(jié)果。從表5中可以看出,論文的BrowsingAgent在使用領(lǐng)域通用提示技術(shù)的LLMagent 中表現(xiàn)出了競(jìng)爭(zhēng)力。一些agent (例如AutoWebGLM)需要針對(duì)WebArena任務(wù)域的手動(dòng)調(diào)整。這展示了通用瀏覽agent 與領(lǐng)域定制專家agent 之間的性能權(quán)衡,論文選擇更通用的瀏覽agent 作為OpenDevin中的構(gòu)建模塊。
2.4.3.2 MiniWoB
MiniWoBt+是一個(gè)交互式網(wǎng)頁(yè)基準(zhǔn),內(nèi)置獎(jiǎng)勵(lì)函數(shù)。任務(wù)在125個(gè)不同的極簡(jiǎn)網(wǎng)頁(yè)界面上合成初始化。與WebArena不同,任務(wù)更簡(jiǎn)單,無(wú)需頁(yè)面變化,步驟更少,并提供低級(jí)別的逐步任務(wù)指導(dǎo)。需要注意的是,它包含一部分需要視覺(jué)能力才能成功解決的環(huán)境,許多現(xiàn)有工作選擇僅關(guān)注任務(wù)的一個(gè)子集。盡管如此,論文報(bào)告了全集的性能,并且只包括在全集上評(píng)估的基線。
結(jié)果。從表5中論文可以看到,論文的通用型BrowsingAgent在不對(duì)環(huán)境進(jìn)行任何適應(yīng)的情況下,完成了近一半的任務(wù)。然而,由于MiniWoBtt的合成性質(zhì),那些專門(mén)為環(huán)境訓(xùn)練的先進(jìn)agent ,通過(guò)強(qiáng)化學(xué)習(xí)或人類行為克隆的方式,幾乎已經(jīng)達(dá)到了性能的飽和。這表明在通用型和專家型agent 之間存在著比WebArena基準(zhǔn)更大的權(quán)衡。
2.4.4 雜項(xiàng)輔助
雜項(xiàng)輔助基準(zhǔn)的結(jié)果在表6中報(bào)告。特別是,論文報(bào)告了以下結(jié)果:
2.4.4.1 GAIA
GAIA 評(píng)估agent 的通用任務(wù)解決技能,涵蓋不同的現(xiàn)實(shí)場(chǎng)景。它要求agent 具備多種能力,包括推理、多模態(tài)理解、網(wǎng)頁(yè)瀏覽和編程。GAIA包含466個(gè)精選任務(wù),分為三個(gè)級(jí)別。由于需要將多種工具與agent 集成,設(shè)置GAIA傳統(tǒng)上具有挑戰(zhàn)性,但OpenDevin的基礎(chǔ)設(shè)施(例如,運(yùn)行時(shí)\S2.2,今天2.3)顯著簡(jiǎn)化了集成過(guò)程。
結(jié)果。在論文的實(shí)驗(yàn)中,論文在GAIA(一級(jí)驗(yàn)證)上取得了32.1的分?jǐn)?shù),顯著超過(guò)了原始的AutoGPT [14]。GAIA對(duì)多模態(tài)輸入和網(wǎng)頁(yè)導(dǎo)航技能的支持非常敏感,隨著OpenDevin基礎(chǔ)設(shè)施的改進(jìn),預(yù)計(jì)將進(jìn)一步提高分?jǐn)?shù)。
2.4.4.2 GPQA
GPQA 評(píng)估agent 在解決高難度研究生級(jí)別問(wèn)題時(shí)協(xié)調(diào)工具使用的能力。它包含448個(gè)精選且難度較高的生物學(xué)、物理學(xué)和化學(xué)多選題。工具使用(例如,Python)和網(wǎng)絡(luò)搜索通常有助于agent 回答這些問(wèn)題,因?yàn)樗鼈兲峁┝薒LM通常無(wú)法進(jìn)行的精確計(jì)算,并提供了超出LLM參數(shù)知識(shí)庫(kù)的信息訪問(wèn)。
結(jié)果。結(jié)果展示在表6和表7中。論文觀察到,OpenDevin集成支持多種工具使用(例如,用于計(jì)算的Python)以及網(wǎng)頁(yè)搜索(用于搜索相關(guān)事實(shí)),使得生成的agent 能夠更好地解決復(fù)雜的多步驟問(wèn)題,在GPQA[50]的主要和鉆石子集上分別超越了先前的最先進(jìn)水平9.6%和12.3%。
2.4.4.3 AgentBench
AgentBench評(píng)估agent 在多輪開(kāi)放式生成環(huán)境中的推理和決策能力。論文選擇了包含144個(gè)任務(wù)的代碼基礎(chǔ)操作系統(tǒng)(OS)子集。OpenDevin的agent 通過(guò)多輪方式使用bash命令直接與特定任務(wù)的OS交互,結(jié)合交互和推理來(lái)自動(dòng)完成任務(wù)。
結(jié)果。在論文的實(shí)驗(yàn)中(表6),OpenDevin CodeActAgent v1.5在使用gpt-4o的情況下在AgentBench上達(dá)到了57.6%的分?jǐn)?shù),超過(guò)了原論文中使用gpt-4的42.4%基線。有趣的是,當(dāng)使用較弱的模型如gpt-3.5-turbo時(shí),OpenDevinagent 通常表現(xiàn)不如原基線agent 。這一發(fā)現(xiàn)表明,像OpenDevin中實(shí)現(xiàn)的通用agent 需要一定的基礎(chǔ)模型能力閾值——特別是遵循指令的能力——才能有效運(yùn)作。
2.4.4.4 MINT
MINT是一個(gè)基準(zhǔn)測(cè)試,旨在評(píng)估agent 通過(guò)多輪交互使用工具和由GPT-4模擬的自然語(yǔ)言反饋解決挑戰(zhàn)性任務(wù)的能力。論文使用Eurus[76]中使用的編碼和數(shù)學(xué)子集進(jìn)行評(píng)估。論文遵循與原論文相同的設(shè)置,允許agent 最多進(jìn)行五次迭代,并給予兩次提出解決方案的機(jī)會(huì)。
結(jié)果。如表6所示,OpenDevinagent 在原基準(zhǔn)測(cè)試中與默認(rèn)agent 表現(xiàn)相當(dāng),數(shù)學(xué)子集上有所改進(jìn)。
表6:OpenDevin雜項(xiàng)輔助評(píng)估結(jié)果
2.4.4.5 ProofWriter
ProofWriter是一個(gè)合成數(shù)據(jù)集,旨在評(píng)估大型語(yǔ)言模型(LLMs)的演繹推理能力。與 Logic-LM [43] 一樣,?論文專注于最具挑戰(zhàn)性的子集,其中包含 600 個(gè)需要 5 步推理的實(shí)例。為了最小化語(yǔ)義解析潛在錯(cuò)誤的影響,論文使用 Logic-LM 提供的邏輯形式。
結(jié)果。如表 6 所示,OpenDevin agent 使用符號(hào)求解器來(lái)解決任務(wù),達(dá)到了與最先進(jìn)的神經(jīng)符號(hào)模型(即 Logic-LM相當(dāng)?shù)男阅堋?/span>
2.4.4.6 Entity Deduction Arena
實(shí)體推理競(jìng)技場(chǎng)(Entity Deduction Arena,EDA)評(píng)估agent 通過(guò)戰(zhàn)略性提問(wèn)推斷未知實(shí)體的能力,類似于"20個(gè)問(wèn)題"游戲。這個(gè)基準(zhǔn)測(cè)試考驗(yàn)agent 在多輪對(duì)話中的狀態(tài)跟蹤、戰(zhàn)略規(guī)劃和歸納推理能力。論文評(píng)估了兩個(gè)數(shù)據(jù)集"Things"(物品)和"Celebrities"(名人),每個(gè)數(shù)據(jù)集包含100個(gè)實(shí)例,并報(bào)告這兩個(gè)數(shù)據(jù)集的平均成功率。
結(jié)果。表6顯示,CodeActAgent與原論文 報(bào)告的結(jié)果相比,產(chǎn)生了可比的性能。
本文轉(zhuǎn)載自 ??AI帝國(guó)??,作者: 無(wú)影寺
