
邮箱|damoxingjidongzu@pingwest.com
在旧金山Moscone中心举行的首届YC AI创业学校上,OpenAI创始科学家、特斯拉前AI总监Andrej Karpathy发表了最新演讲。
以下是Andrej Karpathy的演讲全文。
软件的三次“重生”革命,3.0正吞噬旧代码
我很高兴今天能在这里与大家讨论人工智能时代的软件。我了解到你们中很多人是本科生、硕士生、博士生等,即将进入行业。我认为现在进入行业是一个非常独特且有趣的时刻。从根本上说,原因在于软件正在再次变革。
我说“再次”是因为我之前做过这个演讲,但问题是软件一直在变化。因此我有很多素材可以讲新内容,我认为它正发生根本性的改变。粗略地说,软件在基础层面上已有70年没有太大变化。而在过去几年里,它大约发生了两次相当快速的变革。因此,现在有大量的工作要做,有大量的软件需要编写和重写。
那么,我们来看看软件的领域。如果我们把它想象成软件的地图,这里有一个很酷的工具叫“GitHub地图”。这就像是所有已编写软件的集合。它们是指示计算机在数字空间执行任务的指令。放大这里,你会看到各种不同的代码库,所有这些都是已编写的代码。


几年前,我观察到软件正在发生变化,出现了一种新的软件类型。我当时称之为软件2.0。其理念是:软件1.0是你为计算机编写的代码;软件2.0本质上是神经网络,特别是神经网络的权重。你不是直接编写这些代码,而是通过调整数据集,然后运行优化器来创建神经网络的参数。当时,神经网络更多被看作是一种不同的分类器,比如决策树之类。所以我认为这种框架描述更为贴切。

现在,我们在软件2.0领域有了类似GitHub的替代品。我认为Hugging Face基本上就是软件2.0的GitHub,还有Model Atlas。如果你好奇,可以可视化那里编写的所有代码。顺便说一句,那个巨大的圆圈,中间的点,是图像生成器Stable Diffusion的参数。因此,每当有人在Stable Diffusion模型上调整LoRA时,你本质上是在这个空间创建了一个Git提交,并创建了一种新的图像生成器。所以,软件1.0是编程计算机的代码;软件2.0是编程神经网络的权重。

这是AlexNet图像识别神经网络的一个例子。

到目前为止,我们熟悉的神经网络都像是功能固定的计算机,比如图像分类之类。我认为改变在于,神经网络通过大语言模型(LLM)变得可编程,这是一个根本性的变化。我认为这很独特。这是一种新型计算机,因此值得赋予它一个新的名称:软件3.0。本质上,你的提示词现在就是编程LLM的程序。值得注意的是,这些提示是用英语写的。所以这是一种非常有趣的编程语言。
用英语编程“人类灵魂”,提示词成了新代码
或许可以这样总结区别:以情感分类为例,你可以写一些Python代码来做情感分类,或者训练一个神经网络,或者提示一个大语言模型。这里有一个简短的提示,你可以想象通过改变它,以稍微不同的方式编程计算机。所以,我们有软件1.0、软件2.0,我认为我们现在看到很多GitHub代码不仅仅是代码,还夹杂着大量英语。

因此,我认为这是一种日益增长的新型代码类别。这不仅是一种新的编程范式,而且令人惊讶的是,它是用我们的母语英语编写的。几年前,这让我感到震惊,我在推特上发了这个想法,引起了很多人的关注。我目前置顶的推文就是:令人瞩目的是,我们现在在用英语编程计算机。

现在,当我在特斯拉时,我们正在开发自动驾驶系统,试图让汽车能够驾驶。我当时展示了一张幻灯片,想象一下汽车的输入在底部,它们经过一个软件栈来产生转向和加速信号。我观察到当时自动驾驶系统中有大量C++代码,这是软件1.0的代码。然后还有一些用于图像识别的神经网络。我观察到,随着时间的推移,随着我们改进自动驾驶系统,神经网络的能力和规模都在增长。此外,所有的C++代码被删除,很多最初用1.0编写的能力和功能都迁移到了2.0。例如,跨不同摄像头图像和跨时间的信息拼接工作,现在都由神经网络完成。

