乐于分享
好东西不私藏

AI创业学校|Andrej Karpathy:AI时代软件巨变——从代码到提示词,人人都是程序员

AI创业学校|Andrej Karpathy:AI时代软件巨变——从代码到提示词,人人都是程序员

主讲:Andrej Karpathy (知名的计算机科学家、人工智能研究员,专注于深度学习与计算机视觉。他最为人熟知的身份包括:OpenAI创始成员,前特斯拉AI总监(领导Autopilot视觉团队),斯坦福博士,最会教 AI 的工程师。)

安德烈·卡帕西(Andrej Karpathy):大家好,哇,来了好多人啊。

我很兴奋今天能在这里,跟你们聊聊 AI 时代的软件。我听说你们当中很多人还是学生,本科生、硕士生、博士生都有,即将踏入这个行业。说真的,我认为眼下是进入这个行业的一个极其独特、非常有意思的时机。我认为,最根本的原因在于——软件(再一次)变了

我之所以说“再一次”,是因为我其实已经做过这个题目的演讲了。但问题是,软件一直在变。所以我实际上有大量的素材来制作新的演讲内容,而且我认为这次的变革相当根本。粗略来讲,过去 70 年里,软件在最基础的层面上没怎么变过。然而就在过去短短几年里,我认为它已经快速地变了两次。因此,眼下有海量的工作要做,海量的软件要去编写和重写。

咱们不妨先看一眼软件的全貌。如果把软件看作一张地图,这里有个很酷的工具叫“GitHub 地图”。这上面差不多是所有被写出来的软件——也就是给计算机下达指令、在数字世界里执行任务的代码。如果你放大来看,这些星星点点都是各种各样的代码仓库,是所有已经写好的代码。

几年前我就观察到,软件正在发生变化,一种全新的软件类型出现了。当时我把它叫做 软件 2.0。当时的想法是:软件 1.0 是你写给计算机的代码。而软件 2.0 呢,基本就是神经网络,更确切地说,是神经网络的权重。你不是在直接写这些代码,你更像是在调整数据集,然后运行一个优化器来生成这个神经网络的参数。我觉得当时大家把神经网络只看作一种不同的分类器,就跟决策树之类的差不多。但如今回过头看,我觉得当初“软件 2.0”这个提法,放在当下合适多了。

实际上,我们现在已经有了软件 2.0 世界里的“GitHub”。我觉得 Hugging Face 基本就相当于软件 2.0 的 GitHub。此外还有 Model Atlas,你可以在上面看到所有写在里面的“代码”。顺便说一句,如果你好奇那个巨大的圆点、中间那个点是什么——那是 Flux 图像生成模型的参数。每当有人基于 Flux 模型进行微调,你其实就是在那个空间里做了一次 Git 提交,创造了一个不同版本的图像生成器。

所以,总结一下就是:软件 1.0 是用来指挥计算机的程序代码;软件 2.0 是用来指挥神经网络的权重。比如 AlexNet 图像识别神经网络就是个例子。

然而,直到最近,我们所熟悉的神经网络都还像是一种“固定功能计算机”——输入图像,输出类别标签,诸如此类。但我认为,真正发生根本性改变的是:神经网络变得可编程了。这全是因为大语言模型的出现。

在我看来,这非常新颖、非常独特。它是一种全新的计算机。因此,我心里觉得,它值得拥有一个新的名号——软件 3.0。你的提示词,现在就是给这台大语言模型计算机下达指令的程序。而且值得注意的是,这些提示词是用英语(或者说自然语言)写的。这是一种非常有意思的编程语言。

或许可以这样概括它们之间的区别:假设你要做情感分类任务。你可以想象写一堆 Python 代码来实现它(软件 1.0);也可以训练一个神经网络来做(软件 2.0);或者,你直接给大语言模型一个提示词(软件 3.0)。这里有一小段提示词,你可以随意修改它,就像用稍微不同的方式给计算机编程一样。

