码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成

对于大模型来说,擅长的是本地化编码任务。

如果任务涉及多个相互依赖的文件,LLM无法解决这个问题

微软研究人员为此设计了一个名为CodePlan的任务无关的神经网络框架

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

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

论文地址:https://arxiv.org/pdf/2309.12499.pdf

论文中,CodePlan综合了多步骤编辑链(chain-of-edits),是一种将程序分析、规划和LLM结合在一起的新方法。

一起来具体看看,CodePlan是如何设计的?

CodePlan:大模型+规划

软件工程活动中,例如软件包迁移、修复静态分析或测试的错误报告,以及向代码库添加类型提示或其他规范,涉及到对整个代码存储库的普遍编辑。

研究人员计划这些活动,以实现”存储库级别的编码任务”

编码工具如GitHub Copilot、Code Whisperer已经获得了大模型能力的支持,为码农在本地化编码问题上提供了解决方案

然而,事实是,「存储库级别的编码任务」更加复杂,无法直接通过LLM解决,因为存储库中的代码是相互依赖的,整个存储库可能太大而无法纳入提示

这项研究中,微软团队将库级编码框架作为一个规划问题,并提出了一个任务不可知的框架,称为CodePlan。

CodePlan综合了一个多步骤的编辑链(计划) ,其中每一步都会调用代码位置上的LLM。该代码位置上的上下文来自整个存储库、以前的代码更改和特定于任务的指令。

CodePlan是一种新型组合,它基于增量依赖分析、变更可能影响分析和自适应规划算法

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

如下图,展示了复数库API的变化,微软研究人员的任务是根据这一变化迁移代码库。

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

在图3的左侧展示了代码库中与使用复数库相关的部分

具体来说,Create.cs文件中的方法func,调用了库中的create_complex方法,Process.cs文件中的方法Process.cs调用了func。

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

研究人员将任务描述和func主体从图1传递给LLM,以生成修改后的func代码,如图3右侧所示

可以看到,LLM已经正确地编辑了对create_complex API的调用,以便它返回一个Complex类型的对象,而不是两个浮点值的元组。

注意,这个编辑导致了方法func的签名发生了变化——它现在返回了一个Complex类型的对象。

需要进行修改的是:需要修改方法func的调用者,例如在Process.cs文件中的process方法,如图3左下角所示。如果不对process方法的主体进行适当的修改,代码将无法构建!

图3右下方显示了对process方法的适当修改,它能使版本库达到一致的状态,从而在编译时不会出错。

研究人员的主要任务是建立一个「存储库级别的编码系统」,该系统能够自动生成编辑所需的派生规范

LLM驱动的库级编码任务定义如下:

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

在CodePlan的整体框架中,输入包括一个存储库、一个通过自然语言指令或一组初始代码编辑表达种子规范的任务、一个正确性oracle和一个LLM

CodePlan创建了一个计划图,其中每个节点都代表LLM需要执行的代码编辑任务,而边表示目标节点需要在源节点之后执行

CodePlan监控代码编辑,并自适应地扩展计划图。

一旦计划中的所有步骤都已完成,存储库将由oracle进行分析。如果oracle验证了资源库,则任务完成。如果发现错误,错误报告将作为下一轮计划生成和执行的种子规范。

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

此外,CodePlan算法还维护了一个依赖关系图,图4说明了依赖关系图的结构。

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

刷新SOTA

