编程文汇

史上最强 AI 补代码工具 Deep TabNine

加拿大一名大四学生 Jacob Jackson 开发了一款名为“Deep TabNine”的自动代码补全工具,旨在帮助开发者提高编码速度。目前 Deep TabNine 可支持 Java、Python、C++ 及 Haskell 等多种编程语言。

Deep TabNine 的开发者利用 GitHub 上约 200 万个文件对它进行了训练,用前面的 token 来预测下一个 token。为了实现代码补全功能,Deep TabNine 学习了动态类型语言中类型推断等复杂行为。甚至是一些细微的线索 TabNine 也可以利用起来,比如假设 app.get_user() 的返回类型是一个带 setter 方法的对象,但 app.get_users() 的返回类型却是一个列表:

Deep TabNine 基于 GPT-2 构建,使用的是 Transformer 网络架构。这个架构最初被开发出来是为了解决自然语言处理领域存在的问题,尽管构建代码模型和构建自然语言模型看起来毫不相干,但构建代码模型是需要以一些意想不到的方式理解英语的。比如利用 if/else 语句让模型否定单词:

这个模型还能利用自然语言写的文档来推断函数名称、参数和返回类型:

此外 TabNine 还应许多用户的要求加入了先前就存在的知识,例如当一个类扩展 React.Component 时,它的构造函数通常会采用一个名为 props 的参数,且用 this.state 进行赋值。

Deep TabNine 甚至可以记住 C++ 可变转发句法:

Deep TabNine 需要大量算力,用户在笔记本电脑上运行这个模型则无法获得低延迟体验,因此开发者推出了 TabNine Cloud 服务方便用户使用。

阅读更多:https://tabnine.com/blog/deep