【Code Agent Benchmark】论文分享No.13:SWE-bench

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

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

机构:普林斯顿大学 + OpenAI

Github 链接:https://github.com/SWE-bench/SWE-bench

榜单链接:https://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 之前仓库的 HEADhints_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教程即可,大体流程如下图,此处不赘述了。

  • 输入:issue的描述 + 完整的代码库

  • 输出:模型修改后的代码

在这里插入图片描述

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

  • “取巧”(Oracle Retrieval):会拿到作者当时为修复这个issue提交的PR中的patch,因为这个patch涉及到的代码文件,就是该仓库最重要的代码上下文,可以直接给到模型。这个跟标准答案最接近,也代表了大部分的情况,除了一些需要更多代码文件的上下文才可以解决的问题。

  • 稀疏检索(Sparse retrieval):使用BM25算法做检索,基于issue的描述搜索仓库中相关代码,并将其限制长度在1.3~5万行。通过相关实验结果发现检索长度在2.7w行时,只有40%会命中到PR对应的代码文件。

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

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

评价指标

  • 问题解决率(%Resolved)

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

在这里插入图片描述

总结

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

<think>好的,用户想了解如何匹配androidx.benchmark:benchmark-macro的版本。我需要先确定用户的使用场景。他们可能是在进行Android应用的性能测试,特别是使用Macrobenchmark库来测量启动时间、滚动性能等宏观指标。接下来,用户可能是开发者,遇到了依赖版本的问题,或者想确保他们使用的版本与其他库兼容。 我需要先检查最新的稳定版本,以及对应的Gradle配置。记得要提到需要Android Gradle Plugin的版本要求,比如AGP 7.0.0或更高,以及JDK 11的要求。另外,用户可能需要知道如何将插件应用到模块,和如何配置基准模块的build.gradle文件。 可能用户遇到的问题包括版本冲突,或者不知道如何正确设置基准配置文件。因此,要详细说明依赖项的添加位置,比如在benchmark模块中使用androidTestImplementation,并确保在defaultConfig中设置正确的签名配置。 还要提醒用户关于运行测试时的注意事项,比如在物理设备上运行,关闭节能模式等。最后,需要确认提供的代码示例是否正确,并参考官方文档以确保信息的准确性。</think>要匹配 `androidx.benchmark:benchmark-macro` 的版本,需结合你的 Android Gradle 插件(AGP)版本和项目配置。以下是关键信息和使用方法: --- ### **最新稳定版本(截至2024年7月)** - **最新版本**: `1.2.2` - **依赖声明**: ```gradle androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:1.2.2" ``` --- ### **版本匹配要求**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

依然易冷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值