Andrej Karpathy:AI时代软件正在再次改变

《Andrej Karpathy: Software Is Changing (Again) 》 video: https://www.xiaohongshu.com/explore/68541c9c0000000015020db4?xsec_token=ABUBEZgdWSwwpyudD9_J0qqj3a1MFDXwBSKYa9oRS7qZw=&xsec_source=pc_user 这是一篇关于软件在AI时代演进的精彩演讲,演讲者从历史回顾到未来展望,深入探讨了大型语言模型(LLMs)如何改变软件开发的范式。 第一部分:软件范式的演变 (Software Paradigm Shifts) 在软件发展历程中,我们正经历前所未有的剧变。从70年来相对稳定的“软件1.0”(即人类编写的传统代码),到机器学习时代数据驱动的“软件2.0”(神经网络的权重),再到如今由LLMs赋能的“软件3.0”(通过自然语言提示来编程LLMs),软件的定义和开发方式正在发生根本性变革。特别是软件3.0,它引入了一种全新的编程范式——使用日常英语进行编程,这使得任何人都有可能成为“程序员”。对于即将进入行业的学生来说,掌握这三种范式并能够根据任务需求灵活切换和融合,是极其重要的能力,因为每种范式都有其独特的优势和局限性。 第二部分:LLMs的本质与生态系统 (The Nature and Ecosystem of LLMs) LLMs不仅是强大的计算工具,它们正逐渐展现出“公用事业”和“操作系统”的特性。从公用事业的角度看,LLM实验室投入巨大的资本来训练模型(类似电网建设),并通过API提供按量付费的服务(类似用电)。这要求LLMs具备低延迟、高可用性和一致的质量,并且能够像电力供应一样进行切换,甚至在模型“停摆”时,会造成全球范围内的“智能停电”。从操作系统的角度看,LLMs的复杂性、工具使用和多模态能力使其远超简单的商品。它们类似于1960年代的早期计算机操作系统,将LLM本身视为CPU,上下文窗口作为内存,并能够协调计算和记忆来解决问题。这种类比意味着我们正处于个人计算革命的前夜,LLMs将从云端集中式服务逐渐走向更多样化的部署,甚至可能出现“个人LLM”设备。然而,与历史不同的是,LLMs的普及速度极快,通过ChatGPT等应用瞬间触达亿万用户,这为我们提供了前所未有的机遇去编程这些新型计算机。 第三部分:LLMs的心理学与局限性 (The Psychology and Limitations of LLMs) 将LLMs理解为“人类灵魂的随机模拟”有助于我们更好地利用它们。尽管LLMs拥有超人的知识和记忆能力(如同“雨人”般的记忆力),能够轻易记住大量信息,但它们也存在显著的认知缺陷。这些缺陷包括:频繁的“幻觉”和编造信息、自我认知模型不足、以及“锯齿状智能”(在某些领域超人,在另一些领域却犯下人类不会犯的低级错误)。此外,LLMs还存在“顺行性遗忘症”——它们不像人类同事那样能够持续学习和巩固知识,每次交互上下文窗口都会被“清空”,需要明确的编程来管理工作记忆。在安全性方面,LLMs易受提示注入攻击,并可能泄露数据。因此,与LLMs合作的关键在于:如何在利用它们超人能力的同时,巧妙地规避和克服它们的这些局限性。 第四部分:利用LLMs的机遇:半自动化应用 (Opportunities with LLMs: Partial Autonomy Apps) LLMs带来了“半自动化应用”的巨大机遇,这类应用旨在将人类与AI的合作效率最大化。以代码编写为例,像Cursor这样的工具,提供了传统的人机交互界面,同时无缝集成LLM能力,允许人类以更大的块来操作。这类应用的关键特征包括:LLM对上下文的有效管理、协调LLM的多次调用、以及应用特定的图形用户界面(GUI)的重要性。GUI能够让用户直观地审计AI的工作,通过可视化差异(如代码的红绿变化)和简单的操作(如Command+Y接受,Command+N拒绝)来加速验证过程。此外,一个重要的概念是“自动化滑块”,允许用户根据任务复杂性调整AI的自主程度,从提供少量建议到全权代理。总而言之,未来的软件将普遍具备部分自动化能力,开发者需要思考如何让AI能够“看到”和“行动”如同人类,同时保持人类的监督和控制,确保AI的产出可审计、可控。 第五部分:人机协作的策略与最佳实践 (Strategies and Best Practices for Human-AI Collaboration) 在与LLMs协作时,核心目标是最大限度地提升“生成-验证”循环的速度。实现这一目标的关键策略有两点:首先,通过GUI等可视化工具大幅加速人类的验证过程,因为视觉信息比纯文本更容易理解和处理,能更快地将信息传达给大脑。其次,必须学会“牵着AI的缰绳”,避免过度激进的AI代理。LLMs容易产生过大的、难以审计的输出(例如一次性生成1000行代码的diff),这反而会成为人类的瓶颈。因此,最佳实践是小步快跑、增量迭代,确保每一次修改都经过细致的审查。对于提示词的编写,越具体、越精确的提示,越能提高AI生成结果的准确性,从而减少验证失败的次数,加速整个开发流程。这种“牵着AI的缰绳”的理念同样适用于教育等领域,通过将课程内容结构化、可审计化,确保AI在教学过程中不偏离预设的教学大纲。 第六部分:面向AI代理的软件构建 (Building Software for AI Agents) 随着AI代理成为数字信息的新的消费者和操纵者,我们需要重新思考如何构建软件。以往的软件主要面向人类用户(通过GUI)或传统计算机程序(通过API),现在则多了一个“类人”的计算机——AI代理。这意味着我们需要为LLMs设计更直接、更易于理解的接口。例如,在网站中增加llms.txt文件,直接用Markdown格式告诉LLM网站内容,这比让LLM解析复杂的HTML更高效、更不易出错。大量为人类编写的文档(包含图片、粗体、列表等)对LLM来说并不友好,因此将文档转换为Markdown格式,并替换“点击”等人类操作指令为LLM可执行的curl命令,能够极大地提升LLM访问和利用信息的效率。一些工具如git.ingest和Deep Wiki已经开始尝试将GitHub仓库内容或维基百科页面转换为LLM友好格式,这表明了未来软件基础设施将更多地考虑AI代理的需求。虽然LLMs未来可能具备点击网页等操作能力,但通过优化信息呈现方式,让LLMs更容易“阅读”和“理解”信息,仍然是提升效率的关键。 总结 (Conclusion) 当前是进入软件行业一个非凡的时代,我们将见证并参与到软件的全面重写中。这些代码将由专业开发者和“字节码程序员”(通过自然语言与LLM交互的非专业人士)共同完成。LLMs正扮演着公用事业、工厂(Fab)和操作系统的多重角色,但其发展仍处于早期阶段,类似于1960年代的计算机操作系统。与它们合作,就像与有超能力但存在缺陷的“人工智能灵魂”共事。因此,在构建LLM应用时,我们需要设计能够实现“部分自动化”的产品,通过精心的GUI和UI/UX设计来加速人类的生成-验证循环,并确保AI始终在可控范围内。同时,软件基础设施也需要为AI代理进行优化,提供LLM友好的文档和数据访问方式。从“钢铁侠增强套装”到“钢铁侠代理人”的转变,代表着未来十年自动化程度的不断提升,这是一个令人兴奋且充满挑战的旅程,需要我们共同努力去构建。

June 19, 2025 · 小茄墩