AI生成的代码正在把程序员逼到“崩溃”

一只数据猿2024-08-28 08:37:15  73

最近,在技术社区HakerNews里,开发者们再次开启了对AI代码的疯狂吐槽。

这起源于一篇名为“我厌倦了修改客户用AI生成的代码”文章。

在文章里,名叫Tacitus的小哥说自己在今年年初开发了一些用来做资产交易和相关数据收集的工具,有偿开放API给有类似需求的人,并且提供一些技术支持。

渐渐的他的付费客户越来越多,问题也越来越多,当然这也不算什么坏事,因为客户的增长对于一个刚起步的事业而言是再好不过的事情,而帮助客户解决问题也是成长的一部分。

让人头疼的是,Tacitus经常收到“救命,我的交易机器人不工作了!”这样的请求。在跟进这些问题时,Tacitus发现客户发来的代码常常存在各种低级错误,比如访问不存在的端点,或试图从不存在的API响应中读取属性。

深入沟通后,他意识到这些问题的根源在于客户使用了ChatGPT生成的代码:ChatGPT时常会产生“幻觉”,导致代码中出现一些专业人士可以发现但毫无编程知识的客户无法察觉的小问题。

对于那些只是想构建简单脚本的客户,Tacitus通常会帮助他们修复这些幻觉代码,这对他来说并不费力。但问题在于,修复后客户往往会提出更大的要求:“既然AI写的代码稍微修改一下就能用,那我能不能用AI实现更复杂的应用呢?”

这是最让Tacitus感到无语的地方。“客户开始期望我提供无限制的免费支持,甚至希望我为他们免费构建整个应用程序。一旦拒绝,他们会非常生气,”他说。

“这些客户应该雇佣开发者来修复AI生成的bug……我不想成为那个专门修复AI bug的开发者!”他在文章最后愤愤地说道。

留言区很快充满了开发者们的共鸣,他们纷纷分享自己与AI生成代码的痛苦经历。

“我在工作中也遇到过类似的情况,当时我的同事问我,为什么他那短短10行的代码会出现问题。原来他有两个变量“file_name”和“filename”,并用其中一个变量代替了另一个变量。我问他是怎么得到这样的代码的,他说他用 Copilot 来创建它。在不了解生成式AI的作用的情况下使用其代码永远不是一个好主意。”

“......Claude确实能快速生成代码,而我可能需要一周时间来编写同样的代码。但是,这些代码中隐藏了许多陷阱……希望能有一个好的测试工具与代码生成工具配合使用。”

“我怀疑 LLM 的幻觉能否产生安全性良好的代码。在我看来,使用来自 LLM 的代码可能会让你的程序稍微快一点实现,但最终只会增加调试和测试所需的时间,因为其中可能存在各种问题,从琐碎的(未使用的变量)到非常微妙且难以发现的逻辑问题,这些都需要对 LLM 拼凑起来的库和框架有更深入的了解。此外,从长远来看,这种做法会剥夺人们对这些知识的理解,因此他们会发现正确完成测试和调试阶段越来越具有挑战性。”

除了吐槽之外,也有敏锐的开发者看到了商机。

“....对于那些想要专门修复 AI 生成应用程序的人来说,这简直是一个金矿。很多企业要么在熟人的帮助下,要么在类似Upwork的兼职平台,找个所谓的开发者,结果开发者用AI来创建应用...如果你能打造一个解决这种问题的企业,你肯定能早日退休。”

事实上,已经有创业公司瞄准了这块“蛋糕”。

由印度裔工程师Harjot Gill在硅谷创立的CodeRabbit宣称,能够利用AI模型分析代码并提供反馈。8月15日,CodeRabbit宣布完成了由CRV领投,Flex Capital和Engineering Capital参与的1600万美元A轮融资。

然而,效果仍然存在争议。

Graphite的Greg Foster在一篇博客文章中分享了将OpenAI的GPT-4应用于代码审查的内部实验经验。

虽然GPT-4能够捕捉到一些有价值的内容——如轻微的逻辑错误和拼写错误——但也产生了大量误报。Foster指出,即使经过微调,这些误报仍未显著减少。

Greg Foster给出的例子还是用AI审查人类工程师输出的代码。如果使用AI来审查AI生成的代码,问题可能会更加严重,导致幻觉式错误层出不穷,就像在“垃圾上堆积更多垃圾”,陷入死循环。

在OpenAI推出拥有编程能力的ChatGPT之后,几乎所有科技巨头和领先的AI公司都提供了代码助手工具:微软有GitHub Copilot,谷歌推出了Gemini Code Assist,亚马逊AWS的CodeWhisperer也已经上线,Meta的Llama 3也具备编程功能。

微软资深工程师Andrew是第一批使用GitHub Copilot的人。他告诉当公司开始为每个开发人员提供这项功能时,大家都很兴奋,体验感也很好。因为Copilot能够基于上下文自动生成代码,尤其是在处理常规需求时,省去了手动输入的繁琐过程。相比之前只能补全有限语句的辅助工具,Copilot还拓展了编程思维,提供多种不同的实现方式。

