近日,OpenAI重磅开源了SWE-Lancer,一个针对真实世界自由软件工程工作进行模型性能评估的基准测试。该基准测试基于来自Upwork和Expensify存储库的1400多个自由职业任务,总支付金额达到100万美元。
SWE-Lancer的一个重要创新是其采用的端到端测试方法。与传统的单元测试不同,端到端测试能够模拟真实用户的工作流程,验证应用程序的完整行为。这种方法不仅能够更全面地评估模型的解决方案,还能够避免一些模型通过作弊来通过测试。
与传统的单元测试相比,端到端测试会模拟用户登录、上传头像、切换账户以及查看不同页面的完整流程。通过这种方式,测试不仅能够验证头像是否正确显示,还能够确保整个交互过程的连贯性和正确性。
此外,端到端测试的另一个重要特点是其对真实场景的还原能力。在软件工程中,许多问题并非孤立出现,而是与系统的其他部分相互作用。端到端测试通过模拟真实用户的行为,能够捕捉到这些复杂的交互关系,从而更准确地评估模型的解决方案是否真正解决了问题。
在评估的过程中,引入了一个重要模块用户工具,允许模型在本地运行应用程序,并模拟用户的行为来验证其解决方案。通过这样的模拟操作,模型能够判断自己对报销流程问题的解决方案是否有效,比如是否修复了费用录入后数据丢失的漏洞,或者是否优化了审批流程中的卡顿现象等。
SWE-Lancer数据集一共包含1488个来自Upwork平台上Expensify开源库的真实软件开发任务,一共分为独立贡献者和软件工程管理任务两大类。
独立开发任务:一共有764个,价值414,775美元,主要模拟个体软件工程师的职责,例如,实现功能、修复漏洞等。在这类任务中,模型会得到问题文本描述涵盖重现步骤、期望行为、问题修复前的代码库检查点以及修复目标。
软件管理任务:共有724个,价值585,225美元。模型在此类任务中扮演软件工程经理的角色,需要从多个解决任务的提案中挑选最佳方案。例如,在一个关于在iOS上实现图像粘贴功能的任务中,模型要从不同提案里选择最适宜的方案。
OpenAI使用了GPT-4o、o1和Claude3.5Sonnet在SWE-Lancer进行了测试,结果显示,大模型冲击百万年薪都失败了。这表明尽管模型在处理一些基础任务时能够表现出一定的能力,但在面对复杂的、高价值的软件工程任务时,他们仍比人类要差很多。