新智元报道
:桃子
【新智元导读】全球首个AI程序员Devin被爆视频造假?YouTube博主近日揭露了背后明星初创公司Cognition的谎言,通过逐帧分析发现,Devin并不能独立完成Upwork工作。
全网爆火的世界首个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分的时间,完成所做的事。
下一张幻灯片中,实际上有一个需要修复的错误,在名为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程序员,全网沸腾
3月初,还记得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/