我们能够删除大量代码,贯穿整个自动驾驶软件栈。当时我觉得这非常了不起。我认为我们现在又看到了同样的情况,一种新型软件正在“吞噬”整个软件栈。
我们有三种完全不同的编程范式。我认为如果你要进入这个行业,熟练掌握这三种范式是个好主意,因为它们各有优缺点。你可能想用1.0、2.0或3.0来编程某些功能,或者训练神经网络,或者直接提示LLM。这应该是显式代码吗?等等。我们都必须做出这些决定,并可能在这些范式之间流畅地切换。所以现在我想深入探讨的是,在第一部分,谈谈LLM,如何思考这种新范式及其生态系统,它是什么样子。比如这台新计算机是什么样子?生态系统又是什么样子?

我们正处在LLM的“大型机时代”——云端分时系统,个人计算革命还未到来
很多年前,吴恩达的一句话让我印象深刻,我想他接下来会发言,他当时说“AI是新的电力”。

我确实认为这捕捉到了一些非常有趣的东西,因为现在的LLM确实具有公用事业的特质。像OpenAI、Gemini、Anthropic等LLM实验室投入资本开支来训练LLM,这类似于建设电网;然后有运营开支通过API向我们所有人提供智能服务。这是通过计量访问实现的,我们按百万token之类的方式付费。我们对这个API有很多类似公用事业的需求:低延迟、高可用性、一致的质量等等。

在电力系统中,你会有一个转换开关,可以在电网、太阳能、电池或发电机等电源之间切换。对于LLM,我们有像OpenRouter这样的工具,可以轻松地在不同类型的现有LLM之间切换。因为LLM是软件,它们不争夺物理空间。所以拥有6个电力提供商也没问题,你可以在它们之间切换,因为它们不是以这种直接方式竞争。我觉得非常有趣的是,就在前几天我们看到很多LLM宕机,人们被困住无法工作。当最先进的LLM宕机时,就像是世界范围内发生了智能“停电”。这就像电网电压不稳定时,整个星球都变得“更笨”了。
我们对这些模型的依赖已经非常显著,而且我认为将继续增长。但LLM不仅具有公用事业属性,也可以说它们具有一些晶圆厂的特性,原因在于构建LLM所需的资本开支确实相当巨大。这不仅仅是建造某个发电站那么简单,对吧?你需要投入巨额资金,而且我认为相关技术的“科技树”正在快速发展。所以我们处在一个拥有深度“科技树”的世界,研发的秘密正集中在LLM实验室内部。

但我认为这个类比有点模糊,因为如我所言,这是软件,而软件的可防御性较低,因为它非常容易修改。所以这只是个值得思考的有趣事情。
技术扩散逆向革命,煮鸡蛋比导弹更早用上AI
你可以做很多类比,比如4纳米工艺节点。也许它类似一个具有特定最大FLOPS的集群。你可以想想:当你使用Nvidia GPU,只做软件而不做硬件时,这有点像无晶圆厂模式。但如果你像谷歌那样,自己构建硬件并在TPU上训练,那就有点像英特尔模式,拥有自己的晶圆厂。所以我认为这里有一些说得通的类比。
但实际上,我认为最贴切的类比或许是,在我看来,LLM与操作系统有着非常强的类比性。因为它不仅仅是电力或水。它不是像水龙头流出的商品。它们现在是日益复杂的软件生态系统。因此它们不只是像电力那样的简单商品。有趣的是,生态系统正在以非常相似的方式形成。你有几个闭源提供商,如Windows或Mac OS,然后你有开源的替代品,如Linux;对于LLM,我认为LLaMA也是类似。我们有几家竞争的闭源提供商,然后LLaMA生态系统目前可能是最接近Linux成长路径的东西。再次强调,现在还为时过早,因为这些还只是简单的LLM,但我们开始看到它们将变得更加复杂。

这不仅仅是关于LLM本身,还涉及到所有使用的工具、多模态以及这一切如何运作。所以当我之前意识到这一点时,我试着把它画出来。在我看来,LLM就像一个新的操作系统。LLM是一种新型计算机,有点类似于CPU。上下文窗口有点像内存,然后LLM利用所有这些能力来协调内存和计算以解决问题。从这个角度看,它确实非常像一个操作系统。

