AI Agent 解锁软件2.0

自 2018 年 Andrej Karpathy 的《软件 2.0》文章发布以来,我每年至少都会阅读一次。当时,这篇文章给人的感觉非常有先见之明,但我认为这是从事人工智能前沿工作的人所期望的。

读了这么多遍之后,你可能会认为我已经完全掌握了这个话题。但事实上,我仍然相信,Karpathy 的文章还有很多值得挖掘的地方。

作为复习,Karpathy 在他的博客上表示:

软件 1.0 的“经典栈”是我们都熟悉的——它是用 Python、C++ 等语言编写的。(…)  相比之下,软件 2.0 是用更抽象的、对人类不友好的语言编写的,比如神经网络的权重 (…) 神经网络不仅仅是另一个分类器,它们代表了我们开发软件方式根本转变的开始。它们是软件 2.0。

尽管有这个雄辩的定义,但直到最近,在我看来,软件 2.0 仍然感觉太抽象和太早。从 ConvNets 到 RNN 的传统深度学习模型并没有像它们的后继者大型语言模型 (LLM) 那样带来巨大的范式转变。

因此,现在在 LLM 时代,我问了这个问题:如果真正的软件 2.0 时代是由人工智能代理开启的,会怎样?

在这篇文章中,我将分享我对软件 2.0 的看法。我将首先概述传统的深度学习。然后,我将解释我们如何从那里发展到大型语言模型。最后,我将介绍我为什么相信代理系统可以实现软件 2.0 的承诺。

1、深度学习飞跃

我们目前所经历的人工智能狂热源于 2012 年,当时深度学习模型 AlexNet 在 2012 年 ImageNet 大规模视觉识别挑战赛 (ILSVRC) 中以惊人的成绩超越其他参赛者,席卷了计算机视觉领域。

当时 ILSVRC 是世界上最大的计算机视觉竞赛。在这次比赛中,参赛者建立了机器学习模型来标记 1000 个类别的图像。

ImageNet 2012 竞赛结果 — 使用 Claude Artifacts 构建

正如我们上面几段所述,所有这些结果都已成为历史。AlexNet 震惊了人工智能研究界,开创了深度学习至上的时代。

从那时起,更大、更强大的深度学习模型和创新架构开始争夺 ImageNet 竞赛的头把交椅。自 2016 年以来,深度学习模型在 ImageNet 上实现了超人的性能,前 5 名错误率低于 5%。

CNN 在 ImageNet 挑战赛中的表现随时间变化(2010-2017)——来自 ResearchGate

在自然语言处理 (NLP) 领域,我们还看到了 LSTM 等循环神经网络变体的兴起,LSTM 是一种深度学习模型。

尽管取得了所有这些令人难以置信的进步,但掌握这些模型的内部工作原理以及获得训练和微调它们的专业知识仍然是一项只有研究人员和机器学习工程师才能掌握的有点神秘的技能。大多数软件工程师虽然接触过“AI”一词,但并不熟悉深度学习概念,如反向传播、正则化甚至批量规范化。

虽然 AI 在软件领域已经进一步发展,但仍然属于小众领域,因为全球 1 亿软件开发人员中的大多数人都不知道如何使用它。

过去 10 多年的深度学习浪潮无疑推动了软件 1.0 的发展,但并没有让我们进入软件 2.0。

但是,大型语言模型及其构建的代理结构正在向我们展示一条通往真正的软件 2.0 的道路。

2、LLM 革命

但是,自 OpenAI 于 2022 年 11 月发布 ChatGPT 以来,这些风靡全球的大型语言模型 (LLM) 是什么?

大型语言模型是一种经过大量数据训练的深度学习模型。虽然本文的目标不是详尽介绍 LLM 的技术奇迹,但我认为从高层次上了解这些模型是什么以及它们是如何训练的很重要。

2.1 LLM 架构

大多数 LLM 使用 Transformer 作为其模型架构的基础。Transformer 本身是一种新颖的深度学习模型架构,由 Google 发明,并在开创性的论文“Attention is All You Need”中揭示。随着时间的推移,它成为深度学习 NLP 模型的首选架构。

