GPT-4單項僅得7.1分,揭露大模型代碼能力三大短板,最新基準測試來了
首個AI軟件工程師Devin正式亮相,立即引爆了整個技術界。
Devin不僅能夠輕松解決編碼任務,更可以自主完成軟件開發的整個周期——從項目規劃到部署,涵蓋但不限于構建網站、自主尋找并修復 BUG、訓練以及微調AI模型等。
這種 “強到逆天” 的軟件開發能力,讓一眾碼農紛紛絕望,直呼:“程序員的末日真來了?”
在一眾測試成績中,Devin在SWE-Bench基準測試中的表現尤為引人注目。
SWE-Bench是一個評估AI軟件工程能力的測試,重點考察大模型解決實際 GitHub 問題的能力。
Devin以獨立解決13.86%的問題率高居榜首,“秒殺”了GPT-4僅有的 1.74%得分,將一眾AI大模型遠遠甩在后面。
這強大的性能讓人不禁浮想聯翩:“未來的軟件開發中,AI將扮演怎樣的角色?”
上海人工智能實驗室聯合字節跳動SE Lab的研究人員以及SWE-Bench團隊,提出了一個新測試基準DevBench,首次揭秘大模型在多大程度上可以從PRD出發,完成一個完整項目的設計、開發、測試。
具體地說,DevBench首次對大模型進行了從產品需求文檔(PRD)到完整項目開發各階段表現的評測,包括軟件設計、依賴環境搭建、代碼庫級別代碼生成、集成測試和單元測試。
實驗證明,DevBench可以揭露GPT、CodeLlama、DeepSeek-Coder 等大語言模型在軟件研發不同階段的能力短板,如面向對象編程能力不足、無法編寫較為復雜的構建腳本(build script),以及函數調用參數不匹配等問題。
大語言模型距離可以獨立完成一個中小規模的軟件項目開發還有一段路要走。
目前,DevBench的論文已經發布在預印平臺arXiv,相關代碼和數據開源在GitHub上。(鏈接見文末)
DevBench 有哪些任務?
△ 圖為DevBench框架概覽
傳統的編程基準測試往往關注代碼生成的某個單一方面,無法全面反映現實世界編程任務的復雜性。
DevBench的出現,打破了這一局限,它通過一系列精心設計的任務,模擬軟件開發的各個階段,從而提供了一個全面評估LLM能力的平臺。
DevBench圍繞五個關鍵任務構建,每個任務都關注軟件開發生命周期的一個關鍵階段,模塊化的設計允許對每個任務進行獨立的測試和評估。
軟件設計:利用產品需求文檔PRD創建UML圖和架構設計,展示類、屬性、關系,以及軟件的結構布局。該任務參考MT-Bench,采用LLM-as-a-Judge的評測方式。評測主要依據兩個主要指標:軟件設計一般原則(如高內聚低耦合等)和忠實度(faithfulness)。
環境設置:根據提供的需求文檔,生成初始化開發環境所需的依賴文件。在評測過程中,該依賴文件將在給定的基礎隔離環境(docker container)內通過基準指令進行依賴環境搭建。隨后在這個模型搭建的依賴環境中,該任務通過執行代碼倉的基準示例使用代碼(example usage),評估執行基準代碼的成功率。
代碼實現:依據需求文檔和架構設計,模型需要完成整個代碼庫的代碼文件生成。DevBench開發了一個自動化測試框架,并針對所使用的具體編程語言進行了定制,集成了Python的PyTest、C++的GTest、Java的JUnit和JavaScript的Jest。該任務評估模型生成代碼庫在基準環境中執行基準集成測試和單元測試的通過率。
集成測試:模型根據需求,生成集成測試代碼,驗證代碼庫的對外接口功能。該任務在基準實現代碼上運行生成的集成測試,并報告測試的通過率。
單元測試:模型根據需求,生成單元測試代碼。同樣,該任務在基準實現代碼上運行生成的單元測試。除了通過率指標外,該任務還引入了語句覆蓋率評價指標,對測試全面性的進行定量評估。
DevBench 包含哪些數據?
DevBench數據準備過程包括三個階段:倉庫準備、代碼清理和文檔準備。
- 在準備階段,研究人員從GitHub中選擇高質量的倉庫,確保它們的復雜性可管理。
- 在代碼清理階段,標注人員驗證代碼的功能性,對其進行精煉,并補充和運行測試以確保質量。
- 文檔準備階段涉及為倉庫創建需求文檔、 UML圖和架構設計。
最終,DevBench的數據集包含4個編程語言,多個領域,共22個代碼庫。這些代碼倉庫的復雜性和所使用編程范式的多樣性為語言模型設置了巨大的挑戰。
幾個有趣的例子:
TextCNN
大模型能完整地寫一個TextCNN做文本二分類的模型嗎?能夠自己把數據集從HF拉下來,把訓練跑起來是基本要求。還需模型按照文檔的需求定制超參數、記錄log、存儲checkpoint、同時保證實驗可復現性。
(https://github.com/open-compass/DevBench/tree/main/benchmark_data/python/TextCNN)
Registration & Login
前端項目往往依賴較多的組件庫和前端框架,模型是否能夠在可能出現版本沖突的前端項目中應對自如?
(https://github.com/open-compass/DevBench/tree/main/benchmark_data/javascript/login-registration)
People Management
模型對SQLite數據庫的創建和管理掌握的怎么樣?除了基本的增刪改查操作,模型能否將校園人員信息和關系數據庫的管理和操作封裝成易用的命令行工具?
(https://github.com/open-compass/DevBench/tree/main/benchmark_data/cpp/people_management)
Actor Relationship Game
“六度分隔理論”在影視圈的猜想驗證?模型需要從TMDB API獲取數據,并構建流行演員們之間通過合作電影進行連接的人際連系網。
(https://github.com/open-compass/DevBench/tree/main/benchmark_data/java/Actor_relationship_game)
ArXiv digest
ArXiv論文檢索小工具也被輕松拿捏了?ArXiv的API并不支持“篩選最近N天的論文”的功能,但卻可以“按發表時間排序”,模型能夠以此開發一個好用的論文查找工具嗎?
(https://github.com/open-compass/DevBench/tree/main/benchmark_data/python/ArXiv_digest)
實驗發現
研究團隊利用DevBench對當前流行的LLMs,包括GPT-4-Turbo進行了全面測試。結果顯示,盡管這些模型在簡單的編程任務中表現出色,但在面對復雜的、真實世界的軟件開發挑戰時,它們仍然遇到了重大困難。特別是在處理復雜的代碼結構和邏輯時,模型的性能還有待提高。
DevBench不僅揭示了現有LLMs在軟件開發中的局限性,也為未來模型的改進提供了寶貴的洞見。通過這一基準測試,研究人員可以更好地理解 LLMs的強項和弱點,從而有針對性地優化它們,推動AI在軟件工程領域的進一步發展。
此外,DevBench 框架的開放性和可擴展性意味著它可以持續適配不同的編程語言和開發場景。DevBench 還在發展過程中,非常歡迎社區的朋友參與共建。
Devin 在 SWE-Bench 上一路領先,它的優異表現可以擴展到其他評測場景嗎?隨著 AI 軟件開發能力的持續發展,這場碼農和 AI 的較量讓人倍感期待。
還有OpenCompass大模型評測體系
DevBench現已加入OpenCompass司南大模型能力評測體系,OpenCompass是上海人工智能實驗室研發推出的面向大語言模型、多模態大模型等各類模型的一站式評測平臺。
OpenCompass具有可復現、全面的能力維度、豐富的模型支持、分布式高效評測、多樣化評測范式以及靈活化拓展等特點。基于高質量、多層次的能力體系和工具鏈,OpenCompass 創新了多項能力評測方法,支持各類高質量的中英文雙語評測基準,涵蓋語言與理解、常識與邏輯推理、數學計算與應用、多編程語言代碼能力、智能體、創作與對話等多個方面,能夠實現對大模型真實能力的全面診斷。DevBench更是拓寬了 OpenCompass 在智能體領域的評測能力。
DevBench論文:https://arxiv.org/abs/2403.08604
GitHub:https://github.com/open-compass/devBench/
OpenCompass https://github.com/open-compass/opencompass