We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Andrej Karpathy: Software Is Changing (Again)

Andrej Karpathy: Software Is Changing (Again)

2025/6/19
logo of podcast Y Combinator Startup Podcast

Y Combinator Startup Podcast

AI Deep Dive AI Chapters Transcript
People
A
Andrej Karpathy
Topics
Andrej Karpathy: 我认为现在是进入行业的绝佳时机,因为软件正在发生根本性的变化。软件已经经历了两次快速的根本性变化,现在有大量的工作需要完成,大量的软件需要编写和重写。软件1.0是你为计算机编写的代码,而软件2.0基本上是神经网络,特别是神经网络的权重。神经网络已经可以通过大型语言模型进行编程,这是一种全新的计算机。提示词现在是编程LLM的程序,这是一种用英语编写的非常有趣的编程语言,因此我将其视为一种新的计算机,并将其命名为软件3.0。我们现在用英语编程计算机。我们有三种完全不同的编程范式,精通所有这些范式是个好主意。我们必须在 1.0、2.0 或 3.0 中对某些功能进行编程,并在这些范式之间流畅地转换。

Deep Dive

Shownotes Transcript

欢迎特斯拉前人工智能总监Andrej Karpathy!哇,这里好多人。大家好。好的。是的,我很高兴今天来到这里,和大家谈谈人工智能时代的软件,我听说你们很多人都是学生,本科生、硕士生、博士生等等,你们即将进入这个行业,我认为现在进入这个行业实际上是一个极其独特且非常有趣的时机。

我认为根本原因在于软件再次发生了变化。

我说“再次”,是因为我已经做过这个演讲了,但问题是软件一直在变化,所以我实际上有很多素材可以制作新的演讲。我认为它正在发生相当根本的变化。我认为,粗略地说,软件在70年里没有在如此根本的层面上发生过太大的变化,然后在过去几年中,它大约以相当快的速度变化了两次。因此,有大量的工作要做,有大量的软件需要编写和重写。

让我们来看看软件的领域。如果我们把它看作软件的地图,这是一个非常酷的工具,叫做GitHub地图。这有点像所有编写的软件。这些是用于在数字空间中执行任务的计算机指令。所以如果你在这里放大,这些都是不同类型的存储库,这就是所有编写的代码。几年前,我观察到软件正在发生变化,并且出现了一种新型的软件,当时我称之为2.0版软件。

这里的想法是,1.0版软件是您为计算机编写的代码。2.0版软件基本上是神经网络,特别是神经网络的权重。您不是直接编写此代码。您更像是调整数据集,然后运行优化器来创建此神经网络的参数。我认为当时,神经网络被认为只是一种不同类型的分类器,就像决策树或类似的东西。所以我认为这有点像……

我认为这种框架更合适。现在,我们实际上拥有了2.0版软件领域中GitHub的等效物。我认为Hugging Face基本上相当于2.0版软件中的GitHub。还有Model Atlas,您可以可视化那里编写的所有代码。顺便说一句,如果您好奇的话,中间的巨大圆圈……

中间的点,是图像生成器Flux的参数。因此,每当有人在Flux模型之上调整LoRa时,您基本上都会在此空间中创建一个Git提交,并创建一个不同类型的图像生成器。所以基本上我们有1.0版软件是编程计算机的计算机代码

2.0版软件是编程神经网络的权重。这是一个AlexNet图像识别神经网络的示例。到目前为止,我们熟悉的所有神经网络直到最近都像是固定功能计算机。图像到类别或类似的东西。我认为发生了变化,我认为这是一个相当根本的变化,那就是神经网络可以通过大型语言模型进行编程。

所以我认为这是相当新的、独特的,它是一种新型的计算机,所以在我的脑海中,值得给它一个新的名称——3.0版软件,基本上您的提示现在是编程LLM的程序。值得注意的是,这些提示是用英语编写的,所以这是一种非常有趣的编程语言。