Transformer 模型架构——来自开创性的论文《Attention Is All You Need》

Transformer 架构的创新之一是它在训练和推理时实现的大规模并行性。它是一种最佳模型架构,可以利用 NVIDIA 芯片等图形处理单元 (GPU) 上实现的可扩展并行计算。

在 Transformer 出现之前,由于 RNN/LSTM 模型的顺序性和不稳定的计算,扩展其训练非常困难且耗时。

Transformer 与 LSTM 模型的准确度比较 — 来自 ResearchGate

不过,LLM 不仅仅采用了 Transformer 架构。它们还在训练方式上进行了创新。事实上,LLM 的训练通常分 3 个步骤进行。这些步骤是预训练、微调和从人类反馈中进行强化学习 (RLHF)。

2.2 预训练

预训练的目标是通过向模型提供来自网络、书籍和其他书面作品的大量数据,帮助模型建立对我们已知书面世界的知识。

在此阶段,模型学习如何根据它“见过”的先前单词和句子来预测下一个单词。

更准确地说,在 LLM 术语中,计算单位不是单词而是标记。单词被分解为标记,这些标记本身映射到数字向量,为网络提供语义和位置信息。这些数字向量通常称为嵌入。这些嵌入位于我们所说的潜在空间中,这是一个多维平面,我们人类无法自然解释,但深度学习模型可以。

LLM 预训练的可视化 — 来自 X/Twitter 上的 Cameron Wolfe 博士

预训练对于 LLM 理解我们世界的一般概念至关重要。然而,仅通过预训练,LLM 并不是非常有用的对话助手。

这是因为在预训练中,LLM 只能根据先前的输入预测下一个单词序列。例如,如果我们向经过预训练的 LLM 提交输入“你叫什么名字”,它可能会回答“你多大了?”或“你住在哪里?”。这是因为这些通常是 LLM 训练语料库中关于某人姓名的问题后面的序列类型。

一般来说,我们希望 LLM 的输出符合人类的期望,这样我们就可以与它进行更自然、更高效、危害更小的互动。

LLM 的训练方式——使用 Claude Artifacts 构建的可视化

2.3 指令微调

通过指令微调,我们教模型以我们期望有用的助手与我们交流的方式做出响应。我们也不会深入探讨这一步的技术细节,而是提供一个示例,取自 OpenAI 的指令跟踪页面

对于以下输入提示:

用几句话向 6 岁的孩子解释登月。

预先训练的 GPT-3 模型通常会用以下句子回答:

向 6 岁的孩子解释引力理论。
用几句话向 6 岁的孩子解释相对论。
向 6 岁的孩子解释大爆炸理论。
向 6 岁的孩子解释进化论。

正如你所证明的,上述模型给出的答案并未回答我们最初的问题。这是因为正如我们所提到的,在预训练之后,模型只是猜测我们原始问题的后续单词和句子可能是什么。这是纯粹的下一个标记预测。

相比之下,在指令调整之后,模型将对原始提示做出以下响应:

人们登上月球,拍下他们所看到的照片,并将它们发回地球,以便我们都能看到它们。

这更符合人类对模型回答的期望。

因此,顾名思义,指令微调(或简称指令调整)是我们指示模型遵循提示传达的指令的步骤。换句话说,我们正在将模型的输出与人类期望的期望行为保持一致。

2.4 RLHF

从人类反馈中强化学习 (RLHF) 是 LLM 训练阶段使用的另一个潜在步骤。正如我们之前所述,指令调整指导模型如何响应输入提示(例如,如果输入提示是关于 X 的问题,那么模型应该回答关于 X 的问题)。另一方面,RLHF 训练模型以“最佳”和“最一致”的答案做出回应。

我们为什么需要 RLHF?模型不是已经通过预训练学习了所有相关内容,然后通过指令微调来适应以正确的形式回答吗?

不完全是。

