LeCun世界模型出2代了!62小時(shí)搞定機(jī)器人訓(xùn)練,開(kāi)啟物理推理新時(shí)代
如何讓AI代碼補(bǔ)全更懂開(kāi)發(fā)者?
中興通訊團(tuán)隊(duì)提出了兩個(gè)新的評(píng)測(cè)指標(biāo),以及一套倉(cāng)庫(kù)級(jí)代碼語(yǔ)料處理框架。
按照?qǐng)F(tuán)隊(duì)的說(shuō)法,這套方法論不僅為評(píng)測(cè)代碼大模型提供了新視角,也為提升模型在真實(shí)工業(yè)場(chǎng)景中的代碼補(bǔ)全性能開(kāi)辟了新路徑。
目前在編寫(xiě)代碼時(shí),智能補(bǔ)全工具如GitHub Copilot和Cursor等,極大地提升了程序員的開(kāi)發(fā)效率。
然而這些AI工具給出的建議經(jīng)?!安盍它c(diǎn)火候”,不完全符合用戶預(yù)期。
對(duì)此團(tuán)隊(duì)認(rèn)為,這實(shí)際上暴露了當(dāng)前代碼大模型使用中的兩個(gè)關(guān)鍵痛點(diǎn):
- AI的“我覺(jué)得好” vs 用戶“真的好用”:目前評(píng)價(jià)AI代碼補(bǔ)全效果的指標(biāo),和開(kāi)發(fā)者實(shí)際使用時(shí)的真實(shí)感受、采納意愿,往往存在一條“隱形鴻溝”。
- AI的“局部視野”:多數(shù)模型在學(xué)習(xí)代碼時(shí),更側(cè)重于理解一小段上下文的序列關(guān)系,對(duì)于整個(gè)代碼倉(cāng)庫(kù)中,跨越不同文件、不同模塊的復(fù)雜結(jié)構(gòu)和深層語(yǔ)義依賴,常?!傲Σ粡男摹保瑢?dǎo)致補(bǔ)全建議的質(zhì)量和實(shí)用性大打折扣。
這些問(wèn)題,無(wú)疑限制了代碼大模型在復(fù)雜工業(yè)環(huán)境,尤其是在ZTE-Code-Copilot(中興通訊自研的通信領(lǐng)域代碼開(kāi)發(fā)助手)這類專業(yè)場(chǎng)景中的應(yīng)用潛力。
那么,如何使AI的補(bǔ)全建議更符合開(kāi)發(fā)者的需求呢?
兩個(gè)新指標(biāo)+一套新框架
事實(shí)上,開(kāi)發(fā)者們苦惱于AI的“自說(shuō)自話”久矣。團(tuán)隊(duì)認(rèn)為要解決這個(gè)問(wèn)題,必須回答兩個(gè)靈魂拷問(wèn):
① 何謂高質(zhì)量的代碼補(bǔ)全,能夠讓開(kāi)發(fā)者愉快地按“Tab”鍵采納?
② 如何教會(huì)AI“高瞻遠(yuǎn)矚”,理解整個(gè)代碼倉(cāng)庫(kù)的復(fù)雜結(jié)構(gòu)和內(nèi)在邏輯,而不是只盯著眼前的一畝三分地?
針對(duì)上述挑戰(zhàn),團(tuán)隊(duì)祭出了兩大“法寶”:
更貼近用戶真實(shí)感知的評(píng)估“新標(biāo)尺”:LCP與ROUGE-LCP指標(biāo)設(shè)計(jì)
團(tuán)隊(duì)發(fā)現(xiàn),開(kāi)發(fā)者在用“隨手補(bǔ)全”功能(指代碼補(bǔ)全中的單行補(bǔ)全任務(wù)和行內(nèi)補(bǔ)全任務(wù))時(shí),下意識(shí)地會(huì)從左到右看AI的建議,特別關(guān)注建議的開(kāi)頭部分是不是對(duì)的。
就是說(shuō),只要開(kāi)頭那段對(duì)了,哪怕后面有點(diǎn)小問(wèn)題,也很可能就接受了,再自己改改。
基于這一核心洞察,團(tuán)隊(duì)提出了兩個(gè)與用戶感知更契合的新評(píng)估指標(biāo):
(1)最長(zhǎng)公共前綴長(zhǎng)度(LCP, Longest Common Prefix)
定義:LCP(S, R)指模型輸出序列 S=s1, s2, …, sT與參考序列(即用戶期望的代碼)R=r1, r2, …, rT從起始位置開(kāi)始連續(xù)匹配的最大字符數(shù)。
核心價(jià)值:LCP強(qiáng)調(diào)從第一個(gè)字符開(kāi)始的連續(xù)匹配性,這恰恰是交互式代碼補(bǔ)全場(chǎng)景中用戶最為關(guān)注的特性。它比那些允許不連續(xù)匹配的指標(biāo)(如基于LCS的指標(biāo))更能反映用戶在實(shí)際操作中的體驗(yàn)。
(2)ROUGE-LCP
定義:在LCP基礎(chǔ)上,借鑒ROUGE-L的歸一化思想,提出ROUGE-LCP: ROUGE-LCP(S,R)=LCP(S,R) /∣R∣。 其中∣R∣是參考序列的長(zhǎng)度。
核心價(jià)值:通過(guò)除以參考序列長(zhǎng)度,ROUGE-LCP實(shí)現(xiàn)了對(duì)不同長(zhǎng)度補(bǔ)全樣本的公平比較,同樣能有效反映模型輸出的實(shí)用性。
賦予AI“全局視野”的“導(dǎo)航系統(tǒng)”:SPSR-Graph倉(cāng)庫(kù)級(jí)代碼語(yǔ)料處理框架
為了讓大模型能真正理解復(fù)雜代碼倉(cāng)庫(kù)的結(jié)構(gòu)和語(yǔ)義,而不只是“管中窺豹”,團(tuán)隊(duì)設(shè)計(jì)了一套倉(cāng)庫(kù)級(jí)代碼語(yǔ)料處理框架。
其核心是構(gòu)建和利用一種特殊的代碼知識(shí)圖譜——SPSR-Graph(Structure-Preserving and Semantically-Reordered Code Graph)。
目標(biāo)是,通過(guò)顯式建模代碼的結(jié)構(gòu)信息和跨文件的依賴關(guān)系,讓預(yù)訓(xùn)練語(yǔ)料本身就蘊(yùn)含更豐富的結(jié)構(gòu)化知識(shí),從而提升模型對(duì)整個(gè)代碼倉(cāng)庫(kù)的理解深度。
下圖為SPSR-Graph框架圖,展示了從原始代碼到高質(zhì)量SPSR-Graph訓(xùn)練語(yǔ)料的完整流程。
圖中核心組件解讀:
1、語(yǔ)料預(yù)處理:對(duì)海量原始代碼進(jìn)行嚴(yán)格的數(shù)據(jù)過(guò)濾、清洗和去重,確保輸入“干凈”。
2、AST結(jié)構(gòu)切割:利用AST將代碼分解為函數(shù)、類等具有完整語(yǔ)義的結(jié)構(gòu)化單元。
3、結(jié)構(gòu)感知圖譜構(gòu)建與樣本生成:以上述語(yǔ)義單元為節(jié)點(diǎn),以它們之間的調(diào)用、依賴關(guān)系為邊,構(gòu)建代碼知識(shí)圖譜。然后通過(guò)遍歷圖中的路徑,將路徑上的代碼片段(包含必要的結(jié)構(gòu)注釋)拼接起來(lái),形成富含全局結(jié)構(gòu)信息的訓(xùn)練樣本。
主要步驟如下:
其一,基于AST的語(yǔ)法感知語(yǔ)義單元抽取 (Syntax-Aware Semantic Unit Extraction via AST)。
團(tuán)隊(duì)首先使用AST(抽象語(yǔ)法樹(shù))解析工具(如Tree-sitter)將源代碼切割成具備語(yǔ)義封閉性的基本單元,例如函數(shù)體、類定義、條件分支等。
這確保了每個(gè)單元在結(jié)構(gòu)上的完整性和上下文的連續(xù)性,避免了傳統(tǒng)基于Token的隨機(jī)或滑窗方法可能帶來(lái)的語(yǔ)義割裂。
其二,SPSR-Graph構(gòu)建——結(jié)構(gòu)保持與依賴排序。
- 語(yǔ)義單元抽取與圖初始化:將從代碼庫(kù)中抽取出的所有頂層語(yǔ)義單元(如函數(shù)v??)作為圖Γ=(V,?)中的節(jié)點(diǎn)V。這些單元具備語(yǔ)義完備性。
- 關(guān)系抽取與圖構(gòu)建:分析這些語(yǔ)義單元之間的依賴關(guān)系,如函數(shù)調(diào)用、成員引用、類型依賴等,作為圖中的有向邊??V×V。圖的邊可以標(biāo)注類型,節(jié)點(diǎn)可以增強(qiáng)屬性(如定義位置、模塊歸屬)以承載更豐富的語(yǔ)義。
- 圖結(jié)構(gòu)遍歷與訓(xùn)練樣本構(gòu)建: 在構(gòu)建好的有向圖Γ上,采用有向廣度優(yōu)先搜索(BFS)等策略,找出所有深度不超過(guò)預(yù)設(shè)值D的語(yǔ)義路徑。
每一條路徑pk都被映射為一個(gè)訓(xùn)練樣本:Sample(pk)=νk1⊕νk2⊕…⊕νkm,其中⊕代表結(jié)構(gòu)感知的拼接操作。
在拼接過(guò)程中,會(huì)插入文件路徑等結(jié)構(gòu)化注釋信息,以增強(qiáng)模型對(duì)跨文件結(jié)構(gòu)的建模能力。
整個(gè)過(guò)程不僅保留了代碼的語(yǔ)法結(jié)構(gòu)完整性和上下文一致性,更關(guān)鍵的是,它在調(diào)用路徑的維度上對(duì)語(yǔ)料進(jìn)行了重排序,使模型在訓(xùn)練時(shí)能顯式地學(xué)習(xí)和建模跨函數(shù)、跨模塊的結(jié)構(gòu)性依賴。
通過(guò)這套“組合拳”,團(tuán)隊(duì)期望AI模型能練就“火眼金睛”,洞察代碼的深層奧秘。
實(shí)驗(yàn)效果
接下來(lái),團(tuán)隊(duì)進(jìn)行了一系列實(shí)驗(yàn)來(lái)驗(yàn)證新指標(biāo)的“含金量”和新方法的“戰(zhàn)斗力”。
LCP與ROUGE-LCP:真的和開(kāi)發(fā)者“心有靈犀”嗎?
團(tuán)隊(duì)收集了ZTE-Code-Copilot在2025年3月3日至4月24日期間,超過(guò)10000條真實(shí)用戶的“隨手補(bǔ)全”數(shù)據(jù)記錄進(jìn)行分析。
以下為L(zhǎng)CP分布及其與采納次數(shù)和采納率的關(guān)系圖(即LCP的“用戶緣”):
團(tuán)隊(duì)發(fā)現(xiàn)LCP的分布呈現(xiàn)明顯的長(zhǎng)尾特性,與理論推導(dǎo)高度吻合。
最亮眼的是,LCP值與用戶實(shí)際“采納率”之間存在顯著的正相關(guān)。
表1顯示,皮爾遜相關(guān)系數(shù)r值在不同時(shí)間段均高于0.69,最高達(dá)到0.91,且P值均小于0.05。
簡(jiǎn)單說(shuō),LCP越高,用戶越愿意用AI的建議。在LCP=1時(shí),會(huì)出現(xiàn)一個(gè)明顯的尖峰,這是因?yàn)楫?dāng)AI給出句尾需要補(bǔ)全標(biāo)點(diǎn)符號(hào)(,.;)的建議時(shí),人們會(huì)有更高概率采納。
ROUGE-LCP分布及其與采納次數(shù)和采納率的關(guān)系圖(即ROUGE-LCP的“洞察力”)如下:
團(tuán)隊(duì)表示,ROUGE-LCP的分布也符合其混合模型預(yù)期。隨著ROUGE-LCP值增加,用戶采納率整體上升,在AI建議與用戶想法完全一致(EM=1)時(shí)達(dá)到頂峰。
新老指標(biāo)大PK
團(tuán)隊(duì)計(jì)算了LCP、ROUGE-LCP,以及傳統(tǒng)的評(píng)估指標(biāo)——EM(完全匹配)、LCS(最長(zhǎng)公共子序列)和ROUGE-L的每日平均值,并同時(shí)統(tǒng)計(jì)了采納率的每日平均值。
通過(guò)將時(shí)間窗口擴(kuò)展至兩個(gè)月,進(jìn)一步分析了LCP等評(píng)估指標(biāo)與采納率之間的相關(guān)性。
原論文表2清晰顯示,在與用戶采納率的相關(guān)性方面,LCP和ROUGE-LCP明顯勝出,r值普遍更高,LCP與用戶采納率的相關(guān)性甚至超過(guò)了0.7,遠(yuǎn)好于傳統(tǒng)的評(píng)測(cè)指標(biāo)EM。
下表為評(píng)估指標(biāo)(LCS、LCP、ROUGE-L、ROUGE-LCP、EM)與用戶采納率之間的皮爾遜相關(guān)性分析:
但也發(fā)現(xiàn)了一個(gè)現(xiàn)象,ROUGE-LCP與采納率的相關(guān)性要低于LCP與采納率的相關(guān)性。
這兩個(gè)現(xiàn)象說(shuō)明,用戶在是否接受AI提供的代碼補(bǔ)全建議這個(gè)點(diǎn)上,與AI提供的答案從首字母起正確的字符的絕對(duì)數(shù)量相關(guān),而不是相對(duì)占比,這反應(yīng)了用戶編輯有一定的隨意性。
并且,用戶并不完全追求AI提供的答案和預(yù)期完全一致,只需要AI在符合用戶編輯習(xí)慣的基礎(chǔ)上,提供盡可能正確的答案。
這充分證明,新指標(biāo)更能捕捉到用戶真正的采納行為和使用意圖。
SPSR-Graph:“武裝”后的AI有多強(qiáng)?
團(tuán)隊(duì)選用Qwen2.5-7B-Coder作為基礎(chǔ)模型,使用了約0.6B token的通信領(lǐng)域C/C++代碼語(yǔ)料進(jìn)行預(yù)訓(xùn)練,并輔以約6萬(wàn)條精調(diào)語(yǔ)料。
(1)“三級(jí)跳”式性能提升
然后,團(tuán)隊(duì)比較了不同預(yù)訓(xùn)練語(yǔ)料策略的效果:基礎(chǔ)的Pipeline處理→ 增加AST語(yǔ)義切割 → 構(gòu)建函數(shù)級(jí)代碼圖譜(KGF) → 進(jìn)一步引入結(jié)構(gòu)體級(jí)圖譜(KGFS)。
下表為不同預(yù)訓(xùn)練語(yǔ)料策略在隨手補(bǔ)全任務(wù)中的性能比較:
結(jié)果顯示,采用KGFS策略訓(xùn)練的模型,在C++和C語(yǔ)言上的EM(精確匹配率)、LCP和BLEU等多個(gè)核心指標(biāo)上均取得了最佳性能。
尤其在C語(yǔ)言上,相較于僅使用AST切割的策略,KGF使EM提升了2.66%,BLEU提升了2.74%,證明SPSR-Graph帶來(lái)的全局上下文理解能力效果顯著。
(2)知識(shí)圖譜的“最佳有效半徑”
下圖為代碼知識(shí)圖譜廣度對(duì)代碼補(bǔ)全性能的影響:
團(tuán)隊(duì)還探索了SPSR-Graph的“遍歷廣度”(即一個(gè)代碼節(jié)點(diǎn)在圖中連接多少“鄰居”)對(duì)模型性能的影響。
實(shí)驗(yàn)發(fā)現(xiàn),當(dāng)廣度k=4時(shí),模型表現(xiàn)最佳。廣度過(guò)小,信息量不足;廣度過(guò)大,則可能引入過(guò)多無(wú)關(guān)噪聲,反而導(dǎo)致性能下降。
未來(lái)展望
通過(guò)本次研究,團(tuán)隊(duì)系統(tǒng)地探討并實(shí)踐了如何讓AI代碼補(bǔ)全更懂開(kāi)發(fā)者:
一是提出了更精準(zhǔn)的“尺子”:LCP和ROUGE-LCP這兩個(gè)新評(píng)測(cè)指標(biāo),能夠更真實(shí)地反映用戶對(duì)“隨手補(bǔ)全”建議的采納意愿,為模型優(yōu)化指明了更靠譜的方向。
二是打造了更智能的“教材”:基于SPSR-Graph的倉(cāng)庫(kù)級(jí)代碼語(yǔ)料處理框架,通過(guò)保留代碼結(jié)構(gòu)、重排語(yǔ)義依賴,顯著增強(qiáng)了模型對(duì)復(fù)雜代碼結(jié)構(gòu)和跨文件依賴的感知與利用能力。
本文作者來(lái)自中興通訊AIM團(tuán)隊(duì)。團(tuán)隊(duì)致力于推動(dòng)通信領(lǐng)域和垂直領(lǐng)域的智能化發(fā)展,研究范圍包括星云通信領(lǐng)域大模型,星云Agent框架(NAE),以及星云精調(diào)流水線等。
未來(lái),團(tuán)隊(duì)表示將繼續(xù)深化對(duì)LCP和ROUGE-LCP指標(biāo)在更多代碼生成任務(wù)、不同類型模型上的適配性研究。
同時(shí),SPSR-Graph方法也將進(jìn)一步探索與強(qiáng)化學(xué)習(xí)等技術(shù)的結(jié)合,以挖掘模型更深層次的推理能力,并嘗試擴(kuò)展到更復(fù)雜的軟件工程領(lǐng)域。
論文鏈接:https://arxiv.org/pdf/2505.13073