OpenAI 与微软 GitHub 联手推出 AI 代码生成工具,实现结对编程

6 月 30 日消息比 GPT-3 更强大!昨日,微软与 OpenAI 共同推出了一款 AI 编程工具 GitHub Copilot
,这款工具基于 GitHub 及其他网站的源代码,可根据上文提示为程序员自动编写下文代码

GitHub 的首席执行官 Nat Friedman 介绍说,GitHub Copilot 是结对编程的虚拟版本。结对编程是一种常见的敏捷软件开发技术 —— 即两个开发人员在同一个项目上并肩协作,轮流编写代码并检查合作伙伴的输出。

“它可以在编辑器中直接获提供多行或整个函数的代码建议。另外,随着时间的推移和使用量的增加,模型会变得越来越复杂,代码质量也会越来高。”

对于程序员来讲,一款编程工具最重要的当然是支持哪些类型语言。GitHub 在预告中说,Copilot 可以支持十几种语言,与 Python、JavaScript、TypeScript、Ruby 和 Go 等主流语言配合效果更佳

目前 GitHub 官网已经晒出了 Copilot 的功能介绍,我们来了解一下。

一、给力的结对编程伙伴

GitHub 表示,相比大多数代码助手,GitHub Copilot 可以理解更大范围的上下文。因此,无论是文档字符串、注释、函数名称还是代码本身,GitHub Copilot 都可以基于提供的上下文(已输入的代码)合成新代码以进行匹配。

如果真有如此可靠,那么正如 GitHub 所说,这项功能可以让程序员丢掉很多的文档阅读工作,从而专注于编辑器。

GitHub Copilot 还可以将注释转换为代码。只需要写一条评论,描述想要的逻辑,GitHub Copilot 就能自动“理解”并写出相应功能的代码。

GitHub Copilot 也能自动填充重复代码。GitHub 表示,GitHub Copilot 非常适合快速生成样板和重复代码模式。对于需要编写大量相似但难以转换为循环语句代码的程序员而言,这项功能非常“香”。

包办测试也是 GitHub Copilot 值得注意的亮点,GitHub 表示,测试是任何强大的软件工程项目的支柱,“导入单元测试包,就可以让 GitHub Copilot 自动编写与你的实现代码匹配的测试。”

对于相同的上下文,GitHub Copilot 可以给出多种解决方案,供程序员自主选择。

看到这里,小伙伴们是不是跃跃欲试了呢?可惜,GitHub Copilot 不是完全开放的,和 GPT-3 一样,只提供有限用户的试用体验。总之,先排队吧。

项目地址:http://copilot.github.com/

二、Copilot,专为编程而生

Brockman 介绍说,GitHub Copilot 的核心模型 Codex 借助了 GPT-3 强大的生成能力。

我们知道,GPT-3 是 OpenAI 推出的超大规模自然语言生成模型,早期训练 GPT-3 时,OpenAI 无意教它如何帮助编写代码,它更像是一种通用语言模型,主要用于文本生成、语法修改等任务。

后来 OpenAI 向公众开放 API,这个基于文本训练的模型,被网友们玩出了 50 多种花样,其中包括自动生成代码。OpenAI 意识到了 GPT-3 在编写代码方面的潜力,并在其网站上提供了在线“代码生成”服务。

几十年来,微软的研究人员一直在尝试如何教计算机编写代码,但未取得显著成果。此次与 OpenAI 合作,微软将提供了强大 Azure 云计算能力和 GitHub 平台(2018 年被微软收购)的大量语言编程代码。

关于这款产品的代码生成质量,Friedman 说,GitHub 员工已经做了大量尝试,能够确保 GitHub Copilot 生成安全、高质量的代码。他说:“我们已经在系统中建立了一些安全机制,这些机制在减少各个领域能够显著减少出错几率。”也就是说,GitHub Copilot 并不能保证完全不出错,它仍然只是一个辅助生成代码工具。

官网报道说,Copilot 的底层技术属于微软和 OpenAI 共有
,今年夏天 OpenAI 将发布 Codex 模型,供第三方开发者使用。微软也表示会发布该产品的一个版本,让企业通过培训了解自己的编程风格。但目前,微软只提供公共存储库中存储的代码的服务。

这不是微软第一次依靠 OpenAI 来提供智能软件。上个月,微软展示了 powerapps Studio 应用程序的更新服务,非技术人员可以使用它来编写应用程序 —— 用户输入他们想要添加的元素单词,GPT-3 可提供一些必要代码的选项。

三、网友讨论

GitHub Copilot 的发布在 Reddit 上引发了热烈的讨论,不少网友看好编码自动化的产业趋势,网友 @markbowick 说道:

毫无疑问,这将极大地提高大多数程序员的日常编程生产力,并且(我认为)这将是推动全球软件影响呈指数增长的最重要步骤之一。

值得注意的是,GPT-J(GPT-3 较小模型之一的开源实现)在大量 GitHub 和 StackExchange 查询存储库上进行了训练,并且在特定编程相关任务上的表现明显优于 OpenAI 的其它模型。在接下来的几个月里,我预期会看到性能更好的类似的(更大)模型。

也有人提出了质疑,网友 @laprika0 表示,GitHub Copilot 的测试方法令人担忧,“让 GitHub Copilot 建议与你的实现代码匹配的测试,但人们并不应该以这种方式写测试。”不少网友表示同意,并补充道,“如果实现代码有错误,那么 GitHub Copilot 将把错误引入测试中,从而影响测试效果。”

还有人则注意到关于代码所有权的问题,OpenAI 发表了一项声明,表示用户使用 GitHub Copilot 写代码时,代码片段和建议结果将与 GitHub 和 OpenAI 共享,并用于诊断目的和改进建议。同时,为保护隐私,GitHub Copilot 不会使用用户的私有代码来为 GitHub Copilot 的其他用户推荐代码。

网友 @touristtam 对此声明感到困惑,“他们是否拥有在用户启用 GitHub Copilot 时编写的代码?”