必看!Andrej Karpathy 昨天在 YC 的旧金山创业大会 40 分钟的演讲,全是干货,文末附资料!


Andrej Karpathy 昨天在 YC 的旧金山创业大会上发表了一场 40 分钟的演讲。Andrej Karpathy就不必要介绍了,它的每一次演讲都是满满的干货,是AI信徒和创业者必看的演讲,本文是对其演讲的总结,可以直接看以下视频,视频较长,但看完一定过瘾。立刻放下你正在做的事情,观看 Andrej Karpathy 在 YC 创业学校上的演讲。  “AI 时代的软件”  简直难以置信。


也可跳过视频直接看本文


软件开发范式正在发生变化

软件开发范式1.0、2.0和3.0的定义是什么

软件 1.0:传统代码

软件1.0是程序员用诸如Python、C++等编程语言直接编写的明确指令。每一行代码都是程序员为计算机设定的具体任务指令,使其在数字空间中执行特定功能。它是我们所熟悉的“经典软件栈”。

软件 2.0:神经网络权重

软件2.0的核心是神经网络的权重。这些权重是一种更抽象、对人类不友好的语言。它不是由人类直接编写的,因为神经网络通常有数百万个权重,手动编写极其困难。编程过程不是直接写代码,而是通过调整数据集,然后运行优化器来创建神经网络的参数(权重)。

软件 3.0:大型语言模型(LLMs)的提示

编程语言是自然语言,尤其是英语。用户通过输入提示来“编程”LLM,使其执行特定任务。


如何理解大语言模型




ALLMs 正日益成为复杂的软件生态系统,而非简单的商品。LLM 应用(如 Cursor)可以在不同的 LLM 后端(如 GPT、Claude、Gemini)上运行,就像 VS Code 可以在 Windows、Mac 或 Linux 上运行一样。我们正处于 LLM 计算的“1960 年代”:计算资源昂贵,LLMs 集中在云端,用户通过网络进行“分时”访问,个人计算革命尚未到来。与 LLM 直接的文本交互感觉就像通过终端与操作系统对话,而通用的图形用户界面(GUI)尚未被发明。


LLM 的“心理学”


Andrej Karpathy 将 LLMs 视为“人魂”(people spirits),是人类的随机模拟器。它们因在海量文本上训练而具备了类似人类的“涌现心理学”:

超能力:拥有百科全书般的知识和记忆,远超任何个体人类(类似于电影《雨人》中的达斯汀·霍夫曼)。

认知缺陷: 幻觉 (Hallucinations):经常编造信息,缺乏足够的自我认知模型。

锯齿状智能 (Jagged intelligence):在某些问题解决领域表现超人,但在其他方面会犯下人类不会犯的低级错误(例如坚持“9.11 大于 9.9”,或“strawberry 有两个 R”)。

顺行性遗忘症 (Anterograde amnesia):LLMs 无法像人类一样通过经验自动学习、巩固知识或形成专业知识(类似于电影《记忆碎片》和《50 次初恋》中的主角)。它们的上下文窗口(context window)就像工作记忆,需要直接编程来管理。

易受骗 (Gullibility):容易受到提示注入(prompt injection)风险,可能泄露数据。 鉴于 LLMs 既有超能力又有认知缺陷,关键在于如何编程它们,利用其超能力,同时规避其缺陷。

LLM 时代带来了巨大的机遇


Karpathy 认为 LLMs 带来了巨大的机遇,特别是通过开发“部分自主应用”(partial autonomy apps)。

部分自主应用:

核心理念:与其直接与 LLM 像与“操作系统”一样对话(例如直接在 ChatGPT 中复制代码),不如使用专门的 LLM 应用,如 Cursor,它提供了更好的用户体验。

关键特性:

上下文管理:LLM 应用负责将相关信息打包到上下文窗口中,以便调用 LLM。

多模型编排:在后台协调和调用多个 LLM 模型(例如,嵌入模型、聊天模型、代码差异应用模型等)。

应用特定 GUI/UIUX:提供人类友好的图形界面,以便用户轻松审计 LLM 的工作、快速接受或拒绝建议。例如,通过红绿色的差异显示代码修改,或通过快捷键接受/拒绝。

自主性滑块 (Autonomy Slider):允许用户根据任务复杂性调整 LLM 的自主程度,从简单的文本补全到全Agent模式。Perplexity 搜索应用也是一个很好的例子,它提供从快速搜索到深度研究的不同自主性级别。

人机协作:LLM 应用的工作流应侧重于 AI 生成和人类验证,目标是让这个循环尽可能快地进行。GUI 在加快验证速度方面至关重要,因为它利用了人类的视觉处理能力,比阅读纯文本更高效和有趣。

“Vibe Coding”:人人都是程序员:


机遇:由于 LLMs 可以通过自然语言编程,大大降低了软件开发的门槛,使得“人人都是程序员”成为可能。

亲身体验:Karpathy 亲自尝试了“Vibe Coding”,用 Swift 编写了一个简单的 iOS 应用,并开发了 MenuGen (menugen. app) —— 一个能根据菜单照片生成菜品图片的应用程序。他发现,使用 LLM 编写代码反而是最容易的部分。

挑战:将 Vibe Coding 的原型变为真正的产品(如集成身份验证、支付、域名、部署等)却异常困难,因为这涉及到大量在浏览器中点击的操作,而不是编写代码。

为Agent(Agents)构建软件


Andrej Karpathy 强调,我们现在需要为一种新的数字信息消费者和操纵者——“Agent”——进行构建。这些Agent是类人的计算机,它们需要与我们的软件基础设施交互。

Agent友好的基础设施:

lm.txt 文件:类似于 robots.txt,这是一个简单的 Markdown 文件,用于告诉 LLMs 网站的内容和行为规则,比解析 HTML 更高效和准确。

为 LLMs 优化文档:许多服务(如 Vercel 和 Stripe)已经开始将其文档从人类友好的格式(包含图片、加粗、列表)转换为 LLM 容易理解的 Markdown 格式。此外,文档中的“点击”等操作指令也正被替换为 LLM Agent可以执行的 curl 命令。

上下文构建工具:出现了一些帮助 LLMs 摄取和理解复杂数据的工具。例如,gitingest 可以将 GitHub 仓库中的所有文件连接成一个巨大的文本文件,并保留目录结构,方便 LLM 理解。DeepWiki 甚至可以自动分析 GitHub 仓库并为 LLM 生成完整的文档页面。

“中途相遇”:尽管 LLMs 未来可能能够像人类一样点击操作,但让信息更容易被它们访问仍然非常有价值,因为直接模拟人类行为通常成本更高、难度更大。

所有相关资料

  • 主旨演讲幻灯片: https://drive.google.com/file/d/1a0h1mkwfmV2PlekxDN8isMrDA5evc4wW/view?usp=sharing
  • 2017 年的软件 2.0 博客文章 https://karpathy.medium.com/software-2-0-a64152b37c35
  • LLMs 如何颠覆技术扩散 https://karpathy.bearblog.dev/power-to-the-people/
  • 氛围编码 MenuGen(回顾) https://karpathy.bearblog.dev/vibe-coding-menugen/





扫码加入技术交流群,备注「开发语言-城市-昵称

(文:GitHubStore)

发表评论