澎湃新闻见习记者 邵文
近日,GitHub、GitHub的母公司微软和OpenAI联合推出了“AI配对程序员”GitHub Copilot的技术预览版,这也是微软向OpenAI投资10亿美元后的首个主要成果。
GitHub Copilot官网中将其描述为:“你的AI配对程序员”,可直接在编辑器中获取有关整行或整个函数的建议,帮助你更快完成编程工作。
GitHub Copilot不是搜索引擎,它提出的绝大多数代码建议都是新生成的,此前从未出现过。它会分析用户已编写的代码,并生成新的匹配代码,包括之前调用过的特定函数。可实现的主要功能有:根据注释写出代码、快速评估不同方法、编写测试、自动填充重复代码、给出整行代码或整个函数的补全建议以及适应用户编写代码的方式。
AI开始抢夺程序员的工作了?
GitHub Copilot建立在OpenAI Codex的新算法之上,OpenAI首席技术官Greg Brockman将其描述为GPT-3的后代。GPT-3是OpenAI的旗舰语言生成算法,可以生成无法区分是否为人类书写的文本。他进一步解释道,编程涉及提出关于如何做某事的想法,然后实施它,Copilot擅长实施。
OpenAI是一家人工智能初创公司,现由Y Combinator前总裁Sam Altman领导。自Altman领导以来,OpenAI已经从非营利转向“有限盈利”(capped-profi)模式,2019年接受了微软的投资。2020年9月,微软获得OpenAIGPT-3语言模型的独家许可。
GitHub首席执行官Nat Friedman在博客中表示,Copilot适用于广泛的框架和语言,但目前发布的技术预览版对Python、JavaScript、TypeScript、Ruby和Go尤其适用。
对于AI替代程序员的热议,Nat Friedman表示,“软件开发正迎来自己的‘第三次工业革命’。第一次革命是编译器、调试器、垃圾收集器以及语言等工具的出现,极大提升了开发者的工作效率;第二次则以开源为龙头,帮助全球开发者社区汇聚起来并在彼此的开发成果基础之上不断推进;第三次革命就在当下,尝试在编码当中使用AI技术。在发展成熟之后,开发人员的日常工作内容将有巨大改变——但仍然有很多工作可做、也只能由人类开发者完成,因此不用太担心。”
本质上来说,Copilot是一款AI结对编程工具。程序员可以在机器辅助下进行编程,并且在与AI共同完成程序编写的过程中,程序员会及时纠正机器人的错误,进一步改进机器人学习的模型。
GitHub认为该工具是结对编程的重大进展,程序员在编写代码时有了一个“虚拟的帮手”,它可以捕捉到程序员的错误,加速开发过程。
这里说的结对编程(Pair programming)是计算机编程领域的术语,用来代指两个程序员在一台计算机上共同工作,一个人输入代码,而另一个人审查输入的每一行代码,输入代码的人称作驾驶员,而审查代码的人称作观察员。为了保证结对编程的纠偏能力,两个程序员经常互换角色。
近年来人机结对编程(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中。
“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)