[论文阅读] 人工智能 + 软件工程 | NoCode-bench:评估LLM无代码功能添加能力的新基准

NoCode-bench:评估LLM无代码功能添加能力的新基准

论文:NoCode-bench: A Benchmark for Evaluating Natural Language-Driven Feature Addition

研究背景:当AI尝试给软件"加新功能",我们需要一张靠谱的"考卷"

想象一下,你想给常用的软件加个小功能——比如让聊天工具支持邮件订阅,或者让表格软件导出新格式。如果不用写代码,只需用自然语言描述这个需求,AI就能自动完成代码修改,那该多方便?这就是"自然语言驱动的无代码开发"的愿景:让普通人也能通过说话或写字来定制软件,不用再跟复杂的代码打交道。

但这里有个大问题:我们怎么知道AI能不能做好这件事?现有的评估工具大多盯着"修bug"或"解决问题",比如给AI一个"软件崩溃了"的描述,看它能不能修好。但"加新功能"和"修bug"完全不是一回事——前者需要理解现有软件的结构,还要在不破坏原有功能的前提下新增代码,难度大得多。而且,现有基准里只有极少数任务是关于加功能的(比如SWE-bench里仅7.3%)。

就像老师想测试学生的"作文创新能力",但手里只有"改错题"的试卷,显然测不出真实水平。于是,研究者们决定打造一张专门的"考卷"——这就是NoCode-bench的由来。

在这里插入图片描述

主要作者及单位信息

该论文由来自浙江大学、香港科技大学、斯图加特大学的研究者合作完成,核心团队包括Le Deng、Zhonghao Jiang、Jialun Cao、Michael Pradel和Zhongxin Liu(通讯作者),其中多数作者来自浙江大学区块链与数据安全国家重点实验室。

创新点:这张"考卷"和以前的有什么不一样?

  1. 聚焦"无代码功能添加"这一空白领域:不同于现有基准(如SWE-bench)主要关注bug修复,NoCode-bench专门针对"用自然语言描述新功能,让AI生成代码变更"的场景,填补了该领域评估工具的空白。

  2. 从"发布说明"出发,保证任务真实性:以前的基准常从"问题描述"或"代码提交记录"里挖任务,容易混入模糊或错误的案例。而NoCode-bench从软件的"发布说明"入手——这是开发者自己写的"更新日志",明确标注了"新增功能",相当于直接从老师手里拿了"官方题库",任务真实性大大提高。

  3. 有"精简版考卷"方便快速评估:完整版包含634个任务,对资源有限的研究者不太友好。于是团队人工筛选出114个高质量任务(NoCode-bench Verified),就像"模拟卷",既能保证评估效果,又能节省时间。

研究方法:这张"考卷"是怎么出的?

NoCode-bench的构建分5个步骤,就像出卷老师从选题到定稿的全过程:

  1. 选"教材"(项目选择):从SWE-bench的12个开源项目里,挑出10个符合条件的——必须有清晰的发布说明,且明确标注了"新增功能",还能关联到具体的代码修改记录(PR)。比如flask因为没有标注"功能"就被排除了。

  2. 找"题目素材"(实例收集):从选定的项目里爬取所有和"新增功能"相关的代码修改记录(PR),并筛选出同时改了源代码、测试文件和文档的PR——毕竟加功能不仅要写代码,还要更新说明书和测试用例。

  3. 搭"考场环境"(环境构建):为每个项目准备可复现的运行环境,用Docker镜像和Anaconda管理依赖,避免因为"环境不对"导致AI做对了也被判错。

  4. 筛"有效题目"(实例过滤):通过测试用例验证每个任务——新增功能后,必须有一些测试从"失败"变成"成功"(证明功能生效了),否则就剔除。最终留下634个有效任务。

  5. 优化"题目描述"(输入 refinement):有些任务的文档里没提新增的类或函数名,但测试用例里有,这种情况会导致AI写对了也通不过测试。于是研究者补充了这些"隐藏信息",还删掉了文档里的PR编号(避免AI"作弊")。

而评估实验则像"模拟考试":选了6个最先进的LLM(比如GPT-4o、Claude-4-Sonnet),用两种主流框架(Agentless和OpenHands)让它们完成任务,再通过"成功率""文件匹配率"等指标打分。

主要贡献:这张"考卷"到底有什么用?

  1. 填补了领域空白:首次提出专门评估"无代码功能添加"的基准,让研究者有了统一的工具来比较不同AI的能力。

  2. 揭示了LLM的真实水平:测试发现,最好的AI(Claude-4-Sonnet)在简单任务集里成功率仅15.79%,复杂任务集里更低。这说明现在的AI离"无代码开发"还差得远。

  3. 指出了AI的三大短板

    • 不会跨文件修改:多文件任务的成功率不到3%;
    • 看不懂软件结构:经常改坏原有功能;
    • 不会用工具:调用编辑工具时格式总出错,导致任务失败。

