智能体工作流
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 <predictions_path>
需要注意的是,这个步骤仅适用于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工程的变革者
今年3月12日,一家叫才成立不到2个月的10人初创公司,就给了全世界亿点点震撼。
他们发布的世界上第一位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/