所以也许总结一下区别,例如,如果您正在进行情感分类,您可以想象编写一定数量的Python来进行情感分类,或者您可以训练神经网络,或者您可以提示大型语言模型。在这里,这是一个少样本提示,您可以想象更改它并以稍微不同的方式编程计算机。所以基本上我们有1.0版软件、2.0版软件,我认为我们看到了……

也许您已经看到很多GitHub代码不仅仅是代码了,还有一些英语与代码交织在一起。所以我认为,正在出现一种新型代码的类别。它不仅是一种新的编程范式,而且对我来说,它也以我们的母语英语出现,这也很了不起。所以当几年前(我想现在是几年前)这件事让我大吃一惊时,我在推特上发布了这条消息,我认为它引起了很多人的注意,这是我目前固定在顶部的推文,那就是我们现在正用英语编程计算机,这真是太了不起了。

在我特斯拉工作期间,我们正在研究自动驾驶系统,我们试图让汽车行驶。我当时展示了这张幻灯片,您可以想象汽车的输入在底部,它们通过软件堆栈来产生转向和加速。我当时观察到自动驾驶系统中存在大量的C++代码,这是1.0版软件代码,然后其中有一些神经网络进行图像识别。

我观察到,随着时间的推移,当我们改进自动驾驶系统时,神经网络的功能和规模都在增长,此外,所有C++代码都被删除了,并且……

许多最初用1.0版编写的功能和功能都被迁移到2.0版。例如,许多跨不同摄像机和跨时间的图像信息拼接工作都是由神经网络完成的,我们能够删除大量代码。所以

2.0版软件堆栈从字面上吞噬了自动驾驶系统的软件堆栈。当时我认为这非常了不起。我认为我们再次看到了同样的情况,基本上我们有一种新型的软件,它正在吞噬堆栈。我们有三种完全不同的编程范式。我认为如果您要进入这个行业,精通所有这些范式是一个非常好的主意。

因为它们都有轻微的优缺点,您可能希望用1.0版、2.0版或3.0版编程某些功能。您要训练自己的模型吗?您要只提示LLM吗?这应该是一段明确的代码吗?等等?所以我们都必须做出这些决定,并实际上可能在这些范式之间灵活地转换。所以我现在想谈的是,首先我想在第一部分谈谈LLM以及如何看待这种新的范式和生态系统以及它是什么样的。

例如,这是什么新计算机?它是什么样的?生态系统是什么样的?几年前,我被Andrew Ng的这句话深深打动了,我想。我认为Andrew将在我的演讲之后发言。但他当时说,人工智能是新的电力。我认为它捕捉到了一些非常有趣的东西,因为LLM现在确实感觉具有实用程序的特性。所以……

像OpenAI、Gemini、Anthropic等LLM实验室,它们花费资本支出(CAPEX)来训练LLM,这相当于建设电网,然后通过API向我们所有人提供这种智能的运营支出(OPEX)。这是通过计量访问完成的,我们按百万个token付费或类似的东西,我们对这个API有很多类似于实用程序的需求。我们要求低延迟、高正常运行时间、一致的质量等等。

在电力方面,您会有一个转移开关,因此您可以将电力来源从电网转移到太阳能、电池或发电机。在LLM中,我们可能有开放路由器,并可以轻松地在不同类型的LLM之间切换。因为LLM是软件,它们不会争夺物理空间。所以拥有六个电力供应商是可以的,您可以在这六个供应商之间切换,对吧?因为它们不会以如此直接的方式竞争。

我认为还有一点令人着迷的是,我们实际上在过去几天看到了这一点,许多LLM都宕机了,人们有点像被困住了,无法工作。我认为对我来说,当最先进的LLM宕机时,这实际上有点像世界上的智能停电。这有点像电网中的电压不可靠,地球变得越笨,我们对这些模型的依赖程度就越高,这已经非常剧烈了,我认为还会继续增长。

但是LLM不仅具有实用程序的特性。我认为公平地说,它们也具有一些晶圆厂的特性。原因是

构建LLM所需的资本支出实际上相当大。这不仅仅是建造一些发电站之类的东西,对吧?您正在投资巨额资金,我认为这项技术的技术树正在迅速发展。所以我们生活在一个拥有某种深度技术树、研发、秘密的世界中,这些秘密正在LLM实验室内部集中。