研究人员对CodePlan在两个存储库级任务上的有效性进行了评估:包迁移(C#)和时态代码编辑(Python)

每个任务在多个代码库上进行评估,每个代码库都需要对多个文件(2-97个文件)进行相互依赖的更改。

码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成图片

以前从未有过使用LLM自动完成这种复杂程度的编码任务

研究结果显示,与基准相比,CodePlan更符合基本事实,能够使5/6个存储库通过有效性检查,例如无错误构建和正确的代码编辑

总的来说,CodePlan为自动化复杂的库级编码任务提供了一种有前途的方法,既提高了生产效率,又提高了准确性

它成功地应对了许多挑战,为高效可靠的软件工程实践开辟了新的可能性

参考资料:https://www.php.cn/link/23b1f559d8bd157d0d741c83957ed4f2

ImagetoCartoon ImagetoCartoon

一款在线AI漫画家,可以将人脸转换成卡通或动漫风格的图像。

ImagetoCartoon 106 查看详情 ImagetoCartoon

以上就是码农狂喜!微软提出CodePlan,跨168个代码库编码任务,LLM自动化完成的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1050391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
在Java中如何使用BlockingQueue实现生产者消费者模式_BlockingQueue操作技巧
上一篇 2025年12月2日 10:01:58
SQL 分组查询如何优化大表统计?
下一篇 2025年12月2日 10:02:01

相关推荐

  • 在Java中如何创建一个天气查询小应用

    注册OpenWeatherMap获取API密钥;2. 使用Java 11+的HttpClient发送HTTP请求;3. 构造带城市参数的URL并调用天气接口;4. 解析返回的JSON数据提取温度和天气描述;5. 在控制台输出结果,支持中文城市需URL编码。 在Java中创建一个天气查询小应用,核心是…

    2026年9月21日
    000
  • 如何自定义代码的格式化规则?

    自定义代码格式化规则需选择合适工具并配置文件实现统一风格。1. 根据语言选用主流工具如Prettier、Black、clang-format等;2. 在项目根目录创建对应配置文件如.prettierrc、.eslintrc.js或pyproject.toml,定义缩进、引号、行宽等规则;3. 将配置…

    2026年9月21日
    100
  • 如何利用Draw.io Integration扩展在VSCode中绘制并嵌入架构图?

    安装Draw.io Integration扩展后,可在VSCode中直接创建编辑图表。右键选择“Create Diagram with Draw.io”新建.diagram文件,双击打开内置编辑器,拖拽组件绘制流程图、架构图等。保存后自动生成Base64编码的嵌入代码,粘贴至Markdown即可预览…

    2026年9月21日
    200
  • VSCode的自动保存与文件监听功能如何结合以避免不必要的构建触发?

    通过配置VSCode自动保存延迟和构建工具防抖,减少频繁触发构建。设置”files.autoSave”: “afterDelay”与”files.autoSaveDelay”: 3000,结合Vite或Webpack的watch…

    2026年9月21日
    000
  • 虚拟伴侣AI如何构建记忆库 虚拟伴侣AI长期记忆系统的开发技巧

    虚拟伴侣AI如何构建记忆库 虚拟伴侣AI长期记忆系统的开发技巧虚拟伴侣AI如何构建记忆库 虚拟伴侣AI长期记忆系统的开发技巧虚拟伴侣AI如何构建记忆库 虚拟伴侣AI长期记忆系统的开发技巧虚拟伴侣AI如何构建记忆库 虚拟伴侣AI长期记忆系统的开发技巧

    构建虚拟伴侣AI长期记忆系统需设计分层结构,区分事实、情感与事件记忆,使用向量或图数据库存储并标注元数据;通过自然语言理解提取关键信息,经权重评估后编码存入长期记忆库;借助语义匹配与上下文关联实现记忆唤醒,结合最近邻搜索提升检索效率;引入时间衰减与重复强化机制模拟遗忘规律,定期清理低权记忆;同时实施…

    2026年9月21日 用户投稿
    000
  • 虚拟伴侣AI如何实现智能学习 虚拟伴侣AI自适应训练系统的优化指南

    虚拟伴侣AI如何实现智能学习 虚拟伴侣AI自适应训练系统的优化指南虚拟伴侣AI如何实现智能学习 虚拟伴侣AI自适应训练系统的优化指南虚拟伴侣AI如何实现智能学习 虚拟伴侣AI自适应训练系统的优化指南虚拟伴侣AI如何实现智能学习 虚拟伴侣AI自适应训练系统的优化指南

    通过强化学习、记忆网络、多模态融合、联邦学习与课程学习五大机制,构建虚拟伴侣AI的自适应训练系统:一、利用用户反馈信号驱动PPO算法优化对话策略,结合稀疏奖励补偿提升长期决策质量;二、建立增量式上下文记忆网络,以向量数据库存储并检索用户个性化信息,增强长期依赖建模能力;三、融合文本、语音、打字节奏等…

    2026年9月21日 用户投稿
    100
  • VSCode的括号着色功能如何帮助你避免语法错误?

    VSCode括号着色功能通过彩色高亮匹配括号,帮助用户直观识别嵌套结构、提升代码可读性,并快速发现遗漏或多余括号,减少语法错误。 VSCode的括号着色功能通过视觉方式帮你快速识别代码中的匹配和嵌套结构,减少语法错误的发生。当你在编写代码时,成对出现的括号(如()、[]、{})会被高亮显示为相同或相…

    2026年9月21日
    000
  • Java中如何将嵌套列表对象转换为扁平化单元素列表

    本文探讨了在java中将包含嵌套列表的对象集合转换为新列表的多种策略,旨在使新列表中每个对象仅包含其嵌套列表中的一个元素。通过详细介绍java 7的传统迭代方法、java 8-15的stream api `flatmap`操作,以及java 16及更高版本的`mapmulti`方法,文章提供了清晰的…

    2026年9月21日
    100
  • 怎么在VSCode里配置Go语言环境?

    安装Go并配置环境变量后,在VSCode中安装官方Go扩展,通过命令面板安装gopls、delve等必要工具,并设置保存时自动格式化与导入,即可实现代码补全、格式化和调试功能。 在 VSCode 中配置 Go 语言开发环境其实不复杂,只要安装好工具链并正确设置,就能获得代码补全、格式化、调试等完整功…

    2026年9月20日
    100
  • Java从文本文件随机读取并打印指定行数内容

    本文旨在指导读者如何使用java程序从文本文件中高效地读取多组固定行数的内容(如诗歌),并随机选择其中一组进行打印。教程将详细介绍如何利用`files.readalllines`、`random`和`list.sublist`等核心api,实现文件的整体读取、随机索引的生成以及特定内容块的提取与输出…

    2026年9月20日
    100
  • 新页软件合并下达生产计划

    新页软件合并下达生产计划新页软件合并下达生产计划新页软件合并下达生产计划新页软件合并下达生产计划

    同一规格的产成品在面向不同客户进行销售时,若每个客户的订单都独立生成生产计划,容易引发生产排程的重复与冲突。这不仅会造成设备、人力等资源的浪费,还会显著增加生产管理的复杂性,削弱生产过程中的统一调度能力,进而影响整体生产效率与计划执行的精准度。 1、 第一步:为提升系统操作的直观性和演示效果,可适当…

    2026年9月20日 用户投稿
    200
  • ChatGPT代码会出错吗_AI编程中5个常见错误及解决方法

    AI编程中常见错误包括语法不匹配、逻辑遗漏、API误用、安全漏洞和集成困难,需通过版本明确、测试验证、文档核对、安全扫描和上下文补充等方式解决,结合人工审查与测试才能确保代码质量。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ ChatGP…

    2026年9月20日
    100
  • 如何设置VSCode的默认编码?

    VSCode默认使用UTF-8编码,可通过设置files.encoding指定默认编码如utf8、gbk;2. 启用files.autoGuessEncoding可自动识别文件编码;3. 在settings.json中配置可持久化编码设置,支持手动修改并即时生效。 VSCode 默认使用 UTF-8…

    2026年9月20日
    000
  • Java中通过PKCS12证书实现OkHttp客户端认证的POST请求

    本教程详细介绍了如何在java应用中,利用okhttp库执行需要客户端证书认证的post请求。我们将重点讲解如何加载pkcs12格式的证书文件,配置keystore和keymanagerfactory,初始化sslcontext,并将其集成到okhttpclient中,以确保请求的安全性和认证的正确…

    2026年9月20日
    000
  • idea恢复初始化

    答案:通过关闭IDEA并删除配置、缓存目录及插件数据,可将其重置为初始状态。具体步骤依次为:彻底退出程序;删除系统中对应的JetBrains文件夹(Windows在AppData,macOS在Library,Linux在.config和.cache);可选删除项目中的.idea和.iml文件;重启后…

    2026年9月20日
    000
  • idea如何回到上一步

    使用快捷键可快速返回上一步操作位置:Windows/Linux为Ctrl+Alt+←,macOS为Cmd+Option+←,该操作称为“Back”,适用于跳转后返回原代码位置。 在使用 IntelliJ IDEA 时,如果想回到上一步的操作位置,比如刚才编辑或查看的代码位置,可以通过以下几种方式快速…

    2026年9月20日
    300
  • 米侠浏览器网页文字显示不全怎么办 米侠浏览器页面文字显示修复方法

    调整页面缩放至100%并关闭自动缩放;2. 清除缓存与网站数据;3. 切换浏览器内核或启用桌面模式;4. 设置标准字体大小与UTF-8编码可解决米侠浏览器文字显示不全问题。 米侠浏览器出现网页文字显示不全的问题,通常与字体设置、页面缩放、缓存异常或内核渲染有关。下面提供几种有效的修复方法,帮助你恢复…

    2026年9月20日
    100
  • 虚拟伴侣AI如何实现角色扮演 虚拟伴侣AI情景模拟功能的创作方法

    虚拟伴侣AI如何实现角色扮演 虚拟伴侣AI情景模拟功能的创作方法虚拟伴侣AI如何实现角色扮演 虚拟伴侣AI情景模拟功能的创作方法虚拟伴侣AI如何实现角色扮演 虚拟伴侣AI情景模拟功能的创作方法虚拟伴侣AI如何实现角色扮演 虚拟伴侣AI情景模拟功能的创作方法

    要实现虚拟伴侣AI的角色扮演与情景模拟,需构建具备情境感知与动态响应能力的系统。首先设计角色背景与人格模型,明确基本信息并基于心理学理论建立人格框架,配套专属语料库并编码为可调用结构;其次构建情景剧本与触发机制,预设生活化场景、编写对话流程图、设置语义触发器,并结合上下文记忆确保连贯性;再集成自然语…

    2026年9月20日 用户投稿
    100
  • vivo浏览器字体大小怎么调整_vivo浏览器页面文字放大缩小设置

    1、可通过vivo浏览器设置调整字体大小:打开浏览器→点击三点菜单→进入设置→选择“字体大小与编码”→拖动滑块调节至合适尺寸→返回网页即可生效。2、使用双指缩放可临时调整页面显示:在网页中双指张开放大内容,双指捏合缩小页面,操作后页面保持当前比例。3、启用系统无障碍放大功能可实现更大幅度放大:进入手…

    2026年9月20日
    000
  • LongCat-Audio-Codec— 美团开源的语音编解码方案

    LongCat-Audio-Codec— 美团开源的语音编解码方案LongCat-Audio-Codec— 美团开源的语音编解码方案LongCat-Audio-Codec— 美团开源的语音编解码方案LongCat-Audio-Codec— 美团开源的语音编解码方案

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 依图语音开放平台 依图语音开放平台 6 查看详情 LongCat-Audio-Codec是什么 longcat-audio-codec 是美团 longcat 团队开源的语音编解码方案,专为语音…

    2026年9月20日 用户投稿
    500

发表回复

登录后才能评论
关注微信