代替程序员?微软推出会编程的 AI 后,又让 AI 学会了代码审查
来源:http://www.tudoupe.com时间:2022-04-28
微软科学院是一个为微软工作的科学家小组。
译者 | 核子可乐
策划 | 凌敏
去年 7 月,OpenAI的微软联合GitHub(United GitHub)建立了一个崭新的AI-GitHub(AIT-GitHub)协作代码创建,这是为创建新代码而建造的。唯一的阻力是 OpenAI 深层学习驱动程序平台代码。不过,数据显示,科德克斯的精确度约为30%日前,微软开发的AI 代码审查工具Jigsaw已经发布。使AI代码的准确性进一步提高。
目前,许多培训前语言模式(如GPT-3、GPT-3、Codex等)可供使用。 可以按程序员的目标以普通语言定制,程序可用作交流媒介。成功编写出代码。当然,这种自动化方法应该提高每个软件开发商的生产率。然而,理解方案的语义对于模型来说同样具有挑战性。因此,保证所制定守则的最终质量尚不可行。
我们一直在研究论文《Jigsaw:当大语言模型/Met方案合成(Jigsaw:广域语言模型与方案合成相匹配)时,为了语言转移,我们一直在研究使用语言模型这一专题。国际软件工程会议(2022年国际软件工程会议)核准了该条。我们展示了一种新颖的技术 它可以帮助这些巨大的语言模型 取得更好的表现。Jigsaw包括了能够理解程序语法和语义的后处理方法。用户的意见可用来无限期地提高修订能力。配合多模输入,Jigsaw是Python Pandas API合成的密码。
当这些巨大的语言模型成熟成以我们的专门知识为基础的“预定合成代码”尖锐时,Jigsaw也将在提高系统精确度方面发挥重要作用。
机写软件的利弊
OpenAI Codex项目的大型语言模型,整个编程领域的形象正在发生变化。软件工程师目前忙于编程活动。所要求的片段的功能可以用英文明确描述。Codex 生成像 Python 或 JavaScript 这样的编程语言的预期代码 。
然而,机器的代码可能无效,甚至无法建立或运行,因此,编码用户在使用该代码之前必须先检查该代码。
我们Jigsaw项目的目标是使审评进程部分自动化,并协助Codex等大语言模式根据开发商的指示合成代码,以提高生产效率。
假定法典公司给了软件开发商一个代码片断。开发者接下来可以看看是否可以建立和使用代码进行初步审查。如果未能编译,开发者可参照汇编者的错误报告信息进行更正。然后,一旦代码 编好,输入/产出(I/O)正在由开发者测试。检查代码的输出是否与预期一致。
这一阶段中,代码还可能暴露缺陷(例如,触发异常或产生不正确的输出)。这需要开发商进行进一步的修理。我们证明,这一程序是完全自动化的。Jigsaw将所需代码和I/O样本的英文说明作为输入。然后将输入与输出配对。最后一项保证是,Python产出代码可以适当建立,产生符合投入期望的高质量产出结果。
Jigsaw:当大语言模型握手时,前文提到的作品,使用Python Pandas测试了这一方法。熊猫现在被广泛用于数据科学领域。有数百个程序可以操作数据框或线条列表。
必须记住,许多功能显然太“人性”, 工程师无法使用。当然,使用竖锯是优胜选择。在它的帮助下,用户可以用英文界定打算转换的内容,并提供输入和输出数据框。Jigsaw随后生成了预期的代码。例如,假设开发者希望删除下表“ 县” 栏中的“ 名称: ” 前缀 。可以通过采取下列行动在熊猫身上做到这一点:
df['c'] = df['c'].str.replace('Name: ', '')

图一:输入和输出数据框。 Jigsaw 从“国家”栏中删除了额外的“名称 ” 。
在传统流程中,作为熊猫新手的开发者往往需要熟悉该函数及其论点。您可以选择合适的代码片断, 或者您可以将查询结果和样本上传到 Stack overflow 等社区 。之后,我坐着等待我最亲爱的线上朋友回应。另外,开发者还必须经常根据情况调整其答复。相比之下,毫无疑问,直接使用英文解释所需输入 -- -- 产出表(或数据框架) -- -- 无疑容易得多。
拼图拼图解析
Jigsaw首先以英文接收查询信息,然后在适当的背景下进行预处理,生成输入,可以输入大语言模式。 Jigsaw模式是黑盒式的,并使用GPT-3和代码编码进行了评估。
这种设计的最大优势是它是实时支持最新和现有最佳模式的能力。当模型生成输出代码时,Jigsaw 将检查它是否符合 I/ O 示例 。如果满足,模型输出是有效的,代码很容易读取。在我们的实验中,大约30%的产出代码没有纠正,可以直接使用。但如果代码有误,在再程序步骤期间,启动恢复进程。

