SWE-Lancer 是什么
SWE-Lancer 是一个专为评估前沿语言模型在真实世界软件工程任务中表现的基准测试。该基准包含了来自Upwork的1,400多个任务,总价值为100万美元,涵盖了从UI/UX设计到 bug 修复、新特性开发、系统设计等各类工程任务。
SWE-Lancer 的设计初衷是填补现有基准测试在评估语言模型全栈软件工程能力及管理能力方面的空白。
任务的难度差异很大,从简单的50美元的bug修复到高达32,000美元的大型功能实现都有涉及。构建了一个贴近实际需求的评估框架。旨在测试语言模型在全栈软件工程和项目管理方面的能力。
SWE-Lancer 将模型性能与实际经济价值挂钩,为研究 AI 在软件工程领域的经济影响提供了一个独特的视角。
SWE-Lancer的一个亮点是其高度现实的设计,任务不仅涉及全栈开发,还具有较高的复杂性。平均而言,任务完成时间超过21天。
此外,任务的定价是根据现实世界的市场价值设定的,较复杂的任务报酬较高。
- SWE-Lancer:这是一个新的基准,用于评估AI模型的编程表现。包含了来自Upwork的超过1,400个自由软件工程任务,总价值100万美元。
- 任务多样性:任务覆盖全栈工程,从UI/UX设计到系统设计,包含从小型bug修复到大型功能实现(最高价值32,000美元)的任务。
- 现实性与复杂性:任务设计反映了现实世界工程的复杂性,平均每个任务完成时间超过21天。
- 市场反映的任务定价:任务的价格根据实际市场价值设定,复杂任务的报酬较高。
- 贴近实际软件工程需求:与传统的编码基准测试(如 HumanEval 或 SWE-Bench)不同,目前的AI模型无法解决大多数SWE-Lancer中的任务。SWE-Lancer 的任务更贴近实际软件工程需求,涵盖了从简单 bug 修复到复杂特性实现的多样化场景,同时还包括技术管理任务。
- 开源贡献:OpenAI发布了统一的Docker镜像和公共评估数据集SWE-Lancer Diamond,旨在促进未来的研究。
SWE-Lancer 包含两类主要任务:任务类型
- 个人贡献者(IC)软件工程任务
• 任务内容:模型需要生成代码补丁来解决实际问题,例如修复 bug 或实现新特性。这些任务来源于真实的 Upwork 项目,难度从 50 美元的简单 bug 修复到 32,000 美元的大型特性开发不等。
• 数量与价值:包含 764 个任务,总价值 414,775 美元。
示例:
• 250 美元:修复 API 调用重复触发问题。
• 1,000 美元:解决权限不一致的 bug。
• 16,000 美元:在 web、iOS、Android 和桌面端添加应用内视频播放功能。
- 软件工程管理任务
• 任务内容:模型扮演技术领导角色,从多个技术实现提案中选择最佳方案。这些提案是真实自由职业者在 Upwork 上提交的,任务要求模型理解问题背景并做出与原工程经理一致的选择。
• 数量与价值:包含 724 个任务,总价值 585,225 美元。
• 特点:需要深入理解代码库上下文和提案细节,通常多个提案技术上都可行,选择最佳方案需综合考虑全栈因素。
评估方式注重真实性和可靠性:
• IC 任务:通过端到端(E2E)测试验证代码补丁的有效性。
• 管理任务:将模型的选择与原始工程经理的决策进行对比。
此外,SWE-Lancer 公开了其数据集(SWE-Lancer Diamond,价值 500,800 美元)及实验结果,为未来研究提供了宝贵资源。
解决了什么问题
SWE-Lancer 主要解决了现有基准测试无法全面评估语言模型在全栈软件工程和项目管理任务中的能力的问题。传统基准测试往往局限于单一领域的代码生成或理论性任务,缺乏真实世界复杂性与经济价值的关联。SWE-Lancer 通过以下方式弥补了这一不足:
- 真实性不足
• SWE-Lancer 引入了来自 Upwork 的真实任务,任务奖金直接反映市场价值,使评估更贴近实际需求。
- 全栈能力评估的缺失
• 现有基准测试很少覆盖应用逻辑、UI/UX、服务器端逻辑等全栈工程任务,而 SWE-Lancer 包含这些领域,全面测试模型能力。
- 管理能力的忽视
• 传统测试通常只关注代码生成,忽略技术决策能力。SWE-Lancer 的管理任务要求模型进行方案选择,填补了这一空白。
- 评估可靠性的局限
• SWE-Lancer 采用端到端测试,确保结果更能反映真实软件工程需求,而非仅依赖静态分析或简单验证。
实验结果显示,即使最佳语言模型在 IC 任务上的通过率仅为 26.2%,在管理任务上为 44.9%,表明当前模型在复杂软件工程任务中仍有较大提升空间。SWE-Lancer 通过提供真实、多样化的任务和可靠的评估方法,为 AI 在软件工程领域的进一步发展奠定了基础。
SWE-Lancer 基准测试详解
任务类型与内容
SWE-Lancer 包含两类主要任务,分别针对软件工程中的个人贡献者(IC)和管理角色设计,任务来源于真实的 Upwork 自由职业平台和 Expensify 开源仓库。
1. 个人贡献者(IC)软件工程任务
- 任务内容:
- 模型需要生成代码补丁来解决具体的软件工程问题,例如修复 bug、实现新功能或优化现有代码。
- 任务可能是局部性的(例如修复单一文件中的逻辑错误),也可能是全局性的(需要调整多个模块间的交互)。
- 任务来源:
- 来自 Upwork 平台上的真实项目需求,基于 Expensify 开源仓库的具体问题。
- 任务数量与经济价值:
- 总计 764 个任务,总价值 414,775 美元。
- 任务价值范围广泛,最低 50 美元(简单 bug 修复),最高 32,000 美元(复杂特性开发)。
- 任务特点:
- 多样性:应用逻辑任务占 74%,UI/UX 任务占 17%,其余包括服务器端逻辑、数据库交互等全栈开发领域。
- 真实性:88% 的任务是 bug 修复,反映了软件维护中的常见需求。
- 复杂性:高价值任务(如 32,000 美元的任务)可能涉及多端开发(web、iOS、Android 和桌面端)。
2. 软件工程管理任务
- 任务内容:
- 模型扮演技术领导角色,从多个技术实现提案中选择最佳方案。
- 任务不要求生成代码,而是测试模型的分析能力和决策能力。
- 任务来源:
- 提案由 Upwork 自由职业者提交,模型需基于问题背景和提案内容做出决策。
- 任务数量与经济价值:
- 总计 724 个任务,总价值 585,225 美元。
- 任务特点:
- 决策性:模型需综合考虑性能、可维护性、成本等因素做出选择。
- 上下文理解:模型需理解代码库的整体架构和提案的技术细节。
- 验证依据:模型的选择与原始工程经理的决策一致性高达 99%。
评估方式与流程
SWE-Lancer 采用专业化的评估方法,确保模型表现的准确性和公平性。IC 任务和管理任务的评估流程有所不同。
IC 任务评估
- 评估方法:使用端到端(E2E)测试验证模型生成的代码补丁是否有效。
- 测试开发:由 100 名专业软件工程师设计和验证测试,确保覆盖任务的主要功能点。
- 评分标准:模型生成的补丁通过所有相关 E2E 测试即可获得任务对应的奖金。
管理任务评估
- 评估方法:将模型的选择与原始工程经理的决策进行对比。
- 评分标准:如果模型选择与原始选择一致,则获得任务对应的奖金。
实验环境与模型表现
SWE-Lancer 在严格控制的实验环境中测试模型,确保公平性和可重复性。
实验环境
- 运行环境:模型在 Docker 容器中运行,预装 Expensify 代码库。
- 模型权限:可浏览本地代码库、修改文件、执行终端命令。
- 测试数据集:完整集包含764 个 IC 任务和724 个管理任务,Diamond 集包含502 个任务。
评估模型
- 测试了以下语言模型:
- GPT-4o(OpenAI):通用能力强。
- Claude 3.5 Sonnet(Anthropic):在代码生成和理解上表现突出。
在SWE-Lancer基准测试中,针对不同类型的软件工程任务,多个最先进的语言模型(如GPT-4、o1 和 Claude 3.5 Sonnet)进行了广泛的实验评估。实验的主要目标是衡量这些模型在解决实际的自由职业软件工程任务时的表现,特别是在面对复杂的编程和管理决策任务时的能力。以下是更详细的实验结果和分析。
实验设置
- 模型:使用了三种主要模型进行评估:
- GPT-4:OpenAI的强大模型,用于自然语言处理和其他复杂任务。
- o1:另一个前沿模型,特别关注推理努力(推理过程中使用的计算资源)。
- Claude 3.5 Sonnet:Anthropic的最新模型,被认为是最优秀的模型之一,在多个评估任务中表现出色。
- 任务类型:SWE-Lancer基准任务包括个人贡献者(IC)任务和软件工程经理(SWE Manager)任务,每种任务的难度、评估标准和测试方式都有不同。
- IC任务(个人贡献者任务):这些任务类似于自由职业者在Upwork上完成的任务,主要涉及编程任务,如bug修复和功能实现。
- SWE Manager任务(软件工程经理任务):模拟工程经理的角色,要求模型在多个技术方案中做出选择,评估最合适的解决方案。
整体表现
- Claude 3.5 Sonnet 在所有模型中表现最佳:
- Diamond 集:
- IC 任务:通过率 26.2%,赚取 58,000 美元(占 IC 任务总价值的 24.5%)。
- 管理任务:通过率 44.9%,赚取 150,000 美元(占管理任务总价值的 56.8%)。
- 总计:赚取 208,000 美元(占总价值的 41.5%)。
- 完整集:
- IC 任务:通过率 21.1%,赚取 89,000 美元。
- 管理任务:通过率 47.0%,赚取 314,000 美元。
- 总计:赚取 403,000 美元(占总价值的 40.3%)。
- Diamond 集:
- GPT-4o 和 o1 的表现较弱,尤其在 IC 任务上,两者的通过率均低于 20%。
IC任务(个人贡献者任务)
目标:评估模型在实际编程任务中的表现,如bug修复、新功能实现等。
- 通过率(pass@1):
- GPT-4:在IC任务中,GPT-4的通过率为8%,表明其在解决这些任务时表现较差,尤其是在需要深入理解和复杂调试的任务中。
- o1:o1模型的通过率随着推理努力的提高有所增加。在低推理努力下,通过率为9.3%;在高推理努力下,通过率提升至16.5%,显示出推理计算资源的增加能帮助模型更好地解决问题。
- Claude 3.5 Sonnet:Claude 3.5 Sonnet在IC任务中表现最为突出,达到了**26.2%**的通过率。尽管这一结果仍然相对较低,但在三种模型中无疑是最好的,表明它在面对编程任务时的能力较为强大。
分析:
- 推理努力的影响:o1模型在高推理努力模式下显著提高了表现,表明更多的计算资源有助于模型更好地理解复杂的编程任务和进行调试。
- Claude 3.5 Sonnet的优势:尽管Claude 3.5 Sonnet在IC任务中的通过率远低于理想水平,但它仍显示出较强的任务解决能力,尤其在涉及复杂编程逻辑的任务中,表现优于GPT-4和o1。
SWE Manager任务(软件工程经理任务)
目标:评估模型在选择最合适技术方案、做出管理决策方面的表现。
- 通过率(pass@1):
- GPT-4:在SWE Manager任务中,GPT-4的通过率为37%,明显高于IC任务的表现,表明模型在管理决策类任务中表现相对较好。
- o1:o1的表现进一步提高,高推理努力下的通过率为46.3%,显示出推理计算能力对复杂管理任务的有力支持。
- Claude 3.5 Sonnet:Claude 3.5 Sonnet在SWE Manager任务中的表现最强,通过率达到了44.9%,比o1和GPT-4更优秀,表明它在做决策和选择技术方案时较为精准。
分析:
- 决策任务的复杂性:与IC任务相比,SWE Manager任务要求模型不仅要有技术能力,还需要进行合理的管理决策。Claude 3.5 Sonnet在这类任务中展现了出色的判断力,能够在多个提案中选择最优方案。
- 模型的管理能力:尽管模型表现良好,但仍有很大改进空间,尤其在面对多种技术方案时,模型有时未能完全理解所有提案的细节。
总任务表现
- Claude 3.5 Sonnet:在完整的SWE-Lancer数据集(包括IC任务和SWE Manager任务)上,Claude 3.5 Sonnet的总体通过率为33.7%,它解决了价值403,000美元的任务,显著高于其他模型,表明它在全栈开发和管理决策方面表现较好。
- o1:o1的总通过率为32.9%,在IC任务和SWE Manager任务中都表现不错,赚取的总报酬为380,000美元。
- GPT-4:GPT-4在整个数据集中的总体通过率为23.3%,赚取的总报酬为304,000美元,其表现相对较弱,尤其是在需要编程和系统理解的任务中。
分析:
- Claude 3.5 Sonnet的综合优势:Claude 3.5 Sonnet不仅在管理任务中表现较好,在编程任务中也能提供相对较强的解决方案,尽管其表现仍不完美,但在目前的模型中无疑是最强的。
- o1的推理能力:o1在通过增加推理努力后获得了较好的成绩,表明推理计算资源的提高可以显著提升模型的表现,尤其是在解决复杂问题时。
- GPT-4的局限性:GPT-4虽然在自然语言理解等领域表现优异,但在SWE-Lancer基准测试中的表现明显不足,尤其是在复杂的编码和管理任务上。
推理努力和计算资源的影响
实验还探讨了推理努力对模型性能的影响。推理努力指的是在测试过程中模型使用的计算资源。例如,高推理努力的模型配置在执行任务时会使用更多的计算资源,从而在解决复杂问题时能获得更好的性能。实验发现,增加推理努力能有效提升模型在IC任务中的表现,特别是在o1模型上,推理努力从低到高时,通过率从9.3%提高到16.5%。
影响性能的因素
尝试次数
- o1:在 Diamond 集的 IC 任务上,pass@1 为 16.5%,pass@6 提升至约 50%。
- GPT-4o:pass@1 为 8.0%,pass@6 提升至 16.5%。
- 结论:多次尝试显著提高了成功率。模型在不断迭代的过程中能够优化其解决方案。
推理时间与计算资源
- o1 模型:
- 低推理努力:pass@1 = 9.3%,赚取 16,000 美元。
- 高推理努力:pass@1 = 16.5%,赚取 29,000 美元。
- 结论:增加推理计算资源显著提高了模型在复杂任务中的表现,推理力度与任务成功率密切相关。
用户工具
- Claude 3.5 Sonnet:启用工具时 pass@1 = 26.2%,禁用时略降。
- o1:启用时 pass@1 = 16.5%,禁用时为 13.1%。
- 结论:用户工具在调试和辅助任务中发挥了积极作用,尤其是对于强模型而言,能更好地利用这些工具来优化表现。