Multi-SWE-bench:字节豆包开源的多语言代码修复基准
Multi-SWE-bench简介
Multi-SWE-bench 是由字节跳动豆包大模型团队开发的一个多语言基准测试平台,旨在评估大型语言模型(LLMs)在解决实际软件问题上的能力。该基准测试涵盖了Java、TypeScript、JavaScript、Go、Rust、C和C++等七种广泛使用的编程语言,包含1632个高质量的问题实例,这些问题实例经过68位专家标注员的严格人工验证,确保了数据的准确性和可靠性。Multi-SWE-bench不仅为评估LLMs在多样化软件生态系统中的表现提供了可靠的基准,还通过其多语言覆盖和现实世界问题的复杂性,推动了软件工程自动化领域的研究进展。此外,开发团队还推出了Multi-SWE-RL开源社区,致力于构建大规模的强化学习(RL)训练数据集,为软件工程中的复杂任务提供支持,助力研究者和开发者共同推动技术进步。

Multi-SWE-bench主要功能
-
多语言问题解决基准测试
-
提供一个涵盖多种编程语言(Java、TypeScript、JavaScript、Go、Rust、C、C++)的基准测试平台,用于评估大型语言模型(LLMs)在解决实际软件问题上的能力。
-
包含1632个经过人工验证的高质量问题实例,确保评估的准确性和可靠性。
-
-
问题实例的详细标注
-
每个问题实例都经过严格的五阶段构建流程:仓库选择、拉取请求爬取、环境确定、PR过滤和手动验证。
-
提供问题描述、修复补丁、单元测试等详细信息,并根据人工标注的难度分类(易、中、难)进行分层评估。
-
-
多方法评估支持
-
支持多种代表性方法(如Agentless、SWE-agent、OpenHands)和多种前沿模型(如GPT-4o、OpenAI-o1等)的评估。
-
提供详细的性能分析,包括问题解决率、问题定位准确性、资源消耗等指标。
-
-
开源社区支持
-
推出Multi-SWE-RL开源社区,旨在构建大规模的强化学习(RL)训练数据集,推动软件工程中的RL研究。
-
初始发布4723个经过验证的实例,提供完整的数据生产流程和详细教程,鼓励社区持续贡献和扩展数据集。
-
-
性能分析与洞察
-
提供对不同语言、方法和模型的全面性能分析,揭示现有LLMs的局限性和改进方向。
-
分析问题类型、问题描述特征、修复补丁特征等因素对性能的影响,为未来研究提供指导。
-
Multi-SWE-bench技术原理
-
多语言问题实例构建
-
仓库选择:基于GitHub上的高质量仓库,考虑流行度(星数)、维护活跃度(至少6个月的活跃维护)和CI/CD支持。
-
拉取请求爬取:收集与问题相关的拉取请求(PRs),并提取问题描述、修复补丁和测试补丁等元数据。
-
环境确定:为每个PR构建Docker化的运行环境,确保可重现性。通过分析CI/CD配置和文档,提取必要的依赖项并生成Docker镜像。
-
PR过滤:通过分析测试结果,保留具有明确修复效果且无回归的PRs。运行完整的测试套件,确保修复补丁的有效性。
-
手动验证:通过双人标注和交叉审核,确保数据质量。标注员根据预定义的标准对问题实例进行标注,确保与SWE-bench验证标准一致。
-
-
多方法评估框架
-
Agentless:通过多阶段固定工作流(如故障定位、代码修复和候选补丁选择)解决软件问题。
-
SWE-agent:基于多轮交互的代理方法,通过预定义的代理-计算机接口(ACI)解决软件问题。
-
OpenHands:一个开放平台,支持构建软件开发代理,通过多轮交互解决软件问题。
-
-
性能评估指标
-
问题解决率(Resolved Rate):衡量成功解决问题的百分比。
-
问题定位准确性(Success Location):衡量在文件级别准确定位问题的能力。
-
资源消耗(Resource Consumption):衡量每个问题的平均token消耗和成本。
-
-
强化学习(RL)训练数据集构建
-
社区驱动:通过开源社区的力量,构建大规模的RL训练数据集。
-
容器化实例:每个实例都配备一个可重现的执行环境,确保RL代理在真实软件上下文中进行训练。
-
持续贡献:提供详细的贡献指南和激励机制,鼓励社区成员持续贡献数据和模型。
-
-
性能影响因素分析
-
问题类型:分析不同问题类型(如漏洞修复、新功能、功能优化)对解决率的影响。
-
问题描述特征:研究问题描述的长度和复杂性对解决率的影响。
-
修复补丁特征:分析修复补丁的长度和涉及的文件数量对解决率的影响。
-
Multi-SWE-bench应用场景
Multi-SWE-bench项目入口
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...