图二:大语言模型的所有投入(如GPS-3、Codex等)都将经过预处理。如有必要,后处理的结果也将提供给最终用户进行验证和改建。研究结果被反馈到治疗前和治疗后程序中。增加吉格索的能力,使之更好。
在后处理过程中,Jigsaw通过三次转换恢复代码。GPT-3 和 Codex 所看到的故障模式驱动了所有这些转换。令人意外的是,GPT-3 和 Codex 的代码错误情景相当相似 。因此,Jigsaw在后处理中使用的故障模式对两者都极为有利。
使用三个转换来恢复代码。
变量转换
我们观察到,在 Codex 输出中经常存在不正确的变量名称 。例如,大多数打开程序中的数据框将被标记为 df1, df2 等。所以法典只是搬进来了然而,如果开发者真的使用 g1 和 g2 数据框名称,Df1和Df2的代码编码的坚持会引起问题。
另外,代码法典还拼接他定期收到的变量的名称。例如,df1. # melge( df2) # 应该是正确的输出 。不过,它还是以df2.Mege(df1)写成。为了修复这些错误,Jigsaw 必须将生成代码编码的编码中的名称替换为可访问范围内的所有名称。直到它出现在 I/O 的例子。我们发现,这一简单修改解决了机器代码中的大多数困难。
参数转换
代码x 生成代码, 调用预期的 API 方法, 但有些参数不正确 。 例如 :
查询 - 从“输入B”栏中删除所有重复行
dfout = dfin.drop_duplicates(subset=['inputB']) # Model
dfout = dfin.drop_duplicates(subset=['inputB'],keep=False) # Correct
(b) 在df 列国家的所有CAN查询 -- -- 应改为加拿大。
df = df.replace({'Canada':'CAN'}) # Model
df = df.replace({'country':{'Canada':'CAN'}) # Correct
Jigsaw将仔细列举所有潜在参数,并使用Codex提供的功能和参数序列作为起点,直至查明各种I/O情况合二为一,以纠正这些错误。
AST改为AST
由于这些模型在合成层面创建代码结构,代码转换可产生与预期相似但不适合具体字符的产出产出。 例如:
查询 - 在 dfin 中选择符合资格的行, 并提供60 的条形值 。
dfout = dfin[dfin['bar']60] # Model
dfout = dfin[(dfin['bar']60)] # Correct
- 没有括号导致优先事项转移和出现异常。
b. 查询 - 计数在计数 df 中出现一行的次数。
out = df.duplicated() # Model
out = df.duplicated().sum() # Correct
错误 -- -- 请求和获得的重复线路总数
为了修复这类问题,Jigsaw 还提供随时间学习的 AST改为AST功能。用户首先修复代码。此外,Jigsaw UI还记录了编辑结果,并将其分发给其他合适的转换情况。同时学习转换知识。当转换次数和使用次数增加时,Jigsaw也将经历发展者的愈合。
评估
对于许多数据集,我们还测试了法典的直接代码 和Jigsaw的修复后代码。并评估其正确性(即系统能够取得预期结果的数额)。以整个数据集工作的百分比表示的差异。代码编码的直通代码 精确度约为30%这也符合OpenAI文章中的观点。Jigsaw能够提高精度60%以上。如果加上用户输入,精确度可提高到80%以上。
展望未来
我们向公众提供了吉格索评价数据集。每项数据收集都有许多任务,而数据收集本身也包含许多任务。每份工作都与英语问题和I/O样本有关。要解决任务,模型必须创建熊猫代码。将指定的输入数据框架翻译到匹配输出数据框( C)我们希望你们能深入搜集资料需要进一步评价和比较其他系统。虽然有些数据集现在包括一些基本工作,如英文查询和I/O示例,但没有英文版。另一方面,Jigsaw数据集继续产生工业先驱。
我们认为,Jigsaw能够随着语言模式的发展而维护语言模式,使这些巨大的模式能够在更现实的情景中发挥作用。 当然,这只是相关研究领域的冰山一角,我们需要解决以下关键问题:
能否训练这些语言模型来掌握密码的语义学?
Jigsaw能否纳入更有效的处理前和处理后步骤?我们正在调查强化的处理后影响,例如使用表达分析方法。
该 I/O 示例是否适用于 Python Pandas 外的 API?如果没有可资比较的I/O实例,我们该如何解决?Jigsaw 如何处理 JavaScript 和普通 Python 代码等语言?
吉格索目前的产出仍有改进的潜力,这意味着开发商除了进行自然语言查询外,还必须检查和调查结果。
这些是我们试图追求的一些令人感兴趣的方向。Jigsaw的不断进步和完善预计其自动化能力将在提高程序员的生产力方面发挥重要作用。我们还将努力将Python Pandas API的经验扩大到其他API和编程语言。
上一篇:华硕灵耀14评测:2022年笔记本爆点不止新CPU,还有HDR OLED屏!
下一篇:没有了
相关新闻
- 2022-04-28 华硕灵耀14评测:2022年笔记本爆点
- 2022-04-27 微软放话,Win10 最新最稳定版本
- 2022-04-27 Net开源项目Files 是一款适用于 Win
- 2022-04-27 停招国防七子及北邮学生?微软登
- 2022-04-27 总分150分!2022年四川对口高考技能
- 2022-04-27 科技:打击AI换脸 微软、Intel等将推
- 2022-04-27 国产品牌AYANEO将推出全球首款OLED
- 2022-04-27 Windows 11默认浏览器更改困难:已解
- 2022-04-27 微软 Edge Dev 浏览器 102 发布:改进
- 2022-04-25 1+1>2?微软成立安卓体验部门大
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
