AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

2023年 7月 12日 93.0k 0

一、背景介绍

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

咱们来聊聊AI智能编程代码助手这个话题吧。现在,越来越多的开发者都需要用到这个必备工具。当下主流的几个AI智能编程代码助手包括Github Copilot、Codeium、Tabnine、Replit Ghostwriter和Amazon CodeWhisperer。

你可能已经尝试过其中的一些,也可能还在不断寻找最适合自己或公司使用的编程助手。但是,这些产品都会使用精选代码示例来实现自我宣传,所以如果不亲身使用很难知道哪一个最好。

所以,在这次评估中,我们会从多个方面对这五种主流的AI代码助手(Github Copilot, Tabnine, Replit Ghostwriter ,Amazon CodeWhisperer和 Codeium)进行综合评估。我们会从不同的角度去评价每个产品:

  • 功能和价格:对于大部分功能相似的工具,价格无疑成为了其中一个重要标准。
  • 延迟时间:产品生成建议的速度有多快?
  • 建议质量:人工智能生成的建议有多好/准确/无Bug?

以下是对Github Copilot、Tabnine、Replit Ghostwriter、Amazon CodeWhisperer和Codeium的综合评估结果:

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

二、功能和价格

我们知道,开发人员几乎每天都在使用IDE工具,并且一直在寻找最佳解决方案。我们将从以下方面对比产品特点:

  • 有些产品对普通开发人员来说可能限制过多,使用时间也有限制;
  • 一些产品比其他产品更易用,操作界面更简洁直观;
  • 功能和扩展性是评估产品优劣的重要标准,尤其是针对复杂场景和需求的项目;
  • 稳定性和可靠性也是选择产品时需要考虑的因素之一,尤其是在高压力和长时间使用的情况下。

下面我们将就功能和价格两个方面对AI代码助手进行评估,来帮助开发人员选择最适合自己和公司使用的工具。

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

选 AI 代码助手要看能力和功能,不同公司定义可能不一样,所以要综合考虑。最基本的功能是单行和多行代码完成功能,但测试和评估延迟和质量等指标也很重要哦。

三、功能和价格总体评级

Codeium是一个AI代码助手,旨在普及、注重隐私保护和提供最优惠价格。它支持多种IDE和语言,并提供内置聊天功能。基于功能和价格,Codeium在这个方面排名最高。然而,这并不代表延迟或质量方面也最好。我们注意到其他竞品定价过高,使得它们对大多数全球开发者来说不可接受。

Codeium的使用费用与Github Copilot等竞品相似,因此存在市场竞争压力。虽然在一些细节方面存在差异,如IDE数量和支持语言,但这并不足以完全解释Github Copilot和Tabnine之间的区别。Replit Ghostwriter强制使用Replit IDE,且安全性和隐私方面不透明,所以排名较低。

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

四、延迟

代码自动补全的速度对于常用电脑的用户非常重要,需要尽可能快地显示建议内容。做大规模的模型推理时,我们暂停时间不能超过150毫秒,还需要考虑模型架构、训练数据和模型优化等因素。

为了让各种工具公平竞争,我们选择了一个相对标准的方法来测试它们的速度,每个工具都要使用新的/刷新后的IDE实例进行测试,以消除缓存的影响。如果用户需要建议但没有收到,我们会稍作延迟,模拟实际编程情况。

我们选择了一个经典问题-在Python中创建支持添加新节点和搜索数据的链表类,并编写一个测试。因为这个问题的答案很明确,所以可以用来测试各种工具的速度。

4.1、Github Copilot

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

在我们实际测试Copilot时,我们发现它没有在一些非常显然的地方提供建议。例如,在LinkedList类定义后的init中,并没有给出Node类的init的建议。此外,虽然insert是一个模糊的函数名称,因此Copilot只建议在头部添加节点而不是尾部。这并不是不合理的,但我们需要浏览几个建议才能找到我们想要的。这增加了使用时间,每次扫描多行代码都会消耗更多的时间。但是,Copilot的速度非常快。

