摘要:前天,前OpenAI联合创始人、深度学习专家安德烈·卡帕西(Andrej Karpathy)在Y Combinator(YC)于美国旧金山Moscone会议中心举办的AI创业学院(AI Startup School)活动上,以《软件正在发生根本变化》(Soft
编译 | 金碧辉
编辑 | 程茜
智东西6月20日消息,前天,前OpenAI联合创始人、深度学习专家安德烈·卡帕西(Andrej Karpathy)在Y Combinator(YC)于美国旧金山Moscone会议中心举办的AI创业学院(AI Startup School)活动上,以《软件正在发生根本变化》(Software Is Changing (Again))为题发表40分钟主题演讲,系统阐释了大语言模型是如何将软件开发从“写代码/调参数”转向“自然语言指挥AI”。
卡帕西在演讲中透露,软件开发已进入“Software 3.0”阶段。他提出,传统的手写代码时代,即Software 1.0,以及训练神经网络权重的Software 2.0时代,正被“提示词即程序”的Software 3.0所取代。自然语言正成为直接控制计算机的新编程接口。
同时,卡帕西定义了大语言模型的三重核心属性:大语言模型兼具类似电网的基础设施服务属性、类似芯片晶圆厂的百亿级资本密集投入属性,以及类似操作系统的复杂生态构建与分层管理属性。
当提到大语言模型存在的认知缺陷时,卡帕西说大语言模型主要有两大关键认知缺陷:一是“锯齿状智能”(Jagged Intelligence),表现为处理复杂任务能力突出,却在如数值比较、拼写的基础逻辑上频繁出错;二是信息一旦超出设定的上下文窗口便无法被保留。
针对大语言模型的自主性控制挑战,Karpathy提出了仿钢铁侠战甲的动态控制框架。这个框架的核心是通过自主性调节器,实现类似特斯拉Autopilot的L1-L4分级决策权限分配。
就像钢铁侠的战衣一样,人们可以根据任务的复杂性和风险程度,动态调整AI的自主程度,从简单的辅助建议到完全自主决策,让人类始终保持对系统的最终控制权。
以下是卡帕西所发表演讲的完整编译(为提高可读性,智东西在不违背原意的前提下进行了一定的增删修改):
一、软件进化路径:从写代码、教电脑,到“说话”指挥AI今天我很兴奋能在这里和大家聊AI时代的软件。我听说你们很多人是学生,本科生、硕士生、博士生等等,即将进入这个行业。现在进入行业其实是一个极其独特、非常有趣的时刻。
根本原因在于软件正经历根本性变革。我说“再次”,是因为它持续剧变,这让我总有新材料创作新演讲。
粗略地说,我认为软件在根本层面上70年没大变,但最近几年快速变化了两次。这带来了海量的软件编写和重写工作。我几年前观察到软件在变化,出现了一种新型软件,我称之为Software 2.0。
我的想法是:Software 1.0是你编写的计算机代码;Software 2.0本质上是神经网络的权重。你不是直接编写它,而是通过调整数据集和运行优化器来创建这些参数。
当时神经网络常被视为另一种分类器,但我认为这个框架更贴切;现在,我们在Software 2.0领域有了类似GitHub的存在,我认为Hugging Face是Software 2.0领域的GitHub,其推出的Model Atlas也在其中扮演着重要角色。
作为一个极具影响力的平台,Hugging Face为开发者提供了丰富的资源与便捷的工具,就像GitHub在传统软件开发中所做的那样,它推动着Software 2.0领域的技术交流与创新发展,而模型地图(Model Atlas)如同一个庞大的模型资源库,进一步丰富了平台的生态,让开发者能够更轻松地获取和使用各类模型,助力不同项目的开发与落地。模型地图是一种可视化模型仓库的开源工具,针对Software 2.0设计。
例如,那个巨大的中心圆圈代表Flux图像生成器的参数,每次在其基础上调整,就相当于一次git commit,创建一个新的图像生成器。
所以,Software 1.0通过编写代码对计算机进行编程,Software 2.0则借助如AlexNet等神经网络的权重实现对神经网络的编程。
直到最近,这些神经网络都是固定功能的。我认为一个根本性的变化是:神经网络通过大语言模型变得可编程了。我认为这非常新颖独特,是一种新型计算机,值得称为Software 3.0。
在Software 3.0中,你的提示词就是编程大语言模型的程序。值得注意的是,这些提示是用英语写的,这是一种非常有趣的编程语言。
比如你想让电脑进行一下情感分类,完成判断一条评论是夸人还是骂人的任务,有不同的方法。
Software 1.0的老方法:你得像个老师傅,自己动手写一堆代码,告诉电脑看到哪些词算夸、哪些词算骂;进化一点的Software 2.0:你像个教练,找一堆标好了“夸”或“骂”的评论例子,让电脑自己琢磨学习规律;Software 3.0:你像个老板,直接对大语言模型下命令:“看看这条评论是夸还是骂?只准回‘夸’或‘骂’!”就这一句话,AI就懂了,马上给你答案。你要是把命令改成“分析下这条评论是积极还是消极”,它回答的方式也跟着变。
我们看到GitHub上的代码不再仅是代码,还夹杂着英语,这是一种正在增长的新代码类别。这不仅是一个新范式,同样令我惊讶的是它使用英语。这让我几年前震惊并发布了推文。
我在特斯拉研发Autopilot时观察到:起初栈底是传感器输入,经过大量C++(1.0)和神经网络(2.0)处理,输出驾驶指令。随着Autopilot改进,神经网络能力和规模增长,C++代码被删除。许多原本由1.0实现的功能迁移到了2.0。Software 2.0栈实实在在地“吃掉”了1.0栈。
在特斯拉研发Autopilot时观察到的2.0吞噬传统代码栈
我们正再次看到同样的事情发生:Software 3.0正在“吃掉”整个栈。现在我们有了三种完全不同的编程范式。我认为进入行业时精通三者是明智的,它们各有优劣。你需要决定:某个功能该用1.0、2.0还是3.0实现?是训练神经网络还是提示大语言模型?这该是显式代码吗?我们需要做这些决定,并可能需要在范式间流畅转换。
软件正在经历根本性的变化,这种变化在过去70年中从未如此剧烈。大约70年来,软件的底层范式几乎未变,但在过去几年里,它连续发生了两次结构性巨变。现在,我们正站在软件重写的浪潮上,有大量的工作要做、大量的软件要写,甚至重写。
几年前,我注意到软件开始向一种新形式演化,我当时给它取名叫Software 2.0。Software 1.0是传统意义上我们手写的代码,而Software 2.0指的是神经网络的参数。我们不再直接写“代码”,而是调数据、跑优化器,生成参数。
如今,在Software 2.0世界中也有了类似GitHub的东西,比如Hugging Face和模型地图,它们就像代码库一样存储着不同的模型。每次有人在Flux模型基础上进行调整,就相当于在这个空间创建了一次代码提交。
而现在,大语言模型的出现带来了更根本的改变。我认为这是一种全新的计算机,甚至值得被称为Software 3.0。你的提示现在就是对大语言模型编程的程序,而且这些提示是用英语编写的。这是一种非常有趣的编程语言。
Andrew Ng曾说“AI是新时代的电力”,这句话点出了关键点,比如OpenAI、谷歌、Anthropic等投入资本来训练模型,然后用运营开销通过API向开发者“输送智能”,模型按token计价,像电力一样被“计量使用”。我们对这些模型的要求也非常像“基础设施”:低延迟、高可用、稳定输出。
如OpenAI、Gemini、Anthropic投入资本训练模型,类似构建电网
但大语言模型不仅具有公用事业的属性,它们更像是复杂的软件操作系统。OpenAI、Anthropic就像是Windows和macOS,而开源模型则更像Linux。操作系统的作用不是“运行某个功能”,而是构建一个“平台”来承载更多功能。
闭源供应商如Windows、Mac OS有开源替代方案Linux
更准确地说,大语言模型并非独立完成任务,而是作为承载提示词、工具及Agent等组件的“运行时系统”来发挥作用。这些组件如同插件般嵌入大语言模型框架中,通过模型的推理能力协调运作,共同实现复杂任务的处理。
从计算模式来看,我们现在的大语言模型计算处于1960年代的阶段。大语言模型推理成本仍然很高,模型计算集中部署在云端,我们如同瘦客户端(Thin Client)通过网络远程访问。
这就像“分时共享”计算模式:多用户排队使用同一模型,云端以“批处理”方式依次执行任务,就像多人轮流使用一台超级计算机,按序获取计算资源。
有趣的是,大语言模型颠倒了传统技术扩散的方向。通常,新技术首先由政府和企业使用,之后才扩散到消费者。但大语言模型不同,它首先服务的是普通人,比如帮助用户煮鸡蛋,而政府和企业反而在落后地采用这些技术。
大语言模型帮助用户煮鸡蛋
这完全颠倒了传统路径,也可能启示我们:真正的杀手级应用会从个人用户端长出来。
总结来看,大语言模型本质上是复杂的软件操作系统,我们正在“重新发明计算”,就像1960年代那样。而且它们现在以“时间共享”的方式提供服务,像公用事业一样被分发。
真正不同的是,它们不是掌握在政府或少数企业手里,而是属于我们每一个人。我们每个人都有电脑,而大语言模型只是软件,它可以在一夜之间传遍整个星球,进入数十亿人的设备。
现在,轮到我们进入这个行业,去编程这个“新计算机”。这是一个充满机遇的时代,我们需要熟练掌握Software 1.0、2.0和3.0这三种编程范式,在不同场景下灵活运用,以发挥它们的最大价值。
三、拥有超强记忆,却存在“记忆碎片”式健忘症与认知错误研究大语言模型时,我们得花些时间思考它们究竟是什么。我尤其想聊聊它们的“心理”。在我看来,大语言模型有点像人的灵魂,是对人类的静态模拟。这里的模拟工具是自回归变换器,变换器本质上是一种神经网络,它以token为单位,一个token接一个token地处理信息,处理每个token所耗费的计算量几乎相同。
当然,这个模拟过程涉及一些参数权重,我们根据互联网上的所有文本数据对其进行拟合,最终得到这样一个模拟工具。它是基于人类文本数据训练的,因此产生了类似人类的“心理”特征。
首先,我们会注意到,大语言模型拥有百科全书式的知识和超强的记忆力。它们能记住的内容比任何一个普通人都要多得多,因为它们“阅读”了海量信息。这让我想起电影《雨人》,强烈推荐大家去看看,这是一部很棒的电影。
达斯汀·霍夫曼在影片中饰演一位患有自闭症的天才,拥有近乎完美的记忆力,他可以读完一本电话簿,并记住所有的姓名和电话号码。我觉得大语言模型和他很相似,它们能轻松记住哈希值等各种各样的信息,在某些方面确实拥有“超能力”。
不过,大语言也存在一些认知缺陷。它们经常会产生幻觉,编造一些内容,而且缺乏足够完善的自我认知内部模型。虽然这方面已经有所改善,但仍不完美。
它们的智能表现参差不齐,在某些问题解决领域展现出超人的能力,但也会犯一些人类几乎不会犯的错误,比如坚称9.11大于9.9,或者认为“strawberry”里有两个“r”,这些都是很有名的例子。总之,它们存在一些容易让人“踩坑”的认知盲区。
此外,大语言模型还存在遗忘问题。打个比方,如果有新同事加入公司,随着时间推移,这位同事会逐渐了解公司,掌握大量公司相关背景信息,晚上回家休息时巩固知识,久而久之积累专业知识。
但大语言模型天生不具备这种能力,在大语言模型的研发中,这一问题也尚未得到真正解决。上下文窗口就好比工作记忆,我们必须非常直接地对其进行编程设定,因为大语言模型不会默认自动变得更智能。
我认为很多人会被流行文化中的一些类比误导,我建议大家看看《记忆碎片》和《初恋50次》这两部电影。在这两部电影中,主角的记忆权重是固定的,每天早上上下文窗口都会被清空。在这种情况下,去工作或者维持人际关系都变得非常困难,而这恰恰是大语言模型经常面临的情况。
我还想指出一点,就是使用大语言模型时在安全方面的相关限制。例如,大语言模型很容易被欺骗,容易受到提示注入风险的影响,可能会泄露你的数据等等,在安全方面还有许多其他需要考虑的因素。
简而言之,大语言模型既是拥有超能力的“超人”,又存在一系列认知缺陷和问题。那么,我们该如何对它们进行编程,如何规避它们的缺陷,同时又能充分利用它们的超能力呢?
四、最大机遇是做带自主调节功能的半自动化应用,有好用的界面和操作体验现在,我想转而谈谈如何利用这些模型,以及其中最大的机遇是什么。我最感兴趣的是“部分自主化应用”这一方向。以编程场景为例,你可以直接使用ChatGPT复制粘贴代码、提交bug报告,但为什么要直接与操作系统交互呢?更合理的方式是构建专用应用。
我和在座很多人一样在用Cursor,它是早期大语言模型应用的典范,具备几个关键特性:保留传统手动操作界面的同时集成大语言模型处理大块任务;大语言模型负责大量上下文管理;编排多轮模型调用,Cursor底层实际上整合了代码嵌入模型、聊天模型以及用于代码差异应用的模型。
专用GUI的重要性常被低估。文本交互难以阅读和操作,而可视化diff以红色标识删除、绿色标识新增,配合Command+Y/N快捷键能大幅提升审查效率;还有“自主滑块”设计,比如Cursor中从代码补全到修改整个文件甚至整个代码库的不同自主层级,用户可根据任务复杂度调整放权程度。
另一个成功案例是Perplexity,它同样整合多模型调用、提供可审计的GUI,用户能点击查看引用来源,也设有自主滑块,提供快速搜索、深度研究等不同模式。
我认为未来大量软件将走向部分自主化,这需要思考几个核心问题:大语言模型能否感知人类所见、执行人类所行?人类如何有效监督这些尚不完美的系统?传统软件的交互设计如何适配大语言模型?
当前大语言模型应用的关键在于优化“生成-验证”循环效率。一方面,GUI利用人类视觉系统快速审查结果,读文本费力而看图轻松;另一方面,必须控制AI的“自主性”:10000行代码的diff对开发者毫无意义,人类仍是质量瓶颈。我在实际编程中始终坚持小步迭代,避免过大变更,通过快速验证确保质量。
教育领域的应用设计也遵循类似逻辑:教师端应用生成课程,学生端应用提供结构化学习路径,中间课程作为可审计的中间产物,确保AI在既定教学大纲和项目流程内工作,避免“迷失”。
回顾在特斯拉的经历,自动驾驶系统同样采用部分自主模式:仪表盘实时显示神经网络感知结果,用户通过“自主滑块”逐步放权。2013年我首次体验完全无干预的自动驾驶时,曾认为技术已成熟。
当时朋友在Waymo工作,带我在帕洛阿尔托的高速和街道上行驶了30分钟,全程零干预,我用谷歌眼镜记录下了这一幕。但12年后的今天,即便能看到Waymo的无人驾驶车辆上路,背后仍依赖大量远程操作和人工介入。这说明软件系统的复杂性远超预期,AI Agent的发展将是长期过程,需保持谨慎。
同样地,类比钢铁侠战衣可知:当前更应聚焦“增强型工具”,而非“全自主机器人”。
构建部分自主产品时,需做好两点:一是设计定制化GUI与UX(用户体验),确保“生成-验证”循环高效运转;二是保留自主滑块机制,以便逐步提升产品自主性。这正是我眼中的重要机会方向。
五、自然语言编程让人人能开发,加快Agent基础设施转型我认为大语言模型用英语编程这件事,让软件变得极具可访问性!同时我想补充另一个独特维度:如今不仅出现了允许软件自主运行的新型编程语言,而且它以英语这种自然界面编程。
突然之间,每个人都能成为程序员,因为人人都会说英语这样的自然语言,这让我感到非常振奋,也觉得前所未有的有趣。过去,你需要花5到10年学习才能在软件领域有所作为,但现在完全不同了。
不知道大家有没有听说过“Vibe Coding”(基于自然语言交互的编程方式)?这个概念最初由一条推文引入,现在已经成了一个热门梗。
说起来有趣,我在Twitter上待了15年左右,至今仍搞不懂哪条推文会爆火,哪条会无人问津。当时我发那条推文时,以为它会石沉大海,毕竟那只是我洗澡时的随想,结果它成了全网梗,甚至有了维基百科页面,这算是我对行业的一大贡献吧。
HuggingFace的Tom Wolf分享过一个很棒的视频,里面是孩子们在“Vibe Coding”。我特别喜欢这个视频,它太治愈了,看了这样的画面,谁还会对未来感到悲观呢?我觉得这会成为软件开发的“入门药”。我对这代人的未来并不悲观,真的很爱这个视频。受此启发,我也尝试了“Vibe Coding”,因为它太有趣了。
比如当你想做一个特别定制化、市面上不存在的东西,又恰逢周六想随性发挥时,这种编程方式就很合适。我曾用它开发了一个iOS应用,虽然我完全不会Swift,但居然能做出一个超基础的应用,过程很简单,我就不细说了,但那天花了一天时间,晚上应用就在我手机上运行了,我当时真的觉得“太神奇了”,不用花五天时间啃Swift教程就能上手。
我还“Vibe Coding”了一个叫Menu Genen的应用,现在已经上线,大家可以在menu.app试用。我开发它的初衷很简单:每次去餐厅看菜单,我都不知道那些菜是什么,需要配图,但市面上没有这样的工具,于是我就“Vibe Coding”了一个。用户注册后能获得5美元credits,但这对我来说是个巨大的成本中心。
现在这个应用还在亏钱,我已经搭进去很多钱了。不过有趣的是,开发Menu Genen时,“Vibe Coding”的代码部分其实是最简单的,真正难的是把它落地成可用的产品:认证系统、支付功能、域名注册和部署,这些都不是写代码,而是在浏览器里点点点的DevOps工作,极其繁琐,花了我一周时间。
比如给网页添加谷歌登录时,文档里全是“去这个URL,点击下拉菜单,选择这个,再点那个”之类的指令,简直像电脑在指挥我做事,为什么不是它自己做呢?这太疯狂了。
所以我演讲的最后一部分想探讨:我们能否为Agent构建基础设施?大语言模型正在成为数字信息的新型主要消费者和操控者,我不想再做那些繁琐的手动工作了,能不能让Agent来做?
概括来说,数字信息的消费者和操控者范畴正在扩展:过去只有通过GUI交互的人类,或通过API交互的计算机,现在多了Agent,它们是像人类一样的计算机,是互联网上的“数字精灵”,需要与我们的软件基础设施交互。
比如,我们可以在域名下创建lm.txt文件,用简单的Markdown告诉大语言模型这个域名的内容,这比让它们解析HTML更高效,因为HTML解析容易出错。现在很多文档还是为人类编写的,有列表、粗体、图片,但大语言模型难以直接理解。
我注意到Vercel和Stripe等公司已经开始将文档转为大语言模型友好的Markdown格式,这是很好的尝试。
举个例子,由斯坦福大学数学系毕业生格兰特·桑德森(Grant Sanderson)创建的YouTube频道3Blue1Brown的动画视频文档写得很棒,我不想通读,就把文档复制给大语言模型,告诉它我的需求,结果它直接帮我生成了想要的动画。
如果文档能让大语言模型读懂,会释放巨大的应用潜力。但这不仅是转换格式的问题,比如文档里的“点击此处”对大语言模型毫无意义,Vercel就把所有“点击”替换成了大语言模型Agent可用的curl命令。
此外,Anthropic的模型上下文协议MCP(model context protocol)也是直接与Agent交互的新方式,我很看好这些方向。
还有一些工具也在助力大语言模型友好的数据处理:比如把GitHub仓库的URL改成get.ingest,就能将所有文件合并成可直接喂给大语言模型的文本;Deep Wiki不仅提取文件内容,还能分析GitHub仓库并生成文档,方便大语言模型理解。这些工具只需修改URL就能让内容适配大语言模型,非常实用。
虽然未来大语言模型可能具备点击操作的能力,但现在让它们更便捷地获取信息仍有必要,毕竟当前大语言模型调用成本较高,且操作复杂,很多软件可能不会主动适配,所以这些工具很有存在价值。
总结来看,现在进入这个行业正是时候:我们需要重写大量代码,未来专业开发者和大语言模型都会成为代码的生产者。大语言模型就像早期的操作系统,这些“会犯错的数字精灵”需要我们调整基础设施来适配。
今天我分享了高效使用大语言模型的方法、相关工具,以及如何快速迭代产品。回到“钢铁侠战衣”的比喻,未来十年,我们会见证人机协作的边界不断拓展,我已经迫不及待想和大家一起参与其中。
来源:智东西