然而,随着使用的深入,问题逐渐显现。针对一些复杂需求,Copilot更容易产生“幻觉”,输出一些“瞎编”的代码,根本无法使用。

Andrew表示,在日常工作中,Copilot生成的代码大多数情况下需要手动修改,但总体上仍然提高了工作效率。

刚入职亚马逊的Jack表示,作为一名“转码”选手,AI代码助手大大提升了他的“刷题”速度。

对开发者们而言,“刷题”指的是在准备技术面试或提升算法技能时,通过LeetCode等题库平台不断练习编程。对于LeetCode上的题目,Copilot等助手往往能给出正确答案,因为这些题目大多集中在算法和数据结构的经典问题上,如排序、查找、动态规划、树和图的遍历等。AI模型能够识别并复用这些常见的编程模式,生成符合题目要求的代码。

但Jack也坦言,过度依赖AI工具可能削弱思考能力。“如果你习惯依赖AI,就无法真正掌握那些本应理解的编程知识和思路。下次遇到类似问题时,你仍然无法独立解决。尤其是在一对一面试中,如果遇到通过AI解决的高难度题目,由于时间有限且无法求助AI,可能会导致面试失败。”他说道。

这都是Jack的亲身经历,因此在后来的刷题训练中,他尽量减少了对AI的依赖。

无论是经验丰富的Andrew,还是初出茅庐的Jack,他们都认为Copilot只能作为辅助工具,开发者不能完全依赖它,更不用说毫无编程知识的人试图用AI来构建应用程序了。

Axios报道援引多家报告结果称,现在有超过一半的程序员正在使用生成式AI来编写或编辑运行软件——而且这个数字还在不断上升。

然而,生产力的提高是有代价的——这一点Andrew和Jack也提到过。

根据开发者分析工具GitClear的一项研究,AI可能对整体代码质量带来负面影响。通过分析1.53亿行代码,研究比较了2023年与之前几年AI尚未广泛用于代码生成时的变化,发现:

“代码更改率”(即编写后不到两周便被删除的代码行比例)正在上升,预计在2024年将翻倍。研究指出,代码更改率的增加意味着生产环境中出现错误的风险更高。

此外,生成代码中“复制/粘贴”行为的增长速度超过了“更新”、“删除”或“移动”代码的速度。GitClear创始人Bill Harding表示,AI生成的代码在这方面更像是由短期开发者编写的,他们无法充分考虑如何将代码与更多的项目进行整合。总部位于美国西雅图的GitClear是一家提供开发者生产力分析工具的公司。

Harding总结道,AI代码助手虽然在代码生成方面表现出色,但也可能导致“AI引发的技术债务”。换句话说,代码行数的增加并不一定意味着代码质量的提升。

与此同时,今年3月份,前亚马逊技术项目经理、《Architecting for Scale》一书的作者Lee Atchison也在自己发布在LinkedIn上的文章中指出,近年来代码复杂性和与复杂代码相关的维护成本有所增加,这在很大程度上归因于AI生成代码的激增。

虽然生成式AI工具在代码创建方面节省了时间和成本,但这些节省下来的资源可能会在后期的维护和修复过程中被抵消。

Atchison的担忧并非没有依据。斯坦福大学的一项研究发现,使用AI助手编写的代码,其安全性明显低于由人类程序员独立编写的代码。目前尚未发生任何与未经检查的AI生成代码相关的公共灾难,但CodeSignal的CEO Tigran Sloyan警告,这可能只是时间问题。

基于市场对AI技术的乐观预期和潜在市场规模的巨大吸引力,各类AI编程助手如雨后春笋般涌现,融资额动辄千万美元,估值甚至高达数亿美元:

Augment在2024年4月融资2.5亿美元。投资者包括 Sutter Hill Ventures、Index Ventures、Innovation Endeavors、Lightspeed Venture Partners 和 Meritech Capital。

Magic正在以15亿美元的估值寻求超过2亿美元的融资。此前Magic从NFDG Ventures和谷歌母公司旗下的CapitalG等投资者那里筹集了1.4亿美元。

Cognition在今年4月份声称完成了1.75亿美元的融资,估值高达20亿美元。值得注意的是,Cognition正是Devin的母公司,Devin曾因以“第一个AI程序员”的宣传噱头刷爆了中文科技媒体圈,成为业内的热门话题。

Glean在2024年2月以22亿美元的估值筹得2亿美元,投资者包括 Kleiner Perkins、Lightspeed Venture Partners、Sequoia Capital 等。

除此之外,市场上还有许多同类型的初创企业,如Tabnine、Codegen、Refact、TabbyML、Sweep、Laredo等等,它们的融资信息就不再一一列举。

虽然AI技术为软件开发带来了新的可能性,但它在处理复杂、特定需求的项目时,仍然存在明显的不足。这意味着,现在备受资本追捧的AI编程工具在实际应用中所带来的生产力提升,可能远低于市场预期——它们的高估值是否合理,仍然值得商榷。

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/1126037.html
0
最新回复(1)