4.2、Tabnine

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Tabnine的速度非常快,但它在建议中可能会添加一些我没有预料到的代码,例如超出当前方法范围(例如超出当前init定义)或打印结果而不是assert语句。话虽如此,在这个例子中,Tabnine的速度与其他工具一样快。Tabnine声称运行客户端上的小模型和远程的大模型的混合模式,因此在使用本地小模型时,就不会遇到任何网络延迟开销,并且可能会更快。当然,这样做会以质量为代价。

4.3、Replit Ghostwriter

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Ghostwriter的延迟通常是合理的。唯一感觉相对较慢的地方是当它决定逐行而不是整体或分块创建插入函数时。在我们期望有负面情况的建议但直到大部分输入完毕才获得时,延迟会增加。最后,还存在一些次要的质量问题,例如在搜索完成时添加一个不需要的删除函数定义并从搜索中返回节点而不是布尔值,但这些可以忽略作为延迟评估的一部分。

4.4、Codeium

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

与Copilot类似,Codeium在预期期间没有获得LinkedList类上的init,从而增加了整体体验的延迟。否则,Codeium在合理的延迟下提供准确的多行完成,并且测试的单行完成速度很快。值得注意的是,由于基础设施和扩展逻辑的改进,Codeium不再具有这些延迟问题。

4.5、整体延迟评级

总的来说,所有工具的建议生成延迟都在人类视觉反应时间范围内是合理的。实际上,整体使用体验中的许多差异是由于结果与预期不同导致的,比如我们期望会有建议,但却没有收到,或者必须编辑或删除接受的建议。因此,建议生成延迟没有显著变慢,而质量可能是对开发人员整体价值产生更大差异的因素。

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

五、质量

质量是一个非常主观的维度,但也是必须考虑的。不然谁都可以提供一个完全无用的快速演示功能。

为了消除偏见,我们从非Codeium产品的首页上找到一些推荐示例。这些精选示例可能是这些替代方案创造准确、无错误代码的更让人印象深刻的示例。虽然我们让Codeium处于劣势,但我们还将通过对工具和示例进行完整的交叉评估其他替代方案在非精选示例上的表现。

我们选择来自不同语言、自动补全用例和问题域的四个示例:

  • Github Copilot:外部API(TypeScript)
  • Github Copilot:数据库(Go/SQL)
  • Tabnine:机器学习/常用包(Python)
  • Replit Ghostwriter:样板/单元测试(Javascript)

5.1、外部API(TypeScript)

任务:在TypeScript代码中使用外部API,计算输入文本的情感是否积极。这是Github Copilot首页上的展示样例:

5.1.1、Github Copilot

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

我们期望Copilot在这个示例中表现很好。它是一个演示示例,可以通过在不同的外部端点之间循环选择来生成多个完全功能的方法体。真是干得好!

5.1.2、Tabnine

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Tabnine的表现并不是很好。它提供了一个本地主机URL的建议,因此没有通过建议API来完成任务,而且在建议前面添加了一堆不必要的字段和注释版本。

5.1.3、Replit Ghostwriter

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争AI配图魔改

Ghostwriter在查找URL方面表现良好,但需要明确提示它提取情感信息而不仅仅返回获取是否成功。

5.1.4、Codeium

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Codeium表现正常,与合理的外部端点预期一样工作,并且还添加了相应的错误处理!

5.2、数据库(Go / SQL)

任务:给定一个表结构和一个描述性的函数名,通过SQL查询计算聚合统计信息。同样来自Github Copilot首页:

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

5.2.1、Github Copilot

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

我们期望Copilot在这里表现良好,因为这是他们挑选出来的示例之一,正如我们所预期的那样,Copilot完全掌握了这个示例,并且不需要进行任何编辑。

5.2.2、Tabnine

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Tabnine在查询方面遇到了很大困难,没有展现出对表的语义理解,尝试创建CategorySummary对象中不存在的字段。同时,在需要添加错误处理的地方错过了一些细节,而在不必要的地方则试图添加它。总体来说,在这种情况下,我们对Tabnine的信心不高。