所以我们有了软件 1.0、软件 2.0,而现在——你们或许也注意到了——GitHub 上的代码不再仅仅是代码了。代码中间夹杂着大量的英语(自然语言描述)。我认为,一种新的“代码”类别正在壮大。这不仅是一种新的编程范式,更让我觉得不可思议的是,它用的是我们的母语。几年前这件事让我脑洞大开时,我发了条推特,现在还置顶着。那句话就是:“令人称奇的是,现在我们正在用英语给计算机编程。

我在特斯拉工作那会儿,负责 Autopilot。当时我们想方设法让车自己开。我有张幻灯片展示了这种情形:车底部的传感器信号输入进来,穿过一整套软件栈,最终输出转向和加减速指令。我当时观察到,Autopilot 里充斥着大量的 C++ 代码,那是软件 1.0 的部分;里面也跑着一些做图像识别的神经网络。而随着 Autopilot 性能的提升,神经网络的体积和能力都在增长,同时,那些 C++ 代码却在被不断删减。原本用 1.0 方式实现的许多功能和能力,都被迁移到了 2.0 里。比如说,把不同摄像头、不同时刻的图像信息融合起来的工作,就交给了神经网络去做,于是我们就可以删掉一大票代码了。软件 2.0 的这套东西,简直是蚕食鲸吞般地吃掉了 Autopilot 原来的软件栈。我当时觉得这太震撼了。而现在,我认为同样的事情又在上演:一种全新的软件形态正在吞噬原有的软件栈。

我们现在面临着三种截然不同的编程范式。我认为,如果你们正准备踏入这个行业,精通这三种范式会是非常好的主意。因为它们各有各的优缺点。你可能得根据具体功能需求来做决定:是用 1.0 来写?还是 2.0 训个网络?或者用 3.0 给大模型发个提示词?是写成一段逻辑明确的代码?还是……我们所有人都得做这种取舍,甚至可能要在这几种范式之间灵活切换。

接下来,我想先花第一部分时间,聊聊大语言模型本身,以及该如何理解这个新范式、它的生态系统是怎样的。这台新的“计算机”长什么样?周围环境又是怎样的?

我被很多年前 Andrew (吴恩达)的一句话深深触动过。他当时说:“AI 是新时代的电力。”等一下 Andrew 应该会在我之后上台。我觉得这句话捕捉到了一些非常有趣的东西:大语言模型现在确实展现出了某种“公用事业”的属性。

你看,像 OpenAI、Gemini、Anthropic 这些大模型实验室,他们投入巨额资本支出来训练模型,这好比是建设电网。然后呢,他们又产生运营支出,通过 API 把这些“智能”按需输送给我们在座的每一个人。我们按百万 Token 付费,这是一种计量收费模式。我们对这种 API 有着非常类似公用事业的需求:低延迟、高可用性、稳定的服务质量。在电力行业,你会有个转换开关,可以在电网、太阳能、电池或发电机之间切换电源。在大模型领域,我们或许有 OpenRouter 这样的工具,可以轻松在不同的大模型之间切换。因为大模型是软件,它们不争夺物理空间。所以同时存在六家“电力供应商”也没问题,你可以在它们之间随意切换,对吧?它们的竞争关系没那么直接。

还有件事也挺有意思,就是前几天很多大模型都宕机了,人们一下子手足无措,没法工作了。当最顶尖的大模型宕机时,给我的感觉就像是全球范围的“智力欠压”。就像电网电压不稳时,灯泡会变暗一样。我们越依赖这些模型,地球似乎就变得越“笨”一点——这种依赖已经很夸张了,而且我认为还会继续加深。

但大模型并不仅仅具有公用事业的属性。我觉得说它们有些像“晶圆厂”也是合理的。因为建设大模型所需的资本支出实在太高了。这不像建个发电站那么简单,对吧?你得投天量的钱进去。而且这个领域的技术树还在飞速生长。于是我们看到,在这些大模型实验室内部,正在形成很深的技术壁垒和研发机密,越来越集中化。