这些发现就像给AI开发者递了一张"改进清单",明确了未来需要突破的方向。

解决的主要问题及成果

  • 解决了"无代码功能添加"缺乏专门评估工具的问题,提出了NoCode-bench基准;
  • 构建了包含634个任务的数据集及114个人工验证的子集,支持多样化评估;
  • 评估了主流LLM的表现,发现其在跨文件编辑、代码结构理解和工具调用上的短板,为后续研究提供了依据。

一段话总结:

NoCode-bench是一个用于评估大型语言模型(LLMs)在自然语言驱动的无代码功能添加任务上表现的基准测试集,包含来自10个项目的634个任务,涉及约114k代码变更,每个任务均配对用户文档变更与对应的代码实现,并通过开发者编写的测试用例验证。其构建通过五阶段流程(项目选择、实例收集、环境构建、实例过滤、输入优化)完成,以发布说明为起点确保任务真实性,并包含一个经人工验证的子集NoCode-bench Verified(114个任务)以支持轻量评估。评估结果显示,最先进的LLMs在NoCode-bench Verified上的最佳成功率仅为15.79%,在NoCode-bench Full上更低,主要因缺乏跨文件编辑能力、对代码库结构理解不足及工具调用能力欠缺导致。


思维导图:

在这里插入图片描述


详细总结:

1. 背景与目的
  • 无代码开发旨在让用户通过自然语言指定软件功能,无需直接编辑代码,LLMs在此领域有潜力,但需高质量基准测试评估其能力。
  • 现有基准(如SWE-bench)多关注bug修复或问题解决,较少针对无代码场景,且功能添加任务占比低(如SWE-bench仅7.3%),因此构建NoCode-bench以填补空白。
2. NoCode-bench构建(五阶段流程)
  • 项目选择:从SWE-bench的12个项目中筛选出10个,要求有发布说明、特征标注的更新条目及关联的GitHub PR。
  • 实例收集:爬取符合条件的特征添加PR,筛选出同时修改源代码、测试文件和文档的PR,截止2024年8月,获1571个候选实例。
  • 环境构建:为每个项目构建基础Docker镜像,用Anaconda管理版本隔离,解决依赖问题确保环境可复现。
  • 实例过滤:保留有F2P测试(从失败到成功的测试用例)的实例,最终获634个任务。
  • 输入优化:补充测试中引用但文档未提及的实体名称,屏蔽PR编号等避免数据泄露。
3. NoCode-bench Verified
  • 构建:从候选中随机抽样238个任务,由5名资深开发者按任务清晰度和评估准确性标注,最终保留114个高质量任务。
  • 作用:支持资源有限情况下的轻量、可靠评估,与NoCode-bench Full(634个任务)互补。
4. 实验设置
  • 研究问题(RQs)
    • RQ1:与SWE-bench的特征差异
    • RQ2:LLMs在Verified子集的表现
    • RQ3:LLMs在Full子集的表现
    • RQ4:LLMs失败的原因
  • 模型与框架:6个LLMs(3个开源:Qwen3-235B等;3个闭源:GPT-4o等),采用Agentless和OpenHands框架。
  • 评估指标:成功率(Success%)、应用率(Applied%)、文件匹配率(File%)、回归测试通过率(RT%)等。
5. 实验结果
维度NoCode-bench vs SWE-bench
输入复杂度文档变更平均长度约为SWE-bench问题描述的2倍(739.06 vs 480.37 tokens)
定位难度平均修改文件2.65个(SWE-bench 1.66个),13.56%实例需新增/删除文件(SWE-bench 1.70%)
编辑难度平均代码变更179.12行(SWE-bench 37.71行),20%实例变更超200行
  • RQ2(Verified子集):Claude-4-Sonnet表现最佳,成功率15.79%;Agentless框架应用率(98%)高于OpenHands(59%)。
  • RQ3(Full子集):平均成功率5.68%,低于Verified子集,因任务更复杂且含噪声。
  • RQ4(失败原因)
    • 跨文件编辑能力不足:多文件任务成功率仅2.03%(Full子集)。
    • 代码库结构理解不足:修改破坏现有功能(如DeepSeek-v3的错误修改)。
    • 工具调用能力欠缺:Gemini-2.5-Pro因格式错误成功率为0。
6. 结论