但我认为这种类比也有些模糊,因为正如我提到的,这是软件,软件有点难以防御,因为它非常易变。所以我认为这只是需要思考的一个有趣的事情。

您可以进行许多类比。例如,4纳米工艺节点可能类似于具有某些最大交换空间的集群。您可以考虑一下,当您使用NVIDIA GPU并且只做软件而不做硬件时,这有点像无晶圆厂模式。但是,如果您实际上也在构建自己的硬件,并且如果您是谷歌,则在TPU上进行训练,这有点像英特尔模式,您拥有自己的晶圆厂。所以我认为这里有一些类比是说得通的。

但实际上,我认为最合理的类比也许是,在我看来,LLM与操作系统的类比非常强烈,因为它不仅仅是电力或水。它不是像商品一样从水龙头流出的东西。这些现在正变得越来越复杂的软件生态系统。

所以它们不仅仅是像电力一样的简单商品。对我来说,有趣的是,生态系统的形成方式非常相似,您有一些闭源提供商,如Windows或Mac OS,然后您有一个开源替代方案,如Linux。我认为对于LLM也是如此,我们有一些竞争的闭源提供商,然后也许Llama生态系统目前可能非常接近可能发展成类似于Linux的东西。

再说一次,我认为现在还为时过早,因为这些只是简单的LLM,但我们开始看到这些将会变得更加复杂。这不仅仅是关于LLM本身,还关于所有工具的使用和多模态以及所有这些是如何工作的。所以当我一段时间前有了这种认识时,我试图把它勾勒出来,在我看来,LLM有点像一个新的操作系统,对吧?所以LLM是一种新型计算机。它有点像CPU的等效物。上下文窗口有点像内存,

然后LLM使用这里的所有功能来协调内存和计算以解决问题。所以,如果你仔细观察,从这个角度来看,它非常像操作系统。再举几个例子。例如,如果您想下载一个应用程序,比如说我去VS Code并点击下载,您可以下载VS Code,您可以在Windows、Linux或……

或Mac上运行它,就像您可以使用像Cursor这样的LLM应用程序,您可以在GPT或Cloud或Gemini系列上运行它一样,对吧?这只是一个下拉菜单。所以在这方面也比较相似。

我认为让我印象深刻的更多类比是,我们有点像在20世纪60年代左右,对于这种新型计算机来说,LLM计算仍然非常昂贵,这迫使LLM集中在云端,我们所有人只是通过网络与之交互的瘦客户端。

我们没有人能够充分利用这些计算机,因此,使用分时制是有意义的,当他们在云端运行计算机时,我们所有人只是批处理的一个维度。这非常类似于当时的计算机外观。操作系统在云端,一切都在流传,并且有批处理。

所以个人计算革命还没有发生,因为它不经济,没有意义。但我认为有些人正在尝试,事实证明,例如Mac mini非常适合某些LLM,因为如果你是批量一次推理,这完全是内存受限的,所以这实际上是可行的。

我认为这些可能是个人计算的一些早期迹象,但这实际上还没有发生。目前还不清楚这会是什么样子。也许你们中的一些人可以发明这是什么,它是如何工作的,或者它应该是什么。

也许我还要提到的一个类比是,每当我直接用文本与ChatGPT或某些LLM交谈时,我觉得我是在通过终端与操作系统交谈。就像,它只是文本,它是对操作系统的直接访问,我认为还没有以通用的方式发明图形用户界面(GUI)。例如,ChatGPT应该有一个GUI吗?除了技术泡沫之外?当然,我们稍后将要介绍的一些应用程序具有GUI,但没有,像……

跨所有任务的GUI,如果这是有意义的话。LLM在某些相当独特的方式和早期计算中与操作系统有所不同。我写过关于这个特别让我印象深刻的特性,这次它非常不同。那就是像翻转一样,LLM翻转了通常存在的技术传播方向