5.2.3、Replit Ghostwriter

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Ghostwriter首先尝试创建一个新表,然后推荐的查询甚至不是有效的查询,更别提正确解释createCategorySummaries的语义了(在不存在tasks列的情况下尝试选择任务)。一旦我们写出整个查询,Ghostwriter需要手动更改第一个错误处理,但之后结果看起来很好。

5.2.4、Codeium

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Codeium理解按类别聚合的概念,但错过了COUNT聚合(可能是因为它没有理解任务表中的行数等于汇总对象中的任务字段的语义)。除此以外其他方面表现良好,无需修改。更新:自从发布这篇文章以来,Codeium在Go和许多“罕见”的语言上的质量有所提高,这是由于对训练数据消毒和训练数据采样逻辑的改进。

5.3、机器学习/常用包(Python)

任务:经典的机器学习训练流程,包括数据加载、测试/训练分割、使用常用包(如sklearn)进行训练和生成评估结果。以下是在Tabnine主页上的示例:

5.3.1、Github Copilot

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Copilot在处理sklearn metrics方面遇到了导入问题,甚至在手动逃脱之后仍然进入了导入错误的循环。它还假设标签列是训练-测试分割中的最后一列,这不一定是错的,但肯定是一个假设。除此之外,结果看起来很好。

5.3.2、Tabnine

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

作为一个手工精选的示例,我们预计Tabnine在这个例子中表现良好,但是同样存在导入太多的sklearn metrics的问题,假设标签列位于最后一列,并且即使没有导入相关模块也使用了imports(如sklearn.metrics.meansquarederror)。总体而言,它的表现并不是特别出色。

5.3.3、Replit Ghostwriter

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Ghostwriter也在不断导入sklearn metrics,最后还尝试使用sklearn.metrics.meansquarederror工具,但没有实际导入。此外,训练-测试分割也不正确,因为pd.read_csv不返回带有值和目标属性的对象。在这个例子中,Ghostwriter的表现最不出色。

5.3.4、Codeium

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Deep TabNine并没有遇到导入问题或使用不存在的import,但假设Survived是标签列,则与Copilot或Tabnine不同。除此之外,结果符合我们的预期。

5.4、模板代码 / 单元测试(JavaScript)

任务:快速生成模板代码和单元测试代码,以节省打字时间。如Replit Ghostwriter演示所示:

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

5.4.1、Github Copilot

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

在这个任务中,Copilot遇到了一些困难。它提供的建议经常会重复早期部分,完全没有意义,但是即使在接受时,插入的代码与提议看起来完全不同。即使它给出了合理的建议,它们也会与现有的代码不正确地合并,从而生成需要手动删除的额外字符。我们期望测试的右括号和分号应该被建议,但最终我们还是不得不手动添加。使用Copilot在生成这个样板代码时,比起手动输入反而更加繁琐。

5.4.2、Tabnine

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

(作为警告,测试TextDecoderStream替换并不是Tabnine的问题,这只是我们本地Intellisense的问题)

对于Tabnine,在生成测试用例代码时,建议添加了一些与测试描述无关的测试用例,并且存在一些缩进错误。此外,像我们在链表示例中看到的那样,它似乎不理解“函数作用域”的概念,在这里建议应该在当前范围结束时结束。例如,我们期望建议在一个测试用例结束时结束,并在之后提供另一个建议开始一个新的测试用例,而不是把两个建议放在一起(强迫我们在键入我想要的部分和接受+删除我不想要的部分之间做出选择)。

5.4.3、Replit Ghostwriter

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

Ghostwriter在自己的示例中犯了一些很小的错误,比如在第二个测试用例中为参数添加了"done",但除此之外很干净。

5.4.4、Codeium

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

在这个任务中,Codeium表现符合我们的期望,除了测试用例的末尾缺少分号之外。

5.5、总体质量评级

经过主观评估,Github Copilot和Codeium在满足任务目标方面的一致性大致相同,需要手动干预的比例也相似。相比之下,Replit Ghostwriter的表现略低,而Tabnine的表现则较差,无法解决大部分任务,出现了大量错误,让它更像是一个干扰者而不是助手

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