再举几个类比。例如,如果你想下载一个应用,比如我去VS Code官网下载,你可以下载VS Code并在Windows、Linux或Mac上运行。同样地,你可以拿一个LLM应用,比如Cursor,然后在GPT、Claude或Gemini上运行它。选择哪个模型只是一个下拉菜单。所以这方面也很相似。

另一个让我印象深刻的类比是,我们正处于类似1960年代的时代,对于这种新型计算机来说,LLM的计算仍然非常昂贵。这迫使LLM集中在云端。我们都只是通过网络与其交互的瘦客户端。我们没有人能完全利用这些计算机。因此,采用分时共享是合理的,当他们在云端运行计算机时,我们都只是批次处理中的一个维度。

这非常符合那个时代计算机的样子。操作系统在云端。所有东西都是流式传输的,并且有批处理。个人计算革命尚未发生,因为这从经济上讲不通。但我认为有些人正在尝试。事实证明,例如Mac Minis非常适合运行某些LLM,因为如果你在做批量推理,这完全是内存密集型的。这实际上是可行的。
我认为这些可能是个人计算的一些早期迹象,但这还没有真正发生。还不清楚它会是什么样子。也许在座的各位中有人会发明它,或者定义它的工作原理和应该是什么样子。

LLM认知缺陷,能过目不忘却患短期失忆症
我想再提一个类比:每当我直接在文本中与ChatGPT或某个LLM对话时,我感觉就像通过终端与操作系统交谈一样,因为它就是文本,是直接访问操作系统的途径。我认为目前还没有真正发明出一种通用的图形用户界面(GUI)。例如,ChatGPT是否应该有一个不同于文字气泡的GUI?当然,我们稍后要讨论的一些应用程序确实有GUI,但目前还没有一种能通用所有任务的GUI。这说得通吗?

LLM在某些独特方面与操作系统和早期计算有所不同。我写过这一点让我感到这次非常不同的特性:LLM颠覆了技术扩散的方向。例如,电力、密码学、计算、飞行、互联网、GPS等许多变革性技术最初并不存在时,通常政府和公司是首批用户,因为技术新颖且昂贵,之后才扩散到消费者。但我觉得LLM的情况是颠倒的。

早期的计算机可能主要用于弹道学和军事用途,但LLM却关乎“如何煮鸡蛋”之类的事情。这确实是我的主要用途。这让我感到非常着迷:我们拥有一种神奇的新型计算机,它在帮我煮鸡蛋,而不是帮助政府做导弹计算之类的疯狂事。事实上,企业和政府在我们所有人之后才采用这些技术。这完全是颠倒的。这或许启示了我们如何使用这项技术,以及哪些会是首批应用。
总结一下到目前为止:使用“LLM实验室”和“LLM”是准确的描述,但LLM是复杂的操作系统。它们在计算领域相当于1960年代的水平,我们正在重走计算之路。它们目前通过分时共享提供,像公用事业一样分发。前所未有的是,它们并非掌握在少数政府和企业手中,而是在我们所有人手中,因为我们都有电脑,而这一切都只是软件。ChatGPT仿佛一夜之间就传给了数十亿人的电脑。这太疯狂了。这让我觉得不可思议,而现在正是我们进入行业并编程这些计算机的时机,这简直疯狂。我认为这非常了不起。
在编程LLM之前,我们需要花时间思考它们是什么。我特别喜欢讨论它们的“心理学”。我喜欢将LLM视为人类灵魂。它们是对人的随机模拟,而模拟器碰巧是一个自回归Transformer模型。Transformer是一种神经网络,它在tokens级别上工作,逐块处理,每个词块的计算量几乎相等。这个模拟器本质上涉及一些权重,我们将其拟合到互联网上的所有文本等数据上。最终就得到了这样一种模拟器。

因为它在人类数据上训练,它产生了这种类人的涌现心理学特性。首先你会注意到,LLM拥有百科全书式的知识和记忆,它们能记住的东西远多于任何个人,因为它们阅读了太多内容。