NoCode-bench为无代码功能添加任务提供了挑战性基准,现有LLMs表现不佳,需在跨文件编辑、代码库理解和工具调用方面改进。


关键问题:

  1. NoCode-bench与现有软件工程基准(如SWE-bench)的核心区别是什么?
    答:NoCode-bench聚焦无代码功能添加场景,以文档变更为输入,而SWE-bench等多关注传统问题解决,以 issue 描述为输入;NoCode-bench任务涉及更多跨文件编辑(平均2.65个文件 vs SWE-bench 1.66个)、更长代码变更(平均179行 vs SWE-bench 37行),且包含更高比例的文件增删(13.56% vs 1.70%),难度更高。

  2. LLMs在NoCode-bench上的评估表现如何?主要发现是什么?
    答:最先进的LLMs表现较差,在Verified子集上最佳成功率为15.79%(Claude-4-Sonnet),在Full子集上平均成功率仅5.68%;Agentless框架整体表现优于OpenHands;模型在单文件任务上的成功率(如Claude-4-Sonnet达24.59%)显著高于多文件任务(仅3.77%),表明跨文件编辑是主要瓶颈。

  3. 导致LLMs在NoCode-bench任务中失败的关键原因有哪些?
    答:主要有三点:一是缺乏跨文件编辑能力,多文件任务成功率极低;二是对代码库结构理解不足,修改易破坏现有功能(如DeepSeek-v3的错误实现);三是工具调用能力欠缺,模型难以生成符合格式的工具指令(如Gemini-2.5-Pro因格式错误成功率为0)。

总结:一张难住了当前AI的"考卷"

NoCode-bench是首个聚焦"自然语言驱动无代码功能添加"的基准,包含634个真实任务(及114个精选任务),通过严谨的五阶段流程构建而成。实验显示,即使是最先进的LLM,在这张"考卷"上的表现也很糟糕,主要因为跨文件编辑、软件结构理解和工具调用能力不足。

这不仅是对当前AI的"压力测试",更为未来的研究指明了方向——要实现"无代码开发",AI还有很长的路要走。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916364.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git知识】Git 常用知识集合之基础--分支系统与 Tag 标签机制

🧰 Git 常用知识集合Git 是程序员的“时间机器”。这份手册帮你从入门到精通,把 Git 玩明白。1️⃣ Git 基础操作流程 📌 三步走流程:添加 → 提交 → 推送 git add . # 把所有修改加入暂存区 git commit -m …

深入解析 Spark:关键问题与答案汇总

在大数据处理领域,Spark 凭借其高效的计算能力和丰富的功能,成为了众多开发者和企业的首选框架。然而,在使用 Spark 的过程中,我们会遇到各种各样的问题,从性能优化到算子使用等。本文将围绕 Spark 的一些核心问题进行…

Python-初学openCV——对openCV的简单使用

一、概述1、简单介绍OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,旨在为实时图像处理提供强大的功能。它由Intel开发,现由开源社区维护。OpenCV 提供了跨平台的解决方案,支持 Windows、Linu…

去中心化时代的通信革命:briefing与cpolar技术融合带来的安全范式革新

文章目录前言1.关于briefing2.本地部署briefing3.使用briefing4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定briefing公网地址前言 数字协作本该是提升效率的过程,却被这些数据管理问题不断困扰:平台条款中的监控声明、跨网络环境的接入障碍、…

GitHub新手生存指南:AI项目版本控制与协作实战

点击 “AladdinEdu,同学们用得起的【H卡】算力平台”,H卡级别算力,按量计费,灵活弹性,顶级配置,学生专属优惠。 代码仓库创建 分支管理 PR提交 开源项目复现 读者收获:掌握团队开发必备技能…

Axios封装以及添加拦截器

在前端开发中,http请求层的封装可以极大提升代码的复用性和可维护性,本文将完整的用axios封装接口请求,配置请求与响应拦截器,封装统一的请求方法全过程。封装的目的和思路在项目直接用axios发送请求当然没问题,但是如…

C语言中奇技淫巧04-仅对指定函数启用编译优化

相信很多人使用GCC编译代码时,都会接触到gcc -O0/1/2/3/s,知道它可以对工程进行全局优化。 事实上,除了全局优化外,使用GCC扩展方式,我们还可以仅对部分关键函数实施差异化编译优化。 在GCC编译器中,attrib…

HTML Style 对象深度解析:从基础到高级应用

一、Style 对象的核心概念定义与作用 Style 对象是 HTML DOM 中用于操作元素内联样式的接口,通过 element.style 访问。它允许动态修改元素的 CSS 属性,但仅能直接影响内联样式(即通过 style 属性直接写在标签中的样式)。与外部样…

