SWEbench 使用指南
SWE-bench是一个基准测试,用于评估大语言模型在从GitHub收集的现实世界软件问题上的表现。给定一个代码库和一个问题,语言模型的任务是生成一个补丁来解决所描述的问题。
1. 功能概览
当前在 ais_bench 已接入以下 SWEbench 能力:
数据集:
full、verified、verified_mini、lite、multilingual任务:
infer:调用mini-swe-agent生成补丁(model_patch)eval:调用 SWE-bench harness 执行评测并统计 resolved
结果汇总:输出
accuracy、submitted_accuracy、resolved_instances等关键指标
ais_bench/configs/swe_bench_examples/目录已提供以下示例配置:
mini_swe_agent_swe_bench_lite.py:SWE-bench Lite(princeton-nlp/SWE-Bench_Lite),适合先跑通流程/快速迭代。mini_swe_agent_swe_bench_verified.py:SWE-bench Verified(princeton-nlp/SWE-Bench_Verified,500 条),SWE-bench 测试集里经人工验证质量的子集。mini_swe_agent_swe_bench_verified_mini.py:SWE-bench Verified Mini(MariusHobbhahn/swe-bench-verified-mini,50 条),社区构造的 Verified 子集,用于显著降低评测成本;子集筛选/构造方式见数据集卡与构造仓库:https://huggingface.co/datasets/MariusHobbhahn/swe-bench-verified-mini、https://github.com/mariushobbhahn/make_swe_bench_verified_mini。mini_swe_agent_swe_bench_full.py:SWE-bench Full(princeton-nlp/SWE-Bench),完整测试集。mini_swe_agent_swe_bench_multilingual.py:SWE-bench Multilingual(SWE-bench/SWE-bench_Multilingual),包含多语言 issue 描述的数据集。mini_swe_agent_swe_bench_multilingual_mini.py:SWE-bench Multilingual Mini(15/30/60 条),AISBench官方构造的 Multilingual 子集,用于显著降低评测成本;子集筛选/构造方式见数据集卡与构造仓库:https://modelers.cn/datasets/AISBench/SWE-Bench_Multilingual_mini、https://github.com/AISBench/datasets/tree/main/mini_datasets/swe_bench_multiligual_mini。
2. 前置依赖
运行前请确保以下依赖可用:
安装
mini-swe-agent(infer 依赖)
git clone https://github.com/AISBench/mini-swe-agent.git
cd mini-swe-agent
pip install -e .
cd -
安装 SWE-bench harness(eval 依赖)
git clone https://github.com/SWE-bench/SWE-bench.git
cd SWE-bench
pip install -e .
cd -
Docker 可用(infer/eval 都依赖容器环境)
docker --version
docker ps
ARM 环境下需要开启 docker 的 x86 支持,执行以下命令:
docker run --rm --privileged tonistiigi/binfmt --install all
3. 最小配置(先跑通再调优)
建议从 mini_swe_agent_swe_bench_lite.py 开始,仅改 models[0] 里的三个字段:
model:模型名(必填)url:模型服务地址(OpenAI 兼容 API)api_key:服务密钥(本地服务可用EMPTY)
示例(本地 vLLM 场景):
models = [
dict(
attr="local",
abbr="swebench",
type="LiteLLMChat",
model="qwen3",
api_key="EMPTY",
url="http://127.0.0.1:8000/v1",
batch_size=1,
generation_kwargs=dict(),
)
]
数据集路径说明
示例配置默认 path="",表示优先从 Hugging Face 在线加载。
你可以保持
path=""直接在线拉取若离线使用,把
path改为本地 parquet 文件或目录(支持data/<split>-*.parquet)
首跑建议
数据集先用
litebatch_size=1step_limit=200(示例默认值,先不改)
4. 运行命令
在仓库根目录执行(config 为配置文件路径):
ais_bench ais_bench/configs/swe_bench_examples/mini_swe_agent_swe_bench_lite.py
上面是完整流程(all),也可以分步执行:
# 只做推理,生成 predictions
ais_bench ais_bench/configs/swe_bench_examples/mini_swe_agent_swe_bench_lite.py -m infer
# 基于现有 predictions 做评测
ais_bench ais_bench/configs/swe_bench_examples/mini_swe_agent_swe_bench_lite.py -m eval
断点续跑
使用 --reuse 跳过已完成实例,适合中断后续跑:
ais_bench ais_bench/configs/swe_bench_examples/mini_swe_agent_swe_bench_lite.py -m infer --reuse
5. 输出结果怎么看
默认输出目录为 outputs/default/<timestamp>/,重点关注:
推理结果:
predictions/swebench/swebench_*.json每个
instance_id下包含model_patch
评测结果:
results/swebench/swebench_*.json关键字段:
accuracy:resolved_instances / total_instancessubmitted_accuracy:resolved_instances / submitted_instancesresolved_instances/unresolved_instances/error_instancesharness_exit_code:harness 退出码
6. 常见问题与排障(SWEB 错误码)
以下错误码来自 SWEB_CODES,可结合全量 FAQ 查看:
FAQ:
docs/source_zh_cn/faqs/error_codes.md
1) SWEB-DEPENDENCY-001:缺少 mini-swe-agent
现象:infer 启动时报依赖导入失败
原因:未安装
mini-swe-agent处理:执行
pip install mini-swe-agent
2) SWEB-DEPENDENCY-002:缺少 SWE-bench harness
现象:eval 阶段报 harness import error
原因:未安装 SWE-bench 项目或未在当前环境可见
处理:按“前置依赖”安装 SWE-bench,并确认当前 Python 环境一致
3) SWEB-PARAM-001:模型配置为空
现象:提示 model 未配置
原因:
models[0]['model']为空或仅空白字符处理:配置
model/url/api_key,至少保证model非空
4) SWEB-DATA-002 / SWEB-FILE-003:数据集加载失败
现象:在线加载失败或本地 parquet 未找到
原因:
在线模式:网络或 Hugging Face 访问异常
本地模式:
path不存在,或目录结构不匹配 split parquet 规则
处理:
在线失败时可改为本地 parquet
本地路径需满足:
<root>/data/test-*.parquet或<root>/test-*.parquet
5) SWEB-FILE-001:找不到 predictions 文件
现象:
-m eval时提示 predictions 不存在原因:未先执行 infer,或 work_dir/reuse 指向不一致
处理:先执行
-m infer,并确认 eval 与 infer 使用同一份配置/输出目录
6) SWEB-RUNTIME-001 / SWEB-RUNTIME-002:容器或 harness 运行失败
现象:Docker 镜像拉取失败、评测执行异常
原因:镜像不可用、网络异常、容器运行环境不满足
处理:
先确认
docker ps正常检查镜像是否可拉取,确保可以从dockerhub拉取镜像(示例:docker pull swebench/sweb.eval.x86_64.astropy_1776_astropy-6938:latest)
失败后可用
--reuse重试,避免重复计算已完成实例
7. 进阶建议(可选)
初次调试优先
lite,确认流程稳定后切verified/full需要减少空补丁时,优先优化模型能力与 agent 提示模板
评测时关注
empty_patch_instances、error_instances,它们通常比accuracy更能定位首轮问题