这让我想起电影《雨人》,我真心推荐大家观看。这是一部精彩的电影,我非常喜欢。达斯汀·霍夫曼饰演一位患有自闭症的学者症候群患者,拥有近乎完美的记忆力,他能像读电话簿一样记住所有姓名和电话号码。我觉得LLM非常相似。它们能非常容易地记住SHA哈希值和各种东西。因此它们在某些方面确实拥有超能力,但它们也存在一系列认知缺陷:它们经常产生幻觉、编造内容,并且缺乏足够好的自我认知内部模型(至少不够充分)。这方面已有改进,但尚未完美。
它们表现出不均衡的智能:在某些问题解决领域表现出超人能力,却会犯下人类基本不会犯的错误。比如坚持认为9.11大于9.9,或者“strawberry”中有两个“R”。这些都是著名的例子,但本质上存在一些你可能踩到的“坑”。我认为这也很独特。它们还患有顺行性遗忘症。

我想指出的是,如果你的组织来了一个新同事,随着时间的推移,他会了解你的组织,理解并获取大量组织背景信息。他回家睡觉,巩固知识,并逐渐发展出专业知识。但LLM天生不具备这种能力。我认为这在LLM研发中尚未真正解决。因此,上下文窗口实际上就像工作记忆。你必须直接“编程”这个工作记忆,因为它们不会默认地“变聪明”。我想很多人被类比误导了。
在大众文化中,我推荐大家看这两部电影:《记忆碎片》和 《第51州》。在这两部电影中,主角的“权重”是固定的,他们的“上下文窗口”每天早晨都会被清空。当这种情况发生时,去工作或建立关系就非常成问题。而LLM一直处于这种状态。
我想再指出一点与使用LLM相关的安全限制。例如,LLM相当轻信,它们容易受到提示注入风险的影响,可能会泄露你的数据等。还有很多其他安全相关的考量。总之,简而言之,你必须…
别造机器人,造战衣!让人类决定AI该飞多高
同时,要思考这个拥有超能力却又有一堆认知缺陷和问题的东西,而它们又极其有用。那么我们该如何为它们编程?如何绕过它们的缺陷并享受它们的超能力?所以我现在想谈谈机遇。我们如何使用这些模型?有哪些最大的机遇?

以下是我认为本次演讲有趣的一些内容,并非详尽列表。
我比较兴奋的第一件事是我称之为部分自主应用的东西。例如,以编码为例。你当然可以直接去ChatGPT,开始到处复制粘贴代码、复制粘贴错误报告等等,获取代码并到处粘贴。但你为什么要那样做?为什么要直接去操作系统?为此专门开发一个应用更有意义。我想你们很多人用Cursor,我也在用,Cursor就是你需要的那种工具。

你不想直接去ChatGPT,而我认为Cursor是一个很好的早期LLM应用范例,它具备一些我认为对所有LLM应用都有用的特性。特别是,你会注意到它有一个传统界面,允许像以前一样手动完成所有工作。但除此之外,它现在集成了LLM,允许我们处理更大的任务块。我认为LLM应用共享的一些有用特性值得指出:第一,LLM基本上做了大量的上下文管理。第二,它们协调对LLM的多次调用。以Cursor为例,其底层有为所有文件服务的嵌入模型,以及实际为代码应用差异的聊天模型。这一切都为你协调好了。
我认为还有一个非常重要但可能未被充分认识的点是特定于应用的GUI及其重要性,因为你不想仅通过文本直接与操作系统交谈。文本很难阅读、解析和理解,而且你也不希望在文本中直接执行某些操作。所以,直接看到红绿标识的代码变更差异,并且可以交互式地查看新增内容要好得多。只需按Command+Y接受或Command+N拒绝要容易得多。我不应该用文本输入吧?因此,GUI允许人类审计这些易出错系统的工作,并加快速度。稍后我会再回到这一点。

我想指出的最后一个特性是我称之为自主程度滑块的东西。例如,在Cursor中,你可以只做顶部补全,你基本掌控一切;你可以选择一段代码块并按Command+K仅修改该块;你可以按Command-L修改整个文件;或者你可以按Command-I,让它在整个代码中自由发挥。这就是那种完全自主的代理模式。因此,你掌控着这个自主程度滑块。根据手头任务的复杂性,你可以调整愿意为该任务放弃多少自主权。再展示一个相当成功的LLM应用Perplexity的例子,它也具备与我在Cursor中指出的非常相似的功能。
它打包了大量信息,协调多个LLM,并有一个GUI让你审计其部分工作。例如,它会引用来源,你可以查看它们,并且它也有一个自主程度滑块:你可以进行快速搜索,进行研究,或者进行深度研究并在10分钟后回来查看结果。这只是你赋予工具的不同程度的自主权。

