出品 | AI科技大本营(ID:rgznai100)
在近日发表的一篇论文中,研究人员对 GitHub Copilot 人工智能编程辅助工具进行了深入调查。结果发现,仍处于测试预览阶段的 Copilot 具有高达 40% 的错误代码率,意味着开发者必须在使用时对其保持清醒的认知。此外在多场景测试项目中,约 40% 都被发现包含了安全漏洞。
AI 编程神器 GitHub Copilot
此前,GitHub 和 OpenAI 推出一种新人工智能自动编程工具 Copilot ,能自动生成代码,供开发者参考使用。
官方宣传语为“你的 AI 结对编程助手”。
什么是结对编程呢?
结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。
在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。
那么AI结对编程就是人机结对编程的升级版,具体来说 GitHub Copilot 由 OpenAI Codex 提供支持,可以从开发者已经编写的代码和注释中提取上下文,试图理解开发者意图,生成需要添加的一行、多行代码或整个函数,当程序员接受或拒绝建议时,模型就会学习越来越适应和匹配开发者的编程风格。
这使得程序员无需在写代码时去查阅大量文档或搜索相关示例,更加聚焦于开发工作本身。
正如 OpenAI 员工 Harri Edwards 所言:“用一种不熟悉的语言编写代码,用谷歌搜索所有东西,就像用一本短语手册去浏览一个外国国家。而使用 GitHub Copilot ,好比雇佣一名翻译。”
GitHub 首席执行官在 6 月 29 日的一篇博客文章中称:
OpenAI Codex 对人们如何使用代码有着广泛的了解,且在代码生成方面较 GPT-3 强大得多,部分原因是其在包含大量公共源码的数据集上展开了训练。
GitHub Copilot 适用于多种语言框架,但现阶段的技术预览版本更侧重于 Python、JavaScript、TypeScript、Ruby 和 Go 语言。
然而 Copilot 很快引发了多方争议,尤其涉及代码质量、法律与道德考量、替换人类开发者的可能性、以及引入安全漏洞的可能性。
GitHub Copilot 的代码质量如何呢?
近日,康奈尔大学的研究人员公布了一项数据,为了对 Copilot 的实际价值做出量化,他们为 GitHubCopilot 生成了 89 个不同的场景,生成了 1692 个程序。其中,大约 40% 的程序存在安全漏洞。
具体说来是,这项研究从三个维度展开了考量,分别是缺陷的多样性、prompt 的多样性、以及领域的多样性。
总体而言,头部 39.33% 和总体 40.48% 的项目易受攻击。从安全角度来看,Copilot 在测试场景中的表现也有好有坏。
对于新手来说,Copilot 借鉴的高质量代码还是相当值得推荐的。但若开源存储库中的某些错误相当明显,Copilot 也会更加频繁地重现。
研究人员表示,由于 Copilot 是利用 GitHub 上提供的开源代码进行训练的,因此可以推断,代码安全质量取决于 GitHub 社区的开源代码质量。
在 GitHub Copilot 推出后,有关于它的负面消息这并不是第一次。
就在其发布不到一周的时间里,GitHub Copilot 就被推上了侵权的风口浪尖,引发了前所未有的争议。
原因是有位程序员尝试了一下平方根倒数速算法(Fast Inverse Square Root),结果只是打出来这四个关键词。
代码语言:javascript复制floatQ_rsqrt( float number )
{
long i;
float x2, y;
constfloat threehalfs = 1.5F;
x2 = number * 0.5F;
y = number;
i = * ( long * ) &y; // evil floating point bit level hacking
i = 0x5f3759df - ( i >> 1 ); // what the fuck?
y = * ( float * ) &i;
y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
return y;
}
GitHub Copilot 就逐行“完美复刻”了当年那段神奇的算法,甚至连当时的原版注释都被保留下来。
甚至GitHub Copilot连当年那句“what the fuck”的注释也用上了。
这种现象引起了大量开发者的不满,这不禁让人细思极恐:难道这不侵犯版权吗?
结 语
关于 GitHub Copilot 代码的事情,在 Hacker News 论坛上引起热议。
一家科技公司的产品安全负责人明确表示:禁止员工使用GitHub Copilot。
不过,也有程序员表示,我用 AI 写的程序关我什么事,有责任那也是 GitHub 母公司微软的。
尽管 AI 编程有很多争议,但脚步从未停止。今年八月,OpenAI 宣布开发一种将自然语言转换为编程代码的人工智能系统 —— Codex。
Codex 是建立在 Copilot 之上,Codex 通过接收用英语编写的句子并将它们翻译成可运行的代码,换句话说,它是可以将自然语言转换为代码的 AI 系统,这意味着 AI 编程的概念又往前进了一步。
对此,OpenAI 称 Codex 让计算机能够更好地理解人们的意图,从而让每个人都可利用计算机来实现更多目的。
那么,AI 写代码究竟可行不可行呢?
参考链接:
https://news.ycombinator.com/item?id=27710287
https://github.com/id-Software/Quake
https://arxiv.org/abs/2108.09293
https://www.techradar.com/news/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims