文章指出 AI 宣传与实际工程落地之间存在巨大落差,许多开源项目已明确禁止 AI 生成的代码。
目前金融市场普遍认为存在 AI 泡沫。相对温和的观点则认为 LLM 正在不断改进,终将接管越来越多的人类任务并提升生产力。但 LLM 真的在变得更聪明,还是只是在更擅长愚弄我们?
越来越多的技术专家主张,LLM 对真正的进步实际上弊大于利,因此禁止使用 LLM,并要求纯人工工作以确保质量和高效利用人类时间。Rakshit Yadav 最近对 120 个开源项目的 AI 政策进行了审查,结果显示其中 37 个选择全面禁止 AI。Linux 内核允许 AI 辅助贡献,但需要注明所用 LLM 以保持透明度;而 GCC、QEMU、SDL、Gentoo、Zig 和 Ghostty 等项目已采取政策拒绝所有 AI 辅助贡献。此外,Codeberg 和 Sourcehut 等开发平台以及 Flathub 应用商店已禁止使用 AI 生成软件、文档、缺陷报告、评审评论以及任何供人类阅读的内容。允许使用 AI 的项目通常仍要求必须有人工介入,且提交者必须在其他人看到之前阅读并过滤 LLM 输出的所有内容,以遏制 AI 垃圾信息的传播。
目前,Linux 发行版 Debian 正在就是否允许使用 AI 为 Debian 做贡献进行开发者投票。选票上的提案之一是全面禁止将 AI 用于代码、文档、翻译、缺陷报告等。大多数人的第一反应是惊讶——为什么这些技术人员不想使用人类迄今为止创造出的最新、最伟大的技术?难道他们不希望 Debian 在 AI 的帮助下更快改进吗?还是说 LLM 实际上是一个骗局,对 Debian 毫无用处?这些人都是各自领域的杰出专家,绝非愚蠢,因此值得停下来理解他们为何提出禁止 AI 的政策。
还需要注意的是,AI 数据中心本身运行在 Debian 或其他基于 Linux 的系统上。世界上所有的开源软件都被喂给了 LLM,软件开发现已成为 AI 的主要用例之一。那么,为什么许多开源项目的维护者不愿意接收 LLM 辅助的贡献,尽管这些 LLM 基本上都运行在同样的软件栈之上,而且是通过学习同样的开源软件代码库来训练软件开发的?
LLM 的输出通常看起来非常有说服力、专业且正确。人类在进化过程中学会了根据易于检测的次要因素来信任或不信任新信息,比如说话者的权威程度,或者信息传达得多么自信和雄辩。然而,人类在事实核查和交叉验证新信息方面非常糟糕,因为这需要大量精力,而人类喜欢节省能量并尽可能懒惰。
你对某件事了解得越少,就越容易被愚弄。诺贝尔经济学奖曾授予关于信息不对称如何扭曲市场并导致次优结果的研究。在软件工程领域,我们现在目睹了大量有抱负的软件开发者使用 AI 创建看起来可能能工作、但实际上充满缺陷的软件。这些人本意良好,但只是缺乏理解自己实际在做什么的专业知识,也没有必要的判断力来决定 LLM 何时真正输出了有用的东西,何时只是在制造垃圾。我认为,这种专业知识的不对称解释了开源项目中目前大部分冲突——高级开发者被大量审查请求淹没,这些代码质量很差,对所有参与者来说都是浪费时间,而随着 AI 的普及,能够贡献并以越来越快的速度创造更多"代码垃圾"的人也越来越多。
如果高级开发者教授初级开发者如何做好软件工程,信息不对称在一定程度上可以得到缓解,但快速大规模教育所有人显然是不可行的。而且,似乎很多人不想学习,而是期望将所有理解外包给 LLM。许多高级开发者已经注意到这一点,并停止教导初级开发者,因为他们不喜欢时间被不想学习的人浪费的感觉。初级开发者可能都知道自己动手设计和编写软件会更好,但使用 LLM 感觉太容易了。我完全理解为什么人们选择走最省力的路。不幸的是,那条路往往通向死胡同。
人脑天生倾向于认为无生命的物体是活的并有感觉。小孩子会像对待真人一样和毛绒玩具说话,许多成年人也会因为周围发生的事情而感受到某种情绪——也许是某位神祇或精灵在发怒之类的。当我们看到一台机器像人类一样写作,或者更有说服力的是,听到它像活物一样与我们交谈并回应我们时,我们的大脑自动开始假设它是一个有智慧和感觉的活物。
事实上,这些"生物"生活在抽象的"云"中,只通过我们手持的设备出现,并且以一种为最大化参与度而设计的方式运作,这让幻觉更加强烈。我建议人们尝试在本地笔记本电脑上运行 LLM,看看这个"原始"的东西是如何输出 token 的,这样就能打破一些幻觉。
也请不要再对 LLM 说"请"了。它没有任何感觉。
以我的经验,理解 LLM 中温度的概念有助于看清为什么 LLM 可能会自信地生成一个看起来合理但完全错误的代码变更。大型语言模型是统计机器,它们根据输入(前面的 token)来预测应该输出什么(下一个 token)。当运行 LLM 时,如果温度配置为零,输出是非常可预测的,总是遵循神经网络中节点和层之间最强连接(又称权重)的路径。与生物不同,人类的大脑一直在学习和变化,而 LLM 的权重只能在训练期间改变。当 LLM 处于"正常"使用状态时(在推理期间,生成下一个 token),权重是固定的,如果温度为零,特定问题的答案将始终完全相同。这当然有点无聊,太过机械,所以通常 LLM 会设置一点温度,这会在神经网络遍历的连接中引入随机变化。
我再次建议人们尝试在本地运行小型 LLM,在那里温度和其他设置完全暴露且可配置,从而亲自观察这一点。这是抵御 LLM 具有智能这一幻觉的有效解药。
如果 LLM 持续产生这么多垃圾,为什么基准测试显示它们在不断改进?AI 模型确实在不断改进。例如 CAIS AI 仪表板可视化了过去几年前沿模型的演变。然而,最佳模型在"人类最后的考试"上的通过率仅为约 50%。在 SWE-bench 上,当今最佳模型只解决了不到 77%。这意味着 AI 有相当多的时候是错误的。这与我个人的体验相符,著名的 Greg Kroah-Hartman 最近在 Linux 开发者邮件列表中写道:"即使使用最好的一代和下一代工具,它们生成的结果中至少有三分之一是完全错误的或有害的。"
生成猫咪视频时错误率无关紧要,但在工程领域,事情必须完全正确。当然,人类也会犯错,但受过良好教育且有适当激励机制的人类在许多方面比 LLM 能力要强得多。我们能够可靠地完成复杂的事情,比如运营全球商业航空交通,而不会每天都有飞机坠落。
目前,有很多人受到激励去维护通用人工智能即将到来并将接管一切的叙事。事实上,整个金融体系目前都偏向于这样的愿景,因为降低劳动力成本、增加利润和垄断一切控制的承诺以前所未有的方式吸引着资本。
在这个环境中,我们需要记住,机器和经济系统终究是人类的服务者,而不是反过来。
但 AI 已经或即将在能力或效率上超越人类的观点 simply not true,我们都应该听听创造了人类迄今为止最复杂系统(计算机和软件)的人们的意见——他们说 LLM 在许多情况下糟糕到可能完全禁止它们在某些地方使用会更好,而不是让人类把更有价值的时间浪费在阅读它们生成的文本和代码上。
时间不对称并非新现象,因为长期以来一直存在各种"脚本小子"。例如,一个人运行内存泄漏扫描仪却不理解结果,花 10 分钟提交一个缺陷报告,可能迫使开源维护者花费一个小时来证明并解释该发现是假的。新的是 AI 用户多么盲目地信任他们得到的输出,而且开源在这方面特别脆弱,因为没有管理者来保护开发者的时间使用。
我每天都在使用 AI 工具,不断尝试新模型和新用法。有时它们有效,但 often 它们 not。当 LLM 未能根据阅读我的电子邮件正确安排日历条目时,我很容易发现它错了。我尽量避免将 LLM 用于任何我无法自己判断结果是否正确的事情。
我也真心希望其他人不要向我发送他们自己付出的努力少于我阅读和理解它所需努力的东西。这个原则并不新鲜——许多人听说过这样的要求:阅读代码必须比编写它花费更少的精力。
我一直对软件代码保持高标准,要求 fellow 开发者确保他们的代码结构良好、易于理解和有文档记录。不幸的是,LLM 使人们在这方面作弊更容易,但如果作弊更容易,也许现在惩罚和威慑也需要更高。随着许多开源项目采用为 AI 使用设置护栏的政策,我预计我们将很快看到政策被执行的情况,这将是有趣的,看看违规行为如何被评判。
作为社会,我们可能还需要制定新的社会标准和规则来处理人际交互中什么是对人类的可接受对待,也许还需要新的标准来标明人类对什么机器负责,因为机器开始越来越独立地行动。我鼓励人们参与这些讨论,如有疑问,倾向于支持真实人类互动的立场。与许多商业人士似乎认为的相反——尽管我自己总体上是一个技术乐观主义者——我不觉得有任何必要急于采用 AI。