https://new.qq.com/omn/20210701/20210701A00I7600.html?pgv_ref=aio2015&ptlang=2052GPT-3 这个自然语言处理 AI 在去年「出圈」了,被公认是继 AlphaGo 之后「人工智能
史上又一里程碑」。它在互联网上「阅读」了 5000 亿词,模型达到 1750 亿参数,从
而变得通用。但给 AI 硬灌数据,实在是烧钱耗力。但好在,GPT-3 正在孕育出能够实
现商业化的后代。
就在刚刚,GitHub、OpenAI、微软联合打造了一个全新的代码生成 AI:GitHub Copilo
t(以下简称为 Copilot)。
简单来说,Copilot 可以根据程序员的注释写代码,自动补全代码,提供与代码匹配的
测试,还能生成多个备选方案的代码供选择。GitHub 表示,Copilot 生成的代码大部分
是原创的。
目前,Copilot 正在测试专供 Visual Studio Code 的扩展,一旦达到可用状态,未来
会成为微软编程产品里的收费项目。Copilot 可以说是 OpenAI 接受微软 10 亿美元投
资以来的首个重大成果。
还有行业人士表示,这代表 AI 开始在编程工作中发挥作用,软件开发领域的「第三次
工业革命」似乎正缓缓揭开序幕。
和你结对编程的,换成了 AI
在此之前,程序员写不出代码,一般会到软件开发领域的问答网站 Stack Overflow「借
鉴」,或者求助于一些代码自动补全工具。然而,传统 IDE 基本都使用搜索方法进行补
全,换句话说,网上有的,才能被抓过去补全。
但 Copilot 是另一种思路,它直接靠 AI 理解程序员的需求。Copilot 不仅仅是模仿以
前见过的代码,它还会分析文档中的字符串、注释、函数名称以及代码本身,从而生成
新的匹配代码,包括之前调用的特定函数。
脱胎自 GPT-3 的 OpenAI Codex,接受过公开源代码和自然语言的培训,能理解编程语
言和人类语言。所以,Copilot 对语言理解和转换有极高的天赋。
GitHub 给 Copilot 的官方定义是「AI 结对编程员」。「结对编程」(pair programm
ing)是一种软件开发方法,两个程序员在一个计算机上共同工作。一个人输入代码,而
另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察
员。两个程序员经常互换角色。GitHub 认为 Copilot 是进化版的「结对编程」,在未
来帮程序员查缺补漏的,将会换成 AI。
Copilot 具体的功能如下:
在注释中用简单的英语描述一个函数,Copilot 就可以将其转换为实际代码;
Copilot 能根据程序员给出的例子,快速生成模板和重复的代码;
导入单元测试包,Copilot 就可以提供与代码匹配的测试;
Copilot 可以提供多个备选方案的代码供程序员选择。
此外,Copilot 还能辅导新手写代码,可以帮助他们找出错误、学习新框架,省去大量
查资料的时间。
OpenAI 首席技术官 Greg Brockman 表示,将在今年夏末通过 API 发布 Codex。
Github CEO Nat Friedman 提到,「OpenAI Codex 对于人们的代码使用习惯有着广泛了
解,而且在代码生成能力上远远超过 GPT-3,这要归功于它在训练中接触到的大量公共
源代码数据集。GitHub Copilot 则适用于多种框架和语言,但目前的技术预览版主要面
向 Python、JavaScript、TypeScript、Ruby 以及 Go」。具体来说,OpenAI 在 GPT-3
的基础上生成了 Codex 算法,Codex 在从 GitHub 那里提取出来的 TB(terabyte)级
公开代码以及英语语言示例中得到训练。基于 Codex 算法,编程 AI Copilot 诞生了。
也就是说,Copilot 比 GPT-3 诞下的专为代码生成设计的后代。在运行过程中,Copil
ot 编辑器的扩展插件将程序员的注释和代码发送到 GitHub Copilot 服务端,然后该服
务使用 OpenAI Codex 来生成对代码的建议。
目前相比于市面上一些编程辅助工具,Copilot 的上下文理解能力要强大得多。无论是
在文档字符串、注释、函数名还是代码主体中,Copilot 都能根据编程者已写出的上下
文生成匹配的代码。
不看广告,看「疗效」
Friedman 说,GitHub 的数百名开发者在编码时,整天都在使用 Copilot 功能,他们中
的大多数人都接受了 AI 的建议,没有关闭该功能。
但就目前来看,Copilot 提供建议的准确率似乎不高。GitHub 对一组 Python 函数进行
了基准测试,测试团队清除了函数并要求 Copilot 填充它们。模型在第一次尝试正确率
是 43%,经过 10 次尝试后,正确率达到了 57%。团队表示,之后 Copilot 还将进行多
次训练和测试,准确率会进一步提升。但据一些程序员的说法,这种自动生成的代码工
具要「好用」有个前提,就是能精确描述了函数需要实现的功能,不然后续的调试会是
更耗时的工作。
另外,GitHub 表示,Copilot 提出的代码可能会无法编译或运行,而且 Copilot 还可
能会使用旧的或已弃用的库和语言。 此外,在试图理解开发人员的意图时,Copilot 建
议的代码可能并不总是有效或有意义的,因此程序员还是像往常一样仔细测试和审查所
有代码。
对于代码安全,GitHub 表示,并不是所有使用的代码都经过了漏洞、不安全实践或个人
数据的审查。因此,他们也设置了一些过滤器来防止 Copilot 生成攻击性的语言,目前
效果并不完美,需要后续完善。
技术社区也不可避免地对这款工具可能引发的代码所有权、许可证、利益冲突以及其他
现实问题展开了讨论。 Friedman 回应称,「总体来说:在公共数据上训练机器学习系
统属于合理的使用方式;输出结果的所有权归于操作者,跟传统的编译器没什么区别。
具体到训练问题上,大家也可以看到 OpenAI 向美国专利商标局做出的承诺。我们预计
Copilot 项目的知识产权与 AI 成果将很快在世界范围内掀起关于政策的讨论热潮,我
们自己也希望能够参与进来。」
提前下班,提早下岗
击败 Stack Overflow 的,不是下一个代码问答社区,而是编程 AI。那么,现在还是「
协助编程」的 AI,未来会不会成为能「自动编程」 的 AI?
Friedman 在 Hacker News 写道:「软件开发正迎来自己的『第三次工业革命』。第一
次革命是编译器、调试器、垃圾收集器以及语言等工具的出现,极大提升了开发者的工
作效率;第二次革命则以开源为契机,全球开发者社区得以汇聚起来,并在彼此的开发
成果基础之上不断推进;第三次革命就在现在,业界尝试在编程当中使用 AI 技术。在
发展成熟之后,开发人员的日常工作将有巨大改变——但仍然有很多工作可做、也只能
由人类开发者完成,因此不用太担心。」
即使是高度机械化的工厂,也需要操作员来发出初始化指令,所以在未来, IT 行业可
能还会留下一些操作员类型的程序员,和一些把握高精度操作技巧的工程师。
但也正如 Open AI 的 CEO Sam Altman 所说,程序员的身价将会下降:「这是我的预测
:AI 会让那些在电脑前工作的人,身价掉得比在物理世界里工作的人还要快。这和大部
分的预期完全相反。」
有了 Copilot,程序员就可以提前下班,但在未来,也可能会提前下岗。
这并不是微软第一回借力 OpenAI 推出 AI 应用。在刚过去的 Build 大会上,微软宣布
了 GPT-3 的第一个商业用例:在 Microsoft Power Apps 中集成 GPT-3 的能力,可将
自然语言直接转换为现成代码。但目前功能相对有限,只支持在微软 Power Fx 中生成
公式。即便如此,对于那些非专业的操作者,这个系统也能给出最合适的公式。在过去
的工作流中,普通员工要执行数据分析、构建应用程序或让流程自动化,一般都需要向
IT 部门提出需求,然后等待数周或数月才能完成工作,而借助现在这个功能,可以更
「傻瓜」地开发符合自己需求的软件。
微软尝到了 OpenAI 技术的甜头。但和微软的独家绑定,也给 OpenAI 招来了一些争议
。对此,OpenAI 首席技术官 Greg Brockman 表示,底层技术不会只由微软来使用,Op
enAI 将在今年夏末发布 Codex 模型,供第三方开发者编写他们自己的应用程序。
题图来源:GitHub Copilot
本文由极客公园 GeekPark 原创发布,转载请添加极客君(ID:geekparker)
--
FROM 112.47.159.*