0

0

流量工程将代码生成的准确率提高一倍:由19%提高至44%

WBOY

WBOY

发布时间:2024-02-05 09:15:09

|

992人浏览过

|

来源于51CTO.COM

转载

一篇新论文的作者提出了一种“强化”代码生成的方法。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

流量工程将代码生成的准确率提高一倍:由19%提高至44%

代码生成是人工智能中一项日益重要的能力。它通过训练机器学习模型,根据自然语言描述自动生成计算机代码。这一技术具有广泛的应用前景,可以将软件规格转化为可用的代码,自动化后端开发,并协助人类程序员提高工作效率。

然而,生成高质量代码对AI系统仍然具有挑战性,与翻译或总结等语言任务相比。代码必须准确地符合目标编程语言的语法,能够优雅地处理各种极端情况和意外输入,并精确地处理问题描述中的许多小细节。即使是其他领域看似无害的小错误也可能完全破坏程序的功能,导致编译或运行失败。

最近,CodiumAI的研究人员提出了AlphaCodium,这是一种新方法,可以显著提升GPT-4等大型语言模型的代码生成能力。他们的观点是,仅仅微调提示的措辞在解决复杂编码问题上具有固有的限制。相反,他们设计了一个多阶段流程,专注于通过迭代生成、运行和调试代码来对照测试用例,从而使模型能够从实践中学习。

提示工程的局限性

在自然语言任务中,提示工程是指对提示的措辞和结构进行仔细调整,以引导模型生成所需的输出。例如,在输入文本前加上“写简明的摘要:”这个短语,可以使模型生成更加准确的摘要。

提示工程已被证明在做文本生成引导大语言模型行为方面非常有效。然而针对编码问题,研究人员发现,即使进行广泛的及时调整,也只能获得微小的效益。这一发现令人深思。因此,生成高质量的代码仍然需要其他解决方案:

  • 精确匹配目标编程语言的语法
  • 优雅地处理极端情况和意外输入
  • 解决问题陈述中描述的所有小细节和需求
  • 为所有的有效输入确保代码正确编译和运行

这些结构性需求超出了文本生成的范围,无法硬编码到提示中。提示本身缺乏模型学习所需的编码技巧和具体反馈。

AlphaCodium迭代流程

为了应对这些挑战,研究人员开发了一种迭代流程,专门针对代码生成问题的结构。其中的关键创新在于利用所生成代码的执行结果作为学习信号,以提供直接的反馈。

AlphaCodium的流程有两个主要阶段:

预处理

  • 模型将问题描述释义为项目符号,以提取关键细节。
  • 解释每个示例输入/输出背后的预期逻辑。
  • 提供两三个自然语言解决方案。
  • 为代码覆盖生成额外的不同测试用例。

代码迭代

  • 模型生成初始代码解决方案。
  • 针对公共测试用例重复运行该代码,修复出现的错误。
  • 对模型生成的测试用例执行同样的事情。
  • 额外的测试用例被添加到不断增大的“测试锚”(test anchor)套件中,以防止回归。

通过增量推理问题、开发解决方案假设、扩展测试覆盖,以及反复生成和调试代码,模型通过经验来学习——这正是高质量代码生成所需的技能。

流量工程将代码生成的准确率提高一倍:由19%提高至44%

图1. 具有结构化输出的提示示例(生成可能的解决方案阶段)

研究人员发现,与端到端模型相比,将流程设计为具有清晰接口和目标的模块可以获得更好的结果。每个阶段首先专注于更简单的子任务,以积累知识,并发掘为下游阶段提供依据的洞察力。像测试生成这样的上游阶段不需要完整的解决方案,只需要基本的推理。

实验结果

研究人员依据CodeContests衡量基准对AlphaCodium进行了评估,该衡量基准包含来自竞争性编程比赛的数百个编码问题。

MCP Market
MCP Market

MCP Servers集合平台,帮你找到最好的MCP服务器

下载

流量工程将代码生成的准确率提高一倍:由19%提高至44%

图2. 问题描述和反思——一个典型的CodeContests问题的例子,基于人工智能对问题进行自我反思。虽然最初的描述冗长而复杂,但适当的自我反思可以使问题更清晰、更连贯,从而改进代码解决方案

针对GPT-4模型,与经过大量优化的单个提示相比,AlphaCodium将验证集上的代码生成准确率从19%提高到了44%。面对不同的模型大小和测试集,这个好处依然适用,与单独的提示工程相比收效显著。

AlphaCodium的性能也显著优于之前发布的方法,比如AlphaCode和CodeChain,同时使用更少的计算资源。比如说,它通过避免不必要的蛮力生成,其准确性可以媲美AlphaCode,而模型查询少10000倍。

这些结果证明了围绕任务结构整体设计AI系统的价值,而不是将其视为通用文本生成器。通过合并迭代代码运行和调试,AlphaCodium更好地将训练过程与生成健壮实用代码的最终目标结合起来。

更广泛的影响

虽然针对竞争性编程问题进行了演示,但AlphaCodium中使用的概念为AI推进代码生成提供了更广泛的适用经验:

  • 单单提示工程对于处理复杂的代码任务具有局限性。具体解决问题的经验至关重要。
  • 基于测试的开发规范可以为模型训练提供依据。测试提供了明确的适应度函数。
  • 迭代代码调试将模型改进的重点放在实际发生的错误上。
  • 测试覆盖扩展突出了提示中不可见的泛化性差距。
  • 具有双重验证的软决策减少了脆弱性和偏差。

AlphaCodium为基于软件工程最佳实践的代码生成提供了一种大有前途的新范式。关于泛化性和计算开销仍然存在有待商榷的研究问题。但这里展示的原则(从经验中学习、测试驱动开发、模块化推理和迭代式调试)似乎为提高AI的编码能力提供了坚实的基础。

论文链接:https://arxiv.org/pdf/2401.08500.pdf。

代码库:https://github.com/Codium-ai/AlphaCodium。

原文标题:"Flow engineering" doubles code generation accuracy (19% vs 44%),作者:Mike Young

链接:https://notes.aimodels.fyi/flow-engineering-intensifies-for-code-generation/。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1049

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

86

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

456

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

11

2026.01.19

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

34

2026.01.21

人工智能在生活中的应用
人工智能在生活中的应用

人工智能在生活中的应用有语音助手、无人驾驶、金融服务、医疗诊断、智能家居、智能推荐、自然语言处理和游戏设计等。本专题为大家提供人工智能相关的文章、下载、课程内容,供大家免费下载体验。

411

2023.08.17

人工智能的基本概念是什么
人工智能的基本概念是什么

人工智能的英文缩写为AI,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学;该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

305

2024.01.09

人工智能不能取代人类的原因是什么
人工智能不能取代人类的原因是什么

人工智能不能取代人类的原因包括情感与意识、创造力与想象力、伦理与道德、社会交往与沟通能力、灵活性与适应性、持续学习和自我提升等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

632

2024.09.10

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

1

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
麻省理工大佬Python课程
麻省理工大佬Python课程

共34课时 | 5.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号