存在于技术中。例如,电力、密码学、计算、飞行、互联网、GPS,许多以前不存在的新的变革性技术。通常情况下,政府和公司是第一批用户,因为它是新的和昂贵的等等,它只是后来才传播到消费者。但我感觉LLM有点像反过来了。所以也许对于早期计算机来说,它完全是关于弹道学和军事用途的,但是对于LLM来说,它完全是关于如何煮鸡蛋之类的。这当然是我很多用途。

所以对我来说,这真是太迷人了,我们有一台新的神奇计算机,它可以帮助我煮鸡蛋。它并没有帮助政府做一些非常疯狂的事情,比如一些军事弹道学或一些特殊技术。事实上,公司或政府落后于我们所有人对所有这些技术的采用。所以它是倒退的。我认为它可能为我们如何使用这项技术或哪些是首批应用程序等等提供了一些信息。所以总而言之,到目前为止,LLM实验室、晶圆厂LLM,我认为这是一个准确的语言。

但LLM是复杂的操作系统。它们处于计算的20世纪60年代左右,我们正在重新进行计算。它们目前通过分时制提供,并像实用程序一样分发。新颖且前所未有的事情是,它们并不掌握在少数政府和公司手中。它们掌握在我们所有人手中,因为我们都有计算机,它完全是软件。ChashiPT像瞬间一样,一夜之间被发送到数十亿人的计算机上。这太疯狂了。

对我来说,这种情况有点疯狂,现在是我们进入这个行业并编程这些计算机的时候了。这太疯狂了。所以我认为这非常了不起。在我们编程LLM之前,我们必须花一些时间来思考这些东西是什么。我尤其喜欢谈谈它们的心理学。

所以,我喜欢这样看待LLM,它们有点像人的灵魂。它们是人的随机模拟。在这种情况下,模拟器恰好是一个自回归变换器。所以,变换器是一个神经网络。它只是在标记的级别上进行处理。它逐块进行处理。每个块的计算量几乎相等。

当然,这个模拟器只是,基本上涉及一些权重,我们将其拟合到我们在互联网上拥有的所有文本等等。你最终会得到这种模拟器,因为它是在人类身上训练的,它具有类似于人类的新兴心理学。所以你首先会注意到,当然,LLM拥有百科全书式的知识和记忆,它们可以记住很多东西,比任何一个单独的人类都能记住更多的东西,因为它们阅读了太多东西。

它实际上让我想起了电影《雨人》,我真的很推荐大家观看。这是一部很棒的电影。我喜欢这部电影。这里的达斯汀·霍夫曼是一位自闭症学者,他拥有几乎完美的记忆力。所以他可以阅读电话簿并记住所有姓名和电话号码。我觉得LLM有点像。它们可以非常轻松地记住SHA哈希和许多不同类型的东西。

所以在某些方面,它们肯定拥有超能力,但它们也有一些我认为是认知缺陷的东西。所以它们会产生相当多的幻觉,它们会编造一些东西,并且没有一个很好的自我认知内部模型,至少还不够。这种情况有所改善,但并不完美。

它们表现出参差不齐的智力。所以它们在某些问题解决领域将是超人的,然后它们会犯一些基本上没有人会犯的错误,比如,你知道,它们会坚持认为9.11大于9.9,或者草莓中有两个R。这些是一些著名的例子。但基本上有一些粗糙的边缘会让你绊倒。所以我认为,这也是相当独特的。它们还会遭受顺行性遗忘症。

所以,我认为我暗示的是,如果你有一个加入你组织的同事,这个同事会随着时间的推移了解你的组织,他们会理解并获得关于组织的大量背景知识,他们回家睡觉,巩固知识,并随着时间的推移发展专业知识。LLM不会天生这样做,我认为这并不是LLM研发中真正解决的问题。

所以上下文窗口实际上有点像工作记忆,你必须直接编程工作记忆,因为它们不会默认变得更聪明。我认为很多人都会被这种类比所迷惑。

在流行文化中,我建议大家观看这两部电影,《记忆碎片》和《初恋50次》。在这两部电影中,主角的权重是固定的,他们的上下文窗口每天早上都会被清除,当这种情况发生时,去上班或建立关系真的很有问题,这种情况一直发生在我们所有人身上。

