大模型编程实测:如何hold住复杂、跨语言代码需求?

出品 | CSDN(ID:CSDNnews)
AI 大模型正在深入千行百业 , 在 CSDN 举办的 2023 年 1024 程序员节上,CSDN 创始人蒋涛分享中提到,大模型将掀起一场生态革命,带来生产力的极大提升,重构所有软件和应用 , 数字经济将发生彻底改变 。这是开发者的黄金时刻,也是全世界程序员的一次机会,大模型将技术的潜力推向了全新的高度,重新定义了开发者的角色以及数字经济的前景 。其中,与程序员关系最紧密的,是AI大模型对开发范式的影响和改变,未来可能每一位程序员都要与AI一同完成开发任务 。
最近,腾讯混元大模型(以下简称腾讯混元)发布了新版本升级,这次升级重点加强了文生图和代码生成两个方面的能力 。本文就将以腾讯混元大模型为例,分享 AI 大模型在代码生成能力上的最新表现,分析其背后的技术探索,并展望未来的应用前景,希望为开发者提供参考与研发工作新思路 。
语义理解,实现细节描述需求
相比此前版本,新版腾讯混元在代码生成任务上的最大进步 , 就是提升语义理解能力 , 根据更加细致的需求描述 , 生成出语义更加准确的代码 。为了评测语义理解,我们给腾讯混元下达一些包含细节编程任务的描述,测试它返回的代码效果 。测试编程如下:
“请用Python/ target=_blank class=infotextkey>Python语言编写一个函数,实现对一个整数数组进行排序 。要求采用冒泡排序算法对数组从小到大排序,并返回排序后的数组 。”
对此需求 , 腾讯混元的回答是:

大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图
在这个测试用例中 , 我们包含了如下细节:
  • 使用 Python
  • 输入输出均为整数数组
  • 冒泡排序
  • 从小到大
从腾讯混元回答中可以看到 , 它首先给出了编码风格良好的 bubble_sort 函数,代码不仅正确,在解释器中也可以直接运行,而且同时代码的解析 。完美实现了笔者的细节要求,展现出精准捕捉需求描述和转换实现编程语义的能力 。
我们还可以进行更复杂的测试,加入更多的细节要求,比如要求引用内置函数,输出格式,代码风格等 。
测试用例如下:
“请编写一个Python函数,输入一个字符串数组 , 然后按照数组元素的字母表顺序对数组进行排序后输出,并用 * 间隔每个字符串的输出 。”
腾讯混元的输出如下:
大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图
这段代码实现了测试用例中的每个细节要求,如输入字符串,调用内置函数 sorted 进行排序,使用*间隔输出 。同样的,这段代码可以在解释器中正确的被执行 。
【大模型编程实测:如何hold住复杂、跨语言代码需求?】通过这些测试可以看出 , 新版腾讯混元在理解描述中的编程需求和生成对应代码的能力上,确实有了明显的进步 。它可以识别出不同的数据类型 , 如整数数组和字符串数组,并根据所述需求选择合适的排序算法进行实现 。同时对于语义细节,也有很好的理解和实现 。
跨语言代码生成,hold 住不同语言编码风格
大模型需要能够理解不同编程语言的语法和语义 , 以便生成正确的代码 。这需要模型具有强大的语言建模能力 。在评测点一中 , 我们主要是让腾讯混元使用 Python 进行代码输出 , 那么其它编程语言的代码生成能力如何呢 。
我们给出的测试用例如下:
“用golang来实现二叉树的前、中、后序遍历 。”
这段测试用例虽然不长 , 但是仍然包含了很多细节 。如二叉树的定义、前序、中序、后序遍历的函数,输入输出等 。让我们来看一下腾讯混元的回答:
大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图

大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图

大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图
甚至还给出了测试代码和输出结果:
大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图

大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图
腾讯混元展现出了惊人的知识量,不仅理解了测试用例 , 正确定义了二叉树,还给出了三个排序函数,给出了测试结果,说明腾讯混元很强的语义理解能力 , 能够理解非常抽象的需求 。Python 写的好,Golang 同样写的非常优秀,符合 Golang 的编码风格和习惯 , 对于 Golang 特有的结构也是输出的非常流畅和正确 。这表明,腾讯混元也能调用恰当的 API 编写出符合要求的代码,支持不同的编程语言,生成的代码符合不同编程语言的习惯 。


推荐阅读