尊敬的KV,
在听人们谈论人工智能和副驾驶一年多之后,我终于在一个小型项目中尝试了一个。我甚至付费使用了它,认为付费版本会优于免费版本。但是,我发现的情况让我感到困惑,我想知道您是否也尝试过这些工具。从您之前的文章来看,似乎您可能并不专注于我们行业中的最新工具。所以,也许您只是继续使用 vim 和 Makefiles。您尝试过这些东西吗?对于我们这些正在关注它们的人,您有什么智慧之言吗?
副驾驶员
尊敬的副驾驶员,
KV的读者可能会震惊地得知我有点工具迷,事实上,每当出现一些新的工具,声称可以帮助我更好地创建或理解软件时,我都愿意尝试。这不仅适用于工具,也适用于技术。我甚至是一名认证的Scrum Master,但这又是另一个故事了。
在我的职业生涯中,我尝试过许多编辑器、几个IDE、各种调试器以及各种新的和有趣的工具,并且还在继续这样做。和您一样,我一直没有尝试基于LLM的工具,甚至现在,每当我在谈话中被迫将这些工具称为人工智能时,我仍然会感到反胃。吐出一些过得去的营销废话与智能之间的共同点,就像美国总统选举一样。事实上,这两者显然是密切相关的。
在尝试使用这些工具之前,您需要了解它们的作用,至少在表面上是这样,因为即使是它们的创造者也承认,他们不了解这些工具是如何在从当前互联网上抓取的所有统计数据和文本的深处工作的。LLM的诀窍是使用一点随机性和大量的文本来猜测句子中的下一个单词。这似乎有点微不足道,而且当然不是任何理解这个词的人可能会使用的智能的衡量标准。但这确实是一个聪明的技巧,并且确实有一些应用。
例如,如果您正在键入遗书(并且文本语料库包含数千份遗书),则代码很可能能够猜出您可能使用的下一个单词,因为成千上万在您之前来过又离开的人也键入了它。
代码在某种程度上比散文更受约束,因为代码必须通过一个具有严格语法的过程来运行——这种语法比任何人类语言都严格得多。人们认为,这种狭隘性有助于指导代码的创建过程,模板化被认为是这些技术的早期用例。谁不想在这样的苦差事中获得帮助呢?许多编写的代码,特别是用于可视化网络的代码,只是其他页面的复制粘贴版本,对于其他编码领域来说,情况也可能如此。
虽然正确的代码语法对于提高生产力很有帮助(想想那些在您通过编译之前就突出显示语法错误的IDE),但这与代码的语义知识相差甚远。请注意,正是语义知识使您能够创建正确的程序,这里的正确性是指代码实际上实现了开发人员最初的意图。KV可以展示许多语法上正确但语义上不正确的程序示例。事实上,这是已部署软件中几乎所有安全问题的根源。语义仍然远远超出当前人工智能潮流的能力范围,现在有许多开发人员因此拒绝使用这些技术来完成自己的工作就证明了这一点。
猜测一群白痴使用的下一个词(这正是副驾驶员实际所做的)会导致令人难以置信的深刻文本,例如
server.mtx.Lock() // 锁定缓存
是的,谢谢,那是互斥锁的Lock方法。但是,我们为什么要锁定缓存?我们稍后会怎么处理它?这类似于这样的注释:
i++ // 将 i 增加 1
唯一让人印象深刻的原因是,它以一种更易于那些希望将机器拟人化的人接受的形式编写,这是Dijkstra在20世纪60年代警告过的事情。
我们新的机器人大师的另一个经典之作
// Get 方法检索给定键的值(如果存在且未过期)。
// 参数
// - ctx:请求的上下文。
// - request:包含要检索的键。
哇!真的吗?如果粗略地看一眼代码还不足以告诉我这一点,那我根本就不应该在这里。
最后,我最喜欢的副驾驶程序的功能是公然的剽窃。我们已经知道,这些东西打出的文本和代码来自扫描GitHub上数十亿行的文本和源代码,但它们甚至可以以意想不到的方式提供帮助。一位正在上分布式系统夜校的同事向我展示了当他的教授(愚蠢地)建议学生“使用新工具”以成为更现代的开发人员时会发生什么。当他接受越来越多的副驾驶的建议时,他注意到一个模式:就好像有人在从其他地方的另一个文件中输入内容。编码风格本身就是线索之一,但最终副驾驶完全暴露了自己,说:“你知道在另一个仓库中有一个与此类似的文件吗?”在某种程度上,这是有道理的。但作为家庭作业的一部分,这真是太搞笑了。
我在我的项目中使用的这些工具越多,我就越意识到,副驾驶只不过是醉酒的剽窃者,他们坐在你和你的代码后面,嘴里呼出热气腾腾的杜松子酒味,在你耳边低语着毫无意义的语义。它们不是你工作的福音,它们是橡胶拐杖——当你在最需要它的时候,它会残酷地让你失望。现在,我们只需要完成真正的工作,同时等待这最新的炒作周期走向理所应当的、火热的死亡。
KV
George V. Neville-Neil 为乐趣和利润从事网络和操作系统代码的工作。他还教授各种与编程相关的科目。他的兴趣领域是计算机安全、操作系统、网络、时间协议以及大型代码库的维护和管理。他是The Kollected Kode Vicious的作者,并与Marshall Kirk McKusick和Robert N. M. Watson合著了The Design and Implementation of the FreeBSD Operating System。近20年来,他一直是专栏作家,更广为人知的名字是Kode Vicious。自2014年以来,他一直是剑桥大学的工业访问学者,参与了多个与计算机安全相关的项目。他获得了马萨诸塞州波士顿东北大学的计算机科学学士学位,并且是、Usenix协会和IEEE的成员。他的软件不仅在地球上运行,而且还作为VxWorks的一部分部署在NASA的火星任务中。他是一位狂热的自行车爱好者和旅行家,目前居住在纽约市。
版权 © 2024 归所有者/作者所有。出版权已授权给。
最初发表于Queue vol. 22, no. 6—
在数字图书馆中评论本文
Mark Russinovich, Ahmed Salem, Santiago Zanella-Béguelin, Yonatan Zunger - 智能的代价
LLM 容易产生幻觉、提示注入和越狱,这对它们的广泛采用和负责任的使用构成了重大但可以克服的挑战。我们认为这些问题是固有的,当然在当前这一代模型中,并且可能在 LLM 本身中也是如此,因此我们的方法永远不能基于消除它们;相反,我们应该应用“纵深防御”策略来缓解它们,并且在构建和使用这些系统时,要假设它们有时会在这些方向上失败。
Sonja Johnson-Yu, Sanket Shah - 你对人工智能一窍不通
长期以来,很难确定人工智能到底是什么。几年前,这样的讨论会演变成长达数小时的会议,勾勒出维恩图,并试图描绘出人工智能的不同子领域。快进到2024年,我们现在都知道人工智能到底是什么了。人工智能 = ChatGPT。或者不是。
Jim Waldo, Soline Boussard - GPT和幻觉
这项实验的结果支持了这样的假设:基于 LLM 的 GPT 在更受欢迎且已达成普遍共识的提示上表现良好,但在有争议的主题或数据有限的主题上表现挣扎。应用程序响应的可变性强调了模型依赖于其训练数据的数量和质量,这与依赖于多样化和可信贡献的众包系统类似。因此,虽然 GPT 可以作为许多日常任务的有用工具,但应谨慎解读它们对晦涩和两极分化主题的参与。
Erik Meijer - 虚拟的诡计:将大型语言模型用作神经计算机
我们探讨了大型语言模型 (LLM) 如何不仅可以充当数据库,还可以充当动态的、最终用户可编程的神经计算机。这种神经计算机的原生编程语言是一种受逻辑编程启发的声明性语言,它将思维链推理形式化和外部化,因为它可能发生在大型语言模型内部。