不过,这个类比也有模糊之处。因为大模型毕竟是软件,而软件的可塑性太强了,防守起来没那么容易。所以,这事儿挺值得玩味的。你还可以做很多其他类比:比如把 4 纳米工艺节点类比为拥有特定最大浮点运算能力的计算集群;你用英伟达 GPU 做软件而不碰硬件,那就像是“无晶圆厂”模式;但如果你像 Google 那样既做硬件又用 TPU 训练,那就像英特尔那样拥有自己的晶圆厂。这些类比都有一定道理。

但要说最贴切的类比,我认为大语言模型跟操作系统非常非常像。它不只是水龙头里流出来的水或电这种简单商品。它们是日益复杂的软件生态系统。生态系统的格局也呈现出惊人的相似:你有一些闭源供应商,比如 Windows 或 macOS;然后你有一个开源的替代品,比如 Linux。大模型这边也一样:有几家闭源提供商在竞争,而 Llama 生态目前可能就是最接近 Linux 角色的存在——当然这还很早期,因为现在的大模型还比较简单。但我们已经看到,事情正在变复杂。不单单是大模型本身,还包括工具调用、多模态能力等等这些整体的运作方式。

我前阵子有了这个想法后,试着画了张草图,越发觉得大模型就是新型操作系统。你看,大模型本身就是新的“CPU”,上下文窗口就是它的“内存”。这个大模型在协调内存和计算资源来解决问题,利用周围所有的这些能力。从这个角度看,它完全就是个操作系统的模样。

再讲几个类比。比如你想下载一个应用,你到 VS Code 官网下载,可以在 Windows、Linux 或 Mac 上运行。同样,一个像 Cursor 这样的大模型应用,你可以选择跑在 GPT、Claude 或者 Gemini 上,下拉菜单选一下就行了。模式很类似。还有,我觉得我们现在的处境很像上世纪 60 年代。那时候大模型计算(好比当年的计算机)极其昂贵,迫使这些“计算机”必须集中在云端,我们全都只是通过网络与它们交互的“瘦客户端”。我们谁也做不到独占一台计算机全天候使用,所以“分时共享”模式很有意义——我们每个人都是云端运行模型时批处理作业的一个维度。当年的计算机就是这个样子:操作系统在云端,一切靠流式传输,批量处理是常态。个人计算革命还没发生,因为经济上不划算,没意义。

不过已经有人在尝试改变了。比如说,Mac Mini 被发现非常适合运行某些大模型,因为在批处理大小为 1 的推理场景下,整个过程是严重受限于内存带宽的,所以这招居然行得通。这些或许就是个人计算时代到来前的早期迹象吧。但它真的还没来,未来会是什么样还不清楚。说不定在座各位中就有人会去发明这个未来,定义它的形态和运作方式。

再说最后一个类比。每当我用纯文本跟 ChatGPT 或者别的模型对话时,我感觉自己就像是通过终端在跟操作系统说话。就只是文本,是对操作系统的直接访问。我觉得真正的图形用户界面还没被发明出来——我是说那种通用的、超越了对话泡泡形式的 GUI。当然,等下我们会提到一些应用已经有了 GUI,但那种适用于所有任务的通用 GUI 还没有出现。

不过,大模型也有一些和操作系统、和早期计算机截然不同的独特之处。我曾经写过其中一个让我觉得特别不一样的地方:大模型逆转了技术扩散的传统方向

通常来说,像电力、密码学、计算机、飞行、互联网、GPS 这些刚出现时的变革性技术,最先用的都是政府和大型企业,因为又新又贵,然后才慢慢普及到消费者手里。但大模型似乎反过来了。早期计算机是用来算弹道的、用于军事的;而大模型呢,一开始大家问得最多的是“怎么煮鸡蛋”——至少我自己经常这么干。真的很神奇,我们有了这么一台神奇的计算机,它却在帮我煮鸡蛋,而不是帮政府搞什么疯狂的弹道计算或特殊技术。实际上,企业和政府在这波技术采用上是落后于我们普通用户的。整个方向完全反了。我觉得这反过来也启发了我们该如何使用这项技术,以及第一批真正的应用可能会出现在哪里。

