机器之心报道

机器之心编辑部

取名大王 Karpathy。


万万没想到,「幻觉」这个词,竟然是 AI 大牛 Andrej Karpathy 命名的。


最近,一位网友在「The Thinking Machine」(一本新书)里发现了这么一段描述:「Karpathy 承认他的(神经)网络有局限性:它只是在模仿言语,而不必真正理解其含义,当遇到它不理解的概念时,它就会『骄傲地』生成一些无意义的内容。Karpathy 将这类错误称为「幻觉」(hallucinations)。 」


资讯配图


这个帖子,Karpathy 本人也看见了,并留言说:「 我相信这是真的,我在我 2015 年写的《RNN 非凡的有效性》(Unreasonable Effectiveness of RNNs)这篇博文中就使用了这个词。而且,据我所能记起的,这个词本身也是我『幻觉』出来的。」


资讯配图


按照 Karpathy 的说法,我们找到了这篇博客,发现里面确实有包含「幻觉」的表述。当时,Karpathy 就已经指出,模型会「幻觉」出网址以及数学题方面的东西。但直到 2022 年 ChatGPT 横空出世,这个词才真正火起来,并作为一个热门领域被研究。


资讯配图


资讯配图


不过,要想知道在 2015 年之前,是否有人使用「hallucination」或「hallucinate」来描述类似现象,可能需要查阅很多文献。


这个有趣的溯源故事再一次证明了,Karpathy 是 AI 圈「实至名归」的取名大师,因为 2017 年的「软件 2.0」、2025 年的「软件 3.0」、「氛围式编程」、「细菌式编程」都是他提出来的,「上下文工程」虽然不是他提出来的,但也因为他的转发评论而出圈。可以说,在推广新概念这块,没有哪个 AI 大牛的影响力可以比肩 Karpathy。


在科研领域,不要小看「命名」的力量。正如 Gemini 所总结的,命名是「创造知识的奠基行为」,精确的命名是用于分类的「地址」、一个可供全球科学家共同对焦的「稳定靶标」。 


资讯配图


资讯配图


这十年来,Karpathy 命名的那些概念逐渐受到重视,这也是他对科学做出贡献的一种重要方式。


资讯配图


软件 2.0、软件 3.0


早在 2017 年, Karpathy 就提出了软件 2.0 一词。


资讯配图

来源:https://karpathy.medium.com/software-2-0-a64152b37c35


在这篇文章中,Karpathy 表示软件 1.0 时代的经典堆栈 —— 用 Python、C++ 等语言编写。它由程序员编写的显式指令组成。通过编写每一行代码,程序员可以在程序空间中识别出具有某些期望行为的特定点。


相比之下,软件 2.0 是用一种更加抽象、对人类不友好的语言编写的,比如神经网络的权重参数。人类不会直接编写这种代码,因为参数数量极其庞大(普通网络可能有数百万个权重),而直接手动调整权重几乎是不可能的。


为了更清晰地类比,文中提到,在软件 1.0 中,由人类编写的源代码(比如某些.cpp 文件)通过编译生成可执行文件,从而完成实际任务。而在软件 2.0 中,源代码通常包含两部分:1)定义预期行为的数据集,2)提供神经网络架构(但具体细节由权重参数填充)。训练神经网络的过程,本质上就是将数据集编译成最终可用的二进制文件 —— 即训练好的神经网络模型。


总结来说,软件 1.0 是经典代码时代,借助 Python 或 C++ 等,要求开发人员精确地理解语法和逻辑,以便逐步指导计算机。


软件 2.0 是神经网络时代,开发人员不再需要手动编写规则,而是通过输入数据来训练模型。这些代码成为模型的权重,通过优化而非明确的指令进行改进。


有意思的是,软件 3.0 也是 Karpathy 提出的新概念,即提示词时代。开发人员、甚至非开发人员,只需用简单的英语描述他们想要什么(例如,构建一个跟踪我日常任务的网站),AI 就会生成相应的代码。


软件 3.0 让会说话就能编程从梗变成现实,Prompt 成了源代码,LLM 成了运行时,而人类第一次用母语直接向计算机下达复杂指令。


资讯配图

来源:https://www.latent.space/p/s3


Karpathy 还强调了软件 3.0 的几个关键特点:


LLM 作为计算平台:将大语言模型比作电力这样的基础设施。训练一个大模型需要巨大的前期投入,就像建设一整套电网;而通过 API 使用它们,则像是按使用量付费。这一类比强调了大模型作为一种可扩展、可访问的计算资源的角色。


自主滑块:Karpathy 借鉴其在特斯拉关于自动驾驶方面的经验,提出了自主滑块的概念。这允许用户调整 AI 的控制程度 —— 从最低限度的辅助(例如,建议代码片段)到完全自主(例如,生成整个应用程序)。根据任务和用户偏好提供灵活性。


氛围编程


氛围编程(Vibe Coding),是 Karpathy 在今年 2 月造出的。


