微軟推出 AI 程式碼審查工具,可將準確率提升至 >80%

2022-04-14 09:01:15

微軟宣佈推出一種可以提高大型語言模型效能的新工具 Jigsaw。「大型的預訓練語言模型(如 GPT-3、Codex 等),可以被調整為從程式設計師意圖的自然語言規範中生成程式碼。這種自動化模型有可能提高世界上每個程式設計師的生產力;但是,由於這些模型可能難以理解程式語意,因此所生成的程式碼的品質不能得到保證。」

根據介紹,Jigsaw 部署了理解程式語法和語意的後處理技術,然後利用使用者反饋來提高未來的效能;該工具旨在使用多模式輸入為 Python Pandas API 合成程式碼。Pandas 是資料科學中廣泛使用的 API,具有數百個用於 manipulating dataframes 或具有行和列的表的函數。

微軟方面稱,其經驗表明,隨著這些大型語言模型演變為根據意圖合成程式碼,Jigsaw 可以在提高系統準確性方面發揮重要作用。

像 OpenAI 的 Codex 這樣的大型語言模型正在重新定義程式設計領域。軟體開發人員在解決程式設計任務時,可以為預期的程式碼片段提供英文描述,Codex 可以用 Python 或 JavaScript 等語言合成預期的程式碼。但合成的程式碼可能不正確,甚至可能無法編譯或執行。Codex 使用者有責任在使用程式碼之前對其進行審查。Jigsaw 團隊解釋稱,通過 ,其目標是使部分審查自動化,以提高使用 Codex 等大型語言模型進行程式碼合成的開發人員的生產力。

微軟認為 Jigsaw 可以「完全自動化」檢查程式碼是否編譯、處理錯誤資訊以及測試程式碼是否產生開發人員希望輸出的內容的整個過程。「Jigsaw 將預期程式碼的英文描述以及 I/O 範例作為輸入。通過這種方式,它將輸入與相關的輸出配對;並提供品質保證,即輸出的 Python 程式碼將在提供的輸入上編譯併產生預期的輸出。」

在其  論文  中,微軟方面在 Python Pandas 上評估了這種方法。使用 Jigsaw,使用者可以提供對預期轉換的英文描述、input dataframe 和相應的 output dataframe,然後讓 Jigsaw 合成預期程式碼。

Jigsaw 獲取英語查詢並使用適當的上下文對其進行預處理,以構建可以饋送到大型語言模型的輸入。微軟在實驗中發現,Jigsaw 可以在 30% 的時間內建立正確的輸出。如果程式碼失敗,那麼修復過程在後處理階段開始。

在後處理過程中,Jigsaw 應用了三種變換來修復程式碼。這些轉變中的每一個都是由他們在 GPT-3 和 Codex 中觀察到的故障模式所激發的。而 GPT-3 和 Codex 失敗的方式都類似,因此 Jigsaw 解決這些失敗模式的後處理對兩者都很有用。

微軟在各種資料集上評估了 Codex 和 Jigsaw (with Codex),並測量了準確率。Codex 給出了約 30% 的開箱即用的準確性,Jigsaw 則將準確率提高到 60% 以上;通過使用者反饋,準確率可提高到 80% 以上。接下來,他們將繼續致力於完善 Jigsaw,努力將在 Python Pandas API 上的經驗推廣到其他 API 和其他語言上;在通過自動化提高程式設計師生產力方面發揮重要作用。

更多詳情可。

展開閱讀全文