总结一下目前所说的:把大模型实验室叫做“LLM”没问题,但大模型本身是复杂的操作系统。我们正处在计算的 1960 年代,整个计算产业要重来一遍。它们目前通过分时共享的方式,像公用事业一样分发给大家。但全新且史无前例的一点是:它们不在少数政府或企业手中,而是在我们所有人手中。因为我们每个人都有台电脑,而软件不过是比特而已。ChatGPT 一夜之间就降维传输到了几十亿人的电脑里,这简直太疯狂了。而现在,轮到你们进入这个行业,来给这些新型计算机编程了。这事儿太酷了。

在我们动手给大模型编程之前,我们得先花点时间想明白它们到底是什么。我尤其喜欢聊聊它们的“心理学”。我倾向于把大模型看作是“人的灵魂”。它们是人的随机模拟器。这个模拟器的引擎恰好是个自回归 Transformer。Transformer 是种神经网络,它在 Token 层面上一个字一个字往外蹦,每个 Token 的计算量基本相当。这个模拟器,当然是用互联网上所有的文本数据拟合出来的,于是它就涌现出了某种类似人类的心理特质。

你首先会注意到,大模型拥有百科全书般的知识和记忆力。它们能记住的东西远超任何单个人类,因为它们读过的材料太多了。这让我想起电影《雨人》,强烈推荐大家去看。达斯汀·霍夫曼在里面演一个有超强记忆力的自闭症学者,能背下整本电话簿。大模型给我的感觉就有点像,它们能轻易记住 SHA 哈希值这类东西。所以在某些方面,它们确实有超能力。

但它们也有一堆“认知缺陷”。它们会幻觉,会胡编乱造,缺乏足够的自我认知——这方面虽有进步但还不完美。它们还表现出“锯齿状智能”:在某些问题领域超人一等,然后又在一些人类绝不会犯的低级错误上栽跟头。比如坚持认为 9.11 比 9.9 大,或者数不清“strawberry”里有几个 r。这些都是著名的例子,说明你很容易碰到它们的棱角。

它们还患有某种“顺行性遗忘症”。我是说,如果你招了个新同事,他会随着时间慢慢了解你的公司,吸收大量上下文信息,回家睡觉巩固记忆,逐渐成为专家。大模型原生没有这个能力。这是目前大模型研发中尚未真正解决的问题。上下文窗口更像是“工作记忆”,你得非常直接地去编排这份工作记忆,因为它们不会自己默认变聪明。我觉得很多人就是在这个类比上栽了跟头。

流行文化里,我推荐两部电影:《记忆碎片》和《初恋 50 次》。里面的主角都是“权重”固定不变,但“上下文窗口”每天早上都被清空。这导致他们没法正常工作和恋爱,而且天天如此。另外还有一点就是安全相关的局限:大模型很“好骗”,容易受提示词注入攻击,可能会泄露数据等等,还有很多其他安全考量。

所以,长话短说,你必须同时面对这个具有超能力但又带着一堆认知缺陷的东西。我们该如何既利用好它们的超能力,又绕过它们的缺陷去给它们“编程”呢?

接下来我想转向机遇部分:我们如何使用这些模型?最大的机会在哪里?这不是一份详尽的清单,只是我觉得比较有意思的几个点。

首先,我特别兴奋于部分自主应用。拿编程来举例。你当然可以直接打开 ChatGPT,然后开始复制粘贴代码、Bug 报告,再粘贴回来。为什么要这样呢?为什么要直接去跟“操作系统”打交道?有个专门的应用来处理这事合理多了。我想在座很多人都在用 Cursor,我也用。Cursor 才是你想要的东西,而不是直接裸连 ChatGPT。Cursor 是一个早期大模型应用的绝佳范例,它身上有很多我认为将贯穿所有大模型应用的特性。