简单来说,氛围编程就是鼓励开发者忘掉代码,进入开发的氛围之中。更简单地讲,就是向 LLM 提出需求,然后「全部接受」即可。


资讯配图

来源:https://x.com/karpathy/status/1886192184808149383


正如 Karpathy 所言,在氛围编程中,你会完全沉浸在氛围里,顺着感觉走就行,甚至忘了自己其实是在写代码。这种方式之所以可能,是因为大语言模型现在已经强大到足够离谱。Karpathy 还表示,自己在氛围编程中,基本不用碰键盘,和大语言模型聊天,像个懒人一样提出请求,最后选择全部接受就可以了。


即使有出错的地方,直接把错误信息粘贴进去,也不用解释,模型就能自己改好。甚至 LLM 修不了的 bug,让模型乱改几下,问题也会消失。


这种方式已经不能算传统意义上的编程了,你只要看到东西,说出想法,运行程序,复制粘贴,然后程序大致就能跑起来。


这不禁让我们想起在程序员圈子里广为流传的硬核名言「Talk is cheap. Show me the code」。


资讯配图

最早可追溯到 2000 年 8 月,Linux 之父 Linus Torvalds 在 Linux-kernel 邮件列表里的一次回帖。当时有人长篇大论地描述某个设计思路,Linus 直接甩下这句话 Talk is cheap. Show me the code。


如今变成了「code is cheap, show me the talk(Prompt)」。


资讯配图


细菌式编程


「细菌式编程」,即像细菌一样编写代码。


资讯配图

来源:https://x.com/karpathy/status/1941616674094170287


这种编码方式受到细菌代码(基因组)的启发,具有以下特点:


  • 一是小而精简。要知道每行代码都有成本,就像细菌基因组中每个基因都消耗能量,因此保持代码精简能够让自己写的代码「 生存 」得更好。

  • 二是模块化,即代码应该被组织成可交换的操纵子群组。

  • 三是自包含,代码要能够轻松地通过「水平基因转移」进行复制粘贴。


这种编码风格的核心思想是:如果你的代码块足够小巧、模块化、自包含且易于复制粘贴,那么开源社区就能通过「水平基因转移」—— 也就是开发者之间的代码共享 —— 而蓬勃发展。


Karpathy 还提出了一个有趣的检验标准:当你写一个函数或类时,问问自己 —— 别人能否在不了解你其余代码、不需要导入任何新依赖的情况下,直接「拿走」你的代码并从中获益?你的代码能否成为 GitHub 上的热门代码片段?


这种「细菌式编码」让细菌能够在从极寒到炙热、从酸性到碱性的地球各个角落生存,甚至在太空真空中也能存活,并发展出令人惊叹的多样性。它非常擅长快速原型开发,但也有局限性 —— 无法构建复杂的生命体。


相比之下,真核生物的基因组就像一个更大、更复杂、更有组织的单体仓库(monorepo)。虽然创新性较低,但却是构建复杂生命、整个器官以及协调它们活动所必需的。


Karpathy 的建议是:利用智能设计的优势,两者兼顾。必要时构建真核生物式的单体仓库骨架,但要最大化细菌式 DNA 的使用。这样既能保持代码的灵活性和可复用性,又能支撑起复杂系统的构建需求。


一次转发,带火上下文工程


以前 AI 圈流行提示词工程,上下文工程却很少有人讨论。


其实这一术语并不新鲜,近两年很多智能体构建者一直在关注这个事情,只是一直不温不火的。经过 Karpathy 转发并点评后,迅速火出圈,现在相关帖子浏览量高达 2.2M。


资讯配图

图源:https://x.com/karpathy/status/1937902205765607626


很多人搞不懂提示工程和上下文工程的区别,之前,LangChain 发表的一篇博客提到了两者的关系:可以将提示工程视为上下文工程的一个子集。


在传统的提示工程中,开发者通常侧重于精心设计提示语,以期得到更好的答案。然而,随着应用复杂度不断增加,单纯依赖提示已无法满足现代智能体的需求。如今,提供完整且结构化的上下文信息比任何巧妙的提示词更为重要。上下文工程就是为此诞生的。


资讯配图


感兴趣的读者可以参考《提示词工程、RAG 之后,LangChain:上下文工程开始火了!》《登上热搜!Prompt 不再是 AI 重点,新热点是 Context Engineering》。


除了这些已经有名字的概念,其实 Karpathy 平时的一些推文也让一些问题得到业内关注,比如他在一个帖子中指出,未来大家会把 99.9% 的内容都交给 AI 去读,这是一种不可逆的趋势,所以从现在开始大家就应该注重文档的「可读性」,转变写文档的方式,比如 Markdown 可能就是一种理想的格式。这种从「为人类优化」转向「为 AI 优化」的提议得到了很多人的赞同。


你还记得 Karpathy 提出或带火的哪个概念?欢迎在评论区留言指出。


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:liyazhou@jiqizhixin.com