自“AI程序员”Devin出现后,程序员们纷纷致力于创造出比自己更为出色的AI程序员,这已成为近期的一种趋势。
普林斯顿大学为软件工程领域注入了新的活力,他们推出了名为SWE-agent的新型AI程序员。该项目已在GitHub上开源,并将在4月10日通过论文正式发布。
GitHub链接: https://github.com/princeton-nlp/SWE-agent
与其他“AI程序员”相比,SWE-agent的独特之处在于它能够将GPT-4这样的大型语言模型(LLMs)转化为软件工程代理,有效地修复GitHub存储库中的真实错误和问题。在软件工程基准测试中,SWE-agent展现出了与Devin相当的准确度,在解决GitHub仓库的问题上,其性能甚至超越了Devin。值得一提的是,SWE-agent平均仅需93秒就能完成Bug修复。
完整的SWE-bench基准测试揭示了SWE-agent的出色性能。尽管在问题修复率上,SWE-agent的12.29%稍低于Debin的13.84%,但SWE-agent的开源特性赋予了它独特的优势。这一结果也显示,开源模型在性能上有追赶甚至超越闭源模型的潜力。SWE-agent在处理复杂的软件工程任务时表现出的高精度令人印象深刻。
SWE-agent的核心特性之一是其开源的代理计算机接口,这个接口专为代码的编辑和执行设计。通过提供如导航仓库、搜索文件、编辑行及将输入转化为代码等特定命令,该接口极大地简化了由GPT-4驱动的代理与代码的交互,从而提高了任务执行的效率。
研究发现,简单地将GPT-4连接到一个普通的bash终端并不能达到最佳效果。因此,团队专门设计了一个对语言模型友好的代理计算机接口,以提升代理的理解能力和性能。这种设计创新促进了代理与代码库之间的有效交互,从而确保了解决软件工程问题的准确性和效率。
SWE-agent通过一个特制的终端与代码交互并执行任务。该终端不仅允许代理打开、滚动和编辑文件以确保精确修改,还能避免错误。此外,它还使代理能够编写和执行测试,从而优化代码的质量和效率。这个终端对SWE-agent的性能来说至关重要,极大地增强了其处理软件工程任务的能力。
在SWE-agent的开发过程中,团队还发现了一个有趣的现象:限制AI系统访问的信息量可以提升其性能。通过仅允许系统每次查看100行代码,而非整个文件,代理的规划和执行变得更加高效。这种限制简化了代理的思维过程,使其能够更专注于处理小部分的代码。这种优化策略已被证实能显著提升SWE-agent的整体性能。
英伟达的研究科学家Jim Fan也对SWE-agent表示了赞赏,他强调,通过精心调整GPT-4命令行工具的设计,SWE-agent在SWE-bench性能测试中取得了令人瞩目的12.3%的结果。这一成就并未依赖于神奇的技术革新或模型的重大突破,而是回归基础和注重实用性的改进措施的体现。
随着GPT-5的即将到来,我们期待它在执行指令、工具操作及处理长篇幅上下文的能力上能实现显著的飞跃。届时,现今热议的“提示工程2.0”技术可能不再像现在这般关键。在这里,我们要特别赞扬John Yang的工作成果,他成功地揭示了工程的实质,即回归基础和注重实用性的改进措施,而非过度炒作。
总体来看,这一成果的发布非常务实,毫无炒作之嫌。在即将于4月10日发布的论文中,普林斯顿大学团队将进一步深入探讨代理的技术架构、算法和性能优化策略,并详细介绍成本优化策略。值得一提的是,SWE-agent致力于将每个任务的成本控制在4美元以内,论文中将明确解决任务的平均成本。