AIxiv專欄是機器之心釋出學術、技術內容的欄目。過去數年,機器之心AIxiv專欄接收報導了2000多篇內容,覆蓋全球各大高校與企業的頂級實驗室,有效促進了學術交流與傳播。如果您有優秀的工作想要分享,歡迎投稿或者聯絡報導。投稿郵箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com
這篇論文的作者均來自伊利諾伊大學香檳分校(UIUC)張令明老師團隊,包括:Steven Xia,四年級博士生,研究方向是基於 AI 大模型的自動程式碼修復;鄧茵琳,四年級博士生,研究方向是基於 AI 大模型的程式碼生成;Soren Dunn,科研實習生,目前為 UIUC 大三學生。張令明老師現任 UIUC 計算機系副教授,主要從事軟體工程、機器學習、程式碼大模型的相關研究。
更多詳細資訊請見張老師的個人主頁:https://lingming.cs.illinois.edu/
自從 Devin(首個全自動 AI 軟體工程師)提出以來,針對軟體工程的 AI Agent 的設計成為研究的焦點,越來越多基於 Agent 的 AI 自動軟體工程師被提出,並在 SWE-bench 資料集上取得了不俗的表現、自動修復了許多真實的 GitHub issue。
然而,複雜的 Agent 系統會帶來額外的開銷和不確定性,我們真的需要使用如此複雜的 Agent 來解決 GitHub issue 嗎?不依賴 Agent 的解決方案能接近它們的效能嗎?
從這兩個問題出發,伊利諾伊大學香檳分校(UIUC)張令明老師團隊提出了 OpenAutoCoder-Agentless,一個簡單高效並且完全開源的無 Agent 方案,僅需 $0.34 就能解決一個真實的 GitHub issue。Agentless 在短短几天內在 GitHub 上已經吸引了超過 300 GitHub Star,並登上了 DAIR.AI 每週最熱 ML 論文榜單前三。
論文:AGENTLESS : Demystifying LLM-based Software Engineering Agents
論文地址:https://huggingface.co/papers/2407.01489
開原始碼:https://github.com/OpenAutoCoder/Agentless
AWS 研究科學家 Leo Boytsov 表示:“Agentless 框架表現優異,超過所有開源 Agent 解決方案,幾乎達到 SWE Bench Lite 最高水平(27%)。而且,它以顯著更低的成本擊敗了所有開源方案。該框架採用分層查詢方法(透過向 LLM 提問來查詢檔案、類、函式等)以確定補丁位置。雖然利用 LLM,但不允許 LLM 做出規劃決策。”
Agentless 是一種自動解決軟體開發問題的方法,它使用簡單的兩階段方法進行定位和修復,以修復程式碼庫中的 bug。在定位階段,Agentless 以分層方式來逐步縮小到可疑的檔案、類 / 函式和具體的編輯位置。對於修復,它使用簡單的 diff 格式(參考自開源工具 Aider)來生成多個候選補丁,並對其進行過濾和排序。
研究者將 Agentless 與現有的 AI Software Agent 進行了比較,其中包括最先進的開源和商業 / 閉源專案。令人驚訝的是,Agentless 可以以更低的成本超越所有現有的開源 Software Agent!Agentless 解決了 27.33% 的問題,是開源方案中最高的,並且解決每個問題平均僅需 $0.29,在所有問題上(包括能解決和未解決的)平均只需要約 $0.34。
不僅如此,Agentless 還有改進的潛力。在考慮所有生成的補丁時,Agentless 可以解決 41% 的問題,這個上限表明補丁排序和選擇階段有顯著的改進空間。此外,Agentless 能夠解決一些即使是最好的商業工具(Alibaba Lingma Agent)也無法解決的獨特問題,這表明它可以作為現有工具的補充。
對 SWE-bench Lite 資料集的分析
研究者還對 SWE-bench Lite 資料集進行了人工檢查和詳細分析。
研究發現,SWE-bench Lite 資料集中,有 4.3% 的問題在問題描述中直接給出了完整的答案,也就是正確的修復補丁。而另外 10% 的問題描述了正確解決方案的確切步驟。這表明,SWE-bench Lite 中的某些問題可能更容易解決。
此外,研究團隊觀察到有 4.3% 的問題在問題描述中包含了使用者提議的解決方案或者步驟,但這些方案與開發人員的真實補丁並不一致。這進一步揭示了該基準測試的潛在問題,因為這些誤導性解決方案可能導致 AI 工具僅透過遵循問題描述來生成不正確的解決方案。
在問題描述質量方面,研究者觀察到,雖然 SWE-bench Lite 中大部分的任務都包含了足夠的資訊,並且許多工還提供了失敗示例來複現錯誤,但是仍有 9.3% 的問題沒有包含足夠的資訊。例如需要實現一個新的函式或者新增一個錯誤資訊,但是特定的函式名或者特定的錯誤資訊字串並沒有在問題描述中給出。這意味著即使正確實現了底層功能,如果函式名或錯誤資訊字串不完全匹配,測試也會失敗。
普林斯頓大學的研究人員,同時也是 SWE-Bench 的作者之一,Ofir Press 確認了他們的發現:“Agentless 對 SWE-bench Lite 進行了不錯的手動分析。他們認為 Lite 上的理論最高得分可能是 90.7%。我覺得實際的上限可能會更低(大約 80%)。一些問題的資訊不足,另一些問題的測試過於嚴格。”
SWE-bench Lite-S:經過過濾的嚴格問題子集
針對這些問題,研究者提出了一個嚴格的問題子集 SWE-bench Lite-S(包含 252 個問題)。具體來說,從 SWE-bench Lite(包含 300 個問題)中排除了那些在問題描述中包含確切補丁、誤導性解決方案或未提供足夠資訊的問題。這樣可以去除不合理的問題,並使基準測試的難度水平標準化。與原始的 SWE-bench Lite 相比,過濾後的基準測試更準確地反映了自動軟體開發工具的真實能力。
結語
儘管基於 Agent 的軟體開發非常有前景,作者們認為技術和研究社群是時候停下來思考其關鍵設計與評估方法,而不是急於釋出更多的 Agent。研究者希望 Agentless 可以幫助重置未來軟體工程 Agent 的基線和方向。