前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >牛逼!JetBrains AI 代码补全接受率如何上升~50%?原来用这招!的确实用,又不缺乏创新!

牛逼!JetBrains AI 代码补全接受率如何上升~50%?原来用这招!的确实用,又不缺乏创新!

作者头像
程序视点
发布2025-03-24 17:03:31
发布2025-03-24 17:03:31
720
举报
文章被收录于专栏:程序小小事程序小小事

前言

最近,JetBrains 官方又发生了一件令人兴奋的事情:JetBrains AI Assistant 代码补全的的接受率上升了,而明确取消率下降了。

不知道大家是否还记得去年11月份 JetBrains 官方公布的 AI 代码补全现状报告!文中有一张很酷的代码补全图表,就是它:

那现在 JetBrains AI Assistant 的现状如何呢?如何做到代码补全接受率上升的呢?我们一起来看一看!

JetBrains AI Assistant 代码补全

我们知道 JetBrains AI Assistant 是使用模型的。那如何在现有的模型上,获取更好的结果呢?

重新训练生成模型吗?肯定不是!模型如何何时发布新版本,不是JetBrains 说了算!

下面就来看看 JetBrains 官方如何在不重新训练生成模型的情况下获得结果!

不能仅仅依赖 LLM 大模型

提供代码建议的 LLM,是 AI 驱动的代码完成的核心,但并不是全部。

代码补全的幕后发生了很多事情,尤其是在插件方面,比如决定:

  • 何时显示建议。
  • 建议应为单行或多行。
  • 显示或隐藏哪些建议。例如,建议可能在语义上不正确、得分过低、违反使用规则或不适当前语言等。

有时侯,定义筛选规则并不那么简单。

努力实现的目标

简而言之,JetBrains AI Assistant只向我们展示实际使用的建议。

这意味着那些不需要的建议(那些我们可以取消、编辑或删除的建议)不会失JetBrains AI Assistant代码完成功能的强大功能。

JetBrains AI Assistant在指标方面,努力追求:

  • 提高录取率。
  • 降低取消率和已编辑/已删除建议的百分比。
  • 保持或提高已完成代码的比率。

如何实现上面这一切呢?显而易见的答案是改进 completion 模型

改进 completion 模型

改进 completion 模型,就没有那么简单了!

训练更好的模型需要大量资源。这既昂贵又耗时。

官方不存储用户的代码,也就看不到哪里出了问题,也就无法分析不良的建议。

仅靠上下文是不够的。因为用户行为以及建议与附近线路的匹配程度等因素也很重要。

官方没有走上改进完成度LLM的漫长道路,而是采用了不同的方法:轻量级本地滤波器模型

轻量级本地滤波器模型

此模型在完成LLM项上运行,并使用匿名日志进行训练。

该模型通过分析以下内容来帮助决定是否应显示建议:

  • Context:文件/项目上下文(如使用的语言以及导入的数量和类型)和完成上下文(如描述插入点位置的功能)。
  • 用户行为 :键入速度和自上次键入以来所花费的时间。
  • 建议本身 :引用是否被解析,建议是否重复或与周围行相似,以及其他模型输出,如标记分数和标记熵。

轻量级本地过滤器模型的工作很简单:它根据用户的行为决定是接受还是拒绝建议

但是,官方在训练期间对模型进行了一些指导。特别重视明确的用户的行为动作,例如当您明确接受或取消建议时,如果您在接受建议后编辑或删除该建议,我们会将其视为不太成功 - 更改的越多,它的权重就越小

从技术上讲,轻量级本地过滤器模型是使用 CatBoost 构建的,效率高且不需要大量数据。

该模型经过专门设计,采用轻量级设计,经过训练后,它会变成一个紧凑的 2.5 MB 文件,并直接在用户的计算机上以 Kotlin 运行,在 1-2 毫秒内做出预测。

取得的成就

在官方的 EAP 中的 A/B 测试显示出很好的结果,而且它们还在变得更好。

过滤器模型将接受率提高了 ~50%,并将显式取消率降低了 ~40%,同时保持了完成代码的比率稳定。

目前,官方在 JetBrains IDE 2024.1 版本中正式推出了过滤器模型,适用于多种语言,包括 Java、Kotlin、Python、PHP、JavaScript/TypeScript、Go、CSS 和 Ruby。

JetBrains IDE 2024.1 之后的补全率已经明显提升~ 题外话说一句:最近 AI Assistant 的效果确实不错了,从小二哥这里购买的小伙伴也较之前多了~

官方激活在以后的版本中,介绍 C#、C++、Rust 和 HCL,以及使用 Python、Java 和 Kotlin 中的 Mellum 进行云补全的本地过滤器模型。

同时,本地代码完成模型和轻量级本地过滤器模型都在不断发展和改进。

学到了什么?

个人觉得 JetBrains 这一招棋走得非常牛逼!

即使LLM已经做得很好,也总有改进的余地。不然就不会持续又新版本出来啦!

另一个点是:对于我们应用层面来说,并不总是需要庞大、复杂的模型来产生影响。有时,巧妙地使用日志等额外数据可以解决问题。

期待 AI 驱动的代码补全走得更好、更远!

大家可以在下面的评论中分享您的想法哦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序视点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • JetBrains AI Assistant 代码补全
    • 不能仅仅依赖 LLM 大模型
    • 努力实现的目标
    • 改进 completion 模型
    • 轻量级本地滤波器模型
    • 取得的成就
    • 学到了什么?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档