Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

支持文字和语音指令,AI实时自动编程,OpenAI升级版Codex终于面世了

前段时间,OpenAI与GitHub联合发布的AI代码补全工具GitHub Copilot吸引了广大程序员的关注,其背后的技术支撑OpenAI Codex也浮出了水面。今日,OpenAI正式发布了基于自身API的改进版Codex,不仅可以根据用户输入的文字指令执行相应任务,更能够输入语音命令。

6 月 30 日,OpenAI 和 GitHub 联合发布了新的 AI 代码补全工具 GitHub Copilot,并展示了技术预览版。该工具可以在 VS Code 编辑器中自动完成代码片段,也是 OpenAI 接受微软 10 亿美元投资以来的首个重大成果。


从技术角度来看,GitHub Copilot 由 OpenAI 开发的全新 AI 系统 OpenAI Codex 提供支持,该系统可以将自然语言转换成代码。OpenAI 的联合创始人兼首席技术官 Greg Brockman 表示:「Codex 是 GPT-3 的后代。」由于 Codex 系统是在包含大量公开源代码的数据集上训练的,因此在代码生成领域显著优于 GPT-3。

不过当时,Codex 的具体细节并没有过多透露,也没有太多的效果展示。今日OpenAI 终于推出了改进版本的 Codex,并发布了基于自身 API 的私测版。OpenAI 表示在初期会免费提供 Codex,并希望更多的企业和开发者可以通过它的 API 在 Codex 上构建自己的应用。


相较之前的版本,改进版 Codex 更为先进和灵活,不仅可以补全代码,更能够创建代码。

Codex 不仅可以解读简单的自然语言命令,而且能够按照用户的指令执行这些命令,从而有可能为现有应用程序构建自然语言接口。比如,在 OpenAI 创建的太空游戏(space game)中,用户输入自然语言命令「Make it be smallish」,Codex 系统会自动编程,这样图中飞船的尺寸就变小了。


又比如,输入「Crop it circularly」,图中方形的飞船变成了圆形。


再比如,输入「Make it be vertically centered; put on the left side of the page」,图中的飞船就跑到了页面的左中方位。


目前,Codex 最擅长 Python 语言,并且精通 JavaScript、Go、Perl、PHP、Ruby、Swift 、TypeScript 和 Shell 等其他十数种编程语言。作为一种通用编程模型,Codex 可以应用于任何编程任务。OpenAI 已经成功地将其用于翻译、解释代码和重构代码等多个任务,但这些只是牛刀初试。

就数据源来说,作为 GPT-3 的一种变体,Codex 的训练数据包含自然语言和来自公共数据源中的数十亿行源代码,其中包括 GitHub 库中的公开代码。Codex 拥有 14KB 的 Python 代码内存,而 GPT-3 只有 4KB,这就使得它在执行任务的过程中可以涵盖三倍于 GPT-3 的上下文信息。

根据 OpenAI 发表在 arXiv 上的 Codex 论文信息,当前 Codex 的最大版本拥有 120 亿参数


论文地址:https://arxiv.org/pdf/2107.03374.pdf

此外,为了进一步在开发者中推广 Codex,OpenAI 还组织了一项 Codex 挑战赛,旨在测试在 Codex 的帮助下解决一系列 Python 编程难题。


挑战赛网址:https://challenge.openai.com/

Codex 的更多效果展示

OpenAI 的联合创始人兼 CTO Greg Brockman 和 Codex 负责人 Wojciech Zaremba 在线演示了 Codex 的更多用途,揭开了它神秘的面纱。


Codex 当前的界面如下图所示,简约但功能强大。


在演示中,Brockman 创建了一个游戏。首先 Brockman 在谷歌图片上找到了一个人形剪影,然后输入命令: 「add this image of a person from the page」等命令,即在游戏界面中添加该人形剪影图像。然后人形剪影就出现在了界面中。


然后 Brockman 修改了它的大小并输入「使用左右箭头键控制它」的命令,然后人形剪影就能够左右移动了,行动自如:



我们来看一下这部分 Codex 根据自然语言生成的代码,如下图右侧边栏所示:


除了左右,还能上下移动:


然后他们又在界面中添加了一个石头的图像,并通过输入自然语言命令让操纵人形和石头图像,例如当石头从上向下掉落时,人可以躲避开:


演示过程中他们遇到一个问题:当人形剪影移出屏幕边缘时,它就会消失,这显然是不符合常规游戏逻辑的。为了阻止这种情况,Brockman 给了计算机一条额外的指令:「不断检查这个人是否离开了界面,如果是,就把它放回界面上。」,这就阻止了它的移出:


另一位演示者好奇这些指令需要多么精确才能让 Codex 自动生成代码并成功执行。因此他们尝试不同的输入指令:「确保此人无法退出界面」,演示结果表明这也有效。不过 Brockman 表示:「有时 Codex 也并不完全能够理解人们在说什么」。

