翻譯|使用教程|編輯:胡欣星|2025-01-20 16:26:31.060|閱讀 125 次
概述:JetBrains團隊通過改進本地和云端AI代碼補全功能,提高了補全的準確性和速度。新增的高亮顯示、多行補全和項目上下文感知等功能優化了開發者體驗,未來將支持更多語言并進一步提升質量。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
代碼補全一直是JetBrains IDE的一個亮點功能,幫助開發者更快速、智能地編寫代碼,并減少錯誤。但是,如果它能夠做得更多呢?如果它不僅能預測下一個元素,還能預測整行代碼,甚至是完整的代碼塊呢?這正是我們一直在努力實現的目標。隨著我們在AI領域的投入,代碼補全功能已經變得比以往更加強大——更精確、更快速、也更智能。 小編將分享JetBrains IDE中AI代碼補全背后的技術,它如何隨著時間的推移不斷演化,以及未來的一些令人激動的發展。
JetBrains提供了兩種AI代碼補全的實現方式:
這兩種方法共同確保開發者可以在需要時獲得快速的、具備上下文感知的本地建議,以及在更復雜情境下所需的強大云端支持。
JetBrains團隊在設計時特別關注建議的質量與速度。團隊知道,開發者需要快速而準確的補全來保持編碼流程的暢通。因此,系統經過精心設計,避免了過于嘈雜和干擾的補全,提供簡潔、相關的建議,讓開發者在需要時立刻得到幫助。
自從2023.3版本和2024.1版本發布以來,JetBrains團隊的代碼補全產品性能保持穩定,甚至有所提升。每一天都有數百萬次補全請求,接受率達到35%以上,且顯式取消率僅為5%。這些數據使得這款產品成為基于IntelliJ平臺的IDE中表現最好的代碼補全工具之一。
2024.2版本主要聚焦于用戶體驗(UX)改進,進一步擴展了整個流程。此外,JetBrains團隊還優化了補全質量和錯誤代碼過濾功能,并為Rider、CLion、RustRover和Terraform等工具提供了支持。
關于這一話題可以說的內容太多了,所以JetBrains團隊只總結一下用戶反饋中的關鍵問題,然后討論如何解決這些問題。
1. 補全觸發頻率有限
在之前的版本中,JetBrains團隊采取了保守的方式,只有用戶按下Enter鍵時才觸發補全。這種設計是由于大型語言模型(LLM)處理時需要較長的計算時間。然而,團隊意識到這種方式并不理想,因為開發者在編碼時并不總是按Enter鍵——實際上,一位開發者每天平均按Enter鍵的次數約為70次。
2. 難以閱讀灰色的大段多行建議
想象一下,開發者正在編寫一個簡單的小函數,而補全卻給出了非常龐大的代碼塊,這使得開發者難以看到光標后的下一行。長時間的補全需要花費更多時間來審閱和整合,容易打斷工作流。
3. 補全建議不可預測
除了上述問題,模型有時會給出不符合開發者期望的建議。雖然大多數建議是準確的,但有時會出現意外的枚舉變量創建、錯誤的中間部分或更加“對話式”的回答。大型LLM需要幾秒鐘來生成建議,這會導致明顯的延遲,而代碼補全必須是快速響應的。
JetBrains團隊選擇了“從頭開始重寫”這種傳統的方式,畢竟團隊成員都是開發者!
實際上,JetBrains團隊決定從頭開始重寫基于云的代碼補全,使用與本地完整行代碼補全相同的IDE管道,并采用了JetBrains內部開發的專門為代碼補全訓練的LLM。這一過程充滿挑戰,但最終團隊成功解決了上述所有問題!
自2024.2版本起,JetBrains團隊在AI助手中引入了全新管道和內部開發的LLM,具體如下:
1. 高亮顯示而非灰色文本
為了簡化閱讀由模型生成的大段代碼,JetBrains團隊現在將建議的代碼進行高亮顯示。這一改動旨在減少開發者的認知負擔。通過語法感知高亮顯示,建議的代碼現在與手寫代碼的樣式一致,更容易快速瀏覽和評估。
2. 更智能、更快速的JetBrains內部LLM
雖然大型模型在處理多種任務時表現更好,但針對特定任務訓練的定制化模型通常能提供更好的性能。這些定制模型具有更多的控制能力,無需提示工程,并且延遲更低。JetBrains團隊通過訓練一個相對較小、專門化的模型,并增強推理機制,顯著提升了代碼補全的準確性和速度。
3. 更多位置和更謹慎的單行/多行選擇
為了增加補全建議的顯示數量,現在補全可以在輸入時觸發,而不僅僅是按Enter鍵時。此外,JetBrains團隊限制了多行補全的顯示位置。通過采用更為保守的、基于語言的策略,團隊確保了基于云的代碼補全仍然直觀易用,同時保持了生成代碼的總量。
4. 完全重做的多行補全UX
JetBrains團隊完全重新設計了多行補全的顯示方式,特別是在與IDE內彈出補全結合時(這是以前無法實現的)。
5. 部分接受
這是許多用戶一直在呼吁的功能!現在,開發者可以按單個令牌或單行逐步接受補全建議。
6. 改進的項目感知和上下文收集
通過離線和在線評估不同的檢索增強生成(RAG)策略,JetBrains團隊選擇了穩定且可預測的方案。補全建議現在充分利用整個項目的上下文,提供相關且高質量的代碼塊。
總的來說,效果相當不錯!基于2024年8月收集的用戶反饋和使用數據,JetBrains團隊看到了一些積極的結果。以下是Java、Python和Kotlin的三個不同版本的比較:
改進表現:
- 新版云補全的接受率通常高于本地完整行補全,并且始終優于舊版云補全。
- 用戶明確取消新版云補全的頻率比之前低很多
- 與舊系統相比,從開始輸入到顯示建議的整體補全延遲也大大縮短。
- 2024.2 中顯示的每日補全次數已遠遠超過 2024.1 版本中的次數。 通過生成更加相關的建議,它的表現始終優于速度更快的本地模型。
- etBrains團隊看有意縮短了新版云補全的平均補全長度。 他們會更加慎重地提供多行補全,確保不會干擾您閱讀代碼或思考解決方案。 也計劃在測試過程中完全確認多行建議會得到正面評價后逐步在更多位置顯示多行建議。
盡管如此,新版云補全的平均建議長度有所縮短。JetBrains團隊謹慎地顯示多行補全,以確保在開發者查看代碼或思考解決方案時不會打擾到他們。團隊計劃在未來的更新中逐步增加多行建議的顯示位置,并確保它們能得到用戶的積極反饋。
JetBrains團隊將繼續改進本地和云補全,增加云端的多行建議功能,將多行補全引入本地補全,支持更多語言,提升模型質量,優化用戶體驗等等。想要獲取完整版試用,請聯系在線客服~
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn