全网爆火的世界首个AI程序员Devin,如今被爆出视频竟是作假?
最近,一位有35年软件工程师经验的YouTube博主逐帧复现了Devin完成Upwork任务的宣传视频。
却意外发现,AI并不能像人类工程师一样完成任务,而且表现非常糟糕。
他将25分钟“揭穿Devin的谎言”视频公开后,一时间引爆全网并在HN、Reddit等社交平台上掀起轩然大波。
更有意思的是,博主自己复制了Devin尝试做的任务,花费了大约36分钟。然而,Devin用了至少6个小时,甚至可能超过一天。
有网友表示,“正如博主详细解释的那样,尽管其试图在演示中暗示,Devin并不能独立完成Upwork的工作。它正在创建混乱、过于复杂的代码”。
也有人认为,Devin从诞生之初,就更多是营销和炒作,而不是现实。
说来,Devin视频真的是作假了吗?
一、逐帧分析,揭穿Devin的谎言
Devin发布之初,其背后的初创公司Cognition AI更新了官方博文,通过七个视频介绍了这一AI的“魔力”。
其中一个视频,是让Devin自主完成了全球最大的综合类自由职业平台Upwork的一项任务。
当时,网友看后惊讶地表示:没想到AI智能体都可以做副业了。
Cognition的开发者You挑选了一项“用计算机视觉模型做推理”的工作,具体要求是:
-
我希望利用该资源库中的模型进行推断。(https://github.com/mahdi65/roadDamageDetection2020)
-
您的交付成果将是关于如何在AWS的EC2实例中进行操作的详细说明。
-
请提供您完成这项工作的评估报告。我不会回复没有评估的报告。
如下是Devin在官方视频中,完成任务的表现。
接下来,我们一起来看下YouTube博主是如何逐帧分析Devin在真正实操中的能力的。
博主称,我们首先看到,Devin并不能做到Upwork上的所有工作,而是由研究者精心挑选了“road damage”任务。
当然,这并非说Devin就是欺骗性的,而是代表其在别的任务中的表现,一定要比这个差。
然后,在实际对话中,开发者You向Devin提出的要求如下,“我想用这个储存库中的模型进行推理,请弄清楚”。
值得注意的是,客户的要求是“你需要在亚马逊EC2实例中提交这一操作的详细说明”,这与开发者提出的要求显然不同。
然而,从Devin的视频末尾可以看出,它实际上并没有按照客户要求完成工作。
在博主看来,在完成这项任务之前,你需要明确如何开始这项工作。
这就需要向客户询问:
-
实例的大小,类型?
-
是更倾向于一个运行更快但成本更高的实例,还是一个更经济但运行较慢的实例?
-
这个系统需要持续在线吗?
-
……
如何处理自己需要进行推理分析的资料/图片?你将怎样把这些上传到服务器?
比如,可以建立一个网页界面来处理,也可以通过SSH上传,或者放在S3 bucket里。那输出结果的访问方式又是怎样的呢?
这些都是必须了解的问题。
总而言之,博主称,这也是我之前视频里提到的,软件开发者的工作中最难的、最关键的、最耗时的一部分:主要是与客户、领导及其他利益相关者的沟通。
这些都是AI目前无法完成的任务,而这些恰恰是我们所做的非常重要的事情。
二、Devin实际上做了什么?
如下是视频中的一个截图,提到了一个Repo。
这是一个名为 requirements.txt 的文件,它规定了代码的依赖库版本。
不过,这个代码库最初依赖的一些库是四年前的版本,而现在其中一些库已经不再提供下载,所以不得不进行修改。
再此,视频中提到,Devin更新了代码。博主表示,“Devin能够做到这一点确实令人赞叹”。
与客户的要求相比,他们希望基本建立起自己的推理能力。
Devin被告知只使用样例数据就可以,因此这正是博主复现Devin操作时所做的。
Devin很早就遇到了一个错误,这是一个命令行错误:
在顶部,遇到了与打开图像、文件未找到、无此文件或目录相关的错误。
这个错误出现在一个名为visualize_detections.py的代码文件中。博主称自己并没有遇到这一问题,是因为代码库中不存在名为visualize_detections.py的文件。
回到命令行,如果放大窗口的其他部分,便会看到,Devin将一些内容写入一个名为inspect_results.py的文件中,接着运行Python执行这个文件,结果出现了语法错误。
在Python文件中使用/n是不行的,而且echo命令也不该这么使用。整个过程都是错误的,且毫无意义。
Devin在创建这些含错误的文件后,又进行了修正。视频中提到,Devin实际上是在进行打印行调试。这是一个很常见的做法,很多人都会用到。
评论里说,“Devin正在添加代码,追踪数据流直至彻底理解”。
博主对此怀疑道,我不相信Devin真的能理解任何事物。
放大观察这一部分,可以看到一个奇特的循环。它正在读取一个文件,并把数据读入一个缓冲区。这是update_image_ids.py文件。
再次说明,这个文件在客户要求使用的代码仓库中不存在。
实际上,博主在GitHub上搜索了所有可能的位置,只有2处存在带有这个名称的文件。
屏幕上显示有三个的原因是,其中一个是另一个的分支版本,它们与Devin正在使用的文件完全不同。
但问题在于Devin此处正在调试一个自己创建的文件,而这个文件完全不在项目代码仓库中,非常不妥。
其实,Devin并不是在修正自己在网上发现的代码,也不是在处理客户指定的问题代码,而是在修正自己生成的错误代码。
更糟糕的是,这样做并不必要。这是那个代码库中的readme文件。
该库中有一个名为infer.py的文件,正如视频中Devin所做的那样。
readme文件说明了其功能及使用方法。在右侧,甚至还有一个小按钮,可以复制整条命令,粘贴至命令行窗口,然后按下回车。
博主认为开发这个“检测道路损坏”的代码仓库的人已经尽可能地简化了使用说明,但Devin似乎还是没能理解。
因此,Devin不得不自己创建了一个混乱的项目。
正如Devin所发现的复杂、难以处理、很容易出现的小错误,这些让这样的代码很难调试。
三、半小时复现,AI却用了6小时
接下来,博主计划自己去复现Devin尝试做的任务。
他表示,自己用了大约36分钟的时间,就完成了Devin所做的事。
在下一张幻灯片中,实际上有一个需要修复的错误,在名为dataset.py的文件第33行。
问题是torch模块缺少一个名为underscore six的属性。
博主在谷歌上搜索了这个问题,找到了GitHub上的一个相关评论。
他按照该评论中的建议修改了代码行,确实解决了问题。
“解决这个问题总共花了我大约一分零七秒的时间,只需这么短的时间就修正了错误。这只是一个快速的谷歌搜索而已”。
以下是博主所做的修改的具体内容,这是最初状态和最后状态之间的差异。
这是requirements.txt文件的一处修改,最开始使用的是torch 1.4.0版本,博主使用了最新版本的torch 2.2.2。
右边是Devin视频中的最后一屏,左边是最后的输出。
它们两个大同小异。博主的框是黄色的,Devin是红色的。
根据Devin官方视频中的时间,从2024年3月9日3:25pm开始,一直到9:41pm完成,中间经历了6个小时。
最后再看下Devin完成工作的效果及其评价。
为了复制Devin的结果,博主只需要在云实例上设置合适硬件的环境,并实际运行两个带有正确路径的命令。
Devin看似做了很多工作,完成了很多任务。然而,只要你设置好环境,实际上只需要运行2个命令。些代码修正全都无关紧要,因为它们都是Devin自生成的代码。
在视频的最后,研究者You表示Devin做得好。而实际上,Devin完成的任务对于AI来说的确很酷。
四、AI程序员,全网沸腾
还记得Devin在三月初发布时,全网都在疯转这个AI。
在SWE-bench基准测试中,它的表现远远超过Claude 2、Llama、GPT-4等选手,取得了13.86%的惊人成绩。
它不仅能自主学习不熟悉的技术,端到端地构建和部署应用程序,自己改bug,甚至还能训练和微调自己的AI模型。
网友纷纷恐慌,Devin会偷走我们的工作吗?难道程序员真的不存在了?!
甚至,其背后十人初创团队的励志故事也被人挖了出来。
核心创始人首席执行官Scott Wu,以及弟弟Neal Wu等人共揽收十枚IOI金牌。
也就不到一个月的时间,各种AI程序员相继诞生。
比如,普林斯顿团队推出的SWE-agent,可以在真实的GitHub仓库里修bug,还有OpenDevin,Devika开源项目。
不过,关于AI程序员能否解决真实问题的能力,却还是应该持有保留态度。
因为,即便是借助了GPT-4 Turbo的能力,AI也并非万能。
参考资料:
https://x.com/0interestrates/status/1779268441226256500
https://www.reddit.com/r/programming/comments/1c1g0fn/debunking_devin_first_ai_software_engineer_upwork/
本文来自微信公众号:新智元 (ID:AI_era),编辑:桃子