我想指出的最后一件事是与LLM使用的安全相关的限制。例如,LLM非常轻信。它们容易受到提示注入风险的影响。它们可能会泄露您的数据,等等。所以,还有许多其他安全方面的考虑。所以基本上,长话短说,你必须加载你的,你必须同时考虑这个具有许多认知缺陷和问题的超人事物

然而,它们非常有用。那么我们如何编程它们,我们如何解决它们的缺陷并享受它们的超能力呢?所以我现在想谈谈的是,我们如何使用这些模型以及一些最大的机会是什么。这不是一个完整的列表,只是一些我认为对这次演讲来说很有趣的事情。我感到兴奋的第一件事是我所谓的局部自主应用程序。例如,让我们以编码为例。

你当然可以直接去ChatGPT,你可以开始复制粘贴代码,复制粘贴错误报告等等,获取代码并复制粘贴所有内容。你为什么要这样做?你为什么要直接去操作系统?拥有一个专门为此设计的应用程序更有意义。所以我认为你们很多人都在使用Cursor,我也在使用,并且

Cursor有点像你想要的东西。你不想直接去Chash APT。我认为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能否以人类所能采取的所有方式行动?人类能否监督并参与这项活动?因为再次强调,这些是尚未完美的易出错系统。

Photoshop中的差异是什么样子?你知道吗?而且,现在很多传统的软件,它都有这些开关和所有这些东西,这些都是为人类设计的。所有这些都必须改变并变得易于LLM访问。我想强调一下,对于这些LLM应用程序中的许多,我不确定是否应该给予足够的关注,那就是

我们现在有点像与AI合作,通常它们进行生成,而我们人类进行验证。让我们尽可能快地使这个循环运行符合我们的利益,这样我们就能完成很多工作。

我认为这可以通过两种主要方式完成。第一,您可以大大加快验证速度。我认为GUI非常重要,因为GUI利用了我们头脑中所有人的计算机视觉GPU。阅读文本很费力,而且不有趣,但看东西很有趣,它就像通往你大脑的高速公路。所以我认为GUI对于审核系统和一般的视觉表示非常有用。第二,我想说,

我们必须把AI拴住。我认为很多人对AI代理过于兴奋,对我来说,获得对我的存储库进行1000行代码的差异并没有用。就像,我必须……我仍然是瓶颈,对吧?即使这1000行代码是瞬间生成的,我也必须确保这东西没有引入错误。这就像……而且它正在做正确的事情,对吧?而且没有安全问题等等。所以我认为……是的,基本上,我们必须……

为了让我们高效地处理这两者,我们需要某种方式控制AI,因为它很容易反应过度。感觉就像这样。这就是我使用AI辅助编程时的感受。如果我只是随意编程,一切都很顺利,但如果我真正在努力工作,一个反应过度的代理程序做所有这些事情并不是很好。所以这张幻灯片不太好,对不起,但是

我想像你们许多人一样,正在开发一些在我的编码工作流程中利用这些代理的方法,以进行AI辅助编码。在我的工作中,我总是害怕得到过大的差异。我总是以小的增量块进行操作。我想确保一切顺利。我想让这个循环运行得非常非常快。我处理的是小的、具体的单个任务块。所以我认为你们许多人可能都在开发类似的与LLM合作的方法。

我还看到许多博客文章试图制定与LLM合作的最佳实践。这是我最近读到的一篇我认为相当不错的文章。它讨论了一些技巧,其中一些与如何控制AI有关。例如,如果你的提示含糊不清,那么AI可能无法完全按照你的意愿去做,在这种情况下,验证将失败。你会要求其他东西。如果验证失败,你就会开始循环。

因此,花更多时间使你的提示更具体更有意义,这会增加成功验证的概率,你可以继续前进。所以我认为我们很多人最终都会找到这样的技巧。我认为在我的工作中,我现在也对结合AI和LLM的教育是什么样的很感兴趣,我认为大量的

