半岛权威十大直营(官方)网站

JetBrains AI:重新定义代码补全的未来

翻译|使用教程|编辑:胡欣星|2025-01-20 16:26:31.060|阅读 12 次

概述:JetBrains团队通过改进本地和云端AI代码补全功能,提高了补全的准确性和速度。新增的高亮显示、多行补全和项目上下文感知等功能优化了开发者体验,未来将支持更多语言并进一步提升质量。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

代码补全一直是JetBrains IDE的一个亮点功能,帮助开发者更快速、智能地编写代码,并减少错误。但是,如果它能够做得更多呢?如果它不仅能预测下一个元素,还能预测整行代码,甚至是完整的代码块呢?这正是我们一直在努力实现的目标。随着我们在AI领域的投入,代码补全功能已经变得比以往更加强大——更精确、更快速、也更智能。 小编将分享JetBrains IDE中AI代码补全背后的技术,它如何随着时间的推移不断演化,以及未来的一些令人激动的发展。

获取JetBrains IDE新版下载

什么是JetBrains的AI代码补全?

JetBrains提供了两种AI代码补全的实现方式:

  • 本地完整行代码补全:这项功能内置于JetBrains IDE中,直接在本地机器上运行,不需要互联网连接,确保建议迅速且精准,特别适用于开发者的项目上下文。
  • 基于云的AI代码补全:由JetBrains AI助手提供,这种方式利用云端资源,提供比本地模型更强大的计算能力,从而生成更加精确的代码补全建议。

这两种方法共同确保开发者可以在需要时获得快速的、具备上下文感知的本地建议,以及在更复杂情境下所需的强大云端支持。

JetBrains团队在设计时特别关注建议的质量与速度。团队知道,开发者需要快速而准确的补全来保持编码流程的畅通。因此,系统经过精心设计,避免了过于嘈杂和干扰的补全,提供简洁、相关的建议,让开发者在需要时立刻得到帮助。

一年来,完整行代码补全的表现如何?

自从2023.3版本和2024.1版本发布以来,JetBrains团队的代码补全产品性能保持稳定,甚至有所提升。每一天都有数百万次补全请求,接受率达到35%以上,且显式取消率仅为5%。这些数据使得这款产品成为基于IntelliJ平台的IDE中表现最好的代码补全工具之一。

2024.2版本主要聚焦于用户体验(UX)改进,进一步扩展了整个流程。此外,JetBrains团队还优化了补全质量和错误代码过滤功能,并为Rider、CLion、RustRover和Terraform等工具提供了支持。

基于云的AI代码补全怎么样?

关于这一话题可以说的内容太多了,所以JetBrains团队只总结一下用户反馈中的关键问题,然后讨论如何解决这些问题。

1. 补全触发频率有限
在之前的版本中,JetBrains团队采取了保守的方式,只有用户按下Enter键时才触发补全。这种设计是由于大型语言模型(LLM)处理时需要较长的计算时间。然而,团队意识到这种方式并不理想,因为开发者在编码时并不总是按Enter键——实际上,一位开发者每天平均按Enter键的次数约为70次。

2. 难以阅读灰色的大段多行建议
想象一下,开发者正在编写一个简单的小函数,而补全却给出了非常庞大的代码块,这使得开发者难以看到光标后的下一行。长时间的补全需要花费更多时间来审阅和整合,容易打断工作流。

3. 补全建议不可预测
除了上述问题,模型有时会给出不符合开发者期望的建议。虽然大多数建议是准确的,但有时会出现意外的枚举变量创建、错误的中间部分或更加“对话式”的回答。大型LLM需要几秒钟来生成建议,这会导致明显的延迟,而代码补全必须是快速响应的。

JetBrains团队是如何解决这些问题的?

JetBrains团队选择了“从头开始重写”这种传统的方式,毕竟团队成员都是开发者!

实际上,JetBrains团队决定从头开始重写基于云的代码补全,使用与本地完整行代码补全相同的IDE管道,并采用了JetBrains内部开发的专门为代码补全训练的LLM。这一过程充满挑战,但最终团队成功解决了上述所有问题!

