GitHub和OpenAI发布新AI代码补全工具Copilot

AI编程助手Copilot:由微软、OpenAI、GitHub联合打造。

机器之心报告,机器之心编辑部。

GitHub Copilot 是一个 AI 代码合成器,而不是一个搜索引擎:它提出的绝大多数代码建议都是新生成的,以前从未见过。

简而言之,这就是未来。

在项目开发中,优秀的代码自动补全工具可以提高工作效率。但是传统的IDE基本都是使用搜索的方式补全,在某些场景下效果不佳。

今天,GitHub 和 OpenAI 联合发布了新的 AI 代码补全工具 GitHub Copilot,并展示了技术预览。该工具可在 VS Code 编辑器中自动完成代码片段,是 OpenAI 自接受微软 10 亿美元投资以来的第一个重大成就。

目前,GitHub Copilot 项目只是一个严格的技术预览版。用户可以在主页上注册,并将有机会访问试用版。

GitHub Copilot 注册地址:github.com/features/copilot/signup

对于 GitHub 和 OpenAI 推出的这款全新的 AI 代码补全工具,网友给出了极高的评价。下面这个用户可以大致代表大部分试用用户的心声。“我已经使用 alpha 版本两周了,我很惊讶 Copilot 似乎确切地知道我接下来要输入什么,”ta 说。有时它甚至会建议我正在寻找什么,例如选择随机代码的随机十六进制片段或具有所有常见图像 mime 类型的完整数组。此外,Copilot 在处理 React 组件时特别有用,可以做出非常准确的预测。最后,Copilot 改变了程序员记录自己代码的方式。如果你在实现代码之前编写非常好的描述性注释,更善于建议正确的代码,有时甚至会为你编写整个函数。”

MSFTResearch 高级研究员 Alex Polozov 表示:毫不夸张地说,Copilot 将成为 2020 年代技术进步的前三名!

甚至有网友表示:这是要结束编程吗?

图片[1]-GitHub和OpenAI发布新AI代码补全工具Copilot-唐朝资源网

但是,尽管用户对 Copilot 提供的生产力提升赞不绝口,但 GitHub 还表示,并非所有使用的代码都经过了漏洞、不安全做法或个人数据的审查。因此,他们还设置了一些过滤器来防止 Copilot 生成攻击性语言,效果可能并不完美,未来需要改进。

Copilot 背后的技术

首先,在训练数据上,GitHub Copilot 接受了数十亿行公共代码的训练。

从技术角度来看,GitHub Copilot 工具由 OpenAI Codex 提供支持,这是一种由 OpenAI 开发的新 AI 系统。“Codex 是 GPT-3 的后代,”OpenAI 的联合创始人兼首席技术官 Greg Brockman 说。

图片[2]-GitHub和OpenAI发布新AI代码补全工具Copilot-唐朝资源网

OpenAI Codex 对人们如何使用代码有广泛的了解,并且在代码生成方面明显优于 GPT-3,部分原因是该系统是在包含大量开源代码的数据集上进行训练的。更具体地说,Codex 的训练集包含从 GitHub 中提取的 TB(兆兆字节)公开可用代码以及英语示例。

因为它是在公开可用的源代码和自然语言上进行训练的,所以 Codex 既可以理解编程语言,也可以理解人类语言。因此,在整个实施过程中,Copilot 编辑器扩展将开发人员的评论和代码发送到 Copilot 服务器,然后 Copilot 服务器使用 Codex 生成和建议单行代码和整个功能。

图片[3]-GitHub和OpenAI发布新AI代码补全工具Copilot-唐朝资源网

此外,据 OpenAI 的一位代表透露:OpenAI 计划在今年夏天推出基于其 API 的 Codex 版本,以便开发人员可以使用该技术创建自己的应用程序。

在具体实现中,GitHub Copilot 从编写的代码中提取上下文并建议整行代码或整个函数。该工具可帮助开发人员快速发现解决问题、编写测试和搜索新 API 的替代方法,而无需在网络上进行繁琐的定向搜索以寻找答案。

此外,使用 GitHub Copilot源码怎样生成软件,开发人员始终处于控制之中,可以循环浏览 Copilot 的代码建议,选择接受或拒绝它们,并手动编辑这些代码。Copilot 适应开发人员所做的编辑并适应编码风格。

GitHub Copilot 可用于多种框架和语言,但此处显示的技术预览特别适用于 Python、JavaScript、TypeScript、Ruby 和 Go 语言。GitHub 将该工具视为结对编程的一项重大进步,程序员在编写代码时有一个“虚拟助手”,可以捕捉程序员的错误并加快开发过程。

那么 Copilot 是如何工作的呢?

近日,Github 对开源库中一组测试覆盖率良好的 Python 函数进行了基准测试,测试团队清理了函数体,并要求 GitHub Copilot 填充它们。该模型在第一次尝试时正确率为 43%源码怎样生成软件,在 10 次尝试后正确率为 57%。之后,GitHub Copilot 会进行多次训练和测试,准确率会进一步提升。

接下来我们看一下GitHub给出的具体demo展示。

副驾驶完成效果

与市面上的一些编程辅助工具相比,Copilot 的语境理解要强很多。无论是在文档字符串、注释、函数名称还是代码主体中,Copilot 都会根据程序员编写的上下文生成匹配的代码。

下面我们来看看 Copilot 的主要功能——代码补全的效果。以 TypeScript 语言为例,给定函数名和参数,Copilot 可以自动完成代码。

除了补全功能,Copilot 还可以根据注释编写代码。程序员给出描述代码逻辑的注释,GitHub Copilot 可以自动生成代码:

在编程过程中,有些代码在格式和内容上非常相似,重复编写既费时又乏味。现在 GitHub Copilot 可以帮助程序员解决这个问题,将简单重复的编码部分自动化:

在软件开发的过程中,除了编写代码之外,软件测试对于一个代码项目的支持也是非常重要的。导入一个测试包,GitHub Copilot 可以为开发者做剩下的测试代码。

在编程中,同一个功能往往有多种实现方式,程序员通常会根据代码的实现效果和运行性能选择最合适的方式。编写多个实现需要时间和精力。现在您可以使用 GitHub Copilot 一键完成。如下图,点击Next和Previous可以查看多种实现方式,点击Accept选择其中一种。

今天 GitHub 推出的 Copilot 技术预览版也仅限于 Python、JavaScript、TypeScript、Ruby 和 Go 语言。此外,开发团队表示,在努力使其变得更好的同时,GitHub Copilot 完成的代码应该像任何其他代码一样经过仔细审查和测试。这些仍然需要人类程序员的监督和优化,但人工智能自动编程的愿景指日可待。

参考链接:github.blog/2021-06-29-introducing-github-copilot-ai-pair-programmer/

¥news.ycombinator.com/item?id=27676266

reddit.com/r/MachineLearning/comments/oaambv/n_github_and_openai_release_copilot_an_ai_pair/

theverge.com/2021/6/29/22555777/github-openai-ai-tool-autocomplete-code

© 版权声明
THE END
喜欢就支持一下吧
点赞121赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容