《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 人工智能 > 業(yè)界動態(tài) > 大模型首次直接理解代碼圖

大模型首次直接理解代碼圖

不用Agent自動修bug,登頂SWE-Bench開源模型榜單
2025-06-27
來源:IT之家
關(guān)鍵詞: AI 大模型 開源模型

AI 自動修 bug,解決率達(dá) 44%!這是全球開源模型的最新最強(qiáng)水平。

來自螞蟻的開源新模型,在 SWE-bench Lite 上超越所有開源方案,性能媲美閉源模型。

000.png

具體表現(xiàn)如下,在 SWE-bench Lite 上:

所有開源模型方法(Open Weight Model)中排名第一;

所有開源系統(tǒng)方法(Open Source Syestem)中排名第六;

總體排名第 14;

優(yōu)于目前榜單最好開源模型“KGCompass”7.33%。

000.png

他們首創(chuàng)將倉庫代碼圖模態(tài)融入大模型(Code Graph Model, CGM),讓大語言模型能直接理解代碼圖,更高效修復(fù) bug、補(bǔ)全代碼。

這徹底擺脫對黑盒模型(如 GPT-4 或 Claude 3.7 等)和復(fù)雜 Agent 工作流程的依賴,實(shí)現(xiàn)更加可控、透明、安全的 SE 自動化。

而且,CGM 完全基于開源模型。要知道,開源模型在 SWE-bench 上的表現(xiàn)通常不夠好,此前幾乎所有 SOTA 級方案都是基于閉源模型實(shí)現(xiàn)。而 CGM 基于 Qwen 模型,做到了比肩閉源模型的水平。

CGM 僅需 4 步就能快速定位、生成補(bǔ)丁,省去了 Agent 方案中復(fù)雜的編排過程,效率直線 up。

000.png

讓 AI 真正理解大模型代碼庫

大模型趨勢以來,AI 編程迅速崛起,尤其是在寫函數(shù)這類小任務(wù)上的表現(xiàn)出色,比如在 HumanEval 等基準(zhǔn)測試上,許多模型的準(zhǔn)確率已經(jīng)超過 90%。

然而真實(shí)的軟件工程遠(yuǎn)比”寫一個函數(shù)“復(fù)雜得多。像 Bug 修復(fù)、功能增強(qiáng)這樣的任務(wù),通常需要跨文件、跨模塊操作,并要求模型理解項目中復(fù)雜的結(jié)構(gòu)、依賴關(guān)系和類的繼承體系。

現(xiàn)在的主流方法通常是使用基于閉源模型的 Agent。它們可以模擬人類程序員行為,如觀察代碼、調(diào)用工具、多輪交互等完成任務(wù)。

但這類方法也存在幾個問題:

行為路徑不可控,容易積累推理誤差;

依賴 GPT-4、Claude 等閉源模型,難以私有部署或定制;

工程成本高,效率不高。

與此同時,當(dāng)前使用開源模型的方案,很難實(shí)現(xiàn) SOTA 級效果。

為此研究團(tuán)隊提出:能否只用開源模型、不依賴 Agent,解決倉庫級任務(wù)?CGM 由此而來。

??圖結(jié)構(gòu)與大模型深度融合

CGM 采用類似 Vision-Language Model(VLM)的跨模態(tài)建模方式。它將傳統(tǒng) LLM 的文本理解能力與代碼倉庫的結(jié)構(gòu)圖(Graph)結(jié)合,形成一種圖-語言多模態(tài)模型。模型核心融合了兩個模態(tài):

圖模態(tài):將倉庫構(gòu)建為結(jié)構(gòu)化圖,節(jié)點(diǎn)包括函數(shù)、類、文件、包等 7 種類型,邊表示調(diào)用、包含、繼承等依賴;

語言模態(tài):用戶輸入的自然語言描述和代碼提示,驅(qū)動模型生成 patch 或回答。

