找回密码
 立即注册
查看: 1103|回复: 0

AI编程东西Copilot、Tabnine、Codeium和CodeWhisperer之间的竞争

[复制链接]

1

主题

0

回帖

23

积分

新手上路

积分
23
发表于 2023-5-20 20:06:58 | 显示全部楼层 |阅读模式
一、布景介绍



咱们来聊聊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的综合评估成果:


二、功能和价格

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

  • 有些产物对普通开发人员来说可能限制过多,使用时间也有限制;
  • 一些产物比其他产物更易用,操作界面更简洁直不雅观;
  • 功能和扩展性是评估产物优劣的重要尺度,尤其是针对复杂场景和需求的项目;
  • 不变性和可靠性也是选择产物时需要考虑的因素之一,尤其是在高压力和长时间使用的情况下。
下面我们将就功能和价格两个方面对AI代码助手进行评估,来辅佐开发人员选择最适合本身和公司使用的东西。


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

Codeium是一个AI代码助手,旨在普及、注重隐私庇护和提供最优惠价格。它撑持多种IDE和语言,并提供内置聊天功能。基于功能和价格,Codeium在这个方面排名最高。然而,这并不代表延迟或质量方面也最好。我们注意到其他竞品定价过高,使得它们对大大都全球开发者来说不成接受。
Codeium的使用费用与Github Copilot等竞品相似,因此存在市场竞争压力。虽然在一些细节方面存在差异,如IDE数量和撑持语言,但这并不足以完全解释Github Copilot和Tabnine之间的区别。Replit Ghostwriter强制使用Replit IDE,且安全性和隐私方面不透明,所以排名较低。


四、延迟

代码自动补全的速度对于常用电脑的用户非常重要,需要尽可能快地显示建议内容。做大规模的模型推理时,我们暂停时间不能超过150毫秒,还需要考虑模型架构、训练数据和模型优化等因素。
为了让各种东西公平竞争,我们选择了一个相对尺度的方式来测试它们的速度,每个东西都要使用新的/刷新后的IDE实例进行测试,以消除缓存的影响。如果用户需要建议但没有收到,我们会稍作延迟,模拟实际编程情况。
我们选择了一个经典问题-在Python中创建撑持添加新节点和搜索数据的链表类,并编写一个测试。因为这个问题的答案很明确,所以可以用来测试各种东西的速度。
4.1、Github Copilot



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



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



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



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

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


五、质量

质量是一个非常主不雅观的维度,但也是必需考虑的。否则谁都可以提供一个完全无用的快速演示功能。
为了消除成见,我们从非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



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



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



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



Codeium表示正常,与合理的外部端点预期一样工作,而且还添加了相应的错误措置!
5.2、数据库(Go / SQL)

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


5.2.1、Github Copilot



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



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



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



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

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



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



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



Ghostwriter也在不竭导入sklearn metrics,最后还测验考试使用sklearn.metrics.meansquarederror东西,但没有实际导入。此外,训练-测试分割也不正确,因为pd.read_csv不返回带有值和方针属性的对象。在这个例子中,Ghostwriter的表示最不超卓。
5.3.4、Codeium



Deep TabNine并没有遇到导入问题或使用不存在的import,但假设Survived是标签列,则与Copilot或Tabnine分歧。除此之外,成果符合我们的预期。
5.4、模板代码 / 单元测试(JavaScript)

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


5.4.1、Github Copilot



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



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



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



在这个任务中,Codeium表示符合我们的期望,除了测试用例的末尾缺少分号之外。
5.5、总体质量评级

颠末主不雅观评估,Github Copilot和Codeium在满足任务方针方面的一致性大致不异,需要手动干与干与的比例也相似。对比之下,Replit Ghostwriter的表示略低,而Tabnine的表示则较差,无法解决大部门任务,呈现了大量错误,让它更像是一个干扰者而不是助手


六、总体评估

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


这篇文章斗劲了CopilotCodeium,它们在使用场景和预算方面存在很大差异。如果您不介意付出每年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、谁的质量最高、速度最快等问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-12-22 12:51 , Processed in 0.065989 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表