近几年,人工智能迅速发展,在各行各业都有所应用,特别是近两年,面向开发者的AI开发工具也是层出不穷,从这些工具中,我们看到了AI能为开发者带来的无限可能性。本系列文章主要介绍国外的Kite、Codota、TabNine、GitHub Copilot、微软IntelliCode,国内的阿里云Cosy、AIXcoder等程序员比较常用的智能编码辅助工具,并会在后续的文章中做一些更为详细的偏个人使用感受的对比评测。
本篇文章我们来看看比较老的一款工具Kite,官网主页:
Kite - Free AI Coding Assistant and Code Auto-Complete Plugin
说到业界在代码智能补全领域发布最早的工具,Kite便是其中之一,它成立于2014年,在Atom/Vim/Spyder等编辑器发布代码智能提示插件,初期只面向Python开发者,当前扩展到面向绝大部分主流开发语言。并于2020年初发布JetBrains插件,2021年初发布VSCode插件。
Kite支持目前主流的16种开发语言以及16种代码编辑器,但是从我的使用体验上来看,其最擅长的还是Python语言,毕竟是Kite最早支持的语言类型。不知道为什么官方主页关闭了下载安装的入口,但是依然可以在各IDE的插件市场安装。
支持功能
1、代码智能补全
- 远程服务模式,代码需要上传到远程服务器
- 离线模式,能够把模型下载到用户本地,无法联网也可使用补全
- 专业版能针对用户的代码库进行训练
2、代码搜索(支持Python)
- 支持Python API的官方文档及少量示例
官方演示
从官方视频中可以看到,Kite对Python语言提供了长序列的补全结果,只需要输入少量字符,就能完成多个API的输入。
从上图中可以看到官方从键盘敲击次数这个维度,将Kite与IDE自带的补全进行了编码速度的对比,Kite确实要快很多,但是官方用的IDE补全结果不是很好,如果换成PyCharm,IDE自带代码补全的编码效率也会提升很多。
使用体验
由于Kite主打的是Python语言,所以我主要在PyCharm中进行试用,Kite需要先安装一个独立应用(目前Kite官网不知道什么原因,已经关闭了下载入口),通过该应用向各种IDE安装插件,这个独立应用时不时会自动弹出来,是比较烦人的。
Kite最主要的功能是代码智能补全,从补全效果来看,它不擅长生成长序列代码片段,生成出的最长代码通常只有两到三个单词,但是它最主要的亮点在于它能对IDE自带的补全结果进行整体的排序优化,我们知道IDE自带的补全效果是比较一般的,很多只是根据API名称进行简单的排序,稍微好一些的会根据使用的频率进行排序,而Kite会结合代码的上下文,根据开发者的需求,将开发者更可能用到的API排在最上面,从而减少开发者的输入。但是这种方式带来的体验提升有限,跟PyCharm自带的补全差别不会很大,特别是PyCharm的新版自带了基于机器学习的排序优化。
我们先来看看Kite在Python语言的表现:
1)Kite根据上文能自动补出Flask的导入,但是第三项只补了一半。
2)补全结果中只带有Kite Logo的是Kite生成的结果,如果是Kite Logo与IDE自带图标的混合,表示是Kite对IDE结果进行了排序优化,我们可以看到Kite能生成 app = Flask(name) 这种长序列的代码,但是排序比较靠后。
3)从下面的示例中可以看到Kite生成了比较多的结果,总体还是不错的,但是像rule、list 这两个变量是不存在的,需要开发者删掉自己写,这个问题也是诸多代码补全工具的共性问题。由于它们会从开源代码中学习到诸多模式,但是这些模式不一定适合本地工程,就很容易生成在本地工程中存在语法错误的代码。
我们再来看看在Java语言的表现:
在其他语言上,Kite的表现就不太理想了,比如在Java上会提供很多错误的补全结果,而且大部分也只有单API的补全结果,基本上与IDE补全结果差别不大。
1)比如下图中Workbook是一个接口,是不能直接new的,这里应该生成XSSFWorkbook才是正确的结果。
2)在填充参数时,Kite重复生成了两个inputStream。
3)在下图示例中,Kite提供了长序列的代码补全结果,而IDE只提供了workbook单个变量的结果,但是Kite提供的方法调用缺少括号,并且无法自动填充参数。
我们在来看看Kite的文档搜索功能。
Kite提供了Python API的官方文档搜索,包含指定API的描述、参数介绍、少量的代码示例,对于不太熟悉的API,使用Kite的API文档搜索能免去查找官方文档的时间,但是由于代码示例仅限于官方提供的,所以有很多API缺乏使用示例,即使看到API的描述及参数介绍,可能也不明白如何使用。
总体来说,Kite适合Python开发者,毕竟Kite是以Python起家,在Python语言上打磨了很多年,虽然不像其他同类工具一样,能提供非常惊艳的长序列代码补全,但是它对IDE自带补全的排序优化效果还是很不错的。Kite的API文档搜索能搜索到常用的Python API官方文档,但是大部分能在IDE中通过查看API定义查看,代码的使用示例比较缺乏。
Kite就为大家介绍到这里,文中如有纰漏欢迎指正,有兴趣的小伙伴可以在IDE插件市场通过搜索Kite安装体验,欢迎大家在评论中交流反馈。