澎湃见习记者邵文
近日,GitHub母公司微软与OpenAI联合推出了“AI结对程序员”GitHub Copilot的技术预览版。这也是微软向OpenAI投资10亿美元后的首个重大成果。
GitHub Copilot官网将其描述为:“你的AI配对程序员”,可以直接在编辑器中获得整行或整个函数的建议,帮助你更快地完成编程工作。
GitHub Copilot 不是搜索引擎,它提出的绝大多数代码建议都是新生成的,以前从未出现过。它分析用户编写的代码并生成新的匹配代码,包括之前调用过的特定函数。可以实现的主要功能有:根据注释编写代码、快速评估不同方法、编写测试、自动填充重复代码、给出整行代码或整个函数的补全建议、适应用户编写代码的方式。
人工智能正在开始抢走程序员的工作吗?
左起,GitHub 首席执行官Chris Wanstrath、微软首席执行官Satya Nadella 和GitHub 首席执行官Nat Friedman 在旧金山GitHub 总部。 (来源:微软)
GitHub Copilot 基于Open AI Codex 的新算法构建,Open AI 首席技术官Greg Brockman 将其描述为GPT-3 的后代。 GPT-3 是Open AI 的旗舰语言生成算法,可以生成与人类编写的文本没有区别的文本。他进一步解释说,编程涉及提出如何做某事的想法,然后实施它,而Copilot 擅长实施。
Open AI 是一家人工智能初创公司,目前由Y Combinator 前总裁Sam Altman 领导。自奥特曼领导以来,OpenAI从非营利转向“上限盈利”模式,并于2019年接受了微软的投资。2020年9月,微软获得了OpenAIGPT-3语言模型的独家许可。
GitHub CEO Nat Friedman 在博客中表示,Copilot 适用于多种框架和语言,但目前发布的技术预览版特别适用于Python、JavaScript、TypeScript、Ruby 和Go。
对于人工智能取代程序员的热议,纳特·弗里德曼表示,“软件开发正在迎来自己的‘第三次工业革命’。第一次革命是编译器、调试器、垃圾收集器和语言等工具的出现,它极大地促进了软件开发的发展。”提高了开发者的工作效率;第二次革命是以开源为主导,帮助全球开发者社区聚集并基于彼此的开发成果不断前进;第三次革命是现在,尝试在使用AI技术进行开发之后,开发人员的日常工作内容将会发生巨大的变化,但仍然有很多工作只能由人类开发人员完成,所以不用太担心。”
本质上,Copilot 是一款AI 结对编程工具。程序员可以借助机器进行编程,在与AI一起编写程序的过程中,程序员会及时纠正机器人的错误,进一步完善机器人的学习模型。
GitHub 认为该工具是结对编程的重大进步。程序员在编写代码时有一个“虚拟助手”,它可以捕获程序员的错误并加快开发过程。
这里所说的结对编程是计算机编程领域的一个术语,用来指两个程序员在一台计算机上一起工作。一个人输入代码,另一个人检查输入的每一行代码并输入代码。审查代码的人称为驱动程序,审查代码的人称为观察者。为了保证结对编程的纠错能力,两个程序员经常交换角色。
近年来,人机结对编程(MMPP)不断成熟,人工智能结对编程(AIPP,可以简单理解为人机结对编程的升级版)产品也逐渐成熟并落地。目前,典型产品有aiXcoder智能编程机器人和新推出的Copilot。
关于Copilot能达到什么样的效果,官网有如下演示。
根据注释编写代码:程序员给出描述代码逻辑的注释,Copilot 可以自动生成代码。
代码补全:提取代码上下文,为整行代码或整个函数提供补全建议。
自动填充重复代码:
编写测试:导入单元测试包,帮助开发者实现与代码匹配的软件测试。
快速评估不同的方法:
在编程中,同一个功能常常有多种实现方法。程序员通常会根据代码的实现效果和运行性能来选择最合适的方法。副驾驶可以一键查看多种实施方法。
“这可能是让编程本身变得更加平易近人的原因之一,”微软首席技术官凯文斯科特说。
Copilot 的核心Codex 模型是使用GitHub 上的数十亿行公开代码以及英语示例进行训练的。对于由此引起的争议,弗里德曼回应道,“一般来说:(1)在公共数据上训练机器学习系统是合理的使用;(2)输出结果的所有权属于操作者,这与传统的机器学习系统没有什么不同。编译器的区别。关于训练问题,你也可以看到OpenAI对美国专利商标局做出的承诺。”
GitHub 还表示,并非所有使用的代码都经过了漏洞、不安全做法或个人数据的审查。因此,他们也设置了一些过滤器来防止Copilot产生攻击性语言,但效果可能并不完美,未来需要改进。
GitHub Copilot 将首先出现在微软的免费开源产品Visual Studio Code 中。未来,微软计划将其集成到商业产品Visual Studio中。
责任编辑:李跃群
校对:张艳