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


复杂抽象、专业业务理解与生成,合理简洁
在前面两点中,主要考察了腾讯混元对于语义细节以及代码生成的广度上,实际工作中,需求是非常抽象和专业的 。
我们来测试一下腾讯混元对于专业领域的代码生成能力,给出测试用例如下:
“使用Rust编写一个内存管理接口模块 , 用于对错误内存页面的隔离和重新分配 。”
在这个测试用例中,我们切换了新的编程语言,同时引入了操作系统底层的专业领域知识 , 腾讯混元的回答如下:

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

文章插图

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

文章插图
从思路到实现,腾讯混元的回答质量很高,从专业的角度看,设计的也是非常合理的 。不仅给出了示例代码,还解释了关键逻辑,如分配、释放内存 , 检查内存页面是否有效,分配新页面 。可以说是理解了这个业务需求的每个细节,同时还留下了业务需要额外关注的地方 , 如性能、碎片等 。在这个场景中非常贴合专业领域的编码习惯了,即先给出大致的逻辑,然后不断进行细节优化 。
让我们再用一个复杂且抽象的测试腾讯混元的生成能力 。
“使用基本的html,js,css完成一个美观实用的Todolist页面”
在这个测试用例中 , Todolist 是抽象的,隐含了用户的输入输出,任务的删减 。任务的定义 , 样式的定义等 。让我们来看一下腾讯混元的实现:
大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图
代码比较长,这里直接按它说的,将代码复制到一个 html 文件中 , 然后通过浏览器打开直接看效果:
大模型编程实测:如何hold住复杂、跨语言代码需求?

文章插图
包括了一个基本的 TodoList 页面,用户可以在输入框中输入任务,点击添加按钮将任务添加到任务列表中 。任务列表中的每个任务都有一个删除按钮,点击删除按钮可以从列表中移除任务,整个页面使用了简洁的设计和易于使用的元素 。
数据、prompt 和建模技术探索
大模型代码生成能力得到大幅提升的背后,需要依托多方面的技术探索与突破 。以腾讯混元大模型为例,我们从腾讯混元大模型的更新日志中了解到,腾讯混元团队收集了大规模的编程语料,通过不同语言、不同应用领域代码的学习 , 不断完善模型对编程语义的理解 。此外,设计高质量的代码生成 prompt 也是关键,指导模型准确捕捉语法、风格等方面的语言特征 。具体来说:第一是在提高编程语料数据质量 。相比通用语言数据,高质量的代码语料对模型训练更为关键,腾讯混元团队持续积累各类编程语言的代码样本,扩充模型对编程语义的理解 。
第二是持续进行 prompt 优化,不断优化代码生成的提示词表述 , 引导模型更好地捕捉编程语言的语法、风格和语义等方面特征 。
第三是尝试多任务统一建模,在模型结构上 , 将代码生成任务与理解自然语言描述的任务统一建模,使模型在两个方向的表示能力得以相互促进 。
除了这三方面技术探索,模型在程序语言理解上的大幅进步还有赖于持续的工程化积累 。另外,腾讯混元大模型由腾讯自研的 Angel 机器学习平台提供支撑 。AngelPTM 训练速度较主流开源框架提升 1 倍 , 可以缩短模型研发迭代周期,也是确保腾讯混元大模型快速迭代的重要的保证 。
应用前景:代码提示、代码规范检测与代码生成,助力开发提效
通过实测 , 能看到腾讯混元大模型代码生成能力已经有效提升 。而更好的生成能力,可以帮助大模型在软件开发辅助等领域开启更多应用场景 。目前代码编程方面可以预见有三大应用方向:
1. 代码提示:基于自然语言描述自动提示代码段,可辅助开发者更快实现编程需求 。
2. 代码规范检测:检查代码是否符合指定的代码规范要求,如命名规范等 。
3. 代码生成根据复杂需求描述自动生成完整代码,辅助快速实现编程功能 。
以腾讯混元大模型为例 , 在代码提示上,腾讯混元可用于各种编程语言的 IDE 中,根据开发者的注释或需求说明 , 提示可能的代码实现 。针对一些重复性比较强的编码工作,如果能根据注释自动提示代码 , 将大大提升开发效率 。开发者只需关注业务要求,无须反复键入重复的代码片段,就能高效实现功能 。


推荐阅读