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

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

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

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

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

000.png

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

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

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

總體排名第 14;

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

000.png

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

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

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

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

000.png

讓 AI 真正理解大模型代碼庫(kù)

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

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

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

但這類方法也存在幾個(gè)問(wèn)題:

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

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

工程成本高,效率不高。

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

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

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

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

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

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

000.png

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

000.png

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

實(shí)驗(yàn)結(jié)果

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

倉(cāng)庫(kù)級(jí)別的代碼修復(fù)

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

000.png

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

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

000.png

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

倉(cāng)庫(kù)級(jí)別的代碼補(bǔ)全

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

000.png

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

000.png

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

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

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

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

開(kāi)源代碼: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)隊(duì)此前工作:

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)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:[email protected]