智能编程机器人供应商 aiXcoder 最近宣布推出了名为 aiXcoder XL 的新模型,这是国内首款能够根据开发者提供的“自然语言描述”自动生成“完整方法级代码”的智能编程工具。
随着人工智能和大数据技术的应用日益广泛,软件行业正在经历一场智能化变革。AI 技术开始在软件开发领域发挥重要作用。aiXcoder XL 是一个基于深度学习的模型,可以同时理解人类语言和编程语言,并根据自然语言功能描述生成完整的程序代码(自然语言转代码)。这一成果得到了鹏城实验室(中国)和百度飞桨深度学习框架的大力支持,是中国首个完全自主知识产权的方法级代码生成模型。目前,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 默认生成了一个“从文件名读取 Zip 文件,并把内容以 byte 数组形式返回”的方法。进一步细化描述为“读取一个压缩文件中的指定文件”,aiXcoder XL 会生成一个带有读取指定文件参数的方法。如果进一步指定“要读取的压缩文件格式”为 .tar.gz 格式,aiXcoder XL 也会生成相应的代码。此外,aiXcoder XL 还可以根据给定的函数签名生成代码。
整个交互过程只需不到一分钟,极大地提高了开发者的编程效率,创造了更智能、流畅的人机协作编程体验。
为了提高代码的可读性,aiXcoder XL 在生成代码时会将功能拆分成更小的部分。有时生成的代码中会包含对其他尚不存在的函数的引用。此时,用户可以点击相关函数,进一步生成这些函数的实现。
这种机制使得 aiXcoder XL 类似于一个超级智能的输入法,无论开发者在编写什么代码,aiXcoder XL 都有可能提供帮助。
此前,只有微软、OpenAI 和 GitHub 三家联合推出的 GitHub Copilot 能实现类似的功能。aiXcoder 进行了与 Copilot 的性能对比测试,测试数据集包含了 175 个代码的功能描述,涵盖 Java 编程中的高频代码例子,并为每个例子配备了自动测试程序来验证程序的正确性。结果显示,aiXcoder XL 展现出了与 Copilot 相匹敌的代码生成能力。
尽管 aiXcoder XL 已经取得了显著进展,但在实际使用中仍存在一些问题,例如对某些特殊需求的理解还不够准确。aiXcoder CTO 郝逸洋表示,将在后续的训练过程中进行调整,帮助模型更快地成长。aiXcoder 正在研发更先进的代码生成产品,不久的将来可能会推出更强大的 aiXcoder XXL。
aiXcoder 联合创始人刘洋表示:“距离自动编程还有多远?人类程序员会被机器取代吗?”他表示,人类的创造力是无限的,aiXcoder 的目标是帮助人类开发者,减轻他们的工作负担,让他们有更多精力投入到更具创新性的工作中。aiXcoder 的口号是“把更多的编程工作交给 aiXcoder,把更多的创造潜能留给人类”。
目前,aiXcoder 官方网站提供了 aiXcoder XL 模型的测试页面,可供开发者在线体验。感兴趣的开发者可以访问 https://aixcoder.com/nl2code/ 进行在线体验。