您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

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

时间:2023-11-02 11:24:49  来源:CSDN  作者:

出品 | 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 住不同语言编码风格

大模型需要能够理解不同编程语言的语法和语义,以便生成正确的代码。这需要模型具有强大的语言建模能力。在评测点一中,我们主要是让腾讯混元使用 Python 进行代码输出,那么其它编程语言的代码生成能力如何呢。

我们给出的测试用例如下:

“用golang来实现二叉树的前、中、后序遍历。”

这段测试用例虽然不长,但是仍然包含了很多细节。如二叉树的定义、前序、中序、后序遍历的函数,输入输出等。让我们来看一下腾讯混元的回答:

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

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

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

甚至还给出了测试代码和输出结果:

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

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

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

复杂抽象、专业业务理解与生成,合理简洁

在前面两点中,主要考察了腾讯混元对于语义细节以及代码生成的广度上,实际工作中,需求是非常抽象和专业的。

我们来测试一下腾讯混元对于专业领域的代码生成能力,给出测试用例如下:

“使用Rust编写一个内存管理接口模块,用于对错误内存页面的隔离和重新分配。”

在这个测试用例中,我们切换了新的编程语言,同时引入了操作系统底层的专业领域知识,腾讯混元的回答如下:

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

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

从思路到实现,腾讯混元的回答质量很高,从专业的角度看,设计的也是非常合理的。不仅给出了示例代码,还解释了关键逻辑,如分配、释放内存,检查内存页面是否有效,分配新页面。可以说是理解了这个业务需求的每个细节,同时还留下了业务需要额外关注的地方,如性能、碎片等。在这个场景中非常贴合专业领域的编码习惯了,即先给出大致的逻辑,然后不断进行细节优化。

让我们再用一个复杂且抽象的测试腾讯混元的生成能力。

“使用基本的html,js,css完成一个美观实用的Todolist页面”

在这个测试用例中,Todolist 是抽象的,隐含了用户的输入输出,任务的删减。任务的定义,样式的定义等。让我们来看一下腾讯混元的实现:

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

代码比较长,这里直接按它说的,将代码复制到一个 html 文件中,然后通过浏览器打开直接看效果:

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

包括了一个基本的 TodoList 页面,用户可以在输入框中输入任务,点击添加按钮将任务添加到任务列表中。任务列表中的每个任务都有一个删除按钮,点击删除按钮可以从列表中移除任务,整个页面使用了简洁的设计和易于使用的元素。

数据、prompt 和建模技术探索

大模型代码生成能力得到大幅提升的背后,需要依托多方面的技术探索与突破。以腾讯混元大模型为例,我们从腾讯混元大模型的更新日志中了解到,腾讯混元团队收集了大规模的编程语料,通过不同语言、不同应用领域代码的学习,不断完善模型对编程语义的理解。此外,设计高质量的代码生成 prompt 也是关键,指导模型准确捕捉语法、风格等方面的语言特征。具体来说:第一是在提高编程语料数据质量。相比通用语言数据,高质量的代码语料对模型训练更为关键,腾讯混元团队持续积累各类编程语言的代码样本,扩充模型对编程语义的理解。

第二是持续进行 prompt 优化,不断优化代码生成的提示词表述,引导模型更好地捕捉编程语言的语法、风格和语义等方面特征。

第三是尝试多任务统一建模,在模型结构上,将代码生成任务与理解自然语言描述的任务统一建模,使模型在两个方向的表示能力得以相互促进。

除了这三方面技术探索,模型在程序语言理解上的大幅进步还有赖于持续的工程化积累。另外,腾讯混元大模型由腾讯自研的 Angel 机器学习平台提供支撑。AngelPTM 训练速度较主流开源框架提升 1 倍,可以缩短模型研发迭代周期,也是确保腾讯混元大模型快速迭代的重要的保证。

应用前景:代码提示、代码规范检测与代码生成,助力开发提效

通过实测,能看到腾讯混元大模型代码生成能力已经有效提升。而更好的生成能力,可以帮助大模型在软件开发辅助等领域开启更多应用场景。目前代码编程方面可以预见有三大应用方向:

1. 代码提示:基于自然语言描述自动提示代码段,可辅助开发者更快实现编程需求。

2. 代码规范检测:检查代码是否符合指定的代码规范要求,如命名规范等。

3. 代码生成根据复杂需求描述自动生成完整代码,辅助快速实现编程功能。

以腾讯混元大模型为例,在代码提示上,腾讯混元可用于各种编程语言的 IDE 中,根据开发者的注释或需求说明,提示可能的代码实现。针对一些重复性比较强的编码工作,如果能根据注释自动提示代码,将大大提升开发效率。开发者只需关注业务要求,无须反复键入重复的代码片段,就能高效实现功能。

在代码规范检测上,可基于公司或项目的代码规范要求,自动检查代码的命名、格式等是否符合规范。腾讯混元可以帮开发团队节省开发时间,避免手动 review 检查出的问题,自动化检测可一次性直观地反馈所有规范问题。

而代码生成更是直接辅助编程,根据需求描述快速输出代码雏形,腾讯混元可直接输出初始版本代码,开发者只需在此基础上进行适当优化与补充,辅助开发者快速实现所需功能。

从这次版本升级能看到,腾讯混元的代码生成能力正在持续快速进步。相信通过不断的实践与积累,其在程序语言理解方面的能力还将达到新的高度。而对于开发者来说,趁手的开发工具是高质高效完成开发任务的前提,从腾讯混元大模型评测能看出 AI 大模型的实力已经不容小觑,如何利用大模型加速抽象复杂、甚至跨语言的项目研发,提升研发效率,值得每位开发者重视。CSDN 将持续报道 AI 与大模型最新技术与落地实践,欢迎关注。



Tags:大模型编程   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
大模型编程实测:如何hold住复杂、跨语言代码需求?
出品 | CSDN(ID:CSDNnews)AI 大模型正在深入千行百业,在 CSDN 举办的 2023 年 1024 程序员节上,CSDN 创始人蒋涛分享中提到,大模型将掀起一场生态革命,带来生产力的极大提升,重构所...【详细内容】
2023-11-02  Search: 大模型编程  点击:(206)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(5)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(12)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(8)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(10)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(8)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条