首個 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