000.png

模型輸入為代碼圖和文本形式的 prompt,將在 LLM 中對結(jié)構(gòu)-語義進(jìn)行雙模態(tài)對齊。

具體結(jié)構(gòu)融合方法如下:

使用小型編碼器(CodeT5+)對每個節(jié)點(diǎn)進(jìn)行編碼,壓縮為單個“節(jié)點(diǎn) token”,每個節(jié)點(diǎn)內(nèi)按照至多 512 個 token 的文本塊切分。

通過一個適配器(一個兩層 MLP)將編碼后的節(jié)點(diǎn)表征映射到 LLM 輸入嵌入空間中。相當(dāng)于將 LLM 上下文擴(kuò)展 512 倍,能更好處理海量的代碼倉庫上下文。

使用圖感知注意力掩碼(Graph-aware Attention Mask)。替代 LLM 中原有的因果注意力,使注意力機(jī)制只作用于相鄰節(jié)點(diǎn)間。類似于 GNN 的消息傳遞機(jī)制,能夠讓 LLM 直接感知和利用代碼的結(jié)構(gòu)依賴關(guān)系。

??兩階段訓(xùn)練:結(jié)構(gòu)理解 + 問題泛化

基于此模型架構(gòu),團(tuán)隊通過兩階段訓(xùn)練讓 LLM 能夠理解代碼圖的拓?fù)浣Y(jié)構(gòu)。

階段一:子圖重構(gòu)預(yù)訓(xùn)練

為了訓(xùn)練 CGM 有效捕捉代碼圖的語義和結(jié)構(gòu)信息,團(tuán)隊設(shè)計了一個“圖生代碼 (Graph-to-Code)”任務(wù)。從大型代碼圖中隨機(jī)采樣出子圖(限制節(jié)點(diǎn)數(shù)量以控制輸出代碼長度),模型需要根據(jù)這些輸入的子圖(僅包含節(jié)點(diǎn)類型和連接關(guān)系,不含完整的代碼內(nèi)容)來重建出原始的代碼片段。

然后采用層級化方法,保持重建代碼的結(jié)構(gòu)一致性和可讀性。按照拓?fù)渑判蚺c行號順序拼接倉庫上下文:高級別節(jié)點(diǎn)(如 REPO、PACKAGE)置于輸出序列或文件的起始;文件節(jié)點(diǎn)通過拓?fù)渑判虼_定順序;文件內(nèi)節(jié)點(diǎn)(如 CLASS、FUNCTION)則按行號順序拼接。

階段二:噪聲增強(qiáng)微調(diào)

此階段使用真實(shí)的 GitHub 問題-修復(fù)補(bǔ)丁數(shù)據(jù)對 CGM 進(jìn)行微調(diào)。

模型學(xué)習(xí)基于兩項輸入生成代碼補(bǔ)丁:(i) 一個相關(guān)的代碼子圖;(ii) 一段文本提示,指明根據(jù)補(bǔ)丁可能需要修改的實(shí)際文件。為了提升模型的魯棒性,特意在提示中引入了 10% 的噪聲輸入:例如,提示中可能包含一個實(shí)際上無需修改的不相關(guān)文件,或者遺漏至少一個本應(yīng)被修改的關(guān)鍵文件。在訓(xùn)練中引入這種受控的噪聲有助于模型更好地泛化到實(shí)際輸入信息不完整或包含干擾的場景。

??推理階段:Graph-RAG 框架替代 Agent

最后,為了進(jìn)一步提升實(shí)際應(yīng)用能力,CGM 構(gòu)建了一個無 Agent 輕量化框架 Graph-RAG。

它還原了人類程序員 bug 修復(fù)工作流,但比現(xiàn)有 Agent 方案效率更高。

核心模塊數(shù)量從 10 個進(jìn)一步精簡到了 4 個:改寫器 → 檢索器 → 重排器 → 生成器(CGM 模型)。