所以我的问题是,我感觉很多软件将变得部分自主。我正在思考这会是什么样子,对于你们中维护产品和服务的人来说,你们将如何使自己的产品和服务部分自主?
LLM能看到人类能看到的一切吗?LLM能以人类的所有方式行动吗?人类能否监督并保持在这种活动的循环中?因为再次强调,这些系统还不完美且容易出错,那么在PS中的差异会是什么样子呢?
此外,当前很多传统软件,其所有的开关等东西都是为人类设计的。这一切都必须改变,变得对LLM可访问。所以我想强调一点,对于许多这类LLM应用,我认为这一点未得到足够重视:我们现在像是在与AI合作。通常它们负责生成,而我们人类负责验证。
让这个循环尽可能快地运行符合我们的利益,这样我们能完成大量工作。我认为有两种主要方式可以做到这一点:第一,你可以大大加快验证速度。我认为GUI对此极其重要,因为GUI利用了我们头脑中的计算机视觉“GPU”,阅读文本很费力且无趣,但看图很有趣,视觉信息就像是通往大脑的高速公路。因此我认为GUI在审计系统和视觉呈现方面非常有用。

第二点,我认为是我们必须约束AI。我认为很多人对AI代理过于热衷。对我来说,收到一个对我的仓库进行1000行代码的变更差异没什么用,因为我仍然是瓶颈,对吧?即使那1000行代码瞬间生成,我也必须确保它没有引入bug,做的是正确的事情,没有安全问题等等。因此,是的,基本上我们有必要让这两个流程运行得非常非常快。而且我们必须设法约束AI,因为它变得过于反应过度。有点像这样。
这就是我进行AI辅助编码时的感受。如果我只是在小步前进,一切都很好,但如果我真的想完成工作,让一个过度反应的代理做所有这些事就不太好了。但我想我和你们很多人一样,正在尝试在我的编码工作流中开发一些利用这些代理的方法,进行AI辅助编码和自己的工作。
我总是害怕收到太大的差异。我总是采用小的增量块。我想确保一切都好。我想让这个循环转得非常非常快。我会专注于具体事物的小块工作。因此我想你们很多人可能正在开发类似的使用LLM的方式。我也看到一些博客文章试图制定使用LLM的最佳实践。
生成-验证循环:如何让AI和人类“飙车”不翻车?
这是我最近读到的一篇,我觉得很不错。它讨论了一些技巧。其中一些涉及如何约束AI。例如,如果你在提示,如果你的提示很大,AI可能不会完全按你希望的去做,这样验证就会失败。你会要求别的东西。如果验证失败,你就得开始循环。所以,花点时间让你的提示更具体更有意义,这会提高验证成功的概率,让你继续前进。因此我认为我们很多人最终都会找到这类技术。
我认为在我自己的工作中也是如此。我目前感兴趣的是,既然我们拥有了AI和所有LLM,教育会变成什么样子。
我认为我大量思考都集中在如何约束AI上。我不认为直接去ChatGPT说“嘿,教我物理”就能奏效。我觉得这行不通,因为AI会迷失方向。所以对我来说,这实际上是两个独立的应用:一个是供教师创建课程的应用,另一个是获取课程并提供给学生的应用。在这两种情况下,我们现在都有一个可审计的中间产物——课程。
我们可以确保它是好的、一致的。AI被约束在特定的教学大纲和项目进度内。所以这是一种约束AI的方法,我认为成功概率要高得多,AI也不会迷失方向。
我想再提一个类比:我对部分自主并不陌生,我在特斯拉工作了五年左右,研究的就是这个。特斯拉的自动驾驶也是一个部分自主产品,并具有许多类似特性,例如:仪表盘上就有自动驾驶的GUI,它向我展示神经网络看到的内容。我们还有自主程度滑块,在我任职期间,我们为用户完成了越来越多自主任务。我想简要讲述一个故事:我第一次驾驶自动驾驶车辆是在2013年。
当时我有个朋友在Waymo工作,他邀请我在帕洛阿尔托(Palo Alto)附近试驾。我用当时的Google Glass拍了这张照片,你们很多人太年轻了可能都不知道那是什么。但没错,这在当时风靡一时。我们坐进车里,在帕洛阿尔托周围开了大约30分钟,走了高速公路、街道等。那次驾驶完美无缺,零干预。那是2013年,距今已有11年。这让我印象深刻,因为当时经历了那次完美的驾驶演示后,我觉得自动驾驶即将到来,因为它已经能工作了。
这很不可思议,但11年后的今天,我们仍在研究自动驾驶。我们仍在研究驾驶代理。即使到现在,我们还没有真正解决这个问题。你可能看到Waymo在路上跑,看起来是无人驾驶,但仍然有大量的远程操作,很多驾驶环节仍然有人参与。所以我们甚至还没有宣布成功,但我认为它最终肯定会成功,只是花了很长时间。因此,我认为软件确实很棘手,就像驾驶也很棘手一样。所以当我看到“2025年是智能体之年”这样的说法时,我感到非常担忧。
我有点觉得,这将是一个“智能体的十年”,而且会持续相当长一段时间。我们需要人类在循环中。我们需要谨慎行事。这是软件,我们得认真对待。
我经常思考的另一个类比是钢铁侠战衣。我一直很喜欢钢铁侠,我认为它在很多方面正确地描绘了技术及其发展。我喜欢钢铁侠战衣的地方在于,它既是增强设备,也是一个agent。在部分电影中,钢铁侠战衣具有高度自主性,可以飞来飞去寻找Tony。这就是自主程度滑块的体现:我们可以构建增强设备,也可以构建代理。我们两者都想要一些。但在现阶段,我认为在处理有价值的LLM时,更应该是构建钢铁侠的战衣,而不是钢铁侠机器人。
氛围编程狂欢,让编程变成“说人话”,全世界都是程序员
与其说是构建炫目的自主代理演示,不如说是构建部分自主产品。这些产品拥有定制的GUI和UI、UX,我们这样做的目的是让人类的生成-验证循环变得非常非常快,同时我们也未忽视这项工作原则上可以实现自动化的事实。你的产品中应该有一个自主程度滑块,你应该思考如何滑动这个滑块,让你的产品逐渐变得更加自主。我认为这类产品中存在大量机遇。

