微軟推出 AI 代碼審查工具,可將準(zhǔn)確率提升至 >80%
微軟宣布推出一種可以提高大型語言模型性能的新工具 Jigsaw?!按笮偷念A(yù)訓(xùn)練語言模型(如 GPT-3、Codex 等),可以被調(diào)整為從程序員意圖的自然語言規(guī)范中生成代碼。這種自動化模型有可能提高世界上每個程序員的生產(chǎn)力;但是,由于這些模型可能難以理解程序語義,因此所生成的代碼的質(zhì)量不能得到保證。”
根據(jù)介紹,Jigsaw 部署了理解程序語法和語義的后處理技術(shù),然后利用用戶反饋來提高未來的性能;該工具旨在使用多模式輸入為 Python Pandas API 合成代碼。Pandas 是數(shù)據(jù)科學(xué)中廣泛使用的 API,具有數(shù)百個用于 manipulating dataframes 或具有行和列的表的函數(shù)。
微軟方面稱,其經(jīng)驗表明,隨著這些大型語言模型演變?yōu)楦鶕?jù)意圖合成代碼,Jigsaw 可以在提高系統(tǒng)準(zhǔn)確性方面發(fā)揮重要作用。
像 OpenAI 的 Codex 這樣的大型語言模型正在重新定義編程領(lǐng)域。軟件開發(fā)人員在解決編程任務(wù)時,可以為預(yù)期的代碼片段提供英文描述,Codex 可以用 Python 或 JavaScript 等語言合成預(yù)期的代碼。但合成的代碼可能不正確,甚至可能無法編譯或運行。Codex 用戶有責(zé)任在使用代碼之前對其進行審查。Jigsaw 團隊解釋稱,通過 Project Jigsaw,其目標(biāo)是使部分審查自動化,以提高使用 Codex 等大型語言模型進行代碼合成的開發(fā)人員的生產(chǎn)力。
微軟認(rèn)為 Jigsaw 可以“完全自動化”檢查代碼是否編譯、處理錯誤信息以及測試代碼是否產(chǎn)生開發(fā)人員希望輸出的內(nèi)容的整個過程。“Jigsaw 將預(yù)期代碼的英文描述以及 I/O 實例作為輸入。通過這種方式,它將輸入與相關(guān)的輸出配對;并提供質(zhì)量保證,即輸出的 Python 代碼將在提供的輸入上編譯并產(chǎn)生預(yù)期的輸出。”
在其 ICSE 2022 論文 Jigsaw:Large Language Models meet Program Synthesis 中,微軟方面在 Python Pandas 上評估了這種方法。使用 Jigsaw,用戶可以提供對預(yù)期轉(zhuǎn)換的英文描述、input dataframe 和相應(yīng)的 output dataframe,然后讓 Jigsaw 合成預(yù)期代碼。
Jigsaw 獲取英語查詢并使用適當(dāng)?shù)纳舷挛膶ζ溥M行預(yù)處理,以構(gòu)建可以饋送到大型語言模型的輸入。微軟在實驗中發(fā)現(xiàn),Jigsaw 可以在 30% 的時間內(nèi)創(chuàng)建正確的輸出。如果代碼失敗,那么修復(fù)過程在后處理階段開始。
在后處理過程中,Jigsaw 應(yīng)用了三種變換來修復(fù)代碼。這些轉(zhuǎn)變中的每一個都是由他們在 GPT-3 和 Codex 中觀察到的故障模式所激發(fā)的。而 GPT-3 和 Codex 失敗的方式都類似,因此 Jigsaw 解決這些失敗模式的后處理對兩者都很有用。
微軟在各種數(shù)據(jù)集上評估了 Codex 和 Jigsaw (with Codex),并測量了準(zhǔn)確率。Codex 給出了約 30% 的開箱即用的準(zhǔn)確性,Jigsaw 則將準(zhǔn)確率提高到 60% 以上;通過用戶反饋,準(zhǔn)確率可提高到 80% 以上。接下來,他們將繼續(xù)致力于完善 Jigsaw,努力將在 Python Pandas API 上的經(jīng)驗推廣到其他 API 和其他語言上;在通過自動化提高程序員生產(chǎn)力方面發(fā)揮重要作用。
更多詳情可查看官方博客。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:微軟推出 AI 代碼審查工具,可將準(zhǔn)確率提升至 >80%
本文地址:https://www.oschina.net/news/190978/microsoft-jigsaw-ai-code-fix