乘风破浪,遇见下一代编程开发伴侣Github Copilot - 你的AI结对编程助手,编码自动化产业新趋势
什么是Github Copilot
如今,已有超过7300万开发人员在使用GitHub,Copilot是Github新四大支柱之一,AI编程工具Copilot与网页版开发环境Codespaces,让我们看到了软件开发云原生(cloud-native)与AI融合的未来。
2021年6月份,GitHub联合OpenAI,推出了一款"GitHub Copilot"工具,可以根据上下文自动写代码,包括文档字符串、注释、函数名称、代码,只要用户给出提示,就可以写出完整的函数。
该工具此前仅支持Visual Studio Code,在GitHub Universe 2021开发者大会上,GitHub官方宣布了Copilot的更新,已支持Neovim
和JetBrains IDE
,包含开发者常用的IntelliJ IDEA、PyCharm等。
要想使用GitHub Copilot,用户需将IntelliJ IDEA和PyCharm升级到2021.2或以上版本;而Neovim的版本则需为0.6或以上版本,并且需要安装Node.js v12或以上版本。
GitHub Copilot还增加了对Java中多行补全的支持,并在未来几个月内支持更多语言。目前,GitHub Copilot支持Python
、JavaScript
、TypeScript
、Java
、Ruby
和Go
等编程语言。
Github内部的应用(>30%)
开源软件托管平台GitHub近期表示,目前在GitHub网站上多达30% 的新代码是在该公司的AI编程工具Copilot的帮助下完成的。Copilot可以查看人类程序员编写的代码,并执行建议行数和替代代码的工作,消除了编码中的一些重复性劳动。
Copilot建立在
OpenAI Codex
算法的基础上,该算法是经过数TB的公开源代码训练出来的,可以将人类语言编译为编程语言,并作为程序员可使用的一个的自动化完成工具。
GitHub Next的副总裁Oege de Moor表示:
"我们从用户那里听到很多声音,在使用Copilot后,他们的编程过程发生了明显的变化。"
GitHub将在当地时间10月27日的GitHub Universe会议上宣布,推出对所有流行编程语言的Copilot支持。Oege de Moor表示:
"此举将会把这项技术带给更多的人,这是GitHub之前宣称的‘让2亿下一批开发者学会编程’的一部分。"
Oegede Moor还指表示,Copilot在GitHub社区里很有吸引力,自7月推出Copilot以来,50%尝试过该产品的开发者就一直在使用它。与OpenAI的大规模文本所生成的自然语言AI模型GPT-3不同,Copilot在改善人类工作方面要更有效。
就和任何算法一样,Copilot的数据建模依赖于其训练数据的质量,在一项研究中纽约大学的学者们发现Copilot所撰写的代码中还是存在40%的网络安全缺陷。
给力的结对编程伙伴
GitHub Copilot是结对编程的虚拟版本。结对编程是一种常见的敏捷软件开发技术——即两个开发人员在同一个项目上并肩协作,轮流编写代码并检查合作伙伴的输出。
GitHub表示,相比大多数代码助手,GitHub Copilot可以理解更大范围的上下文。因此,无论是文档字符串、注释、函数名称还是代码本身,GitHub Copilot都可以基于提供的上下文(已输入的代码)合成新代码以进行匹配。
如果真有如此可靠,那么正如GitHub所说,这项功能可以让程序员丢掉很多的文档阅读工作,从而专注于编辑器。
GitHub Copilot还可以将注释转换为代码。只需要写一条评论,描述想要的逻辑,GitHub Copilot就能自动“理解”并写出相应功能的代码。
GitHub Copilot也能自动填充重复代码。GitHub表示,GitHub Copilot非常适合快速生成样板和重复代码模式。对于需要编写大量相似但难以转换为循环语句代码的程序员而言,这项功能非常“香”。
包办测试也是GitHub Copilot值得注意的亮点,GitHub表示,测试是任何强大的软件工程项目的支柱,“导入单元测试包,就可以让GitHub Copilot自动编写与你的实现代码匹配的测试。”
对于相同的上下文,GitHub 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来提供智能软件。上个月,微软展示了Power Apps Studio应用程序的更新服务,非技术人员可以使用它来编写应用程序——用户输入他们想要添加的元素单词,GPT-3可提供一些必要代码的选项。
体验Github Copilot
申请体验资格
目前这个服务还处于技术预览期,没有完全对外开放,如果需要体验的话,得前往官网Github Copilot,点击Sign Up
,申请体验资格,和自己的Github账号绑定并且提交了相关信息之后,等待审批通过即可,通过了,他们会发邮件告诉你的。
安装Visual Studio Code插件
打开Visual Studio Code的扩展库,搜索关键词Copilot
,找到Github Copilot这个插件,安装即可。
然后需要通过你的Github账号授权来登录Visual Studio Code哈,这样关联一下。
这里安装了不代表就可用了,前提还是你要完成前面的那个申请资格才行。
如果它处于可用状态,那么会有个小图标位于Visual Studio Code的下方。
使用Github Copilot AI助手
前面提到Github Copilot已经支持Javascript语言了,接下来我们可以新建一个JavaScript (.js)
文件。
然后我们只需要写一个函数的定义部分,看看AI会怎么帮我们推测这个函数的实现。
function calculateDaysBetweenDates(begin, end) {
我们看到Copilot AI会帮助我们自动推荐这个函数的实现,是不是很棒,如果你觉得欧克的话,按Tab键就行了。
它会根据你的上下文来推测你要写什么代码,这比之前简单按语法来推测高级多了,Copilot AI完全就是在猜你要实现什么功能,接下来怎么写,交给它就好了。
如果你觉得默认给你的这段代码实现,你不是很满意,你还可以通过Ctrl
+ Enter
要求它给出更多的建议。
另外,还可以从你的代码注释来直接生成代码。
我们先假装写个注释吧
// find all images without alternate text
// and give them a red border
function process() {
接下来看看Copilot AI会有什么反应,惊叹吧,它能根据你写的注释来理解你要表达的功能细节,来组织实现最终的代码,这简直是人机对话。
Windows 11 / Github Copilot 爱好者交流群
参考
- https://copilot.github.com
- GitHub AI 编程工具 Copilot 已支持 IntelliJ IDEA、PyCharm 等
- GitHub 换帅:开源大神辞任 CEO,竞品 GitLab 刚完成 IPO
- 让 AI 为你写代码 - 体验 Github Copilot
- GitHub:其网站上 30% 新代码是在 AI 编程工具 Copilot 帮助下完成的
- 研究人员:由微软 GitHub Copilot 自动生成的代码中,有 40% 存在漏洞
- 微软 GitHub 推出 AI 编程工具 Copilot,自由软件基金会强烈不满,质疑其侵犯代码版权
- OpenAI 与微软 GitHub 联手推出 AI 代码生成工具,实现结对编程