你会发现,它有一个传统界面,允许人手动完成所有工作,跟以前一样。但除此之外,它整合了大模型,允许我们以更大的“步幅”前进。我觉得这些大模型应用共有的、值得点出的特性包括:

  1. 大模型负责了大量上下文管理工作

  2. 它们编排了对多个模型的多次调用。在 Cursor 内部,有为所有文件服务的嵌入模型、聊天模型、负责应用代码差异的模型,这一切都为你编排好了。

  3. 一个可能没被充分认识但极其重要的点是:应用专属的图形用户界面。你不想只用纯文本跟操作系统对话。文本读起来累,理解起来费劲,而且有些操作不适合用文本来表达。所以看到红色的删除和绿色的添加,以 diff 形式呈现,就清楚多了。按 Command + Y 接受,Command + N 拒绝,比打字快多了。图形界面让人类能审计这些易出错系统的工作,从而走得更快。我稍后还会回到这一点。

  4. 最后一个特性我称之为“自主性滑条”。在 Cursor 里,你可以只按 Tab 补全,大部分主动权在你手里;你可以选中一段代码按 Command + K 只改那一段;可以按 Command + L 改整个文件;或者按 Command + I,让它放飞自我,在整个代码仓库里想怎么改就怎么改,那就是完全的自主、智能体模式了。你掌控着自主性的尺度,根据任务的复杂度,决定愿意下放多少自主权给工具。

再看另一个成功的大模型应用:Perplexity。它也有和 Cursor 非常类似的特征。它打包了大量信息,编排了多个大模型,提供图形界面让你能审计它的工作(比如它会列出引用来源,你可以点开检查),也有自主性滑条(快速搜索 vs. 深入研究,后者可能十分钟后回来)。这些都是你让渡给工具的不同自主级别。

我的问题是:我觉得很多软件都将变得“部分自主”。 这到底会是什么样子?对在座很多维护产品和服务的人来说,你打算如何让你的产品变得部分自主?大模型能看到人类能看到的一切吗?大模型能像人类一样执行所有操作吗?人类能否监督并始终参与到这个循环中?因为这些系统还不可靠,还不完美。还有,像 Photoshop 里的“版本差异”会是什么样子?现在传统软件里的那些开关、按钮,都是给人设计的,将来这一切都得变,得让大模型也能访问和使用。

关于这类大模型应用,我想强调一个或许没有得到足够重视的点:我们正在与 AI 协作,通常是 AI 负责“生成”,我们人类负责“验证”。 让这个循环转得越快,我们完成的工作就越多。要做到这点,有两条主要途径:
第一,极大地加速验证环节。 图形界面对此至关重要。因为图形界面调动的是你大脑里的“视觉皮层 GPU”。阅读文字很费力、不有趣,但“看”东西就轻松多了,它像是通往大脑的高速公路。所以图形界面和其他可视化表达对于审计系统极其有用。
第二,必须把 AI “拴在皮带上”。 我觉得很多人对 AI 智能体兴奋过头了。对我来说,给我的代码仓库直接扔过来一万行代码的 diff 是没用的。我才是瓶颈啊!就算那一万行代码是瞬间生成的,我也得确保它没引入 Bug,做对了事,没有安全问题。所以,我们得想办法让这两者的流转极快,同时控制住 AI,因为它太容易“过度活跃”了。我的感觉就是这样:如果只是小打小闹的编码,AI 辅助很爽;但如果真想干成点事,有个过于亢奋的智能体在那儿瞎折腾可不好受。