改寫器(Rewriter):改寫問題描述,提取關(guān)鍵詞與相關(guān)文件;

檢索器(Retriever):通過語義與結(jié)構(gòu)檢索,從代碼圖中抽取連通子圖;

重排器(Reranker):排序檢索結(jié)果,選擇最關(guān)鍵文件用于生成;

生成器(Reader):結(jié)合子圖與提示生成最終修復(fù)代碼。

000.png

基于以上,CGM 在多個測試基準(zhǔn)中取得了領(lǐng)先成績。具體如下 ——

實(shí)驗結(jié)果

研究團(tuán)隊在多個主流基準(zhǔn)上系統(tǒng)評估了 CGM 的性能,涵蓋兩個主要任務(wù)類別:(1)代碼修復(fù)和(2)代碼補(bǔ)全。

倉庫級別的代碼修復(fù)

在 SWE-bench Lite Leaderboard 上,CGM 以 44.00% 的結(jié)果排名開源權(quán)重榜單第一。

000.png

在 SWE-bench Verified 上,CGM 相比于最佳開源基線提升了 10.20%,至 50.40%;

對于 Java 項目,CGM 在 SWE-bench-java Verified 上達(dá)到 14.29%,則相比于最佳開源基線提升了 4.4%。

000.png

這些結(jié)果表明 CGM 能夠處理跨語言、跨項目的大規(guī)模倉庫級 Bug 修復(fù)任務(wù),展現(xiàn)出強(qiáng)大的結(jié)構(gòu)理解與泛化能力。

倉庫級別的代碼補(bǔ)全

在復(fù)雜代碼生成任務(wù)中,CGM 在 ComplexCodeEval 和 CrossCodeEval 上也顯著領(lǐng)先于同尺寸開源模型,特別是在需要跨文件推理和補(bǔ)全的場景下效果突出。

000.png

此外,研究團(tuán)隊在不同基座模型上(CodeLlama-7B 和 DeepSeek-Coder-7B)分別部署了 CGM,并與近期 RAG 系統(tǒng)進(jìn)行比較。結(jié)果顯示,CGM 具備很好通用性,可以適配多種基座模型,并且表現(xiàn)超越傳統(tǒng) RAG 方法。

000.png

總結(jié)來看,CGM 不依賴復(fù)雜 Agent 系統(tǒng),首次實(shí)現(xiàn)了在大模型中融合代碼圖模態(tài),讓 AI 像人類一樣 get 倉庫里文本和代碼之間的復(fù)雜依賴關(guān)系,“真正理解一個項目”。

更關(guān)鍵的是,它基于開源模型就能實(shí)現(xiàn),不局限于特定模型。為企業(yè)和開發(fā)者提供了一個靈活、透明且可控的方案。

??最后,CGM 的技術(shù)論文、核心代碼、模型權(quán)重與訓(xùn)練數(shù)據(jù)均已開源,感興趣的同學(xué)可進(jìn)一步了解詳情。

技術(shù)論文:https://arxiv.org/abs/2505.16901

開源代碼:https://github.com/codefuse-ai/CodeFuse-CGM

模型權(quán)重:https://huggingface.co/codefuse-ai/CodeFuse-CGM-72B

訓(xùn)練數(shù)據(jù):https://huggingface.co/datasets/codefuse-ai/CodeGraph

??團(tuán)隊此前工作:

Code LLM綜述:Awesome-Code-LLM(TMLR)https://github.com/codefuse-ai/Awesome-Code-LLM

Graph+LLM前序研究:GALLa(ACL 2025)https://github.com/codefuse-ai/GALLa

高效注意力架構(gòu):Rodimus(ICLR 2025)https://arxiv.org/abs/2410.06577

代碼多任務(wù)微調(diào)框架:MFTCoder(KDD 2024)https://arxiv.org/abs/2311.02303


Magazine.Subscription.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:[email protected]