SWE-bench Multilingual 多语言软件工程评测基准全面解读:覆盖9种编程语言的大模型评测基准
SWE-bench Multilingual 是 SWE-bench 基准系列的扩展版本。该基准用于评估大语言模型在软件工程任务上的表现,覆盖多种编程语言。数据集包含 300 个从真实 GitHub 问题与对应拉取请求中提取的任务,涉及 42 个仓库和 9 种编程语言。模型接收问题描述与仓库快照后,需生成代码补丁,并通过失败到通过(F2P)和通过到通过(P2P)测试套件进行验证。
现有软件工程评测存在的局限
原始 SWE-bench 基准主要聚焦 Python 仓库,导致对其他编程语言的评估覆盖不足。部分代理框架依赖 Python 专属工具,易出现针对特定基准的优化现象。同时,现有评测难以全面反映不同语言生态下的实际开发场景,包括构建环境差异与跨文件修改复杂度。
基准发布信息与设计目标
该基准由 Kabir Khandpur 牵头,与 SWE-bench 团队(包括 Carlos E. Jimenez、John Yang 等)合作开发,于 2025 年 5 月 6 日正式发布。数据集托管于 Hugging Face(SWE-bench/SWE-bench_Multilingual),评估代码集成至 SWE-bench GitHub 仓库。leaderboard 地址为 swebench.com/multilingual-leaderboard.html。
其设计目标为解决 Python 中心化问题,提供跨语言标准化评估环境,支持快速运行以便模型迭代。同时,该基准通过统一 Docker 环境实现公平比较,并覆盖从系统级语言到脚本语言的多样仓库。
基准构建与评估流程
数据集构建流程包括以下步骤:
- 仓库选取:依据 2024 年 Stack Overflow 开发者调查选择语言,从 GitHub 按星标数取前 100 个英文为主的仓库,筛选可本地构建且测试运行时间合理的条目(约 30% 被排除)。
- 任务收集:使用与 SWE-bench 相同的管道提取 issue-PR 对,要求 PR 包含测试文件。排除描述不清晰、多问题合并或测试无法区分有效方案的案例。
- 环境配置:每种语言使用基础 Docker 镜像安装运行时与系统包,按实例指定安装与测试命令。因仓库多样性,未预置共享依赖缓存镜像。
- 手动验证:克隆仓库至 issue 提交点,执行预安装命令,应用测试文件与金标准补丁(PR 中的非测试代码变更),确认 F2P 与 P2P 测试通过,并提取测试套件。
任务规模与分布:
- 总任务数:300 个
- 编程语言及任务数量:C(30)、C++(12)、Go(42)、Java(43)、JavaScript/TypeScript(43)、PHP(43)、Ruby(44)、Rust(43)
- 仓库数量:42 个
- 金标准补丁中位数:10 行代码(95 分位数 110 行)
评估方法:采用 SWE-agent 或 mini-SWE-agent 框架。模型在预算限制下生成补丁,成功指标为补丁同时通过全部 F2P 与 P2P 测试。leaderboard 使用标准化 mini-SWE-agent v2 环境,确保跨模型比较一致性。
主流大模型性能表现及分析
基准初始基线(2025 年发布时)使用 SWE-agent + Claude 3.7 Sonnet(单次预算 2.50 美元),整体解决率为 43%(128/300),而同一配置在 SWE-bench Verified(Python)上的解决率为 63%。
按语言的基线解决率如下表:
当前 leaderboard(采用 mini-SWE-agent v2,截至 2026 年 2 月数据)前几位结果如下表(% Resolved 为整体解决率):
性能分析显示,不同语言间存在差异,Rust 相关任务解决率相对较高,C/C++ 较低。金标准补丁行数与解决难度无固定线性关联;代理动作分布在成功与失败任务间差异不显著,表明主要瓶颈在于模型本身跨语言代码理解与修改能力。整体解决率较 Python 基准低,反映当前模型在非 Python 生态下的泛化仍有空间。
基准总结
SWE-bench Multilingual 通过 300 个跨 9 种语言的任务,为大语言模型软件工程能力提供多语言评估标准。该基准采用真实仓库数据与测试驱动验证,确保结果可复现。目前主流模型已在标准化代理框架下达到 70% 以上解决率,但语言间差异与基线对比显示进一步提升的必要性。未来可考虑扩展任务规模、增加难度标注或支持更多外部工具集成,以更好地匹配实际开发场景。数据集与评估代码已公开,供研究与模型开发使用。