我想提一下,稍微切换一下话题,谈谈另一个我认为非常独特的维度。不仅存在一种允许自主性和软件的新型编程语言,而且如我所言,它是用英语编程的,这是一种自然界面。突然间,每个人都成了程序员,因为每个人都会说英语这样的自然语言。这让我感到极其乐观和非常有趣,也是完全前所未有的。过去,你需要花5到10年学习才能做某事(在软件领域)。现在情况不同了。我不知道是否有人听说过氛围编程(vibe oding)。
这条推文某种程度上引入了这个概念,但我听说它现在成了一个大型网络迷因。有趣的故事是:我在推特上活跃了大约15年,至今仍不清楚哪条推文会爆红,哪条会无人问津。我以为这条推文会是后者。不知这是否只是一时之念,但它成了全网迷因,我也说不清原因,但猜想它触动了大家心弦,为人们感受到却难以言表的东西命了名。现在甚至有了维基百科页面等等。这疯狂吗?

是的,这现在就像是一项重大贡献。Hugging Face的Tom Wolf分享了这个我超爱的美好视频。这些孩子在进行氛围编程。我觉得这视频充满正能量,太喜欢了。看到这样的视频,你怎么会对未来感到悲观?未来是美好的。实际上,我认为这终将成为软件开发的入门途径。我对这代人的未来并不悲观。是的,我太爱这个视频了。
因为太有趣,我也尝试了氛围编程。当你想要构建某个超定制化的、看似不存在的东西,又想在周六之类的时间随性发挥时,氛围编程太棒了。我构建了这个iOS应用,其实不会Swift编程,但很震惊自己能做出一个超级基础的应用,它确实简单。但我喜欢它只需一天就能完成,当天就能在手机上运行。这太神奇了,我无需花五天学习Swift就能入门。

我还通过氛围编程(vibe coded)构建了名为MenuGen的应用,你可以在menugen.do试用。我有个痛点:在餐厅看菜单时,很多菜品不认识,需要图片参考,但不存在这样的服务。于是我想:我要氛围编程。操作流程是:访问menugen.do,拍摄菜单照片,MenuGen生成图片,注册即赠5美元额度。