抱歉这张幻灯片做得不太好。但我想说的是,我和你们很多人一样,也在摸索如何在我的编程工作流里用好这些智能体、做好 AI 辅助编程。我自己工作时,总是害怕拿到太大的 diff。我总是一小步一小步地增量前进,确保每一步都正确。我想让这个循环转得飞快,每次只处理单一、具体的任务。我想很多人也在摸索类似的与 LLM 协作的工作方式。我也读到过一些博客,讨论跟 LLM 协作的最佳实践。最近看了一篇挺不错,里面提到了一些技巧,很多都是关于如何“把 AI 拴在皮带上”。比如说,如果你的提示词模糊不清,AI 做的就可能不是你要的,验证就会失败,你就得再让它改。一旦验证失败,就开始原地打转。所以,多花点时间把提示词写得更具体明确,就能提高验证通过的概率,从而推动进度。我觉得我们都会逐渐摸索出类似的技巧。

我自己目前还特别感兴趣的是:有了 AI 之后,教育会变成什么样? 我花了很多心思在想,怎么在教育场景下“把 AI 拴在皮带上”。我不认为你直接跑去问 ChatGPT “教我物理”就能奏效。AI 会在知识的丛林里迷路。所以对我来说,这得拆成两个独立的应用:一个是给老师用的,用来创建课程;另一个是给学生用的,用来学习课程。这两个场景里,我们都产生了一个中间产物——课程。这个课程是可审计的,我们可以确保它质量好、前后一致。AI 被约束在了一个特定的大纲、一系列项目进展之内。这就是一种控制 AI 的方法,成功的可能性高得多,AI 也不会跑偏。

我再打个比方。我对“部分自主”这个概念并不陌生,我在特斯拉搞了五年 Autopilot。那也是部分自主产品,有着类似的特征:仪表盘上显示着 Autopilot 的图形界面,告诉我神经网络看到了什么;而且我们也有自主性滑条,我在那儿的任期里,系统能自主完成的任务越来越多。

顺便讲个小故事。我第一次乘坐自动驾驶汽车是 2013 年。有个朋友在 Waymo 工作,他带我在帕洛阿尔托兜了一圈。我当时用 Google Glass 拍了张照——在座可能太年轻都不知道那玩意儿了——当时可火了。我们上了车,在高速和街道上开了大概 30 分钟。全程完美,零干预。那可是 2013 年,12 年前了。那次完美的体验让我当时觉得,天呐,自动驾驶马上就要实现了,太震撼了。然而,12 年后的今天,我们还在搞自动驾驶。还在做驾驶智能体,而且还没真正解决这个问题。你可能看到 Waymo 的车在路上跑,里面没人,但背后仍有大量远程操作和人类介入。我们甚至还没宣布成功。虽然我相信成功是迟早的事,但这过程太漫长了。软件这事儿,和开车一样,极其棘手。

所以,当我看到有人说“2025 年是智能体之年”时,我非常担心。我倾向于认为,这是智能体的十年。这需要相当长的时间。我们需要人类在环路中,需要谨慎行事。这是软件,严肃点。

我经常用钢铁侠战甲来打比方。我一直很喜欢钢铁侠,觉得它在很多方面精准地预示了科技的发展。我爱这套战甲的地方在于,它既是增强——托尼·斯塔克可以驾驶它;它也可以是智能体——在某些电影里,战甲能自主飞行,找到托尼。这就是自主性滑条:我们可以做增强,也可以做智能体,两者我们都要。但就现阶段而言,考虑到大模型还容易出错,我要说,我们要造的少一些“钢铁侠机器人”,多一些“钢铁侠战甲”。少搞些炫酷的全自主智能体演示,多打造些部分自主的产品。这些产品带有定制化的图形界面和交互体验,目的是让人类的“生成-验证”循环转得飞快。但我们心里要清楚,原则上这些工作是有可能全自动化的,你的产品里应该有个“自主性滑条”,你应该思考如何随着时间推移,逐步滑动这个滑条,让产品越来越自主。我认为这类产品里蕴藏着大量机会。