我的想法都集中在如何控制AI。我不认为直接去ChatGPT说,“嘿,教我物理学”就能奏效。我认为这行不通,因为AI会迷失方向。所以对我来说,这实际上是两个独立的应用程序,例如。一个是为教师创建课程的应用程序,另一个是接收课程并将其提供给学生的应用程序。

在这两种情况下,我们现在都有一个课程的中间产物,它是可审计的,我们可以确保它很好,我们可以确保它前后一致,并且AI在特定的教学大纲、特定的项目进度等方面受到控制。所以这是控制AI的一种方法,我认为它有更高的成功可能性。AI不会迷失方向。

我还想提到的另一个比喻是,我对部分自主并不陌生,我认为我在特斯拉工作了五年,一直在研究这个问题。这也是一个部分自主的产品,并具有许多相同的特性。例如,仪表盘上就是自动驾驶的GUI。它向我展示神经网络看到的内容等等。我们有自主性滑块,在我的任期内,我们为用户完成了越来越多的自主任务。

也许我想简要讲述的故事是,我第一次驾驶自动驾驶汽车是在2013年。我有一个在Waymo工作的朋友,他提出带我在帕洛阿尔托兜风。我当时用谷歌眼镜拍下了这张照片。你们很多人太年轻了,可能都不知道那是什么。但是,是的,这在当时非常流行。我们上了车,在帕洛阿尔托周围开了大约30分钟的车,包括高速公路和街道等等。这次驾驶非常完美。

没有任何干预。这是2013年,也就是12年前。这让我印象深刻,因为当我体验了这次完美的驾驶、完美的演示时,我觉得

哇,自动驾驶即将到来,因为它真的成功了。这太不可思议了。但12年后的今天,我们仍在努力实现自主驾驶。我们仍在努力开发驾驶代理。即使现在,我们也没有完全解决这个问题。你可能会看到Waymo的汽车在四处行驶,它们看起来是无人驾驶的,但仍然有很多远程操作和很多人工参与这些驾驶过程。所以我们甚至还没有宣布成功,但我认为它最终肯定会成功。但这需要很长时间。

所以我认为软件真的很难,就像驾驶一样难。所以当我看到诸如“2025年是代理的时代”之类的说法时,我非常担心,我觉得这是代理的十年,这将需要相当长的时间。我们需要人工参与,我们需要谨慎地进行操作,这是软件,让我们认真对待吧。我还想再举一个比喻

钢铁侠套装。我一直很喜欢钢铁侠。我认为它在很多方面都正确地反映了技术及其发展方式。我喜欢钢铁侠套装的一点是,它既是增强,托尼·斯塔克可以驾驶它,它也是一个代理。在一些电影中,钢铁侠套装相当自主,可以四处飞行,找到托尼等等。

这是自主性滑块。我们可以构建增强功能,也可以构建代理。我们想两者兼顾。在这个阶段,我会说使用有价值的LLM等等,我会说你想要构建的是钢铁侠套装,而不是钢铁侠机器人。与其构建自主代理的炫技演示,不如构建部分自主产品。

这些产品具有自定义的GUI和UI/UX,我们正在尝试,这样做是为了使人类的生成验证循环非常非常快。但我们并没有忘记,原则上可以自动化这项工作。你的产品应该有一个自主性滑块,你应该考虑如何滑动这个自主性滑块,并使你的产品随着时间的推移变得更加自主。但我认为这类产品有很多机会。

我现在想稍微改变一下话题,谈谈我认为非常独特的一个维度。不仅有一种新型的编程语言允许软件具有自主性,而且正如我提到的,它是用英语编程的,这是一个自然的接口。突然之间,每个人都是程序员,因为每个人都会说英语之类的自然语言。这对我来说极其乐观且非常有趣,而且我认为是前所未有的。

过去,你需要花5到10年时间学习才能在软件方面有所作为。现在情况不再是这样了。所以我不知道是否有人听说过随意编程(vibe coding)。这是介绍这个概念的推文,但我听说这现在已经成为一个主要的梗了。关于这个的一个有趣的故事是