【C++】定义常量

在 C 中&#xff0c;有两种简单的定义常量的方式&#xff1a; 使用 #define 预处理器。使用 const 关键字。 #define 预处理器 #include <iostream> using namespace std;#define LENGTH 10 #define WIDTH 5 #define NEWLINE \nint main() {int area; area LENGTH …

基于遗传算法的多无人车协同侦察与安全保护策略优化

基于遗传算法的多无人车协同侦察与安全保护策略优化 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c;觉得好请收藏。点击跳转到网站。 1. 引言 1.1 研究背景与意义 随着无人系统技术的快速发…

python面向对象编程详解

面向对象编程&#xff08;OOP&#xff09;是一种以对象为核心的编程范式。Python全面支持OOP&#xff0c;主要包含以下核心概念&#xff1a;一、类与对象1.类(Class)类是创建对象的模板或蓝图&#xff0c;它定义了对象的属性和方法。class Dog:# 类属性&#xff08;所有实例共享…

快速入门Socket编程——封装一套便捷的Socket编程——导论

快速入门Socket编程——封装一套便捷的Socket编程——导论 前言 ​ 这里是笔者打算做的Socket编程的第二部分&#xff0c;也就是核心的讨论我们Socket编程本身。 导论 ​ 我们知道&#xff0c;一个经典的服务器套接字的处理流程是如下的&#xff1a; 创建一个指定传输层和网络层…

【Mermaid 离线工具】Mermaid 流程图生成器 - 高清PNG输出,一键生成专业级流程图!

文章目录 Mermaid 流程图生成器(离线版本):高效绘图,离线也能玩转专业可视化 一、Mermaid:文本绘图的 “魔法语法” 二、离线版生成器:功能与优势解析 (一)离线可用,场景更灵活 (二)操作流程:简单五步,产出专业图表 (三)界面设计:简洁直观,降低使用门槛 三、应…

haproxy原理及实战部署

一、负载均衡 负载均衡是网络架构和分布式系统中至关重要的技术&#xff0c;其核心作用是将大量的并发请求或数据流量合理分配到多个服务器&#xff08;或其他资源节点&#xff09;上&#xff0c;从而解决单节点压力过大、资源利用率低、系统稳定性差等问题。 作用1. 提高系统吞…

jwt 在net9.0中做身份认证

一、新建net9.0项目WebApplication1&#xff0c;安装包 <ItemGroup><PackageReference Include"Microsoft.AspNetCore.Authentication.JwtBearer" Version"9.0.7" /><PackageReference Include"Swashbuckle.AspNetCore" Version&…

【机器学习深度学习】微调能改变模型“智商”吗?——模型能力与知识的本质解析

目录 前言 一、模型的“知识”与“能力”&#xff1a;两种不同的智能 第一种&#xff1a;浅层知识&#xff08;记忆 模式识别&#xff09; 第二种&#xff1a;深层能力&#xff08;推理 理解&#xff09; 二、微调&#xff1a;改变的是“经历”&#xff0c;不是“天赋”…

oracle数据库表空间碎片整理

oracle数据库表空间碎片整理 表空间碎片情况检查 表空间碎片问题处理 收缩表 表空间手动整理 exp/imp导出再导入 移动表到新的表空间 表空间碎片情况检查 对比表实际使用空间和数据文件占用空间: --实际数据占用空间 select tablespace_name,round(sum(bytes/1024/1024/1024…

为什么需要可重入锁

在黑马点评项目实战中&#xff0c;提到了可重入锁&#xff0c;然后我想到了是不是不同业务在同一线程内反复获取同一把锁。本文来讨论一下为什么锁需要可重入。一、可重入锁的核心&#xff1a;“同一线程多次获取同一把锁”​​可重入&#xff08;Reentrant&#xff09;​​ 的…

【AI】联网模式

【AI】联网模式 文章目录【AI】联网模式1. 简介2. 接入步骤2.1 引入依赖2.2 方法构建2.3 接口构建1. 简介 在使用联网模式之前&#xff0c;我们如果问起ai一些最近网络上流传的一些东西&#xff0c;它可能并不能准确的给你描述出来&#xff0c;因为它的知识库更新时间可能停留…

第10篇:实战验收篇

&#x1f50d; 实战演练&#xff1a;多条件房源查询 需求描述 查找一套符合以下条件的房子&#xff1a; 预算&#xff1a;2000–3000元区域&#xff1a;天河区户型&#xff1a;两房 关键词&#xff1a;多条件查询 AND BETWEEN LIKE 组合运用&#x1f3ac; 开场白“听起来不难&a…