现在我想换个角度,谈谈另一个我认为非常独特的维度。我们不仅有了一种能带来软件自主性的新编程语言,而且正如我所说,它是用英语(自然语言)编程的。这是一个非常自然的交互界面。突然之间,人人都是程序员了,因为人人都会说自然语言。这事儿极度令人看好,也非常有趣,并且史无前例。过去,你得花上五到十年学一门手艺,才能在软件行业里做点事。现在不用了。

不知道有没有人听过“氛围编程”?就是这条推特引出的话题。我听说现在这已经是个大梗了。说个趣事,我玩推特十五年了,至今分不清哪条会爆火,哪条会石沉大海。我以为这条会是后者,就是个洗澡时的随想。结果它火得一塌糊涂,我真的搞不懂。可能它正好戳中了大家都能感受到却说不出来的那个点吧。现在连维基百科词条都有了。感觉这成了我的一项“重大贡献”。

HuggingFace 的 Tom Wolf 分享了一个我超爱的视频。一群小孩在“氛围编程”。这视频太治愈了。看了这个视频,你怎么还能对未来的世代感到悲观呢?未来棒极了。我觉得这会成为软件开发的“入门毒品”。我对下一代并不悲观。我爱这个视频。

我自己也试了试“氛围编程”,因为太好玩了。当你想做个超级定制化、市面上又找不到的东西,而且刚好是个慵懒的周六,那“氛围编程”简直完美。我做了个 iOS 应用,我其实根本不会 Swift。但我震惊地发现,我居然能搞出个基础功能的 App。具体是啥就不说了,挺傻的。但重点是,我就花了一天功夫,当天晚些时候它就在我手机上跑起来了。我想,哇,这太神奇了。我不用先啃五天 Swift 语法才能上手。

我还“氛围编程”做了个应用叫 Menu Genen。已经上线了,你们可以访问 menu.app 试试。起因是我去餐厅,看着菜单,完全不知道那些菜名是啥玩意儿,我需要图片。市面上没这玩意儿。我就想,“行吧,我来氛围一个。” 这个应用就是你对着菜单拍张照,它就给你生成对应的菜品图片。注册就送 5 美元免费额度。所以,这玩意儿目前是我生活中一个巨大的“成本中心”,是个负收入应用。我已经在 Menu 上亏了一大笔钱了。

但对我来说,Menu Genen 最迷人的地方在于:“氛围编程”写代码这部分反而是最简单的。真正难的是,当你想把它做成一个真正的产品时:用户认证、支付系统、域名配置、Vercel 部署……这些太难了。而且这些都不是代码。这些 DevOps 的活儿,全是我坐在浏览器前面,点点这点点那,巨慢无比,又花了我一周时间。

这种感觉很奇妙:我在笔记本电脑上几小时就把 Menu Genen 的原型跑通了,但让它真正上线却花了一周。原因就是这事儿太烦人了。比如说,你要给网页加个 Google 登录——我知道这算小事了——Clerk 这个库给你的集成说明长得要命。它告诉我:“去这个 URL,点这个下拉菜单,选这个,再去那个,点那个。” 它是在指挥我怎么操作!一台计算机在告诉我该执行哪些物理动作。我就想说:你自己来啊!干嘛要我来? 我居然得一步步跟着它的指令做,简直离谱。

所以,我演讲的最后一部分就是想探讨:我们能不能直接为智能体构建基础设施? 我不想干这些活儿了。智能体能替我干了吗?谢谢。

好。大体上讲,我认为出现了一类新的数字信息消费者和操作者。过去只有两类:人类(通过图形界面)和计算机(通过 API)。现在有了全新的一类——智能体。它们是计算机,但又像人,对吧?它们是“人的灵魂”。互联网上现在游荡着“人的灵魂”,它们需要和我们的软件基础设施交互。我们能为它们而建吗? 这是一个全新的课题。

