【Code Agent Benchmark】论文分享:Web Bench

部署运行你感兴趣的模型镜像

论文名称:Web-Bench: A LLM Code Benchmark Based on Web Standards and Frameworks

论文链接:https://arxiv.org/abs/2505.07473

机构:字节跳动

Github 链接:https://github.com/bytedance/web-bench

数据集链接:https://huggingface.co/datasets/bytedance-research/Web-Bench

简介

Web Bench 是字节跳动几位前端同学设计并实现的前端新基准,因为前几天在群里面看到作者在宣传,然后也看了一下整体的介绍,觉得非常有实际意义的,所以也写篇文章介绍下他们的工作。

这个Benchmark是用来评估LLM在真实Web项目上的编程表现,主要有四个特点:

  • 由50个独立开发的真实Web项目组成,复杂度从作者前端工程师视角定性为中低难度。但从最后的评估结果来看,目前LLM在解决这些项目级问题中还有很大的提升空间。

  • 覆盖了较常见的业务场景:如购物、博客、表格、画板、小游戏等。

    在这里插入图片描述

  • 覆盖核心的Web Standards:如DOM、BOM、CSS、SVG、Canvas、EcmaScript、Typescript等。

  • 覆盖常用的Frameworks:如React、Vue、Redux、Tailwind、Nextjs、Prisma 等。

在这里插入图片描述

背景

作者在构建Web Bench之前,也阅读过很多LLM Coding的基准论文,发现了一些共性问题:

  • 很多Top基准大多数是由职业Researcher或者在校硕博生提出来的,没有深度参与到行业的项目开发,体现在题目上,以直接用竞赛题或者现成的开源项目作为来源了,当然这个来源的数据也是相对好收集。

  • Swe-bench就做得比较好,来自真实的Github开源项目PR,代表LLM解决实际项目问题的能力。

  • 早期提出的一些代码基准,其评价指标在现有的LLM上已经快刷到100%的程度了,不太能够评价现在的LLM Coding的能力了,需要及时更新。

所以作者的优势就体现出来了,是一群有着深度项目开发经验的前端,能够人工构造项目级的题目,覆盖的技术栈、题目类型等也比较全面。

评测集

数据组成

  • Dataset(数据集):Projects 合集,提供Full Dataset。

  • Project(项目):Dataset中的一项,一个项目由20个连续的Task组成。

  • Task(任务):包括需求描述、端到端(E2E)测试用例;平均每个任务就有3.6个测试用例,平均每个项目由72.4个测试用例。

图1展示了一个Project的Task-1 & Task-2的例子,虽然作者说Task-2的执行依赖于Task-1的结果(需要有main元素),但我这里要进一步说明下:Task-2实际上是在Task-1创建的基础页面结构上添加新功能模块,起到不断完善整个项目的过程,更严谨地说,Task-2是强依赖于Task-1的问题,本质上是问题的延续。因为Web Bench的执行过程是自动化的,如果Task-2真得要强依赖于Task-1的结果去预设问题内容的话(比如修改xxx),那么很可能就在Task-1这一步就跪了。

在这里插入图片描述

构建方法

人工构建与校准为主,排除了一些tests、tasks中的bug,目前开源的50个项目都是经过校准的项目。

附录D中也给出了更多的构建细节,有一个参考的校准工作流。

在这里插入图片描述

在这里插入图片描述

最后一个项目的结构示例如下图:

在这里插入图片描述

使用方法

让各种LLM在作者开发的基准Agent上跑,并用Playwright E2E cases验证结果的正确性。

在这里插入图片描述

图5介绍了评估器工作流程(Evaluator Workflow),主要操作如下:

  • 获取初始代码(可选):从代理处获取初始代码。

  • 任务迭代:按顺序从task - 1执行到task - 20 。

  • 调用代理:具体细节见Web - Agent Workflow部分。

  • 重写文件:对现有文件进行更新或创建新文件。

  • 初始化环境(可选):初始化文件运行环境。

  • 构建文件(可选):检查文件是否存在如引用错误等问题。

  • 测试:使用Playwright进行端到端(E2E)测试。

  • 重试:依据构建或测试过程中产生的错误信息进行重试。

    • 首次尝试,若失败,结合任务描述和错误信息执行task - n,然后返回步骤3 。

    • 第二次尝试,若仍失败,则评估结束。

  • 生成报告:更多详细内容见附录C。

当然,作者也简单介绍了一下他们的Web Agent流程:

在这里插入图片描述

具体工作流程如下:

  • 构建提示词:利用系统提示词(SP)、任务描述、文件以及错误信息来构建。若组合后的输入超出上下文长度,将进行截断处理。

  • 请求LLM:依据所选模型请求LLM的OpenAPI并返回响应,温度、最大令牌数、上下文长度等参数从模型提供商处获取。

  • 提取文件:解析LLM的响应,从中提取生成的文件 。更多详细信息可在附录B中查看。

评价指标

Pass@1

LLM一次性通过率,强如Claude 3.7 也就只有25.11%的通过率,还有很大的提升空间,后面各个模型的排名也是基本符合预期的。

在这里插入图片描述

Pass@2

带着error context再运行一次的通过率,整体排名与Pass@1差不多。

在这里插入图片描述

总结

可以看到,作者从中低难度出发构建前端的项目级评测,现在最强的Claude 3.7模型也做不到非常高的通过率,说明LLM 在真实项目中的Coding能力还有很大提升。我觉得非常有意义,给作者们点赞。

如果非要说有一点遗憾的话,就是这些项目的Task还是一个连续性的项目级生成过程的集合,如果有一个办法,能够在自动化评估的过程中,在第n(n>1)轮生成的问题是基于n-1轮的代码结果继续提问的(比如继续生成xxx、修改xxx等),那么就更加贴近真实软件项目开发过程了。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依然易冷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值