這項(xiàng)由浙江大學(xué)的吳浩澤、姚云志等研究者與騰訊AI西雅圖實(shí)驗(yàn)室的于文豪合作完成的研究發(fā)表于2025年6月的arXiv預(yù)印本平臺(tái)(論文編號(hào):arXiv:2506.20495v1),感興趣的讀者可以通過(guò)該編號(hào)在arXiv平臺(tái)上查閱完整論文。
說(shuō)到寫(xiě)代碼,現(xiàn)在的AI助手確實(shí)很厲害,能幫程序員解決不少問(wèn)題。但是有個(gè)讓人頭疼的問(wèn)題:這些AI就像是拿著過(guò)時(shí)教科書(shū)的學(xué)生,總是用一些已經(jīng)被淘汰的編程接口(API)來(lái)寫(xiě)代碼。這就好比你問(wèn)AI怎么聯(lián)系朋友,它還告訴你發(fā)傳真,而實(shí)際上大家都在用微信了。
當(dāng)一個(gè)編程庫(kù)更新?lián)Q代時(shí),很多老的函數(shù)接口會(huì)被新的替代,就像手機(jī)從按鍵變成觸屏一樣。問(wèn)題是,AI在學(xué)習(xí)時(shí)用的都是老資料,所以它們寫(xiě)出來(lái)的代碼經(jīng)常用的是已經(jīng)過(guò)時(shí)的接口,導(dǎo)致程序跑不起來(lái)。更麻煩的是,即使你在提示中告訴AI"某某接口已經(jīng)更新了",它們往往還是固執(zhí)地用老方法,就像一個(gè)習(xí)慣了老路的司機(jī),即使有了新的導(dǎo)航也還是走老路。
浙江大學(xué)的研究團(tuán)隊(duì)發(fā)現(xiàn)了這個(gè)普遍存在的問(wèn)題,并提出了一個(gè)創(chuàng)新的解決方案——ReCode。這個(gè)方法的核心思想很巧妙:既然AI學(xué)的是老知識(shí),那就通過(guò)特殊的訓(xùn)練方式讓它學(xué)會(huì)聽(tīng)從新的指令,就像給固執(zhí)的老司機(jī)專(zhuān)門(mén)訓(xùn)練,讓他學(xué)會(huì)相信和使用新的GPS導(dǎo)航。
研究團(tuán)隊(duì)首先分析了問(wèn)題的根源。AI模型在訓(xùn)練時(shí)使用的代碼數(shù)據(jù)往往比較老舊,就像一個(gè)程序員只讀過(guò)幾年前的編程書(shū)籍。當(dāng)編程庫(kù)頻繁更新時(shí),這些AI就顯得"知識(shí)過(guò)時(shí)"了。雖然人們嘗試過(guò)在提示中加入最新的API文檔,但效果并不理想,因?yàn)锳I內(nèi)部的老知識(shí)會(huì)和外部的新信息產(chǎn)生沖突,AI往往更相信自己"肚子里"的老知識(shí)。
為了解決這個(gè)問(wèn)題,研究團(tuán)隊(duì)開(kāi)發(fā)了ReCode框架。這個(gè)框架的訓(xùn)練過(guò)程很像教一個(gè)程序員適應(yīng)新版本的開(kāi)發(fā)工具。首先,他們收集了大約2000個(gè)真實(shí)的API更新案例,每個(gè)案例都包含了某個(gè)編程庫(kù)從老版本到新版本的具體變化。比如,在NumPy庫(kù)中,原來(lái)計(jì)算數(shù)組乘積用的是`np.product`函數(shù),但新版本中這個(gè)函數(shù)被廢棄了,要改用`np.prod`。
接下來(lái)是訓(xùn)練過(guò)程的精妙之處。研究團(tuán)隊(duì)沒(méi)有采用傳統(tǒng)的監(jiān)督學(xué)習(xí)方法,而是使用了強(qiáng)化學(xué)習(xí)。這就像是給AI設(shè)置了一個(gè)"獎(jiǎng)懲機(jī)制":如果AI能夠正確地根據(jù)提示中的更新信息來(lái)修改代碼,就給它獎(jiǎng)勵(lì);如果它還是固執(zhí)地用老方法,就給它懲罰。通過(guò)這種方式,AI逐漸學(xué)會(huì)了重視外部提供的新信息,而不是一味依賴(lài)內(nèi)部的老知識(shí)。
在獎(jiǎng)懲機(jī)制的設(shè)計(jì)上,研究團(tuán)隊(duì)也很用心。他們不僅檢查AI生成的代碼是否使用了正確的新接口,還會(huì)檢查代碼的語(yǔ)法是否正確。這就像是既要求學(xué)生答案正確,又要求字跡工整一樣。具體來(lái)說(shuō),如果AI生成的代碼完全匹配正確答案,就給最高獎(jiǎng)勵(lì);如果代碼語(yǔ)法正確但接口使用有誤,給中等獎(jiǎng)勵(lì);如果連語(yǔ)法都錯(cuò)了,就給負(fù)向獎(jiǎng)勵(lì)。
為了驗(yàn)證ReCode的效果,研究團(tuán)隊(duì)在CodeUpdateArena這個(gè)專(zhuān)門(mén)的測(cè)試平臺(tái)上進(jìn)行了實(shí)驗(yàn)。這個(gè)平臺(tái)包含了670個(gè)編程任務(wù),每個(gè)任務(wù)都需要AI根據(jù)最新的API更新信息來(lái)解決實(shí)際問(wèn)題。實(shí)驗(yàn)結(jié)果相當(dāng)令人印象深刻:經(jīng)過(guò)ReCode訓(xùn)練的7B參數(shù)的Qwen2.5-Coder模型,在某些指標(biāo)上甚至超越了32B參數(shù)的大模型,這就像是讓一個(gè)聰明的小學(xué)生在某個(gè)專(zhuān)項(xiàng)技能上超過(guò)了大學(xué)生。
更重要的是,研究團(tuán)隊(duì)發(fā)現(xiàn)ReCode訓(xùn)練對(duì)AI的通用編程能力影響很小。這就像是給一個(gè)多才多藝的人專(zhuān)門(mén)訓(xùn)練一項(xiàng)新技能,不會(huì)影響他原有的其他能力。相比之下,如果用傳統(tǒng)的監(jiān)督學(xué)習(xí)方法來(lái)解決這個(gè)問(wèn)題,往往會(huì)導(dǎo)致AI在其他編程任務(wù)上的表現(xiàn)下降,這種現(xiàn)象被稱(chēng)為"災(zāi)難性遺忘"。
在技術(shù)細(xì)節(jié)上,ReCode使用了兩種具體的強(qiáng)化學(xué)習(xí)算法:GRPO和DAPO。這兩種算法的工作原理有些類(lèi)似于班級(jí)競(jìng)賽:讓AI同時(shí)生成多個(gè)代碼方案,然后比較這些方案的好壞來(lái)調(diào)整AI的行為。GRPO算法會(huì)計(jì)算每個(gè)方案相對(duì)于平均水平的優(yōu)劣程度,而DAPO算法則進(jìn)一步優(yōu)化了這個(gè)比較過(guò)程,避免了一些技術(shù)問(wèn)題。
研究團(tuán)隊(duì)還特別關(guān)注了訓(xùn)練過(guò)程中的一些有趣現(xiàn)象。他們發(fā)現(xiàn),在訓(xùn)練初期,AI的獎(jiǎng)勵(lì)分?jǐn)?shù)會(huì)短暫下降,這看起來(lái)有些反常。但研究人員解釋說(shuō),這實(shí)際上反映了AI在"打破固有思維"的過(guò)程。就像一個(gè)習(xí)慣了某種做事方式的人,在學(xué)習(xí)新方法時(shí)會(huì)有短暫的不適應(yīng)期,但一旦適應(yīng)了新方法,表現(xiàn)會(huì)比以前更好。
為了更深入地理解ReCode的工作機(jī)制,研究團(tuán)隊(duì)還做了一些案例分析。他們發(fā)現(xiàn),訓(xùn)練前的AI經(jīng)常表現(xiàn)出"懶惰"的特點(diǎn):明明在提示中給出了新的API信息,AI卻視而不見(jiàn),繼續(xù)使用老舊的接口。這就像是一個(gè)學(xué)生明明桌上放著最新的教科書(shū),卻還是習(xí)慣性地查閱老舊的筆記。經(jīng)過(guò)ReCode訓(xùn)練后,AI學(xué)會(huì)了認(rèn)真"閱讀"提示中的更新信息,并據(jù)此調(diào)整自己的代碼生成策略。
研究團(tuán)隊(duì)還測(cè)試了ReCode在更復(fù)雜場(chǎng)景下的表現(xiàn)。比如,當(dāng)一個(gè)編程庫(kù)經(jīng)歷了多次更新時(shí),AI是否能夠直接從最老的版本跳躍到最新版本,而不需要逐步更新。實(shí)驗(yàn)結(jié)果顯示,經(jīng)過(guò)訓(xùn)練的AI確實(shí)具備了這種"跨越式升級(jí)"的能力,這更符合實(shí)際開(kāi)發(fā)中的需求。
另一個(gè)有趣的測(cè)試是同時(shí)處理多個(gè)API更新。在實(shí)際開(kāi)發(fā)中,程序員經(jīng)常需要同時(shí)適應(yīng)多個(gè)庫(kù)的更新,這對(duì)AI來(lái)說(shuō)是個(gè)更大的挑戰(zhàn)。實(shí)驗(yàn)結(jié)果表明,ReCode訓(xùn)練過(guò)的AI在處理這種復(fù)雜情況時(shí)也表現(xiàn)出色,能夠同時(shí)正確應(yīng)用多個(gè)不同的API更新。
在數(shù)據(jù)集構(gòu)建方面,研究團(tuán)隊(duì)下了很大功夫。他們從NumPy、Pandas、PyTorch等主流數(shù)據(jù)科學(xué)庫(kù)的發(fā)布說(shuō)明中收集了真實(shí)的API更新信息,然后用GPT-4生成對(duì)應(yīng)的代碼示例。但他們沒(méi)有完全依賴(lài)自動(dòng)生成,而是請(qǐng)了五位計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生對(duì)生成的代碼進(jìn)行人工審核,確保質(zhì)量。這種人機(jī)結(jié)合的方式既保證了數(shù)據(jù)的規(guī)模,又確保了準(zhǔn)確性。
值得一提的是,他們收集的API更新類(lèi)型非常豐富,不僅包括簡(jiǎn)單的函數(shù)重命名,還包括參數(shù)變化、功能修改等復(fù)雜情況。比如,有些更新是把二維向量的計(jì)算改為三維向量,有些是改變了函數(shù)的文檔賦值方式。這種多樣性確保了訓(xùn)練出來(lái)的AI能夠應(yīng)對(duì)各種實(shí)際情況。
研究團(tuán)隊(duì)在論文中還詳細(xì)分析了為什么強(qiáng)化學(xué)習(xí)比傳統(tǒng)的監(jiān)督學(xué)習(xí)更適合這個(gè)任務(wù)。他們指出,監(jiān)督學(xué)習(xí)就像是讓學(xué)生死記硬背標(biāo)準(zhǔn)答案,而強(qiáng)化學(xué)習(xí)更像是讓學(xué)生理解解題思路。在API更新這個(gè)場(chǎng)景中,重要的不是記住具體的代碼改動(dòng),而是學(xué)會(huì)如何根據(jù)新的信息來(lái)調(diào)整代碼,這正是強(qiáng)化學(xué)習(xí)的長(zhǎng)處。
實(shí)驗(yàn)數(shù)據(jù)也支持了這個(gè)觀(guān)點(diǎn)。在CodeUpdateArena測(cè)試集上,經(jīng)過(guò)ReCode訓(xùn)練的Qwen2.5-Coder-7B模型的Pass@1分?jǐn)?shù)達(dá)到了78.7%,相比訓(xùn)練前的67.3%有了顯著提升。更令人驚喜的是,這個(gè)7B模型的表現(xiàn)甚至超過(guò)了32B的Qwen2.5-Coder-Instruct模型(75.7%)和DeepSeek-R1-Distill-Qwen-32B模型(78.2%)。這就像是讓一個(gè)小學(xué)生在特定項(xiàng)目上戰(zhàn)勝了中學(xué)生,證明了針對(duì)性訓(xùn)練的威力。
在通用編程能力的保持方面,ReCode也表現(xiàn)出色。在HumanEval+這個(gè)通用編程測(cè)試集上,經(jīng)過(guò)ReCode訓(xùn)練的模型只是輕微下降了1-2個(gè)百分點(diǎn),而傳統(tǒng)監(jiān)督學(xué)習(xí)方法的下降幅度要大得多。這說(shuō)明ReCode確實(shí)實(shí)現(xiàn)了"專(zhuān)項(xiàng)提升,通用保持"的目標(biāo)。
研究團(tuán)隊(duì)還進(jìn)行了詳細(xì)的獎(jiǎng)勵(lì)機(jī)制對(duì)比實(shí)驗(yàn)。他們測(cè)試了不同的獎(jiǎng)勵(lì)設(shè)計(jì)對(duì)最終效果的影響,發(fā)現(xiàn)語(yǔ)法檢查的加入至關(guān)重要。單純的格式獎(jiǎng)勵(lì)效果很差,嚴(yán)格的完全匹配又過(guò)于苛刻,而他們?cè)O(shè)計(jì)的"編輯相似度+語(yǔ)法檢查"的組合效果最好。這就像是既要求答案內(nèi)容正確,又要求表達(dá)清晰,兩者缺一不可。
在訓(xùn)練動(dòng)態(tài)分析中,研究人員觀(guān)察到了一個(gè)有趣的現(xiàn)象:訓(xùn)練過(guò)程中AI輸出的長(zhǎng)度會(huì)逐漸增加,但增幅并不大。這說(shuō)明AI學(xué)會(huì)了更詳細(xì)地思考問(wèn)題,但沒(méi)有出現(xiàn)冗余的廢話(huà)。同時(shí),他們發(fā)現(xiàn)訓(xùn)練初期的獎(jiǎng)勵(lì)下降主要是因?yàn)楦袷姜?jiǎng)勵(lì)的減少,這反映了AI在學(xué)習(xí)過(guò)程中會(huì)暫時(shí)"打亂"原有的行為模式,然后重新建立更好的模式。
從技術(shù)角度來(lái)看,ReCode的成功還在于它巧妙地解決了"知識(shí)沖突"問(wèn)題。當(dāng)AI的內(nèi)部知識(shí)和外部提示信息發(fā)生沖突時(shí),傳統(tǒng)方法往往讓AI更相信內(nèi)部知識(shí)。但ReCode通過(guò)強(qiáng)化學(xué)習(xí)訓(xùn)練,讓AI學(xué)會(huì)了在這種沖突情況下優(yōu)先考慮外部信息,這對(duì)于處理動(dòng)態(tài)更新的信息來(lái)說(shuō)至關(guān)重要。
研究團(tuán)隊(duì)在論文中也誠(chéng)實(shí)地指出了當(dāng)前工作的局限性。由于計(jì)算資源限制,他們只對(duì)7B規(guī)模的模型進(jìn)行了完整訓(xùn)練,未來(lái)需要驗(yàn)證方法在更大模型上的效果。此外,目前的研究主要集中在Python數(shù)據(jù)科學(xué)庫(kù)上,是否能推廣到其他編程語(yǔ)言和領(lǐng)域還需要進(jìn)一步探索。
不過(guò),這些局限性并不影響ReCode的重要價(jià)值。在AI輔助編程越來(lái)越普及的今天,如何讓AI跟上技術(shù)更新的步伐是一個(gè)現(xiàn)實(shí)而緊迫的問(wèn)題。ReCode提供了一個(gè)既實(shí)用又優(yōu)雅的解決方案,它不僅解決了當(dāng)下的問(wèn)題,更重要的是提供了一種處理"AI知識(shí)過(guò)時(shí)"問(wèn)題的通用思路。
這項(xiàng)研究的影響可能遠(yuǎn)超編程領(lǐng)域。隨著各行各業(yè)的數(shù)字化轉(zhuǎn)型,API和技術(shù)接口的更新變得越來(lái)越頻繁。如何讓AI系統(tǒng)能夠靈活適應(yīng)這些變化,而不是被固化的訓(xùn)練數(shù)據(jù)所束縛,是一個(gè)具有廣泛意義的挑戰(zhàn)。ReCode展示的強(qiáng)化學(xué)習(xí)方法為解決這類(lèi)問(wèn)題提供了有價(jià)值的參考。
說(shuō)到底,ReCode的成功在于它抓住了一個(gè)核心insight:AI不應(yīng)該只是一個(gè)靜態(tài)的知識(shí)庫(kù),而應(yīng)該是一個(gè)能夠動(dòng)態(tài)學(xué)習(xí)和適應(yīng)的智能助手。通過(guò)巧妙的訓(xùn)練方法,研究團(tuán)隊(duì)讓AI學(xué)會(huì)了如何在面對(duì)新信息時(shí)調(diào)整自己的行為,這種能力在快速變化的技術(shù)環(huán)境中顯得尤為珍貴。
對(duì)于普通的程序員和AI用戶(hù)來(lái)說(shuō),這項(xiàng)研究帶來(lái)的最直接好處就是更可靠的AI編程助手。再也不用擔(dān)心AI生成的代碼使用過(guò)時(shí)的接口,也不用反復(fù)提醒AI使用最新的API。這不僅提高了開(kāi)發(fā)效率,也降低了出錯(cuò)的風(fēng)險(xiǎn)。
從更長(zhǎng)遠(yuǎn)的角度來(lái)看,ReCode代表的是AI系統(tǒng)走向更加智能和實(shí)用的重要一步。它展示了如何讓AI既保持原有能力又能適應(yīng)新的需求,這種平衡對(duì)于AI技術(shù)的實(shí)際應(yīng)用至關(guān)重要。隨著這種方法的進(jìn)一步發(fā)展和推廣,我們有理由期待AI助手在各個(gè)領(lǐng)域都能變得更加智能和有用。
Q&A
Q1:ReCode是什么?它解決了什么問(wèn)題? A:ReCode是浙江大學(xué)研究團(tuán)隊(duì)開(kāi)發(fā)的一個(gè)AI訓(xùn)練框架,專(zhuān)門(mén)解決AI編程助手使用過(guò)時(shí)API接口的問(wèn)題。當(dāng)編程庫(kù)更新后,傳統(tǒng)AI往往還會(huì)用老版本的接口寫(xiě)代碼,導(dǎo)致程序無(wú)法運(yùn)行,ReCode通過(guò)強(qiáng)化學(xué)習(xí)讓AI學(xué)會(huì)根據(jù)最新的API文檔來(lái)調(diào)整代碼。
Q2:ReCode會(huì)不會(huì)影響AI原有的編程能力? A:基本不會(huì)。實(shí)驗(yàn)顯示ReCode訓(xùn)練后的AI在通用編程測(cè)試中只是輕微下降1-2個(gè)百分點(diǎn),而在API更新任務(wù)上卻有顯著提升。這比傳統(tǒng)的監(jiān)督學(xué)習(xí)方法要好得多,后者往往會(huì)導(dǎo)致較大的能力下降。
Q3:普通程序員能用上ReCode技術(shù)嗎?什么時(shí)候能用? A:目前ReCode還是研究階段的技術(shù),但研究團(tuán)隊(duì)已經(jīng)證明了它的有效性。預(yù)計(jì)未來(lái)會(huì)被集成到各種AI編程助手中,讓程序員享受到更可靠的代碼生成服務(wù)。感興趣的技術(shù)人員可以關(guān)注相關(guān)開(kāi)源項(xiàng)目的發(fā)展。
好文章,需要你的鼓勵(lì)
騰訊ARC實(shí)驗(yàn)室推出AudioStory系統(tǒng),首次實(shí)現(xiàn)AI根據(jù)復(fù)雜指令創(chuàng)作完整長(zhǎng)篇音頻故事。該系統(tǒng)結(jié)合大語(yǔ)言模型的敘事推理能力與音頻生成技術(shù),通過(guò)交錯(cuò)式推理生成、解耦橋接機(jī)制和漸進(jìn)式訓(xùn)練,能夠?qū)?fù)雜指令分解為連續(xù)音頻場(chǎng)景并保持整體連貫性。在AudioStory-10K基準(zhǔn)測(cè)試中表現(xiàn)優(yōu)異,為AI音頻創(chuàng)作開(kāi)辟新方向。
Meta與特拉維夫大學(xué)聯(lián)合研發(fā)的VideoJAM技術(shù),通過(guò)讓AI同時(shí)學(xué)習(xí)外觀(guān)和運(yùn)動(dòng)信息,顯著解決了當(dāng)前視頻生成模型中動(dòng)作不連貫、違反物理定律的核心問(wèn)題。該技術(shù)僅需添加兩個(gè)線(xiàn)性層就能大幅提升運(yùn)動(dòng)質(zhì)量,在多項(xiàng)測(cè)試中超越包括Sora在內(nèi)的商業(yè)模型,為AI視頻生成的實(shí)用化應(yīng)用奠定了重要基礎(chǔ)。
上海AI實(shí)驗(yàn)室發(fā)布OmniAlign-V研究,首次系統(tǒng)性解決多模態(tài)大語(yǔ)言模型人性化對(duì)話(huà)問(wèn)題。該研究創(chuàng)建了包含20萬(wàn)高質(zhì)量樣本的訓(xùn)練數(shù)據(jù)集和MM-AlignBench評(píng)測(cè)基準(zhǔn),通過(guò)創(chuàng)新的數(shù)據(jù)生成和質(zhì)量管控方法,讓AI在保持技術(shù)能力的同時(shí)顯著提升人性化交互水平,為AI價(jià)值觀(guān)對(duì)齊提供了可行技術(shù)路徑。
谷歌DeepMind團(tuán)隊(duì)開(kāi)發(fā)的GraphCast是一個(gè)革命性的AI天氣預(yù)測(cè)模型,能夠在不到一分鐘內(nèi)完成10天全球天氣預(yù)報(bào),準(zhǔn)確性超越傳統(tǒng)方法90%的指標(biāo)。該模型采用圖神經(jīng)網(wǎng)絡(luò)技術(shù),通過(guò)學(xué)習(xí)40年歷史數(shù)據(jù)掌握天氣變化規(guī)律,在極端天氣預(yù)測(cè)方面表現(xiàn)卓越,能耗僅為傳統(tǒng)方法的千分之一,為氣象學(xué)領(lǐng)域帶來(lái)了效率和精度的雙重突破。