举个例子,你可以在域名下放一个 robots.txt 文件,来指示(或者说建议)网络爬虫该如何抓取你的网站。同理,你也可以放一个 llm.txt 文件,用简单的 Markdown 格式告诉大模型这个网站是干嘛的。大模型读这个非常轻松。如果让它直接去啃你网页的 HTML 源码,那错误率高得离谱,根本没法用。所以我们可以直接和大模型对话,这很值得。

现在大量的文档是写给看的。所以你会看到列表、粗体、图片。大模型没法直接高效理解这些。我发现有些服务已经开始把文档转向为大模型优化了。Vercel 和 Stripe 是这方面的先行者,还有几家我也看到了。他们提供 Markdown 格式的文档。Markdown 对大模型极其友好。这很棒。

再举个小例子。可能有人知道 3Blue1Brown 吧?他在 YouTube 上做精美的数学动画视频。我超爱他用那个库。他开源了 Manim 库,我想用它做个自己的动画。Manim 的文档非常详尽。但我不想读啊。于是我把整个文档全选复制,扔给大模型,然后描述了我想要的效果。结果它直接就能用! 大模型直接给我“氛围”出了一段完全符合我要求的动画代码。我当时就震惊了。

所以,如果我们能让文档对大模型友好,那将解锁海量的应用场景。这太棒了,应该大力推广。

另外还要指出一点:光把文档转成 Markdown 还不够,这只是容易的部分。我们还得改写文档内容。因为只要文档里出现“点击”这个词,就麻烦了。目前大模型没法原生执行“点击”这个动作。所以像 Vercel,他们在把文档里每个“点击”替换成对应的 curl 命令,这样大模型智能体就能替你执行了。我觉得这非常有意思。

当然,还有 Anthropic 推出的 Model Context Protocol。这也是一种直接与智能体——这类新的数字信息消费者和操作者——对话的协议。我非常看好这些想法。

我还特别喜欢一些零零散散的小工具,它们能把数据转换成对大模型极其友好的格式。比如,我打开我的 nanoGPT 代码仓库,这是给看的界面。如果我把 URL 里的 github 改成 getingest,它就会把所有文件拼成一个大文本,并附上目录结构,直接就能复制粘贴给大模型用。

更极端的例子是 Deep Wiki。它不只是把文件内容给你,Devon 这个智能体会先帮你分析整个仓库,然后生成一整套文档页面。你可以想象,这东西复制给大模型,帮助更大了。

我超爱这类只需改个 URL 就能让大模型看懂的小工具。这很好,而且我认为应该更多。

最后还想说一点。大模型将来——不,现在就已经——能够去“点击”屏幕上的东西了,这是绝对可能的。但我依然认为,在大模型这“半路”上接它们一把,让它们获取信息更容易些,是非常值得的。因为现在让它们去点击、去理解界面,成本还是高,难度也大。我确实认为,会有大量长尾软件——那些不是热门、活跃维护的代码库或数字基础设施——我们还需要靠这类工具来桥接。但对其他开发者来说,在中间某个点跟大模型“汇合”是非常值得的。所以两边我都看好。

总结一下:现在是进入这个行业的绝佳时机。 我们有海量的代码需要重写。大量的代码将由专业人士和普通编程者共同完成。这些大模型有点像公用事业,有点像晶圆厂,但尤其像操作系统。只是现在太早期了,就像上世纪 60 年代的操作系统。很多历史规律可以借鉴。这些大模型呢,就像是会犯错、有性情的“人类灵魂”,我们得学着跟它们共事。为了做好这一点,我们需要调整我们的基础设施去适应它。

在构建这类大模型应用时,我描述了一些高效工作的方法和工具,以及如何让“生成-验证”循环转得飞快,打造出部分自主的产品。同时,也需要为智能体本身编写大量代码。但无论如何,回到钢铁侠战甲的比喻,我认为在未来大约十年里,我们会看到自主性滑条从左向右滑动的全过程。我非常期待看到那会是什么样子,并且等不及要和你们一起建造这个未来了。

谢谢大家!