用AI算法帮程序员写AI算法?或许不少程序员“你已经是一个成熟的AI了,该学会自己补全代码了”的心愿就要实现。
在今年6月份,GitHub与Open AI一同合作,推出了一款名为“GitHub Copilot”的AI工具,Copilot可以根据上下文自动补全代码,包括文档字符串、注释、函数名称、代码,只要编程者给出一定提示,这款AI工具就可以补全出完整的函数。
GitHub Copilot官网
令人震惊的是Copilot还在不断进化。在近日举行的GitHub Universe 2021开发者大会上,GitHub官方表示Copilot已开始支持Java、C、C++和C#等语言的多行代码完成,并增加了Neovim和JetBrains IDE,包含开发者常用的IntelliJ IDEA、PyCharm等编辑器的支持。
Copilot运行范例;来源GitHub Copilot官网
GitHub表示,如今新写的30%代码都是在AI编程工具Copilot的帮助下完成的,Copilot真的如此强大吗?在社交网络中,已有不少早早拿到了Copilot试用资格的博主分享了他们使用Copilot的感受。
来源:微博截图
当然,除了认真写Copilot使用体验的博主,还有偷偷摸鱼被抓个现着的程序员……
来源:微博截图
Copilot虽然强大,但就和大部分人工智能工具一样,它仍是建立在OpenAI Codex算法的基础上,需要通过海量的代码来训练其智能程度。这对同样有着微软血统的OpenAI以及Github来说不是问题,微软在2018年斥资75亿美元收购了全球约有5000万用户的代码共享网站Github,这意味着Copilot所依托的Codex算法接受了数十亿行公共代码的训练。
事实早在Copilot诞生之前,OpenAI就推出1750亿参数的AI模型GPT-3,GPT-3耗费了千万美元对人类的诗歌、小说、新闻等海量自然语言进行训练(主要是英语),也因此GPT-3对自然语言具备了一定程度的理解能力。神经网络之父Geoffrey Hinton在GPT-3出现后,曾这样感慨:“生命、宇宙和万物的答案,其实只是4.398万亿个参数而已。”
Codex就是基于GPT-3进行训练,OpenAI 的联合创始人兼首席技术官Greg Brockman曾表示Codex是 GPT-3 的后代。因此Codex也具备了将部分指令清晰的英语翻译成代码的能力,甚至有部分媒体宣传Codex已经让程序员门槛降低到了只要会英语就能写代码的地步。
在官方示例的Codex效果展示中,程序员只需要在编辑界面写下“Make it be smallish”示例上图中的大型飞船就会如下图一般缩小,而在这个过程中程序员并不需要输入一行代码,Codex会自动编写车程序。
如今,Codex经过无数代码与金钱训练出来的强大能力应用到了AI工具Copilot上,这虽然造就了Copilot神奇的代码补全、给出函数建议等功能,但同时也使得Copilot陷入了系列舆论争议风波。
当Copilot受到越来越多程序员的欢迎,GitHub的CEO Nat Friedman兴奋地表示:“每天都有数百名GitHub的开发者在使用Copilot,如果预览版进展顺利的话,我们将计划在未来某个时候将其扩展为付费产品。”
Nat Friedman的这番话让Copilot一下没那么香了,这意味着经过GitHub和OpenAI的一波神操作后,收费的Copilot白嫖了全球最大的代码共享网站GitHub5000万用户的知识成果用来商业化。这其中引起争议的焦点就在于Copilot的版权存在开源代码衍生品商业化GPL版权问题。GPL(General Public License)即通用公共许可证,是一系列自由软件许可证的统称,它可以用来保证用户运行、研究、共享和修改软件的自由。与此对应的是,任何复制、迁移GPL版权的衍生作品都必须遵循相同或等效的许可条款。
简单来说就是,我是开源软件、开源代码你随便用没问题,但你只要用了就也得支持开源,其它任何人也可以免费使用你的代码或软件。Copilot引起GitHub社区人们公愤的关键就是其把开源代码洗成商业产品,无视了早期促进程序语言世界丰富、开放的开源精神,已有不少程序员在社交媒体上公开表示未来将不再使用GitHub来托管自己的代码。
GitHub官方则解释Copilot“通常不会精确复制代码块”,也有人认为Copilot通过海量代码AI训练最后得出来的结果就如同人类一样,人类前期也需要通过学习其他人的相关知识来内化成为自己的,很难把AI模型训练出来的代码简单的理解为复制粘贴。
然而已有不少人否定了这个说法,在通过Copilot解决程序中的一些经典问题时,会发现Copilot几乎一字不差的复制粘贴了GitHub上的某段经典代码。这意味着在Copilot成为商业产品后,使用Copilot的用户在把其代码应用到自家产品时一不小心就会中招违反GPL协议,面临被人起诉的风险,因此,已有一些科技公司已明确要求禁止员工使用Copilot。
Copilot在实际应用中面临的问题不止如此,随着程序员们对Copilot了解的逐步加深,他们发现Copilot并不完美,仍然存在着不少缺陷。Copilot背后的Codex既经过大量文本语言训练,也吸收了网络世界中鱼龙混杂的海量代码,因此Copilot输出的部分代码或许看出去没有那么美好,有着隐私泄露、安全风险等问题。B站大佬陈睿就躺枪了一次,虽然立刻有网友表示其中出生年月日信息有误。
也有网友表示“Copilot 一时爽,调试火葬场”,因为想要清楚、清晰的描述出目标函数想要实现的功能并不简单,同时在使用Copilot的过程中,需要不断去回顾检查AI生成的代码是否正确,这反而容易干扰到编程时的原有思路。
来源:微博截图
目前,GitHub Copilot还处于未收取任何费用的申请试用阶段,互联网上关于它的争论也还在继续,随着AI工具日益强大,人类将来面对的类似问题只会越来越多。
本文来自微信公众号“品玩”(ID:pinwancool),作者:洪雨晗,36氪经授权发布。