aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

互联网
2022
06/22
14:16
分享
评论

伴随AI和大数据技术在整体软件市场的应用,软件开发行业正迎来自己的“第三次工业革命”,AI 技术也开始在编码工作中发挥作用。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

近日,智能编程机器人提供商aiXcoder成功研发出国内首个基于深度学习的支持方法级代码生成的智能编程模型—— aiXcoder XL,模型能同时理解人类语言和编程语言,可根据自然语言功能描述一键生成完整程序代码(NL to Code)。该成果的诞生受到了鹏城实验室(中国)和百度飞桨深度学习框架的大力支持,是国内首个完全自主知识产权的方法级代码生成模型。

目前aiXcoder XL已完成在程序编写场景下的应用测试,并即将以IDE插件形态推出支持商业编程的产品。

aiXcoder XL方法级代码生成实测

aiXcoder XL效果如何呢?我们以Java语言为例,“将byte数组转化为16进制字符串”,创建这样一个描述功能的自然语言语句,点击生成按钮,模型就自动生成了与之对应的完整函数代码,开发者可直接使用。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

再比如,输入“用map中的值更新url中的参数”这样一句中文描述,就可以获得一个完整方法的代码实现。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

aiXcoder XL对英文自然语言描述的支持也相当出色。比如以下这个示例,“Calculate the inner product of two matrices”(计算两个矩阵的内积),当我们还在思考具体计算步骤时,aiXcoder XL已经给出了完整的程序方法。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

aiXcoder XL对类似的输入都给出了可以直接复用的代码生成结果。特别是对于一些软件开发中需要经常在不同场景中编写的代码,例如各类文件操作、字符串操作、网络服务等,aiXcoder XL的生成结果更是令人眼前一亮。

随机应变——根据需求变化,生成相应代码

aiXcoder XL还能进行动态交互,实现个性化人机结对编程。在实际开发过程中,有时无法“一步到位”描述清楚想要的内容是什么,需要“边写边改”,这时就需要模型能灵活理解每一处调整。aiXcoder XL支持与程序员进行动态的人机交互:在处理一些复杂的场景时,开发者不仅可以通过修改自然语言,也可以直接对已生成的代码进行编辑,使后续生成的代码更匹配开发者的具体需求。

例如,在下图示例中,开发者可以直接在已生成代码里修改函数签名,把输入的压缩文件参数类型InputStream换成File对象,这样aiXcoder XL就能根据修改重新生成匹配需求的代码。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

贴近实战:功能自动拆分,逐级生成方法代码

为了更好的代码可读性,aiXcoder XL生成代码时会将功能进行拆分,有时会使生成的代码中包含对其它尚不存在的函数的引用。将鼠标移到这些函数上,根据提示选择“为这段函数调用生成它的实现”即可进一步生成这些函数的实现。

如下图所示,aiXcoder XL原本生成了一个调用了isSorted函数的sort方法。用户通过一次鼠标点击,让aiXcoder XL进一步生成了被调用的isSorted函数。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

整个交互过程极大程度的提升了开发者的编程效率,创造了更智能、流畅的人机结对编程体验。对开发者来说,就像拥有了智能输入法一样,无论你在写什么代码,aiXcoder XL都有可能帮到你。

瑕不掩瑜——针对问题,持续改进

对于代码自动生成而言,方法级代码生成是一项艰难的任务。aiXcoder XL给我们带来诸多惊喜的同时,测试者在试用过程中也遇到了一些错误的案例。

示例1:当测试中输入“计算标准差”时,生成的代码并不是所期待的。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

在这个例子中,中文描述中的“标准差”一词被理解成了“标准化”,导致生成的代码未能满足需求。不过,如果把输入文本改成“Calculate the standard deviation”,就能得到想要的输出结果。可能对这个案例而言,英文描述比中文描述更容易区分。

示例2:输入“Extract all images from a PowerPoint file. And save them in to a folder”时,所生成的代码中却缺少了对PowerPoint的支持。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

这里的需求是提取PowerPoint文件里的图片,但aiXcoder XL却理解成了从某个文件夹中提取图片文件,这体现出aiXcoder XL对于一些特殊需求的捕捉和理解还需要进一步改进。

示例3,输入“Return a new immutable collection containing…”时,aiXcoder XL生成的代码中包含了一个未定义的对象。

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码

在这个例子中,生成的代码中包含了一个store对象,用来表示当前路径的目录,但它却是一个没有被定义的对象。

在具体使用场景中,以上问题都有可能遇到。aiXcoder将在后续的训练过程中进行调整,帮助模型更快“成长”。

降本增效,重新定义编程领域

延续以往版本的优势,aiXcoder XL仍支持企业私有化部署。“私有”的云端环境可充分保护企业的代码知识产权,满足企业特定场景的智能开发需求,帮助企业降低开发成本、提升质效。对开发者而言,有了aiXcoder智能开发工具的辅助,将大大提高写代码的效率、减少编程错误,让开发者从繁重的重复性编码劳动中解放出来,投入到更具创造性的工作中。

aiXcoder XL的出现,为程序员创造了大模型时代的个性化智能编程体验。随着AI技术的发展和普及,这将重新定义编程领域,引领一个新的未来。

THE END
广告、内容合作请点击这里 寻求合作
免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表砍柴网的观点和立场。

相关热点

相关推荐

1
3