因此,Codex 目前仍然存在一些局限性,它不是一个可以读懂你的大脑、将每个命令变成完美代码的魔法精灵——OpenAI 也并没有声称它是。相反,它需要「深思熟虑」和一些反复试验才能使用。Codex 不会在一夜之间将非编码人员变成专家程序员,但它肯定比任何其他编程语言更容易使用。

此外,Codex 的内测用户 Ania Kubów 用 152 个口语命令就搭建了一个完整的网站,她在社交媒体上展示了创建过程:


Codex 发展潜力巨大,但也饱受抱怨

Codex 建立在 OpenAI 的语言生成模型 GPT-3 之上,该模型在大规模的数据上进行训练,可以用来解析和生成文本等功能。GPT-3 的一个应用是生成代码,但是 Codex 改进了代码生成能力,它可以对从网上搜集的开源代码库进行训练。

但正是由于 Codex 训练数据来自开源代码库,这引来了许多程序员的抱怨,认为 OpenAI 从他们的工作中获利。例如,这项研究的整个知识基础最终都来自于开源工作,而这种开源工作是分享给个人的,而不是让公司获利。尽管 OpenAI 表示,其对这些数据的使用受到了法律保护,是在合理使用范围之内的。

当被问及程序员的抱怨时,Brockman 解释说:「新技术即将到来,我们确实需要这场辩论,我们会做一些对社区来说有很大意见的事情,但我们会接受反馈并以不同的方式做事。」不过,Brockman 认为,编程社区最终将受益于 OpenAI 的工作。「这会对生态系统有很大的价值,归根结底,这些技术可以重塑我们的经济,为所有人创造一个更美好的世界。」Brockman 解释道。

Codex 也肯定会为 OpenAI 及其投资者创造价值。尽管该公司在 2015 年开始作为一个非盈利实验室运营,但为了吸引外部资金,它在 2019 年转向了有限利润(capped-profit)模式,Codex 最初是作为免费 API 发布的,但 OpenAI 将在未来开始对访问收费。

OpenAI 看好 Codex 在改变编程和计算方面的潜力。Brockman 认为,这有助于解决美国程序员短缺的问题,而 Zaremba 认为这是编码历史演变的下一步。

在计算早期,编程是通过创建物理穿孔卡片来完成的,这些卡片必须被输入机器,然后人们发明了第一种编程语言,并开始改进这些语言。这些编程语言开始变得类似英语,出现了 print 或 exit 之类的词汇。目前,Codex 可以编程十几种语言。

Codex 还可以控制其他程序。在一个演示中,Brockman 展示了如何使用该软件为 MicrosoftWord 创建语音界面。因为 Word 有自己的 API,Codex 可以用用户的口头命令创建的代码向其提供指令。Brockman 将一首诗复制到 Word 文档中,然后告诉 Word(通过 Codex)首先删除所有缩进,然后对行进行编号,然后计算某些单词的频率,依此类推,展示效果非常流畅。


如果成功,Codex 不仅可以帮助程序员,还可能成为用户和计算机之间的新界面。OpenAI 表示,他们测试了 Codex 不仅能控制 Word ,还能控制 Spotify 和 Google Calendar 等其他程序。Brockman 说,虽然 Word 演示只是概念验证,但微软显然已经对探索该软件的可能性产生了兴趣。

参考链接:
https://openai.com/blog/openai-codex/#py2rb
https://www.theverge.com/2021/8/10/22618128/openai-codex-natural-language-into-code-api-beta-access
https://www.youtube.com/watch?v=SGUCcjHTmGY
产业代码生成OpenAI
相关数据
Microsoft机构

微软是美国一家跨国计算机科技公司,以研发、制造、授权和提供广泛的计算机软件服务为主。总部位于美国华盛顿州的雷德蒙德,最为著名和畅销的产品为Microsoft Windows操作系统和Microsoft Office办公室软件,以及Xbox的游戏业务。微软是美国《财富》杂志2015年评选的世界500强企业排行榜中的第95名。

https://www.microsoft.com/en-us/about
重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

自然语言生成技术

自然语言生成(NLG)是自然语言处理的一部分,从知识库或逻辑形式等等机器表述系统去生成自然语言。这种形式表述当作心理表述的模型时,心理语言学家会选用语言产出这个术语。自然语言生成系统可以说是一种将资料转换成自然语言表述的翻译器。不过产生最终语言的方法不同于编译程式,因为自然语言多样的表达。NLG出现已久,但是商业NLG技术直到最近才变得普及。自然语言生成可以视为自然语言理解的反向: 自然语言理解系统须要厘清输入句的意涵,从而产生机器表述语言;自然语言生成系统须要决定如何把概念转化成语言。

自动编程技术

自动编程相对与手动编程而言它是利用计算机专用软件来编制数控加工程序,编程人员只需根据零件图样的要求,使用数控语言,由计算机自动地进行数值计算及后置处理,编写出零件加工程序单,加工程序通过直接通信的方式送入数控机床,指挥机床工作,自动编程使得一些计算繁琐、手工编程困难或无法编出的程序能够顺利地完成。

推荐文章
暂无评论
暂无评论~