当前位置:AIGC资讯 > AIGC > 正文

copilot平替tabnine解析

1.copilot

借着最近chatgpt大火的东风,copilot又重新火了一把。

什么是copilot?直接上wiki百科上的解释
GitHub Copilot是GitHub和OpenAI合作开发的一个人工智能工具,用户在使用Visual Studio Code、Microsoft Visual Studio、Vim、Cursor或JetBrains集成开发环境时可以通过GitHub Copilot自动补全代码。GitHub于2021年6月29日对开公开该软件,GitHub Copilot于技术预览阶段主要面向Python、JavaScript、TypeScript、Ruby和Go等编程语言。

简单来说,copilot是一个帮你写代码的利器,根据openai开发的gpt系列算法(目前已经接入gpt4),对代码进行自动补全,能大大提高开发人员的开发效率。

2021年6月29日,GitHub 宣布 GitHub Copilot 在 Visual Studio Code 开发环境中进行技术预览。
2021年10月26日,GitHub Copilot 作为插件在 JetBrains 市场上发布。
2021年10月27日,GitHub 发布了 GitHub Copilot Neovim 插件作为公共存储库。
2022年3月9日,Github官方宣布Copilot适用于Visual Studio 2022 IDE。
2022年6月21日,GitHub 正式宣布 Copilot 退出“技术预览版”,并作为基于订阅的服务提供给个人开发者。此外,GitHub 提到 Copilot 将继续“对经过验证的学生和流行开源项目的维护者免费”,并且在2022年晚些时候提供给公司。

2.tabnine

既然copilot听上去这么好,为什么没有直接使用呢。很简单,因为现在copilot已经收费了,而且价格不算太便宜。对于个人,GitHub Copilot 订阅按月或按年提供。 如果选择每月计费周期,则每日历月计费 10 美元。 如果选择每年计费周期,则每年计费 100 美元。 可以随时修改计费周期,修改将从下一个计费周期开始反映。

本着探索的精神,试着寻找一下copilot免费的替代方案。于是找到了一个优秀的平替工具:tabnine

tabnine的官网地址
tabnine官网

官网首页的介绍,简明扼要说清楚了tabnine的作用

AI assistant for software developers
Code faster with whole-line & full-function code completions

tabnine支持大部分主流的编程语言与主流IDE,具体可以参考官网,官网都有介绍。

3.intellij安装tabnine插件

以intellij为例,我们看看tabnine的实际使用效果

首先在intellij中安装tabnine插件,安装方法也很简单,跟安装其他插件完全一样,直接去插件市场中搜索tabnine然后安装即可。

安装完以后的效果。

重启IDE,然后就可以体会tabnine撸码的快感了。

tabnine分如下版本:
Basic code completion,主要功能包括Short code completions。
Pro版本,Advanced code completion,12$/month。主要功能包括Whole-line & full-function code completions,Natural language to code completions,Learns your coding patterns & style。
Enterprise版本,主要功能包括 Self-hosting,Centralized customization,Enforce policy。

我们先采用basic版本,可以免费使用。

4.快排测试

tabnine的使用方式也很简单,输入一部分代码以后,IDE里面会提示后续可能的代码。如果你想采用,直接按tab建就可以生成,特别简单方便!

以一个快速排序方法为例,来测试一下tabnine的效果
我们新建一个QuickSortTest的java类,然后输入public static int partit。注意没等我们将partition全输完,此时tabnine已经提示我们是不是要实现partition方法,包括方法的参数也已经提示出来,如图灰色部分所示。

此时我们只需要按下tab键,灰色部分的代码就在IDE中自动生成。

将partition方法后面的大括号分开,按下回车键,此时插件提示我们是不是要实现下面的代码,如图所示。

我们决定按另外的方式实现partition方法。输入int pivot = arr[low],然后换行输入while,此时插件提示我们后面的灰色代码部分,经检查确认,发现该部分代码完全准确无语,直接按tab键生成。

生成完上述代码以后,在while循环外头再生成必要的逻辑,完成整个partition方法,此时插件提示是否需要完成quickSort方法?果断按tab生成。

生成完以后,进入方法体中,此时插件又提示如下

代码完全准确无误,是我想要的,直接tab。

最后搞个main方法测试一下。

同样的按tab生成即可,最终生成的代码,完成正确可以输出最终结果!

5.小结

另外还测试了几个常见的case,都大同小异,基本一路按tab键就可以完成代码编写,大大提升了开发速度。

参考文献

1.https://zh.wikipedia.org/wiki/GitHub_Copilot

更新时间 2023-11-29