红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

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

  • 2022-06-22
  • 本文字数:2444 字

    阅读完需:约 8 分钟

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

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


近日,智能编程机器人提供商 aiXcoder 宣布推出国内首个基于深度学习的支持方法级代码生成的智能编程模型——aiXcoder XL,该模型能同时理解人类语言和编程语言,可根据自然语言功能描述一键生成完整程序代码(NL to Code)。目前 aiXcoder XL 已完成在程序编写场景下的应用测试,并即将以 IDE 插件形态推出支持商业编程的产品。


aiXcoder XL 方法级代码生成实测


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


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



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



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

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


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


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



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

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


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



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


在此之前能实现类似功能的只有由微软、OpenAI、GitHub 三家联合推出的 GitHub Copilot。aiXcoder 进一步做了与 Copilot 的性能对比测试。



根据 aiXcoder 的官方介绍,测试数据集包含了 175 个代码的功能描述,这些描述清晰明确、功能独立,包括 Java 编程中高频出现的代码例子,涵盖大部分应用场景,并为每个例子配备了自动测试程序来验证程序的正确性。结果显示,aiXcoder XL 展现出了能够匹敌 Copilot 的代码生成能力。

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

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


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



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


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



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


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



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


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

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

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

还会有 aiXcoder XXL 吗?距离自动化编程还有多远?

“会有。”aiXcoder 联合创始人刘洋表示,“大家也许已经看到,aiXcoder 本系列的版本标号,采用了类似服装号码的标记。从 L 版到 XL 版,再到 XXL 版,是一个逐步演化的过程。这不仅体现了模型规模的变化,也体现了模型能力的逐步提升。在不久之后,大家将会看到能力更加强大的 aiXcoder XXL。”


距离自动编程还有多远?人类程序员会被机器取代吗?这是一个经常被大家讨论的话题。刘洋表示,“人类的创造潜能是无限的,aiXcoder 当前的工作目标是要帮助开发者,尽可能减少开发者的工作负担,让人们有更多的精力投入到更加富有创造性的工作中。这正如 aiXcoder 的 Slogan 一样——把更多的编程工作交给 aiXcoder,把更多的创造潜能留给人类。”


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


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2022-06-22 13:352417
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 488.4 次阅读, 收获喜欢 1964 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试 | 在Linux平台下安装MySQL

测吧(北京)科技有限公司

测试

阿里云瑶池 PolarDB 开源官网焕新升级

阿里云数据库开源

polarDB PolarDB-X PolarDB-PG 阿里云PolarDB

MT7915 with MT7975|Wi-Fi 6 DBDC miniPCIe network card DR7915 and application

wallyslilly

MT7915

使用可视化低代码工具提高开发效率

互联网工科生

低代码 可视化开发 JNPF

软件测试 | Windows平台下配置MySQL

测吧(北京)科技有限公司

测试

语音标注平台是构建智能语音技术的重要基石

来自四九城儿

一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射

bin的技术小屋

内存管理 Linux Kenel Linux内核 页表 Linux内核源码

减少跨国传输大文件所需时间的技巧与工具

镭速

跨国传输大文件

低代码开发前景如何,大家都真的看好低代码开发吗?

这我可不懂

低代码 开发 数字化

如何设计一个低代码平台?安利这些技术组件

高端章鱼哥

低代码 低代码开发 表单设计 JNPF 代码生成器

定了!12支队伍进入HarmonyOS极客马拉松2023决赛

HarmonyOS开发者

HarmonyOS

NFTScan 与 Purelist 达成战略合作伙伴,双方在 NFT 一级发售方面展开合作

NFT Research

NFT\ 市场

Windows10 下 Neo4j1.5.8 安装教程

北桥苏

Python neo4j 图数据库 py2neo 知识问答系统

异步 I/O 探秘 —— 为什么说 Go 为我们提供了同步的网络编程接口 ?

黑客不够黑

golang 异步IO asynchronous i/o netpoller

阿里云中“间“力量!RocketMQ

指剑

阿里云 RocketMQ 函数计算FC 事件总线Eventbridge

DTT直播回顾:一文带你全面了解openGemini

华为云开源

时序数据库 开源数据库 openGemini

唯一一家!国际测评:文心大模型3.5总分第一,算法模型第一,行业覆盖第一

飞桨PaddlePaddle

人工智能 百度 大模型 文心一言 文心大模型

如何解决 Git 合并冲突

这我可不懂

git

NetCore中将SQLServer数据库备份为Sql脚本

高端章鱼哥

sql .net core SQL Server

语音数据标注平台让语音识别技术更精准

来自四九城儿

打翻夏日调色盘,华为与你多巴胺一“夏”

最新动态

一些可以极大提高工作效率的 Linux 命令

互联网工科生

Linux 自动化运维

利用增强现实技术辅助跨国传输大文件的优化

镭速

MegEngine Python 层模块串讲(上)

MegEngineBot

Python 深度学习 开源 Data

LLaVA:将视觉微调引入大模型

Zilliz

计算机视觉 LLM 大语言模型 模型微调

与用户“同频”,海尔空调带来行业第三次科技革命

脑极体

绿色 空调

陈毅威“掌舵”SUSE 中国 3.0,谋势数字江湖

Rancher

QCA9880+MT7915 mini pcie card chip difference

wifi6-yiyi

wifi5

永续期权合约交易所系统开发案例(成品)

薇電13242772558

交易所

Flink SQL 双表 JOIN 介绍与原理简析

腾讯云大数据

流计算 Oceanus

借助Databuff,快捷构建Kubernetes可观测能力

乘云 DataBuff

aiXcoder XL智能编程大模型发布:自然语言一键生成方法级代码_AI&大模型_刘燕_InfoQ精选文章