×

普林斯顿首个「开源」AI程序员登场!爆改GPT-4,93秒修bug

admin admin 发表于2024-05-02 04:18:04 浏览10 评论0

抢沙发发表评论

  新智元报道

  编辑:编辑部

  世界首个 AI 程序员 Devin 诞生不足一个月,普林斯顿就推出了全新的「开源版本」——SWE-agent!在 GPT-4 的加持下,debug 只需 93 秒,准确率几乎不相上下。

  AI 程序员又出新选手了。

  普林斯顿团队祭出了全新的智能体-计算机接口(ACI)——SWE-agent。

  简单来说,SWE-agent 能够让大语言模型(比如 GPT-4)变身为软件工程 AI 智能体,并在真实的 GitHub 仓库里自己修 bug。

  GPT-4 编程难的宿疾,这不就解决了!

  在 SWE-bench 测试集上,SWE-agent 成功解决了 12.29% 的问题,平均耗时只有 93 秒,准确率堪比 Devin。

  当然,更重要的是:SWE-agent 完全开源。

  仅仅十几个小时,就在 GitHub 上斩获了 1.6k 星,109 个 Fork。

  地址:https://github.com/princeton-nlp/SWE-agent

  英伟达高级科学家 Jim Fan,也揭示了这一朴实的真理——

  要想在 SWEBench 上获得 12.3% 的分数,只要更好地手动设计 GPT-4 的命令行工具就行,不需要什么别的神奇之处。

  矩阵操作 bug,神速解决

  下面就是一个 SWE-agent 如何解决 GitHub 问题的示例。

  这是 sympy 项目中的一个问题,是 SWE-bench 的一个实例。

  用户报告了这个问题:矩阵操作的 Insert 时,产生了一些不符合预期的输出。

  SWE-agent 是怎么解决这个问题的呢?

  首先,它重现了报告的 bug,把 bug 的代码复制到了一个名为「reproduce_bug」的文件中。

  运行后,果然出现了和报告中一样的问题——

  确认问题之后,它在存储库中搜索了「col_insert」函数,看看是在哪里被定义的。 很快 SWE- ag ent 就发现了是在 com mon. py 里 。

  打开文件后,它找到了一个名为「_eval_col_insert」的函数,认为这可能是关键所在。

  在分析代码后,SWE-agent 发现,问题就是出在了矩阵操作的索引上!

  于是,它对这个函数进行了修改。

  再次运行代码,问题完美解决了!

  提交解决方案后,SWE-bench 的评估结果显示,该方案已经通过初步测试,因此可以将其标记为已解决。

  而整个过程中,SWE-agent 解决问题之神速,令人惊叹!

  在项目主页中,还有一个可以自主操作的演示,感兴趣的可以自主尝试体验修改 bug。

  传送门:https://swe-agent.com/demo

  「开源 Devin」,软件工程护城河不存在了

  根据研究者 John Yang,也是 SWE-bench 一作介绍,SWE-agent 的工作原理是与专门的终端交互,它可以:

  - 打开、滚动和搜索文件

  - 编辑特定行,并自动进行语法检查

  - 编写和执行测试

  简单地将大模型连接到 vanilla bash 终端,并不能很好地工作。

  因此,John 等研究小组认为,大模型需要精心设计的智能体——计算机接口,类似于人类喜好的 UI 设计。

  就比如,当 LLM 搞乱缩进时,编辑器就可以阻止,并给出反馈。

  而另外一个典型案例是,在查看文件时,让 SWE-agent 每次只看 100 行,要比每次看 200-300 行,甚至整个文件效果要好得多。

  即便是用上了 GPT-4,一个优秀的智能体-计算机设计也非常重要。

  而关于 SWE-agent 的技术报告,也将在 4 月 10 日上线。

  作者 Ofir Press 表示,自己耗费了好几个小时用 DALLE-3 设计出了 logo。

  Devin 从面世到现在不足一个月的时间,走向大众化。

  有开发者表示,我感觉到了一个新的研究领域:智能体计算机交互(ACI)。它与人机交互(HCI)类似,但更侧重于 LLM 和 LVM。

  有人发出感慨,普林斯顿团队打造的「开源 Devin」,仅用 GPT-4 在基准测试中取得了 12.29% 的准确率,真不敢想象 GPT-5 诞生之后会怎样?

  网友纷纷表示,软件行业再也没有护城河了。

  全新的 ACI 设计

  为此,研究人员专门为大语言模型设计了简洁的指令和反馈格式——智能体-计算机接口(ACI),从而让模型能够更轻松地浏览代码仓库、查看、编辑和运行代码文件。

  正如良好的提示设计对于充分发挥语言模型的潜力至关重要一样,优秀的 ACI 设计对于使用 AI 智能体时能够取得更佳效果也是关键。

  在设计代理计算机接口过程中,研究人员发现了几个极其有用的功能,并将它们集成到了 SWE-agent 中:

  1. 增加了一个在发出编辑命令时运行的代码检查器,如果代码语法不正确,则阻止编辑命令执行。

  2. 提供了一个特制的文件查看器,并为文件编辑器添加了滚动查看和文件内搜索的功能。结果显示,这个查看器在每次只展示 100 行代码时效果最佳。

  3. 提供了一个特制的全目录字符串搜索命令。研究发现,简洁地列出每个含有匹配项的文件非常重要,因为给模型提供每个匹配项的更多的上下文信息会使其感到困惑。

  4. 当某个命令执行后没有任何输出时,会返回一条消息:「你的命令已成功执行,但没有产生任何输出。」

  总结来说,通过智能体计算机接口(ACI),SWE-agent 让 LLM 有了与专属的 Docker 容器互动,实现浏览、搜索、编辑和执行代码的功能,从而极大地拓宽了 LLM 在软件开发领域的应用范围。

  智能体工作流

  SWE-agent 的工作流程分为两个阶段:

  第一阶段被称为「推理」,此时 SWE-agent 会处理一个 GitHub 上报告的问题,并生成一个旨在修复该问题的拉取请求(Pull Request)。

  第二阶段,则是对生成的拉取请求进行「评估」,以确认它是否真正解决了报告的问题。(目前只适用于 SWE-bench 基准测试中的问题)

  推理

  只需使用下面这个脚本,你就可以在任何 GitHub 问题上运行 SWE-agent 了!