我在推特上已经待了大约15年了,我仍然不知道哪条推文会火起来,哪条推文会悄无声息地无人问津。我认为这条推文会是后者。我不知道,这只是一些想法的随笔,但这却变成了一个完全的梗,我真的无法解释。但我猜它触动了人们的心弦,给了一种每个人都感觉到了但却无法用言语表达的东西起了个名字。所以现在已经有维基百科页面了,等等。这就像……

是的,这现在已经成为一个重要的贡献了。Hugging Face的Tom Wolfe分享了这个我非常喜欢的精彩视频。这些孩子正在随意编程。我觉得这是一个非常积极的视频。你怎么能看着这个视频对未来感到悲观呢?未来是美好的。我认为这将成为软件开发的入门药物。

我对这一代人的未来并不悲观,我认为,是的,我喜欢这个视频。

我也尝试了一点随意编程,因为它很有趣。当你想要构建一些超级定制的东西,而这些东西似乎并不存在,并且你只想在周六之类的日子里随意尝试一下时,随意编程非常棒。所以我构建了这个iOS应用程序,我实际上不会用Swift编程,但我真的震惊于我能够构建一个非常基本的应用程序,我不会解释它,它真的很蠢。但我有点喜欢,这只是一天工作,当天晚些时候它就在我的手机上运行了,我想哇,这太神奇了。

我不需要花五天时间阅读Swift才能开始。我还随意编程了一个名为MenuGen的应用程序,它是实时运行的,你可以在menuGen.app上尝试。我基本上遇到了这样一个问题:当我出现在一家餐馆时,我会阅读菜单,但我不知道任何东西是什么,我需要图片。所以这个东西不存在,所以我想,嘿,我要随意编程它。这就是它的样子。你访问menuGen.app。

然后你拍一张菜单的照片,然后MenuGen会生成图像。注册时每个人都会免费获得5美元的积分,因此这对我来说是一个主要的成本中心。所以对我来说,这是一个负收入的应用程序。我在MenuGen上损失了巨额资金。好的,但MenuGen最吸引我的地方在于

随意编程部分的代码实际上是随意编程MenuGen的简单部分。大部分工作实际上是在我试图使其成为现实时进行的,这样你就可以进行身份验证和支付,以及域名和Versal部署,这非常困难,所有这些都不是代码。所有这些DevOps工作都是我在浏览器中点击操作。这非常费力,又花了一周时间。所以让我感到非常有趣的是,我的MenuGen

基本上在几个小时内在我的笔记本电脑上运行了演示,然后花了我一周时间,因为我试图使其成为现实。原因是这真的很烦人。例如,如果你尝试将谷歌登录添加到你的网页中,我知道这很小,但这个Clerk库的大量说明告诉我如何集成它。这太疯狂了,它告诉我访问这个URL,点击这个下拉菜单,选择这个,访问这个并点击那个,它就像告诉我该做什么。就像一台电脑告诉我,

我应该采取的行动,就像你做的那样。我为什么要这样做?这是什么鬼?我不得不按照所有这些说明去做。这太疯狂了。所以我认为我的演讲的最后部分侧重于我们能否只为代理构建?我不想做这项工作。代理能做到吗?谢谢。好的,大致来说,我认为有一类新的数字信息的消费者和操纵者。

过去只有人类通过GUI或计算机通过API,现在我们有了全新的东西。代理是计算机,但它们有点像人,对吧?它们是网络上的精灵。网络上有精灵,它们需要与我们的软件基础设施互动。我们可以为它们构建什么?这是一个新事物。

例如,你可以在你的域名上拥有roblox.txt,你可以指导或建议网络爬虫如何在你的网站上运行。同样,你也可以拥有一个lms.txt文件,它只是一个简单的markdown文件,告诉LLM这个域名是关于什么的。这对LLM来说非常易读。如果它必须获取你的网页的HTML并尝试解析它,这将非常容易出错且困难,它会搞砸,而且不会起作用。所以我们可以直接与LLM对话,这是值得的。

