論文 · arXiv 2407.16741
OpenHands:以通用代理人形式打造 AI 軟體開發者的開源平台
OpenHands: An Open Platform for AI Software Developers as Generalist Agents
三句話總結
- 🎯 在多樣的程式碼與網頁任務中建置、維護並安全評估 AI 軟體代理人,需要標準化的沙盒、工具與可重現的基準測試。
- 🔧 OpenHands 將事件串流架構與 Docker 沙盒、可擴展的 AgentSkills 函式庫、基於 BrowserGym 的導航、多代理人委派,以及使用模擬 LLM 的整合測試相結合。
- 📈 在未針對特定基準進行提示詞微調的情況下,使用 Claude 3.5 Sonnet 的 CodeActAgent 在 SWE-Bench Lite 上達到 26.0% 的解決率,在 WebArena 上達到 15.3%,在 GPQA Diamond 上達到 52.0%。
摘要
軟體是人類掌握最強大的工具之一,讓熟練的程式設計師能以複雜且深刻的方式與世界互動。同時,受惠於大型語言模型(LLM)的進展,能與周遭環境互動並引發改變的 AI 代理人也迎來飛速發展。在本文中,我們介紹了 OpenHands(前身為 OpenDevin),這是一個用於開發強大且具彈性 AI 代理人的平台,其與世界的互動方式類似於人類開發者:透過撰寫程式碼、與命令列互動以及瀏覽網頁。我們說明了該平台如何實現新代理人的建置、與沙盒環境進行安全互動以執行程式碼、協調多個代理人之間的合作,以及整合評測基準。基於目前已納入的基準,我們在涵蓋軟體工程(如 SWE-BENCH)與網頁瀏覽(如 WEBARENA)等 15 項具挑戰性的任務上對代理人進行了評估。OpenHands 採用寬鬆的 MIT 授權條款釋出,是一個橫跨學術界與產業界的社群專案,擁有來自超過 188 名貢獻者的 2,100 多次貢獻。
英文原文摘要
Software is one of the most powerful tools that we humans have at our disposal; it allows a skilled programmer to interact with the world in complex and profound ways. At the same time, thanks to improvements in large language models (LLMs), there has also been a rapid development in AI agents that interact with and affect change in their surrounding environments. In this paper, we introduce OpenHands (f.k.a. OpenDevin), a platform for the development of powerful and flexible AI agents that interact with the world in similar ways to those of a human developer: by writing code, interacting with a command line, and browsing the web. We describe how the platform allows for the implementation of new agents, safe interaction with sandboxed environments for code execution, coordination between multiple agents, and incorporation of evaluation benchmarks. Based on our currently incorporated benchmarks, we perform an evaluation of agents over 15 challenging tasks, including software engineering (e.g., SWE-BENCH) and web browsing (e.g., WEBARENA), among others. Released under the permissive MIT license, OpenHands is a community project spanning academia and industry with more than 2.1K contributions from over 188 contributors.
論文解讀
問題與動機
軟體開發是人類與數位世界互動中最具表現力的介面之一。雖然大型語言模型(LLM)可以產生孤立的程式碼片段,但真實世界的軟體工程需要長程的互動:瀏覽程式庫、修改多檔案架構、執行 bash 指令、透過網頁瀏覽器閱讀文件,並利用執行回饋進行自我除錯。
先前的代理人框架通常存在關鍵的架構缺陷:缺乏隔離的執行環境、無狀態的程式碼執行器、缺失多模態網頁瀏覽能力,或在異質領域中缺乏標準化的評估工具。OpenHands(前身為 OpenDevin)透過提供沙盒化執行時環境、可擴充的代理人-電腦介面(ACI)、多代理人協作與標準化基準測試的開源平台(MIT 授權),解決了這項需求。
核心概念
- 事件串流架構(Event Stream Architecture):使用者指令、代理人動作與執行時觀察結果會按時間順序記錄在事件串流中,統一前端、代理人與沙盒執行時環境之間的通訊。
- 程式語言(PL)原語:捨棄脆弱的自訂 API,代理人的互動建立在通用動作之上:
IPythonRunCellAction、CmdRunAction與BrowseInteractiveAction(透過 BrowserGym)。 - 可擴充的 AgentSkills:預先載入至 IPython 核心的模組化 Python 套件,提供高階工具函式(例如基於 AST 的行編輯
edit_file、PDF 解析、多模態影像擷取),無需重複造輪子。 - 代理人委派(Agent Delegation):由專職代理人處理領域特定的工作流程(例如透過
AgentDelegateAction將網頁任務委派給專門的BrowsingAgent)。 - 透過模擬測試確保品質控制:例行持續整合(CI)測試利用具確定性的「提示詞-回應快取」來測試提示詞回歸、動作與沙盒穩定性,而非使用昂貴的即時 API 呼叫。
方法(包含核心公式)
OpenHands 的執行週期建立在離散步進函數上,代理人將環境狀態 映射至動作 : 在此,狀態封裝了先前動作與觀察結果的時間序列歷史: 其中 追蹤輔助狀態中繼資料(累積的 LLM 成本、作用中的多代理人委派堆疊、設定參數)。
動作空間 包含:
CmdRunAction(command):在目標 Linux shell 中執行任意 bash 指令。IPythonRunCellAction(code):在具狀態的持久 Jupyter 核心中執行 Python 程式碼,並開放使用AgentSkills。BrowseInteractiveAction(code):執行由 Playwright 驅動的 BrowserGym 原語(click(bid)、fill(bid, val)、goto(url)等)。AgentDelegateAction(subtask, agent_name):將子目標推入代理人堆疊以召喚專職代理人。AgentFinishAction():結束執行。
執行發生在安全的客戶端-伺服器 Docker 沙盒內。基礎 Docker 容器會擴充 OpenHands REST API 伺服器(runtime.py),並使用雙標籤機制進行標記:用於嚴格可重現性的內容 MD5 雜湊(target_image_repo:target_image_hash_tag),以及用於快取基礎層建置的語意通用標籤(runtime:oh_v{VERSION}_{BASE_IMAGE}_tag_{IMAGE_TAG})。
結果(包含關鍵數據)
OpenHands 在未針對特定基準微調提示詞的情況下,於涵蓋軟體工程、網頁瀏覽與一般輔助的 15 項基準上評估了通用代理人:
- SWE-Bench Lite(300 個實例,無提示):搭配
claude-3-5-sonnet@20240620的CodeActAgent v1.8達成了 的解決率(每個實例平均成本 $1.10),優於SWE-Agent()與AutoCodeRover(),並逼近Aider()。 - HumanEvalFix(164 個實例):搭配
gpt-4o-2024-05-13的CodeActAgent v1.5在零樣本(0-shot)自我除錯設定下解決了 (相較於 StarCoder2-15B 的 )。 - WebArena(812 個實例):
BrowsingAgent v1.0使用claude-3-5-sonnet達到 ,使用gpt-4o達到 ;而CodeActAgent v1.8透過委派達到 。 - MiniWoB++(125 個環境):零樣本
BrowsingAgent v1.0搭配gpt-4o達到 。 - 一般輔助與推理:
- GPQA Diamond:CodeActAgent v1.8 +
claude-3-5-sonnet取得 (雖然落後人類專家基準的 ,但超越少樣本 CoT GPT-4 的 )。 - GAIA(L1 驗證):GPTSwarm v1.0 搭配
gpt-4o達到 (AutoGPT 為 )。 - AgentBench(OS 子集):CodeActAgent v1.5 達到 。
- MINT(數學 / 程式碼):CodeActAgent v1.5 在數學上達到 ,在程式碼上達到 。
- GPQA Diamond:CodeActAgent v1.8 +
局限性與未解難題
- 長檔案編輯:目前的編輯原語在處理大型程式庫或較長的原始碼檔案時表現欠佳,因為行號偏移容易引發編輯衝突。
- 多模態整合:雖然輔助技能(
parse_image、parse_pdf)可透過外部視覺模型擷取文字或影像摘要,但原生瀏覽器與終端機的多模態推理尚未完全整合。 - 工作流程自動化:工作流程目前仍然高度依賴人工撰寫的系統提示詞與代理人編排迴圈,而非自動最佳化的圖結構(例如 GPTSwarm)。
關鍵術語
- OpenHands
- 一個開源、社群驅動的平台,用於在沙盒環境中建置、部署與評估 AI 軟體開發者代理人。
- CodeAct
- 一種代理人架構,其動作空間圍繞著執行任意程式語言程式碼(Python、bash、瀏覽器操作)進行統一,而非使用刻板的 JSON 綱要。
- Event Stream
- 一個按時間順序排列、僅供附加(append-only)的日誌,用於追蹤整個 OpenHands 執行時環境中的代理人動作、使用者介入與環境觀察結果。
- AgentSkills
- 注入至沙盒化 IPython 核心的模組化 Python 工具套件,為代理人提供檔案編輯、導航與文件解析輔助函式。
- BrowserGym
- 基於 Playwright 的瀏覽器自動化環境與領域專用語法動作語言,OpenHands 將其用於網頁導航任務。
- Agent Runtime
- 在 Docker 容器內運作的隔離客戶端-伺服器執行環境,負責處理 bash 指令、IPython 程式碼儲存格與瀏覽器工作階段。
- AgentDelegateAction
- 一種特殊的動作類型,使主要的通用代理人能夠將特定的子任務委派給領域專任代理人。
- SWE-Bench
- 一項評估指標,用以衡量代理人在無人為指導的情況下解決真實世界 GitHub issue 並通過單元測試套件的能力。
常見問題
OpenHands 與 OpenDevin 有何不同?
OpenHands 是 OpenDevin 的官方延續與重新命名,從原本對 Cognition 的 Devin 進行開源復刻,演變為同時適用於軟體開發與通用數位代理人的綜合性平台。
OpenHands 在執行任意程式碼時如何維持安全性?
所有代理人動作(shell 指令、Python 程式碼片段及瀏覽器操作)均在隔離的 Docker 沙盒容器內執行,該容器透過 REST API 客戶端與後端通訊,藉此隔離主機系統。
OpenHands 如何在自動化測試期間避免產生昂貴的 LLM 呼叫成本?
該框架具備端對端整合測試套件,可攔截 LLM 請求並回傳快取且具確定性的「提示詞-回應」對,僅在發生破壞性提示詞變更時才會重新呼叫線上模型。
OpenHands 能否搭配使用者自訂的任意 Docker 映像檔運作?
可以。OpenHands 提供了一套建置工作流程,可在任何使用者提供的基礎 Docker 映像檔上安裝其動作執行 API 伺服器,並透過 MD5 原始碼雜湊與通用標籤追蹤建置狀態。
本頁解讀由 AI 根據論文生成,可能有錯誤;細節請以原文為準。