因此,这是我生活中的主要成本中心。目前这是个负收入应用,我在MenuGen上亏了很多钱。但MenuGen的奇妙之处在于:氛围编程部分其实很简单。真正的难点是落地实现:添加身份验证、支付功能、和域名配置、Vercel部署等。这些都不属于氛围编程,而是我在浏览器里手动点击操作。这是极度枯燥的苦差,又花了一周。有趣的是,我几小时就在笔记本上做出MenuGen demo,但实现真实部署却花了一周。
原因就是:这实在太烦人了。

为智能体重构世界,AI成了互联网的“新人类”
例如,为网页添加Google登录功能——我知道这很简单——但有大量类似Clerk库的集成指南。太疯狂了!它指示我:访问这个URL,点击下拉菜单,选择这个,跳转到那个页面,再点击那个… 就像在教我怎么操作。计算机在指挥我该做什么,那你来做啊!为什么是我做?搞什么鬼?我必须跟着指令做,太荒谬了。
因此,我演讲的最后部分聚焦于:我们能直接为智能体构建吗?我不想做这些工作,智能体能代劳吗?谢谢?
好的,简而言之:数字信息的新消费和操作者出现了。过去只有人类通过图形界面或计算机通过接口(APIs)操作,现在有了全新事物。智能体是计算机,却像人类灵魂。互联网存在人类灵魂,它们需要与软件基础设施交互——我们能为其构建吗?例如,你可以在域名放置robots.txt文件,指导网络爬虫在网站的行为规范。

同样,你可以创建llm.txt或lens.txt文件,用简单Markdown告诉LLMs该域名的主题。相比解析网页HTML(极易出错且困难),这对LLM更易读。直接与LLM沟通是值得的。
大量文档是为人类编写的,包含列表、粗体和图片等元素,但LLM无法直接理解。我看到Vercel、Stripe等服务商正将文档专门适配LLMs(Markdown格式),Markdown对LLMs极其友好。例如YouTube上制作精美动画的3Blue1Brown。
是的,我爱这个库。他开发了Manim,我也想自己做一个。面对冗长的Manim文档,我直接复制给LLM,描述需求后,它直接编写出我想要的动画。太神奇了!让文档对LLMs可读将释放巨大潜力,应大力推广。

我还想强调:你不能止步于此。仅转为Markdown格式不够(这很简单),还需修改内容。比如文档中的”点击”指令对LLM无效,Vercel正将所有”点击”替换为curl命令,让LLM代理可执行。这很有趣。当然还有Anthropic的模型卡片协议——直接与作为数字信息操作者的智能体沟通的协议。我对此非常看好。我也喜欢各种辅助工具,它们以LLM友好格式摄取数据。
例如访问nanoGPT的GitHub仓库时,无法直接询问LLM(这是人类界面)。但将网址改为GitIngested,它会将所有文件合并为文本并生成目录结构。这可直接粘贴到LLM。更强大的如Devon:不仅能处理原始文件,还会分析GitHub仓库并生成专属文档页,对LLM输入极有帮助。这类通过修改网址让LLM可访问的工具非常实用,应大量涌现。还需说明:未来LLMs定能直接浏览界面(甚至现在已能操作点击)。但主动优化信息访问仍很有价值,因为直接操作成本高且困难。大量软件(非活跃仓库/基础设施)不会被适配,我们需要工具支持。其他软件则应在中间点相向而行。总之,现在入行太棒了。

我们需要重写海量代码,专业人士将编写海量代码。LLMs像公用事业,也像晶圆厂,但尤其像操作系统——不过处于类似1960年代的早期阶段。它们是需学习协作的有缺陷的”人类灵魂”,为此需调整基础设施。构建LLM应用时,我描述了高效使用LLMs的方法和工具,如何快速迭代创建部分自主产品。当然还需为智能体编写大量代码。总之,如钢铁侠战衣的比喻:未来十年滑块将右移,我充满期待,迫不及待与各位共建未来。谢谢!
从惊艳demo到规模产品,技术落地需要耐心。但此刻的我们,正站在比1960年代计算机革命更汹涌的潮头——当英语成为新编程语言,当LLM成为新操作系统,每个敢于用语言重塑数字世界的人,都是新范式的创世者。
(文:硅星GenAI)