什么是Github Copilot

如今,已有超过7300万开发人员在使用GitHub,Copilot是Github新四大支柱之一,AI编程工具Copilot与网页版开发环境Codespaces,让我们看到了软件开发云原生(cloud-native)与AI融合的未来。

image

2021年6月份,GitHub联合OpenAI,推出了一款&34;GitHub Copilot&34;工具,可以根据上下文自动写代码,包括文档字符串、注释、函数名称、代码,只要用户给出提示,就可以写出完整的函数。

image

NeovimJetBrains IDE

image

要想使用GitHub Copilot,用户需将IntelliJ IDEA和PyCharm升级到2021.2或以上版本;而Neovim的版本则需为0.6或以上版本,并且需要安装Node.js v12或以上版本。

PythonJavaScriptTypeScriptJavaRubyGo

Github内部的应用(>30%)

开源软件托管平台GitHub近期表示,目前在GitHub网站上多达30% 的新代码是在该公司的AI编程工具Copilot的帮助下完成的。Copilot可以查看人类程序员编写的代码,并执行建议行数和替代代码的工作,消除了编码中的一些重复性劳动。

image

OpenAI Codex

GitHub Next的副总裁Oege de Moor表示:

&34;我们从用户那里听到很多声音,在使用Copilot后,他们的编程过程发生了明显的变化。&34;

GitHub将在当地时间10月27日的GitHub Universe会议上宣布,推出对所有流行编程语言的Copilot支持。Oege de Moor表示:

&34;此举将会把这项技术带给更多的人,这是GitHub之前宣称的‘让2亿下一批开发者学会编程’的一部分。&34;

Oegede Moor还指表示,Copilot在GitHub社区里很有吸引力,自7月推出Copilot以来,50%尝试过该产品的开发者就一直在使用它。与OpenAI的大规模文本所生成的自然语言AI模型GPT-3不同,Copilot在改善人类工作方面要更有效。

就和任何算法一样,Copilot的数据建模依赖于其训练数据的质量,在一项研究中纽约大学的学者们发现Copilot所撰写的代码中还是存在40%的网络安全缺陷。

给力的结对编程伙伴

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

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

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

image

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

image

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

image

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

image

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

image

专为编程而生

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

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

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

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

image

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

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

image

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

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

体验Github Copilot

申请体验资格

Sign Up

image

image

安装Visual Studio Code插件

Copilot

image

然后需要通过你的Github账号授权来登录Visual Studio Code哈,这样关联一下。

image

这里安装了不代表就可用了,前提还是你要完成前面的那个申请资格才行。

如果它处于可用状态,那么会有个小图标位于Visual Studio Code的下方。

image

使用Github Copilot AI助手

JavaScript (.js)

image

然后我们只需要写一个函数的定义部分,看看AI会怎么帮我们推测这个函数的实现。

function calculateDaysBetweenDates(begin, end) {

image

我们看到Copilot AI会帮助我们自动推荐这个函数的实现,是不是很棒,如果你觉得欧克的话,按Tab键就行了。

它会根据你的上下文来推测你要写什么代码,这比之前简单按语法来推测高级多了,Copilot AI完全就是在猜你要实现什么功能,接下来怎么写,交给它就好了。

CtrlEnter

image

另外,还可以从你的代码注释来直接生成代码。

我们先假装写个注释吧

// find all images without alternate text
// and give them a red border
function process() {

接下来看看Copilot AI会有什么反应,惊叹吧,它能根据你写的注释来理解你要表达的功能细节,来组织实现最终的代码,这简直是人机对话。

image

Windows 11 / Github Copilot 爱好者交流群

image

参考