python run.py --model_name gpt4 \--data_path https://github.com/pvlib/pvlib-python/issues/1603 --config_file config/default_from_url.yaml

  接下来,要实现 SWE-bench 上的推理,需要在 SWE-bench Lite 上运行 SWE-agent 并生成补丁:

python run.py --model_name gpt4 \--per_instance_cost_limit 2.00 \--config_file ./config/default.yaml

  如果要运行 SWE-bench 中的单个问题,则需使用--instance_filter 选项:

python run.py --model_name gpt4 \--instance_filter marshmallow-code__marshmallow-1359

  评估

  评估生成的拉取请求方法如下:

cd evaluation/./run_eval.sh

  需要注意的是,这个步骤仅适用于 SWE-bench 问题集。

  作者介绍

  就在下周公布,SWE-agent 论文就会公开。

  这项研究中两位核心作者是 John Yang 和 Carlos E. Jimenez。

  John Yang

  John Yang 目前是普林斯顿大学的研究助理,导师是 Karthik Narasimhan。他曾在加州大学伯克利分校取得了电子工程和计算机学士学位。

  他本人对语言基础和交互、LLM 的基准测试、软件工程和代码生成感兴趣。

  Carlos E. Jimenez

  Carlos E. Jimenez 是普林斯顿的博士生,导师是 Karthik Narasimhan 教授。

  他研究的是自然语言处理的人工智能和 ML,研究兴趣包括代码语言模型,以及面向任务的对话。

  Carlos 曾在犹他大学获得了计算机科学学士学位,导师是 Ellen Riloff。

  编码的未来掌握在 AI 手中?

  无可否认,AI 正逐渐改变技术行业的运作方式。

  不管是 Devin、Devika,还是 OpenDevin 等等,都在软件工程领域有着出色的表现。

  在这里,AI 不再仅仅是软件工程师的辅助工具,而是开始承担起了工程师的角色,完成过去认为只有人类才能完成的任务。

  那么,这是否意味着 AI 已经不仅仅是一个工具,而是成为了工程过程中的合作伙伴?

  更进一步的,AI 是否真的能够独立编写安全的代码?未来,编程是否将完全交由 AI 来掌控?

  可以说,这些问题不仅关乎技术的进步,也触及到我们对于 AI 角色和能力认知的深层次思考。

  Devin:AI 工程的变革者

  他们发布的世界上第一位 AI 程序员——Devin,不仅掌握了全栈技能,能自主学习不熟悉的技术,端到端地构建和部署应用程序,自己改 bug,甚至还能训练和微调自己的 AI 模型!

  在 SWE-bench 上,Devin 的表现远远超过 Claude 2、Llama、GPT-4 等选手,取得了 13.86% 的惊人成绩!

  可以说,Devin 并不仅仅是一款 AI 工具,而是一个能够独立完成软件工程任务的 AI 系统。

  与以往 AI 工具不同的是,Devin 能够规划并实施复杂的软件项目,这意味着 AI 现在能够扮演起工程师的角色。

  除了编写代码外,Devin 还能够处理程序中的错误,部署应用,乃至于训练新的 AI 模型。

  OpenDevin:共创未来的愿景

  就在发布当天,Devin 的开源翻版——OpenDevin 横空出世。

  通过鼓励社区成员贡献代码和坚持开放标准的原则,OpenDevin 致力于不断改进和增强 AI 在软件开发中的应用,使软件工程师能够更高效地完成编程任务。

  Devika:开源社区的新星

  受到 Devin 在 AI 软件工程领域开创性成就的激励,另一个开源项目——Devika 也诞生了。

  Devika 是一个富有主动性的 AI 软件工程师,它能够理解人类的高级指令,把这些指令分解成具体步骤,搜集所需的信息,并据此编写代码来完成既定目标。

  具体来说,Devika 依托于 Claude 3 的强大能力,结合了先进的 AI 规划与编程技术,打造了一个开放给社区并由社区共同推动发展的平台。

  Devika 不仅仅是一个技术项目,它更是一个向全球开源贡献者发出的邀请,鼓励他们参与到 AI 创新的旅程中来,共同探索和定义 AI 技术的未来。

  目前还无法代替人类

  随着像 Devin、Devika 和 OpenDevin 这样的 AI 软件工程师的兴起,我们已经见证了 AI 在编程方面的巨大潜力。

  这些 AI 不仅能够规划和执行复杂的工程任务,还能找出并修复漏洞,甚至负责整个项目的开发流程。

  然而,当面对复杂的现有代码库并追求编写安全代码时,情况变得更加复杂。

  编写安全的代码不仅要求代码无误,更重要的是要理解代码的广泛背景、可能的安全漏洞以及最新的安全研究和实践。

  在这里,人类的监督仍然不可或缺。

  虽然我们尚未达到 AI 能够完全取代软件工程师的阶段,但 AI 无疑正在改变技术领域的面貌和未来的走向。

  在 AI 创新日新月异的今天,Devin、Devika 和 OpenDevin 引发了我们对人工智能与人类之间关系的深思:我们是否应该将 AI 视为与人类相似的存在?

  正如 Ethan Mollick 在「On the Necessity of Sin」中提出的,我们面临的是与 AI 合作共创软件工程未来的机遇,还是 AI 最终将取代人类角色的挑战?

  答案可能在于我们对未来的设想,以及我们是否愿意采取一种开源的态度,强调透明度、开放性和协作精神。

  参考资料:

  https://swe-agent.com/

  https://github.com/princeton-nlp/SWE-agent

  https://news.opensauced.pizza/open-source-projects-that-are-gaining-steam-that-you-havent-heard-of/

群贤毕至

访客