掘金 人工智能 11小时前
【Code Agent Benchmark】论文分享No.13:SWE-bench
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

SWE-bench是一个旨在评估大模型解决实际GitHub问题能力的基准测试。它通过分析GitHub上已解决的issue和对应的PR,构建测试案例,涵盖代码信息、问题描述、测试用例等关键要素。该基准测试侧重于代码修复,并关注代码上下文的输入策略。SWE-bench的结果受到代码检索准确性的显著影响,因此许多参与者采用Agent+大模型的综合方案。目前,SWE-bench_Verified数据集的结果被官方榜单采纳,是衡量代码Agent性能的重要指标。

💡 SWE-bench通过分析GitHub上的已解决issue和对应的PR,来评估大模型解决软件工程实际问题的能力,而非仅仅关注算法题。

🧩 数据构建主要从12个活跃的Python开源项目中筛选案例,每个案例需满足成功修复问题并附带验证测试,且原始代码库的测试覆盖率超过90%。

🔍 SWE-bench提供了两种代码上下文检索方法:"取巧"(Oracle Retrieval)直接使用PR中的patch,以及稀疏检索(Sparse retrieval)使用BM25算法检索相关代码,但使用者可以根据自己的需求选择不同的检索方法。

📊 评价指标主要为问题解决率(%Resolved),衡量模型成功解决问题的比例。榜单结果受到代码检索策略的显著影响,许多参与者采用Agent+大模型的综合方案。

论文名称:SWE-bench: Can Language Models Resolve Real-World GitHub Issues?

论文链接:arxiv.org/abs/2310.06…

机构:普林斯顿大学 + OpenAI

Github 链接:github.com/SWE-bench/S…

榜单链接:www.swebench.com/

简介

SWE-bench可以说是目前大模型代码方向非常有名的一个Benchmark了,最初是由普林斯顿大学NLP团队在2023年10月发布的,当时主打的Motivation就是,通过一种方式可以评估大模型解决软件工程实际问题的能力,而不是考大模型八股文,解决算法题的能力。

但后来大家也知道,AI Coding这个方向越来越火,所以OpenAI也开始对SWE-bench做了一些完善操作,比如经过人工过滤筛选了一些质量比较差的case,也对每个通过的case做了人工验证,最后留下了SWE-bench_Verified数据集,现在官方的榜单也是以这个数据集的结果为准了。

数据构建

主要是从12个活跃的Python开源项目(如Django、Matplotlib)中,通过筛选 GitHub 上已解决的issue和对应的PR构建测试案例。每个案例需满足:成功修复了特定问题并附带验证测试case且原始代码库的测试覆盖率超过90%。

数据的主要信息如下,主要包括代码信息、问题描述、测试用例等。

instance_id:(str) - 格式化的实例标识符,通常为 repo_owner__repo_name-PR-number。patch:(str) - 黄金补丁,即 PR(不包括测试相关代码)生成的、解决了问题的补丁。repo:(str) - 来自 GitHub 的仓库所有者/名称标识符。base_commit:(str) - 仓库的提交哈希值,表示在应用解决方案 PR 之前仓库的 HEAD。hints_text:(str) - 在解决方案 PR 首次提交创建之前对问题的评论,创建日期。created_at:(str) - 拉取请求的创建日期。test_patch:(str) - 由解决方案 PR 贡献的测试文件补丁。problem_statement:(str) - 问题标题和正文。version:(str) - 用于运行评估的安装版本。environment_setup_commit:(str) - 用于环境设置和安装的提交哈希值。FAIL_TO_PASS: (str) - 一个 JSON 字符串列表,表示已由 PR 解决并与问题解决相关的一组测试。PASS_TO_PASS: (str) - 一个 JSON 字符串列表,表示在 PR 应用之前和之后应通过的测试。

使用方法

具体的提交步骤,看官方给的submit教程即可,大体流程如下图,此处不赘述了。

但是,这里面会有一个很大的问题是,代码上下文一般都很长,怎么给到模型用呢?论文里面提供了两个思路,主要是把解决问题最需要的上下文检索出来给到LLM。

但是上述两个检索代码的方法,只是论文中自己做实验用的方法,没有限制使用者一定要遵循他们的方法。

很多使用者在测试SWE-bench时,都会提出自己的方法,因为检索代码的准确性对于最后的成功率影响是非常大的,属于很关键的Context了,所以榜单上很多是Agent+大模型的综合结果,而不是单大模型的评估结果。

评价指标

成功解决问题的比例,目前2025年5月最新的榜单第一名是近期很火的Augment了,后面找个时间介绍下。

总结

SWE-bench是真正意义上的评估代码Agent的benchmark,但只注重于代码修复,以及处理代码上下文输入的策略, 会导致参评Agent的效果不仅限于LLM本身,检索策略的重要性对最后的效果影响也是非常大。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

SWE-bench 大模型 代码Agent GitHub 软件工程
相关文章