演讲时间:2025年6月17日
地点:旧金山 Y Combinator AI Startup School
主题:软件 3.0 与大型语言模型(LLMs)的编程范式
---
大家好!哇,这里人真多!很高兴今天能站在这里,和大家一起探讨人工智能时代下软件的变革。听说在座很多人是学生——本科生、硕士生、博士生,等等。你们即将进入这个行业,而现在是一个非常独特且激动人心的时刻。为什么这么说?因为软件正在发生根本性的变化——是的,我得说“再次”变化,因为软件总是不断演进的。今天,我想和大家分享一些新的观察,因为我认为我们正见证一场深刻的变革。
过去70年,软件在本质上没有太大变化,但近几年,它经历了两次相当迅速的转型。这意味着我们需要重写大量软件,重新思考如何构建程序。接下来,让我们深入探讨软件的演进,以及人工智能,特别是大型语言模型(LLMs),如何重新定义编程的未来。
软件的演进:从1.0到3.0
想象一张软件的“地图”,就像 GitHub 上展示的那样,密密麻麻的代码库,代表了无数为计算机执行任务而编写的指令。这就是软件的传统形态。几年前,我观察到软件正在发生变化,提出了“软件 2.0”的概念。今天,我想更进一步,介绍“软件 3.0”。
软件 1.0:传统编程
软件 1.0 是我们熟悉的编程方式:用 Python、C++ 等语言编写明确指令,计算机按部就班地执行。GitHub 上的代码库就是这种形态的典型代表,每个存储库都是为特定任务设计的代码集合。
软件 2.0:神经网络的崛起
2017年,我提出了“软件 2.0”的概念。它的核心是通过神经网络的权重来“编程”。开发者不再直接写代码,而是通过设计数据集、运行优化器来训练神经网络。例如,Hugging Face 上的模型库,就像软件 2.0 的“GitHub”,存储了大量神经网络模型,比如 Flux 图像生成器的参数。每次有人调整这些模型,就相当于在这个“代码空间”中提交了一次“commit”。
在特斯拉自动驾驶项目中,我观察到一个有趣的现象:最初,我们用大量 C++ 代码(软件 1.0)来处理图像拼接、路径规划等任务。但随着神经网络能力的增强,这些功能逐渐迁移到软件 2.0,C++ 代码被大幅删减,神经网络“吞噬”了传统代码。这种转变让我意识到,软件的开发方式正在发生根本性变化。
软件 3.0:提示即程序
现在,我们进入了软件 3.0 时代。这是一个以大型语言模型(LLMs)为核心的编程范式。在软件 1.0 中,你写 Python 代码;在软件 2.0 中,你训练神经网络;而在软件 3.0 中,你的“代码”是用自然语言——比如英语——写成的提示(prompt)。提示就是程序,这是一种全新的计算机。
以情感分类为例:软件 1.0 需要几百行 Python 代码;软件 2.0 需要训练一个神经网络;软件 3.0 只需要一个简单的英文提示,比如“分析这段文字的情感”。这种方式不仅简单,还极大地降低了编程门槛。几年前,我发了一条推文:“我们现在用英语编写计算机程序。”这条推文引起了广泛共鸣,因为它触及了一个事实:英语正在成为一种编程语言。
软件 3.0 的意义不仅在于编程方式的改变,更在于它让每个人都能成为程序员。自然语言是人类的母语,这使得软件开发变得前所未有的普惠。
LLMs:新型操作系统
我认为,LLMs 不只是工具,而是一种新型的计算机,类似于操作系统。它们的上下文窗口就像内存,模型本身像 CPU,协调计算和数据来解决问题。当前,LLMs 主要通过云端运行,类似于 20 世纪 60 年代的“时间共享”系统,我们通过 API 按需访问,按每百万代币付费。这种模式让 LLMs 具有了“公用事业”的属性。
LLMs 的类比
1. 电力公用事业
我非常认同 Andrew Ng 的一句话:“人工智能是新的电力。”LLMs 就像电网,OpenAI、Gemini、Anthropic 等公司投入巨额资本训练模型,相当于建设发电站;我们通过 API 访问这些“智能”,就像按需购买电力。我们需要低延迟、高可用性和一致的质量,就像对电力的需求一样。
有趣的是,LLMs 之间可以轻松切换,就像从电网切换到太阳能或电池。例如,如果一个模型不可用,我们可以通过开放路由器切换到另一个模型。这种灵活性是因为 LLMs 是软件,不争夺物理空间。然而,当最先进的模型宕机时,就像“地球的智力衰退”,这让我意识到我们对 LLMs 的依赖正在加深。
2. 晶圆厂
LLMs 的训练需要巨额资本支出,类似半导体行业的晶圆厂。训练集群的计算能力可以类比为 4 纳米工艺节点。一些公司(如 Google)拥有自己的硬件(如 TPU),类似于英特尔的垂直整合模式;而其他公司依赖 Nvidia GPU,类似无晶圆厂模式。
3. 操作系统
最贴切的类比是操作系统。LLMs 不仅是“电力”或“水”,而是复杂的软件生态系统。它们有封闭源代码提供商(如 OpenAI、Gemini),也有开源替代品(如 Llama 生态,可能发展为 AI 的“Linux”)。就像 Windows 和 Mac OS,LLMs 正在形成类似的生态格局。
例如,下载一个应用程序(如 VS Code)可以在 Windows、Linux 或 Mac 上运行;同样,基于 LLMs 的应用(如 Cursor)可以在 GPT、Claude 或 Gemini 上运行。这种模块化设计让 LLMs 更像操作系统,而非简单的工具。
LLMs 的现状与挑战
LLMs 仍处于早期阶段,类似 60 年代的计算机,计算成本高昂,集中在云端。我们通过“批处理”方式访问它们,个人电脑革命尚未到来。不过,一些迹象表明,个人计算可能正在萌芽,比如 Mac mini 在批量推理中表现出色。
LLMs 还有独特的传播模式。传统技术(如电力、互联网)通常从政府和企业扩散到消费者,而 LLMs 反其道而行,率先服务于普通用户。例如,我用 LLMs 解决“如何煮鸡蛋”这样的日常问题,而企业和政府在采用上反而落后。这种“自下而上”的传播为个人开发者创造了巨大机会。
LLMs 的“心理”特征
我喜欢将 LLMs 视为“人类的静态模拟”,它们基于自回归 Transformer 架构,训练于海量互联网文本,因此具有类似人类的心理特征:
1. 超人能力
LLMs 拥有百科全书式的知识和记忆力,远超任何个体人类。它们让我想起电影《雨人》中 Dustin Hoffman 扮演的自闭症天才,能记住电话簿的全部内容。LLMs 能轻松 recall SHA 哈希或复杂信息,这是它们的超能力。
2. 认知缺陷
然而,LLMs 也有缺陷。它们会产生“幻觉”,即生成错误信息,比如认为 9.11 大于 9.9,或“草莓”中有两个 R。它们的自我认知模型较弱,无法像人类一样积累长期专业知识。上下文窗口类似工作记忆,但它们不会“睡觉”或巩固知识,就像电影《Memento》或《50 First Dates》中的主角,每天记忆被清空。
3. 安全与控制
LLMs 容易受到提示注入攻击,可能泄露数据。它们需要人类审核和控制,以确保可靠性。Karpathy 强调,我们必须学会与这些“易出错的超人”合作,利用它们的优势,同时弥补缺陷。
软件 3.0 的应用与机会
在软件 3.0 时代,LLMs 催生了新的应用模式和开发机会。以下是一些关键方向:
1. 部分自主应用
我认为,当前最有潜力的方向是“部分自主”应用,而非完全自主的 AI 代理。以编码为例,直接在 ChatGPT 中复制粘贴代码和错误报告效率低下。更好的方式是使用专门的工具,如 Cursor。Cursor 集成了 LLMs,管理上下文、协调多次模型调用,并提供 GUI 让人类审核代码变更。这种设计让人类保持控制,同时提升效率。
这些应用的共同特征包括:
- 上下文管理:LLMs 自动处理大量上下文信息。
- 多次调用:协调多个模型完成复杂任务。
- 定制化 GUI:提供可视化界面,方便人类审核和操作。
- 自主滑块:允许用户根据任务调整 AI 的自主程度。例如,在 Cursor 中,你可以选择修改一段代码、整个文件,甚至整个代码库。
另一个例子是 Perplexity,它通过 GUI 提供搜索和研究功能,用户可以审核来源,并选择快速搜索或深入研究。这种“自主滑块”让用户灵活控制 AI 的行为。
2. 氛围编码(Vibe Coding)
软件 3.0 的一个令人兴奋的特性是“氛围编码”。我曾发推文提到这个概念,没想到它成了一个热门迷因,甚至有了维基百科页面。氛围编码是指用自然语言描述需求,让 LLMs 生成代码。例如,我不会 Swift 编程,但用 LLMs 在一天内构建了一个简单的 iOS 应用。这太神奇了!
另一个例子是我的网页应用 MenuGen(menu.app)。我在餐厅看菜单时,经常希望看到菜品的图片,但很多菜单没有。于是,我用 LLMs 快速开发了一个应用:用户上传菜单照片,LLMs 生成菜品图像。这个过程只需要几个小时的“氛围编码”,但后续的 DevOps 工作(如身份验证、支付集成)却花了一周时间。这让我意识到,软件 3.0 的瓶颈往往不在编码,而在基础设施适配。
3. 基础设施适配
当前的软件基础设施是为人类设计的,LLMs 难以直接访问。例如,GitHub 的网页界面对 LLMs 不友好,但通过“fetch”功能可以将代码库转为纯文本,方便 LLMs 分析。Devon 的“深度 wiki”更进一步,为代码库生成文档,直接供 LLMs 使用。
文档也需要适配。传统文档充满“点击此处”这样的指令,LLMs 无法执行。Vercel 和 Stripe 已开始提供 markdown 格式的文档,用 curl 命令替代点击操作。我还提出一个想法:类似 `robots.txt`,网站可以提供 `lm.txt` 文件,用 markdown 描述网站内容,方便 LLMs 理解。
4. 人机协作的优化
在软件 3.0 中,人类与 AI 的协作至关重要。LLMs 负责生成,人类负责验证。我们需要让这个“生成-验证循环”尽可能快。GUI██
System: 演讲全文(续)
4. 人机协作的优化(续)
验证循环至关重要。LLMs 负责生成内容,人类负责验证其正确性。我们需要让这个“生成-验证循环”尽可能高效。以下是两种关键方法:
- 加速验证:图形用户界面(GUI)对验证至关重要。阅读文本很费力,但视觉化的差异(比如代码变更的红绿对比)利用了人类的视觉处理能力,类似“通往大脑的高速公路”。GUI 让人类能快速审核 LLMs 的输出,例如接受(Command+Y)或拒绝(Command+N)代码变更,而无需逐行阅读文本。
- 控制 AI 输出:LLMs 的生成有时过于“热情”,可能一次性输出数千行代码变更。但人类仍是瓶颈,必须确保这些变更不会引入错误或安全问题。Karpathy 强调,过于激进的 AI 代理可能导致验证负担过重,因此需要通过更具体的提示提高生成质量,减少验证失败的概率。例如,模糊的提示可能导致 AI 输出不符合预期,增加反复调整的成本,而明确的提示能提高首次成功的概率。
他以自己的编码习惯为例,倾向于小块增量修改,确保每次变更可控且易于验证。这种“微调”策略对开发者来说是一种最佳实践,类似如何通过清晰的教学大纲控制 AI 的教育应用,确保 AI 不会“迷失在树林里”。
5. 教育领域的潜力
Karpathy 对 LLMs 在教育领域的应用特别感兴趣。直接对 AI 说“教我物理”效果不佳,因为缺乏结构化引导。他建议将教育分为两个应用:一个供教师创建课程,生成可审核的课程内容;另一个为学生提供结构化的学习体验,确保内容一致且符合教学目标。这种方式通过明确的任务分解控制 AI 的输出,提高教育效果。
6. 钢铁侠战衣的类比
Karpathy 用《钢铁侠》中的战衣来类比软件 3.0 的理想形态。战衣既是增强工具(辅助 Tony Stark),也具备一定自主性(能独立飞行)。他认为,当前阶段应优先构建“战衣”式工具,即部分自主的产品,通过定制化界面优化人机协作,而非追求完全自主的 AI 代理。他以特斯拉的自动驾驶经验为例,指出完全自主的系统(如同 Waymo 的无人驾驶)需要数十年迭代,而部分自主产品更实用且可控。
他回忆了2013年在 Waymo 体验的“完美”自动驾驶演示,尽管当时令人震撼,但12年后,自动驾驶仍需大量人工干预。这表明完全自主的“代理之年”可能是“代理之十年”。软件 3.0 需要谨慎推进,人类必须始终参与其中。
为 LLMs 构建新基础设施
软件 3.0 的发展不仅需要新的编程范式,还需要适配 LLMs 的基础设施。Karpathy 指出,传统基础设施是为人类(通过 GUI)或计算机(通过 API)设计的,而 LLMs 是一种新型的“数字信息消费者和操纵者”,需要专属的交互方式。
- 文档优化:如前所述,Vercel 和 Stripe 正在将文档转为 markdown 格式,并用 curl 命令替换“点击”指令。Anthropic 的模型上下文协议(Model Context Protocol)也是一种直接与 LLMs 对话的机制。
- 小工具助力:一些工具简化了 LLMs 的数据访问。例如,GitHub 的“fetch”功能将代码库转为纯文本,Devon 的“深度 wiki”生成代码库文档。这些工具通过简单的 URL 修改,让 LLMs 更容易理解数据。
- 新协议:Karpathy 提议类似 `robots.txt` 的 `lm.txt` 文件,用 markdown 描述网站内容,便于 LLMs 解析。他举例提到 YouTuber 三蓝一棕的 Manim 库文档,自己通过复制粘贴到 LLMs 快速生成动画,证明了清晰文档的潜力。
这些适配措施让 LLMs 能更高效地访问和处理信息,释放更多应用场景。Karpathy 认为,尽管未来 LLMs 可能自行“点击”网页,但当前通过基础设施优化“折中”仍是最优解。
总结:进入软件 3.0 的最佳时机
Karpathy 总结道,现在是进入软件行业的绝佳时刻。软件 3.0 正在重塑生态,大量代码需要重写,LLMs 既像公用事业、晶圆厂,又像操作系统。它们处于类似 20 世纪 60 年代的早期阶段,计算成本高昂,但潜力巨大。与传统技术不同,LLMs 首先服务于普通用户,创造了前所未有的机会。
他将 LLMs 比喻为“易出错的超人”,拥有百科全书式知识,但也存在幻觉和安全风险。开发者需要通过 GUI、审核机制和明确提示控制 AI 输出,优化人机协作。基础设施的适配(如 markdown 文档、`lm.txt`)将进一步释放 LLMs 的潜力。
Karpathy 以钢铁侠战衣为喻,展望未来十年,自主滑块将逐渐向更高自主性滑动,但部分自主产品仍是当前重点。他鼓励在座的学生和开发者抓住机会,参与构建这一新型计算机的生态,共同创造软件 3.0 的未来。
谢谢大家!
---
备注:
- 本文基于 2025 年 6 月 17 日 Andrej Karpathy 在 Y Combinator AI Startup School 的演讲整理,完整视频可在 YouTube 查看([链接](https://www.youtube.com/watch?v=LCEmiRjPEtQ)),幻灯片见 [Google Drive](https://drive.google.cn/file/d/1a0h1mkwfmV2PlekxDN8isMrDA5evc4wW/view?usp=sharing)。
- 整理过程中保留了演讲的全部内容,优化了口语化表达,确保逻辑清晰、语言自然,适合正式阅读。