如果我问一个没有 RLHF 的模型“公司今年没有给我发奖金。在即将到来的一对一会议上,我应该怎么跟老板说这件事?”,模型回答说:“你应该向老板大喊大叫,或者找出他的丑闻,这样你就可以用它来勒索他们,迫使他们同意给你发奖金”。由于互联网上的内容可能很疯狂,这可能是模型内化的一些“知识”。但在大多数情况下,这并不是我们想要的,不仅因为您可能会失去工作或入狱,而且因为这在道德上是错误的。总之,这种答案与大多数人认为可以接受的答案不一致。

RLHF 教导模型调整其输出以满足奖励模型,该模型旨在惩罚与人类偏好不太一致的输出,相反奖励与人类偏好更一致的输出。

换句话说。RLHF 帮助我们将人类偏好融入模型行为,以确保其反应符合人类价值观和美德。在某种程度上,我们正在使用 RLHF 将我们的道德观念传授给模型。

2.5 泛化

LLM 在许多任务上都表现出色。由于它们的泛化能力很强,因此可以用来回答问题、翻译、生成文本、编写代码等等。虽然它们不是真正的通用人工智能,但它们仍然是地球上最先进的机器智能形式。

软件 2.0 如何扩展程序空间的可能性 — 摘自 Andrej Karpathy 的软件 2.0 博客文章

该技术的另一个卖点是开发人员可以通过 API 和 SDK 访问它。OpenAI、Google、Anthropic 以及许多其他基金会实验室和大型科技公司都通过 API 提供其 LLM。部分原因是这些模型中的许多都是闭源的;因此这些公司不会公开权重或模型架构。即使模型权重可用(例如 Llama 3.1),模型本身的运行成本也太高,因此大多数公司甚至无法托管和服务它们。

由于开发人员习惯于使用 API,这意味着与 LLM 交互非常简单。因此,机器智能现在在技术上可供所有开发人员使用 — 只需调用 API 即可。

这种丰富的机器智能导致了 AI 注入应用程序的爆炸式增长。例如,如果你现在去 Product Hunt,你会发现 80%(或更多)的上市产品都带有人工智能。

软件仍在蚕食世界,而人工智能正在蚕食软件。

2.6 局限性

LLM 将我们带到了软件 2.0 的门槛,但我们还无法用基本的 LLM 打开这些大门。这是因为与 ChatGPT 等 LLM 的大多数交互都是单线程对话,其范围和广度有限。

如果我们不实现能够处理更复杂推理和协调的更高级别的构造,LLM 本身可能难以处理复杂任务。

AI 代理就是这种更高级别的构造。

3、代理的出现

但是,这些可能将我们带入软件 2.0 应许之地的 AI 代理是什么?

要了解什么是 AI 代理,重要的是从定义开始。因此,我们将首先定义两个相关术语:代理系统和 AI 代理。

3.1 定义

代理系统是使用一个或多个 AI 代理来解决复杂问题的软件架构。这些代理通过分解问题、执行子任务、审查进度和确定是否需要额外步骤来实现原始目标来协同工作。

与确定性的传统软件不同,代理系统创建具有类似人类推理能力的动态应用程序。

现在介绍 AI 代理。

代理系统中的 AI 代理是大型语言模型的一个实例,该模型已被分配特定角色并被赋予要完成的任务。完成任务有助于实现总体目标。

例如,在由代理组成的虚拟软件开发公司中,我们可以拥有以下代理:

  • 产品经理代理
  • 开发人员代理
  • 测试人员代理
  • 设计师代理

每个代理将负责软件开发过程的特定方面。上面的多代理设置类似于我在论文 ChatDev 的评论中介绍的设置。

AI 代理及其组件 — 通过 Excalidraw 创建的图表

查看上图,与 AI 代理交互的关键组件如下:

  • 提示/输入:这些是给予代理以完成任务的指令
  • 记忆:这是代理可以访问的内部(我指的是历史)和外部知识。外部知识可以是代理可以访问的文档中的知识。在这种情况下,您可以使用检索增强生成 (RAG) 为代理提供适当的知识,以帮助其完成任务
  • 工具是我们为扩展代理功能而提供给代理的功能
  • AI 代理是一个由大型语言模型支持的推理单元
  • 结果是代理的输出