六、总体评估

虽然这种方法不是很科学也不是很准确,但将各项评分相加是一种汇总指标。

AI编程工具Copilot、Tabnine、Codeium和CodeWhisperer之争

这篇文章比较了Copilot和Codeium,它们在使用场景和预算方面存在很大差异。如果您不介意支付每年100美元或者不需要在在线笔记软件或Web IDE(如Gitpod)等平台上使用,那么Copilot可能更适合您。虽然其他选项也很有潜力,但目前看来还不及Copilot。

我们还没有评估这些产品的增长潜力。Copilot已经存在了一年半,由OpenAI和Github共同推出,这两家公司可能在持续的开发方面没有对齐的动机。另一方面,Codeium在几个月内就赶上了,这主要归功于我们的完全垂直整合,可以跨整个堆栈做出决策优化,从而实现了非常流畅的体验。与Copilot不同,我们积极听取并采纳用户反馈,并建立了一个活跃的Discord社区。值得一提的是,自从发布该文章以来,Codeium还推出了自然语言搜索功能,更多功能即将推出。而Copilot的项目,如Copilot for X,还未从Beta版转入生产。

总之,这种评估方法本质上是有限的。虽然它可能在一定程度上改变您的观点,但我们认为,只有亲自尝试Codeium才能确信它是并将继续成为适用于您的情况的#1 IDE AI动力代码辅助工具。请记住,我们是免费的,安装时间不超过2分钟,因此请在我们的Web Playground中尝试,无需任何安装。如果您喜欢我们的内容,请点击下面的按钮获取Codeium。

七、如何选择

关于这几款AI编程辅助工具,在前面的文章中都有从功能和使用层面做过详细的介绍,需要做进一步了解实战的可以去合集中查看,从我的整体使用感受来看,总结几点如下:

1、如果有条件购买Github Copilot或者你所在的公司统一采购了Github Copilot企业服务,可以优先选择(对学生/开源贡献者免费)

毕竟Github背后的东家是微软,而GitHub Copilot是基于OpenAI(微软最大的投资者)的Codex模型在编写代码方面进行了改进和优化后开发而来的,具备优先结合GPT模型的天然优势。 同时Github作为全球主流的代码托管平台,开源社区之一,Copilot基本Github公共库代码进行训练,未来不管是产品增长方面还是资金扶持方面都具备很大的优势。

2、对于个人日常开发来讲,在具备Github Copilot同等能力的平替产品Codeium可以作为智能代码提示方面的首选。

Codeium不仅仅提供代码智能提示生成方面的能力,同时还提供了代码智能检索、智能聊天功能,其对于语言和IDE的支持目前来看应该是最丰富且完善的,而且还支持网页Notebook类应用的代码智能提示。 Codeium所使用的语言文本模型基于最新的自然语言处理技术自主研发,与Open AI公司代表的GPT模型不一样 Codeium由一群外籍华人团队成立的初创企业,其Exafunction团队也具备AI方面的背景,社区活跃度较高。

3、对于AWS最新发布的CodeWhisperer,在同类竞品中目前优势不明显,但不排除有后起之势。

可以先等待AWS后续版本推出,目前的版本体验不太好,延迟也比较高。

八、免责声明

首先,本文结合个人使用不同AI代码助手的实际感受和官网介绍的总结而来。对于产品对比评估,仅代表个人观点,供大家参考和学习交流之用。毕竟,只有真正使用过才权评价。AI领域发展迅速,同类产品层出不穷,如果不认真去尝试,会很难选择到适合自己所需的tools。

其次,这些产品都在快速地迭代和发展中,不断进行优化和改进,因此本文仅作为同类产品的对比参考,没有下结论。我们无法明确回答谁是NO.1、谁的质量最高、速度最快等问题。

相关文章

班迪录屏怎么取消截图水印设置
班迪录屏怎么改存储位置
bandicam录制的视频默认存储在哪
网易云音乐电脑怎么设置播放器样式
酷狗音乐如何创建歌单
酷狗音乐如何单曲循环播放

发布评论