本报见习记者邵文
近日,GitHub、GitHub的母公司微软和OpenAI联合推出了GitHub Copilot的技术预览版,这是微软向OpenAI投资10亿美元后的首个重大成果。
GitHub Copilot在官网被描述为“你的AI配对程序员”。可以直接在编辑器中得到关于整行或者函数的建议,可以帮助你更快的完成编程工作。
GitHub Copilot不是搜索引擎,它的代码建议大部分都是新生成的,这在之前是从来没有出现过的。它分析用户编写的代码并生成新的匹配代码,包括之前调用的特定函数。可以实现的主要功能有:根据注释编写代码、快速评估不同方法、编写测试、自动填充重复代码、给出完成整行代码或整个功能的建议、适应用户编写代码的方式。
AI开始抢程序员的饭碗了吗?
在左边,GitHub首席执行官克里斯万斯特拉斯、微软首席执行官塞特亚纳德拉和GitHub首席执行官纳特弗里德曼在旧金山的GitHub总部。(来源:微软)
GitHub Copilot基于Open AI Codex的新算法,Open AI首席技术官Greg Brockman将其描述为GPT-3的后裔。GPT-3是Open AI的旗舰语言生成算法,可以生成与人类文字无法区分的文本。他进一步解释说,编程包括提出一个如何做某件事的想法,然后实现它,Copilot擅长实现它。
人工智能初创公司Open AI现在由Y Combinator前总裁萨姆奥特曼(Sam Altman)领导。自从奥特曼领导以来,OpenAI从非盈利模式转变为“封顶-profi”模式,并在2019年获得了微软的投资。2020年9月,微软获得OpenAIGPT-3语言模型的独家许可。
GitHub CEO NAT Friedman在博客中表示,Copilot适用于多种框架和语言,但发布的预览技术特别适合Python、JavaScript、TypeScript、Ruby和Go。
Nat Friedman说“软件开发正在迎接它自己的‘第三次工业革命’。第一次革命是编译器、调试器、垃圾收集器、语言等工具的出现,大大提高了开发人员的工作效率;第二次,以开源为龙头,帮助全球开发者社区聚集,在彼此开发成果的基础上继续前进;第三次革命是现在,试图在编码中使用AI技术。开发成熟后,开发人员的日常工作内容会有很大的变化,但还有很多工作要做,只能由人类开发人员来完成,不用太担心。”
本质上,Copilot是一个AI配对编程工具。程序员可以借助机器进行编程,在和AI一起编程的过程中,程序员会及时纠正机器人的错误,进一步完善机器人的学习模型。
GitHub认为这个工具是结对编程的一大进步,程序员在编写代码时有一个“虚拟助手”,可以抓住程序员的错误,加快开发进程。
结对编程是计算机编程领域的一个术语,用来指两个程序员在一台计算机上一起工作,一个输入代码,另一个检查每一行输入代码。输入代码的人称为驱动程序,而检查代码的人称为观察者。为了保证结对编程的纠错能力,两个程序员经常互换角色。
近年来,人机配对编程(MMPP)不断成熟,AI配对编程(AIPP,可以简单理解为人机配对编程的升级版)产品也逐渐成熟。目前典型的落地产品包括aiXcoder智能编程机器人和最新的外观
的Copilot。对于Copilot能实现怎样的效果,官网做了如下演示。
根据注释写出代码:编程者给出一条描述代码逻辑的注释,Copilot就能自动生成代码。

代码补全:提取代码上下文,即可给出整行代码或整个函数的补全建议。

自动填充重复代码:

编写测试:导入单元测试包,即可帮开发者实现与代码匹配的软件测试。

快速评估不同方法:
在编程中,同一个函数常有多种实现方法,编程者通常会根据代码的实现效果和运行性能选择最合适的方法,Copilot可一键查看多种实现方法。

“这很可能是让编程本身更平易近人的事情之一,”微软CTO凯文·斯科特表示。
Copilot的核心Codex模型使用GitHub的数十亿行公开可用代码以及英语示例进行训练。对于由此引发的争议,Friedman回应称,“总体来说:(1)在公共数据上训练机器学习系统属于合理的使用方式;(2)输出结果的所有权归于操作者,跟传统的编译器没什么区别。具体到训练问题上,大家也可以看到OpenAI向美国专利商标局做出的承诺。”
GitHub也表示,并不是所有使用的代码都经过了漏洞、不安全实践或个人数据的审查。因此,他们也设置了一些过滤器来防止Copilot生成攻击性的语言,但效果可能并不完美,需要后续完善。
GitHub Copilot首先会出现在微软的免费开源产品Visual Studio Code中,未来,微软计划将其整合到商业产品Visual Studio中。
责任编辑:李跃群
校对:张艳