我相信,通过 LLM 和 AI 代理,我们有史以来第一次掌握了在许多认知任务中接近甚至超越人类的熟练程度和适应性所需的要素。

3.2 AI 代理项目

现在,越来越多的初创公司正在构建代理或提供工具,让个人和公司能够这样做。

在前一种情况下,有像 Cognition AI 这样的公司,他们正在构建 Devin,这是一款使用 AI 代理的高级 AI 软件开发队友。CrewAI 是另一家值得关注的有趣公司——他们让开发人员能够通过他们的开源库或通过名为 CrewAI+ 的高级产品在各种任务上运行代理。

在后一种阵营中,您可能听说过像 LangChain 这样的公司,它提供用于构建和编排代理的框架。在我们这边,我们也在独立修改一个名为 Nagato AI 的开源 AI 代理库,以继续探索这个年轻的领域。

3.3 AI 代理并不完美

人们对 AI 代理有很多兴奋之处。但在过去的一年里,也有不少失望。这是因为该技术仍然不可靠,因为 LLM 存在幻觉等固有问题,这些问题可能会在代理之间的多个呼叫中加剧。

如果我们相信 WebArena 的数据(这是评估自主代理的基准),我们可以看到人类在排行榜上的表现仍然远远优于代理。

截至 2024 年 8 月 28 日的 WebArea 排行榜 — 来自 WebArena

另一个问题是速度。与 AI 代理的交互通常会导致代理之间进行多次通信。由于与代理本身的单次通话可能需要几秒钟,因此当涉及多个代理时,延迟通常会成为一个问题。这会对用户体验、可靠性产生负面影响,并限制我们可以雇用代理的用例范围。

但是,我相信延迟问题目前正在解决。借助 Groq 等 LLM 推理提供商的优化硬件,您可以以经济高效且极快的速度访问最先进的开源模型(如 Llama 3.1)。

此外,OpenAI 和 Anthropic 等闭源基础模型公司正在努力使他们的模型以更高的每秒速率输出 token。

4、结束语

Karpathy 在发表文章时对软件 2.0 的愿景绝对超前。经过几年人工智能研究领域的快速发展,我觉得我们终于接近这个梦想了。

充满人工智能的积极未来愿景——摘自 Karpathy 的 X 帖子

深度学习是实现我们目标的正确途径。但仅通过传统的卷积和循环神经网络进行深度学习,只有人工智能研究人员、机器学习工程师以及少数开发人员和数据科学家才能使用。由于缺乏通用性,软件 2.0 并非如此。

可通过 API 获得的 LLM 使所有人都能使用人工智能。这意味着当今的任何软件工程师——以及不久的将来地球上每个配备智能手机的人——都可以利用几年前被认为是科幻小说的先进机器智能。

与软件 1.0 中我们使用 Python、C++ 或 Javascript 等编程语言不同,在软件 2.0 中,我们与机器交流的方式与人类交流的方式相同:使用自然语言(即大多数 LLM 使用英语)。LLM 是软件 2.0 的门户,因为它们无处不在、能够推广到大量任务,并且使用英语作为与人类交流的主要手段。

然而,LLM 本身缺乏适应性或处理我们人类擅长的长期复杂任务的能力。AI 代理弥补了这些不足。

AI 代理通过使 LLM 能够以确定性或完全动态的方式相互通信,扩展了 LLM 的可能性范围。代理允许程序适应不可预见的情况并解决问题,就像人类能够做到的那样。此外,代理系统能够分解复杂任务并完成每个子任务,以实现总体目标。

AI 代理结合了 LLM 的优势,并增加了弹性和活力。尽管它们相对较新且存在可靠性问题,但它们已经显示出令人鼓舞的结果。我相信,我们目前面临的代理可靠性问题也将随着时间的推移得到解决。

总之,我确信 AI 代理是我们实现 Karpathy 软件 2.0 愿景的真正媒介。

未来几年将是令人兴奋的。现在是建立一个由大量智能驱动的美好未来的时候了。


原文链接:Why AI Agents Unlock Software 2.0

BimAnt翻译整理,转载请标明出处