自2024.2版本起,JetBrains团队在AI助手中引入了全新管道和内部开发的LLM,具体如下:

  • Java、Python和Kotlin:从2024.2版本开始引入
  • Go:从2024.2.1版本开始引入
  • PHP、JavaScript/TypeScript、CSS和HTML:从2024.2.2版本开始引入
  • 到2024.3版本,JetBrains团队将切换所有语言到新的高级管道和模型。
JetBrains团队的核心改进

1. 高亮显示而非灰色文本
为了简化阅读由模型生成的大段代码,JetBrains团队现在将建议的代码进行高亮显示。这一改动旨在减少开发者的认知负担。通过语法感知高亮显示,建议的代码现在与手写代码的样式一致,更容易快速浏览和评估。

2. 更智能、更快速的JetBrains内部LLM
虽然大型模型在处理多种任务时表现更好,但针对特定任务训练的定制化模型通常能提供更好的性能。这些定制模型具有更多的控制能力,无需提示工程,并且延迟更低。JetBrains团队通过训练一个相对较小、专门化的模型,并增强推理机制,显著提升了代码补全的准确性和速度。

3. 更多位置和更谨慎的单行/多行选择
为了增加补全建议的显示数量,现在补全可以在输入时触发,而不仅仅是按Enter键时。此外,JetBrains团队限制了多行补全的显示位置。通过采用更为保守的、基于语言的策略,团队确保了基于云的代码补全仍然直观易用,同时保持了生成代码的总量。

4. 完全重做的多行补全UX
JetBrains团队完全重新设计了多行补全的显示方式,特别是在与IDE内弹出补全结合时(这是以前无法实现的)。

5. 部分接受
这是许多用户一直在呼吁的功能!现在,开发者可以按单个令牌或单行逐步接受补全建议。

  • 逐字接受 – ⌥ → / Alt + Right。
  • 逐行接受 – ⌘ → / Ctrl + Right。
  • 与之前一样,您可以通过 ⇧ ⌥ / / Shift + Alt 明确调用补全。

6. 改进的项目感知和上下文收集
通过离线和在线评估不同的检索增强生成(RAG)策略,JetBrains团队选择了稳定且可预测的方案。补全建议现在充分利用整个项目的上下文,提供相关且高质量的代码块。

新的云补全效果如何?

总的来说,效果相当不错!基于2024年8月收集的用户反馈和使用数据,JetBrains团队看到了一些积极的结果。以下是Java、Python和Kotlin的三个不同版本的比较:

  • JetBrains AI助手2024.1版本的旧版基于云的AI代码补全
  • JetBrains AI助手2024.2版本的新版基于云的AI代码补全
  • 2024.2版本地完整行代码补全

改进表现:
- 新版云补全的接受率通常高于本地完整行补全,并且始终优于旧版云补全。

- 用户明确取消新版云补全的频率比之前低很多

- 与旧系统相比,从开始输入到显示建议的整体补全延迟也大大缩短。


- 2024.2 中显示的每日补全次数已远远超过 2024.1 版本中的次数。 通过生成更加相关的建议,它的表现始终优于速度更快的本地模型。

- etBrains团队看有意缩短了新版云补全的平均补全长度。 他们会更加慎重地提供多行补全,确保不会干扰您阅读代码或思考解决方案。 也计划在测试过程中完全确认多行建议会得到正面评价后逐步在更多位置显示多行建议。

尽管如此,新版云补全的平均建议长度有所缩短。JetBrains团队谨慎地显示多行补全,以确保在开发者查看代码或思考解决方案时不会打扰到他们。团队计划在未来的更新中逐步增加多行建议的显示位置,并确保它们能得到用户的积极反馈。

JetBrains团队将继续改进本地和云补全,增加云端的多行建议功能,将多行补全引入本地补全,支持更多语言,提升模型质量,优化用户体验等等。想要获取完整版试用,请联系在线客服~


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
IntelliJ IDEA

IntelliJ在业界被公认为优秀的Java开发平台之一,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面表现突出,并支持基于Android平台的程序开发。

PyCharm

PyCharm是一种提高Python语言开发效率的IDE

WebStorm

深受广大程序员喜爱的JavaScript 开发和Web前端开发神器。

CLion

CLion是一款专为开发C及C++所设计的跨平台IDE。

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP