普林斯顿首个「开源」AI程序员登场!爆改GPT4,93秒修bug
简单来说,SWE-agent能够让大语言模型(比如GPT-4)变身为软件工程AI智能体,并在真实的GitHub仓库里自己修bug。
要想在SWEBench上获得12.3%的分数,只要更好地手动设计GPT-4的命令行工具就行,不需要什么别的神奇之处。
首先,它重现了报告的bug,把bug的代码复制到了一个名为「reproduce_bug」的文件中。
确认问题之后,它在存储库中搜索了「col_insert」函数,看看是在哪里被定义的。很快SWE-agent就发现了是在common.py里。
打开文件后,它找到了一个名为「_eval_col_insert」的函数,认为这可能是关键所在。
提交解决方案后,SWE-bench的评估结果显示,该方案已经通过初步测试,因此可以将其标记为已解决。
根据研究者John Yang,也是SWE-bench一作介绍,SWE-agent的工作原理是与专门的终端交互,它可以:
因此,John等研究小组认为,大模型需要精心设计的智能体——计算机接口,类似于人类喜好的UI设计。
而另外一个典型案例是,在查看文件时,让SWE-agent每次只看100行,要比每次看200-300行,甚至整个文件效果要好得多。
有开发者表示,我感觉到了一个新的研究领域:智能体计算机交互(ACI)。它与人机交互(HCI)类似,但更侧重于LLM和LVM。
有人发出感慨,普林斯顿团队打造的「开源Devin」,仅用GPT-4在基准测试中取得了12.29%的准确率,线诞生之后会怎样?
为此,研究人员专门为大语言模型设计了简洁的指令和反馈格式——智能体-计算机接口(ACI),从而让模型能够更轻松地浏览代码仓库、查看、编辑和运行代码文件。
正如良好的提示设计对于充分发挥语言模型的潜力至关重要一样,优秀的ACI设计对于使用AI智能体时能够取得更佳效果也是关键。
在设计代理计算机接口过程中,研究人员发现了几个极其有用的功能,并将它们集成到了SWE-agent中:
2. 提供了一个特制的文件查看器,并为文件编辑器添加了滚动查看和文件内搜索的功能。结果显示,这个查看器在每次只展示100行代码时效果最佳。
3. 提供了一个特制的全目录字符串搜索命令。研究发现,简洁地列出每个含有匹配项的文件非常重要,因为给模型提供每个匹配项的更多的上下文信息会使其感到困惑。
4. 当某个命令执行后没有任何输出时,会返回一条消息:「你的命令已成功执行,但没有产生任何输出。」
总结来说,通过智能体计算机接口(ACI),SWE-agent让LLM有了与专属的Docker容器互动,实现浏览、搜索、编辑和执行代码的功能,从而极大地拓宽了LLM在软件开发领域的应用范围。
第一阶段被称为「推理」,此时SWE-agent会处理一个GitHub上报告的问题,并生成一个旨在修复该问题的拉取请求(Pull Request)。
第二阶段,则是对生成的拉取请求进行「评估」,以确认它是否真正解决了报告的问题。(目前只适用于SWE-bench基准测试中的问题)
John Yang目前是普林斯顿大学的研究助理,导师是Karthik Narasimhan。他曾在加州大学伯克利分校取得了电子工程和计算机学士学位。
不管是Devin、Devika,还是OpenDevin等等,都在软件工程领域有着出色的表现。
在这里,AI不再仅仅是软件工程师的辅助工具,而是开始承担起了工程师的角色,完成过去认为只有人类才能完成的任务。
他们发布的世界上第一位AI程序员——Devin,不仅掌握了全栈技能,能自主学习不熟悉的技术,端到端地构建和部署应用程序,自己改bug,甚至还能训练和微调自己的AI模型!
与以往AI工具不同的是,Devin能够规划并实施复杂的软件项目,这意味着AI现在能够扮演起工程师的角色。
通过鼓励社区成员贡献代码和坚持开放标准的原则,OpenDevin致力于不断改进和增强AI在软件开发中的应用,使软件工程师能够更高效地完成编程任务。
Devika是一个富有主动性的AI软件工程师,它能够理解人类的高级指令,把这些指令分解成具体步骤,搜集所需的信息,并据此编写代码来完成既定目标。
具体来说,Devika依托于Claude 3的强大能力,结合了先进的AI规划与编程技术,打造了一个开放给社区并由社区共同推动发展的平台。
Devika不仅仅是一个技术项目,它更是一个向全球开源贡献者发出的邀请,鼓励他们参与到AI创新的旅程中来,共同探索和定义AI技术的未来。
随着像Devin、Devika和OpenDevin这样的AI软件工程师的兴起,我们已经见证了AI在编程方面的巨大潜力。
编写安全的代码不仅要求代码无误,更重要的是要理解代码的广泛背景、可能的安全漏洞以及最新的安全研究和实践。
虽然我们尚未达到AI能够完全取代软件工程师的阶段,但AI无疑正在改变技术领域的面貌和未来的走向。
在AI创新日新月异的今天,Devin、Devika和OpenDevin引发了我们对人工智能与人类之间关系的深思:我们是否应该将AI视为与人类相似的存在?
正如Ethan Mollick在「On the Necessity of Sin」中提出的,我们面临的是与AI合作共创软件工程未来的机遇,还是AI最终将取代人类角色的挑战?
答案可能在于我们对未来的设想,以及我们是否愿意采取一种开源的态度,强调透明度、开放性和协作精神。