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