新聞

JetBrains Research開源KotlinLLM研究原型,供Kotlin/JVM應用程式在執行期間遇到先前生成的程式碼無法處理的新情況時,呼叫外部大型語言模型產生新的Kotlin程式碼。系統完成編譯並更新執行中的程式後,會再次處理原本無法完成的呼叫,而生成的程式碼也會保存在專案中,往後遇到相同情況便不必再次呼叫模型。

KotlinLLM是一款IntelliJ IDEA外掛,導入研究團隊稱為智慧巨集的設計。開發者只需在程式中加入特定函式,外掛便會根據應用程式執行時實際遇到的輸入、資料型別及呼叫情況,補上需要的函式內容。目前提供兩項主要功能,其中asLlm可將文字、表格或格式不固定的資料,轉成程式可直接使用的資料類別、清單或基本型別,而mockLlm則可依介面定義產生測試用的模擬元件,並記住先前呼叫狀態。

當已生成的程式碼無法處理新情況,KotlinLLM會暫停應用程式,取得當下的輸入內容與資料型別,再由大型語言模型修改對應實作。外掛隨後把修改結果寫成一般Kotlin原始碼,重新編譯,並透過Java偵錯介面更新已載入的程式類別。

該作法與每次執行相關功能都直接詢問大型語言模型不同,KotlinLLM只在先前生成的程式碼無法處理新情況時呼叫模型,已涵蓋的情況則直接執行既有程式碼。只要部署版本已涵蓋所需情況,執行時便不必連接模型服務。

JetBrains在修改過的Spring Petclinic Kotlin範例專案中設置18個asLlm呼叫位置。研究團隊表示,程式經過多次更新後完成全部24項測試情境,程式熱載入成功率為100%,編譯與重新定義類別增加的時間開銷約相當於總執行時間1%。

KotlinLLM目前仍是研究原型,只適用於Kotlin/JVM專案,並非Kotlin正式語言功能。專案採Apache License 2.0授權,開源內容包括IntelliJ IDEA外掛、程式介面、範例專案及模型生成的Kotlin原始碼。