目前大量文档都是为人们编写的,因此你会看到列表、粗体和图片,这些内容LLM无法直接访问。所以我看到一些服务现在正在将其许多文档转换为专门针对LLM的文档。例如,Vercel和Stripe是这里的早期参与者,但我已经看到了一些其他的参与者。它们以Markdown格式提供文档。Markdown对于LLM来说非常容易理解。这很棒。

也许根据我的经验,还有一个简单的例子。你们中的一些人可能认识3Blue1Brown,他在YouTube上制作精美的动画视频。

是的,我喜欢他编写的这个库,Manon。我想制作我自己的动画。关于如何使用Manon的文档非常详尽。所以我不想实际阅读它。所以我将整个内容复制粘贴到LLM中,并描述了我想要的内容,它开箱即用。LLM只是为我编写了一个动画,完全符合我的要求,我想,哇,这太神奇了。

如果我们可以使文档易于LLM理解,它将解锁大量用途。我认为这是非常棒的,应该更多地发生。

我还想指出的是,你确实不得不,这不仅仅是将你的文档转换为Markdown格式,这是简单部分。我们实际上必须更改文档,因为每当你的文档说“点击”时,这都是不好的。LLM目前还无法原生执行此操作。例如,Vercel正在将每个“点击”实例替换为等效的curl命令,你的LLM代理可以代表你执行此命令。

所以我认为这非常有趣。当然,还有来自Anthropic的模型上下文协议,这也是另一种方式,它是一种直接与代理对话的协议,作为这种新型数字信息的消费者和操纵者。我对这些想法非常乐观。

我真正喜欢的是这里和那里的许多小工具,它们可以帮助以LLM友好的格式摄取数据。例如,当我访问GitHub存储库(例如我的nano GPT存储库)时,我无法将其馈送到LLM并询问有关它的问题,因为这是GitHub上的用户界面。当你将URL从GitHub更改为git ingest时,它实际上会将所有文件连接到单个巨大的文本中

它将创建目录结构等等,这可以复制粘贴到您最喜欢的LLM中,您可以进行操作。更戏剧性的例子是DeepWiki,它不仅仅是这些文件的原始内容,

这是来自Devon的。此外,他们还让Devon对GitHub存储库进行分析,Devon基本上为你的存储库构建了完整的文档页面,你可以想象这对于复制粘贴到你的LLM中会更有帮助。所以我喜欢所有这些小工具,你只需更改URL,它就会使某些内容对LLM可访问。这一切都很好,我认为应该有更多这样的工具。我还想指出的是

在未来,LLM绝对有可能做到这一点,这甚至不是未来,而是今天,它们能够四处走动,能够点击东西等等。但我仍然认为非常值得与LLM进行半途相遇,使它们更容易访问所有这些信息,因为使用这些信息仍然相当昂贵,而且更困难。

所以我确实认为很多软件都将有一个很长的尾巴,因为它不会适应,因为这些不是实时播放的存储库或数字基础设施,我们将需要这些工具。但我认为对于其他人来说,我认为非常值得在某个中间点相遇。如果这说得通的话,我对两者都持乐观态度。总而言之,这是一个进入这个行业的绝佳时机。我们需要重写大量的代码。大量的代码将由专业人员和程序员编写。

这些LLM有点像实用程序,有点像晶圆厂,但它们尤其像操作系统,但这还处于早期阶段。这就像20世纪60年代的操作系统。我认为许多类比是共通的。这些LLM有点像我们必须学习与之合作的易出错的精灵

为了正确地做到这一点,我们需要调整我们的基础设施以适应它。当你构建这些LLM应用程序时,我描述了一些有效使用这些LLM的方法,以及一些使这成为可能的工具,以及如何快速地运行这个循环,并基本上创建部分自主产品。然后,是的,还必须为代理更直接地编写大量代码。

但无论如何,回到钢铁侠套装的比喻,我认为在接下来的十年左右的时间里,我们将看到滑块从左向右移动,看看它会是什么样子将会非常有趣。我迫不及待地想和你们一起构建它。谢谢。