人工智慧驅動的全新程式碼補全工具旨在將程式碼保留在本地,從而降低受監管行業的安全性問題。
譯自JetBrains Launches AI Code Completion on Local Machines,作者 Loraine Lawson。
JetBrains在其 IDE 中提供全行程式碼補全功能,這要歸功於在本機上執行的 AI 模型,因此無需將程式碼傳送到場外。
該公司指出,此功能旨在吸引對資料隱私法規有嚴格要求的行業,例如醫療保健和金融業,或任何可能對將程式碼發送到外部持猶豫態度的組織。
JetBrains 的高級機器學習工程師Daniel Savenkov解釋道:「我們的產品如何運作?您在本地電腦上運行一個不太大但很聰明的語言模型,所有操作都在本地進行。」「這非常重要,因為並非 所有人都願意將自己的程式碼共享到雲端。”
模型在內部機器上運行
JetBrains 程式碼補全功能在本地運行這一事實使其有別於其他程式碼補全工具,包括GitHub 的 Copilot,後者依賴對底層基於雲端的大語言模型的外部呼叫。 Savenkov 表示,雖然 Copilot 已有用戶協議禁止將程式碼用於程式碼補全以外的任何用途,但在某些行業,由於安全問題,這還不夠。
JetBrains 程式碼補全模型仍然是大語言模型,但有 1 億個參數。 Savenkov 補充說,相較之下,業界標準模式要大 100 倍。 較小的模型是程式碼補全模型處理全行程式碼補全而不是大塊程式碼的原因之一。 Savenkov 表示,處理大塊產生的程式碼確實很難。 由於某些建議可能不好,因此編碼人員必須查看 AI 模型創建的所有代碼。
Savenkov 表示,業界對於哪種長度的程式碼補全效果最好存在一些爭論。 一些程式碼補全產品可以產生大量的程式碼區塊,但也可能產生 API 呼叫等幻覺。 他補充說,JetBrains 將程式碼補全確定為一行,作為一種“相當公平的折衷”,開發人員可以輕鬆使用。
在本地運行這一事實也最大程度地減少了延遲問題。
他說:「這比生成10 行程式碼或一個區塊或整個方法或整個類別要簡單得多。」「因此,我們有機會使用較小的模型並獲得真正有意義且有用的結果。所以,我們大致 是這樣到達這裡的,我們有一個本地、不太大的模型,生成一行程式碼。”
較小的 LLM 提供了可比較的質量
他聲稱,即使 LLM 較小,品質也相似。
Savenkov 告訴The New Stack:「與真正基於雲端的大模型相比,在我們的用例中,品質沒有大幅下降。當然,如果我們開始嘗試產生程式碼區塊,差異會更大,但保持單行,差異不會 那麼大。”
該模型還利用來自 IDE 的資訊來過濾掉幻覺,例如對不存在的 API 的呼叫。 他還指出,這也有助於確保程式碼建議不包含語法錯誤,例如不存在的變數或方法。
此外,該公司機器學習產品經理Mikhail Kostyukov補充說,由於語言模型是針對特定語言和框架進行訓練的,而不是一般性訓練,因此它可以更小。
JetBrains 在其 Python IDE PyCharm 中試用了程式碼補全功能。 截至今日,它已在相應的 JetBrains IDE 中開箱即用地提供給 Java、Kotlin、JavaScript、TypeScript、CSS、PHP、Go 和 Ruby:IntelliJ IDEA、WebStorm、PhpStorm、GoLand 和 RubyMine。
在未來幾個月內,該公司將在所有支援這些語言的 JetBrains IDE 中將此功能擴展到 C#、Rust 和 C++,包括 Rider、RustRover、CLion Nova 等。
除了其程式碼補全產品外,JetBrains 還提供 AI 助手,作為附加訂閱服務,可以自動完成整個程式碼區塊。 該公司表示,AI 助理還提供了改進的測試生成和雲端程式碼補全、提交訊息的自訂提示、從 AI 聊天創建檔案以及更新的編輯器內程式碼生成功能。
此更新可在 IntelliJ IDEA、PyCharm、PhpStorm、ReSharper 和其他 JetBrains IDE 中使用,以及 Fleet 中作為補充功能。
此 2024.1 更新還為 JetBrain 的 IDE 引入了其他新功能,包括一個經過全面檢修的終端功能,其中包含簡化命令列任務的增強功能。 該公司在新聞稿中指出,該終端現在支援在區塊內導航,分別嵌套每個命令、命令完成功能以及輕鬆存取命令歷史記錄。
特定 IDE 的改進包括:
IntelliJ IDEA 將為新發布的 Java 22 中的功能提供支援。 它還結合了基於 K2 Kotlin 編譯器的新 Kotlin K2 模式,以增強程式碼分析。
RubyMine 可以執行目前產品本地 SDK 中的 VCS 指令。
PyCharm 2024.1 為整合 Jupyter 筆記本帶來了新功能,以及簡化的版本控制,其中包含新的視覺化差異、小部件渲染以及使用 AI 助理解釋 pandas 和 Polars DataFrames 的功能。 此外,Hugging Face 模型的所有文件都可以在 PyCharm 中直接存取。
PhpStorm 為 Symfony 的 AssetMapper 新增了支援。 新聞稿指出,開發人員現在可以透過 importmap.php 快速安裝缺少的模組和套件,並為其類別和方法利用完全自動完成。 他們還可以為 PHP 類別和方法產生Pest 測試,並直接從 Intention 操作選單建立新的 Pest 測試。