共计 2719 个字符,预计需要花费 7 分钟才能阅读完成。
程序员们期待的愿望或许即将成真——用人工智能算法帮助自己编写代码。在今年 6 月,GitHub 与 OpenAI 携手推出了一款名为“GitHub Copilot”的人工智能工具。这款工具能够根据上下文信息自动补全代码,涵盖文档字符串、注释、函数名称等内容。只需编程者给出一些提示,Copilot 便能生成完整的函数。

令人惊叹的是,Copilot 正在不断升级。近日,在 GitHub Universe 2021 开发者大会上,GitHub 官方宣布,Copilot 已开始支持 Java、C、C++ 和 C# 等多种语言的多行代码自动补全,此外还增加了对 Neovim 及 JetBrains IDE 的支持,包括开发者常用的 IntelliJ IDEA 和 PyCharm 等编辑器。

据 GitHub 透露,现如今新创作的 30% 代码都是在 AI 工具 Copilot 的辅助下完成的。难道 Copilot 真的如此强大?在社交平台上,许多早期获得试用资格的博主分享了他们的使用体验。
当然,除了认真分享 Copilot 体验的博主,还有一些程序员因偷懒而被抓现行……
尽管 Copilot 展现出强大的能力,但与大部分人工智能工具一样,它是基于 OpenAI Codex 算法构建的,依赖大量代码进行智能训练。对于拥有微软背景的 OpenAI 和 GitHub 来说,这并不成问题。微软在 2018 年以 75 亿美元收购了全球用户超过 5000 万的代码共享平台 GitHub,这也意味着 Copilot 的 Codex 算法接受了数十亿行公共代码的训练。
在 Copilot 问世之前,OpenAI 已经推出了一个包含 1750 亿参数的 AI 模型——GPT-3。GPT- 3 在训练中耗费了数千万美元,涉及人类的诗歌、小说、新闻等海量自然语言(主要是英语),因此使得其具备了一定的自然语言理解能力。神经网络领域的先驱 Geoffrey Hinton 曾感慨:“生命、宇宙和万物的答案,其实只是 4.398 万亿个参数而已。”
Codex 是基于 GPT- 3 训练的,OpenAI 的联合创始人兼首席技术官 Greg Brockman 曾指出,Codex 是 GPT- 3 的继承者。因此,Codex 具备将清晰的英语指令翻译成代码的能力。有部分媒体甚至宣传 Codex 让程序员的门槛降低到只需会英语便可编写代码的程度。

在 Codex 的官方示例中,程序员只需在编辑界面输入“Make it be smallish”,上图中的大型飞船便会如图所示缩小,而整个过程无需编写一行代码,Codex 会自动生成程序。

如今,经过大量代码和资金训练出来的 Codex 能力已应用于 AI 工具 Copilot,使得其能够实现神奇的代码补全和函数建议等功能。然而,这也引发了一系列舆论争议。
随着 Copilot 的受欢迎程度不断上升,GitHub 的首席执行官 Nat Friedman 兴奋地说道:“每天都有数百名开发者在使用 Copilot。如果预览版的进展顺利,我们计划在未来某个时点将其扩展为付费产品。”
然而,Friedman 的这番话让 Copilot 的吸引力有所减弱。这意味着,经过 GitHub 和 OpenAI 的一系列操作后,收费的 Copilot 实际上利用了全球 5000 万用户在 GitHub 上积累的知识成果进行商业化。 其中引发争议的焦点在于 Copilot 的版权问题,尤其是开源代码衍生品的商业化 GPL 版权问题。GPL(通用公共许可证)是自由软件许可证的统称,旨在确保用户使用、研究、共享和修改软件的自由。与此相应,任何复制或派生的 GPL 版权作品都必须遵循相同或等效的许可条款。
简单来说,开源软件和代码可以被自由使用,但使用者也必须支持开源,其他人也可以免费使用你的代码或软件。Copilot 引发 GitHub 社区愤怒的原因在于其将开源代码转变为商业产品,忽视了早期促进编程语言世界开放、丰富的开源精神。许多程序员在社交媒体上公开表示,未来将不再使用 GitHub 托管自己的代码。

GitHub 官方则回应称 Copilot“通常不会精确复制代码块”,而有人认为 Copilot 的结果是经过海量代码 AI 训练后得出的,类似于人类在学习他人知识后的内化,因此很难将 AI 生成的代码简单理解为复制粘贴。
然而,许多人对此表示反对。在通过 Copilot 解决经典编程问题时,发现其几乎逐字复制了 GitHub 上的某段经典代码。这意味着,一旦 Copilot 成为商业产品,使用其生成代码的用户可能在将代码应用于自家产品时无意中违反 GPL 协议,面临被起诉的风险,因此已有一些科技公司明确禁止员工使用 Copilot。
Copilot 在实际应用中面临的挑战不仅如此。随着程序员对 Copilot 的深入了解,他们发现该工具并非完美,仍存在许多缺陷。Copilot 背后的 Codex 虽然经过大量文本和代码的训练,但由于吸收了网络中复杂多样的代码,其生成的部分代码可能并不理想,涉及隐私泄露和安全风险等问题。B 站的陈睿便遭遇了一次误报,虽然随后有网友指出其个人信息的出生日期不准确。

还有网友评论“Copilot 一时爽,调试火葬场”,因为清晰准确地描述目标函数期望实现的功能并不容易。同时,使用 Copilot 的过程中,需要不断检查 AI 生成的代码是否准确,这反而可能会打断编程时的思路。
目前,GitHub Copilot 仍处于免费试用阶段,互联网关于它的讨论仍在继续。随着 AI 工具的不断发展,人类未来将面临的类似问题只会越来越多。
” loading=”lazy” decoding=”async”>


看到Copilot能自动补全,真想问问那些老程序员们怎么想。