March 20, 2024

Insights | 了解LLM Agent

Dive into the latest perspectives, insights,
and updates from our global community.

Written by:

在我之前的博文(《操作生成式人工智能》第一部分第二部分)中,我讨论了在 NGP Capital 中使用大型语言模型 (LLM) 的问题。大语言模型智能体不仅为 大语言模型 提供了有用的补充功能,还将为下一代自学习软件系统铺平道路。对于初创公司的创始人,智能体提供了一种将大语言模型的常识和推理能力与他们的产品集成的方法,创造出超越以往能力的应用程序,甚至可以解决以往无法解决的用例。

如果你曾尝试用大型语言模型来解决复杂的数学问题,你可能会注意到它们往往会失败。这通常被解释为大型语言模型天生愚蠢的证明,因为它们不仅找不到正确的结果,更糟的是,似乎不承认它们错了。然而,要理解为什么会出现这种情况,我们需要将问题分成两个阶段:

  1. 推理:理解如何从原理上解决问题的过程
  2. 运算:与解决问题有关的实际数字运算

当我们要求模型在思考中用语言表达时,我们可以看到,一个好的模型通常在推理方面表现出色(1) - 它往往能提出正确的思考过程。然而,失败的原因是运算能力不足(2)。我们会在最初对这一结果感到惊讶,因为简单的算术看来不过是一个微不足道的问题。考虑到大预言模型归根结底是文本预测算法,我们就能理解这个出现问题的根本原因:大语言模型本身并不具备进行计算的能力。幸运的是,作为大语言模型的用户,这个问题已经开始得到解决。

解决方案是为大语言模型配备工具--在本例中,我们希望给大语言模型访问计算器的权限。有趣的是,大语言模型在处理此类问题时与人类表现得非常相似。在没有计算器的情况下,我可能会得出一个听起来合理但最终是错误的答案,但如果有了计算器,再加上一定的数学背景,解决这类问题将变得轻而易举,正如它本应的那样。同时,我们应该牢记,能够推理(1)问题是如何解决的是比算术部分(2)更令人印象深刻的进步,后者原则上已由Charles Babbage和Ada Lovelace在 19 世纪解决了。

为大语言模型配备工具让我们进入了大语言模型智能体的世界。在下一节中,我们将深入探讨大语言模型智能体的定义,以及它们的常见特征和用例。为了说明市场的发展趋势,《The Information》2 月 7 日报道称,OpenAI 目前正投入巨资开发大语言模型智能体。幸运的是,对于开发基于大语言模型智能体的软件的初创公司来说,潜在范围非常广泛。大多数大语言模型智能体的实现将需要在由技术、组织和流程信息安全措施定义的企业边界内工作。这意味着我们并不指望 OpenAI 工具能够取代内部或第三方的智能体开发工作。

什么是大语言模型智能体?

大语言模型智能体是一个自主的目标驱动系统,使用大语言模型作为其核心推理引擎。这使得大语言模型能够专注于它最擅长的任务,并在其他工具更适合时使用其他资源。这些工具包括上文讨论的计算器,以及其他示例,包括 Python REPL、谷歌搜索和AWS Lambda 函数运行程序等。但重要的是,这些只是LangChain等平台上可用的现成替代品的一些例子,在实践中,开发人员可以在还没有工具的情况下开发自己的工具,而且这些工具的范围实际上是无限的。

在研究大语言模型智能体的可能用例时,我们可以找到至少为两种需求构建的大语言模型:一种是用于对话的智能体,另一种是为处理输入和输出的任务导向智能体,例如它可以自主地与外部APIs交互,既作为资源又执行过程的输出。

在撰写本文时,OpenAI 安全系统负责人Lilian Weng 在一篇博文中描述了大语言模型智能体的关键组成部分。在本文中,我们将简化概述,只关注大语言模型智能体系统中内各部件的作用。如果想深入了解每种可能的方法,建议阅读Lilian Weng的博文。

图 1: 大语言模型智能体的组成部分

大语言模型智能体的核心是规划模块。它需要了解使用中的所有资源,并能够理解何时可以使用这些资源。当前的大语言模型规划基线称为"思维链"(Chain-of-Thought)。它不只是询问模型该做什么,而是促使它逐步思考,这有助于模型更好地将复杂任务分解为更小、更简单的步骤。通过自我反思,模型可以了解自己过去的行动,并纠正以前的错误,从而进一步提高工作效率。这由图1中从记忆到规划的虚线所示。

上文我们已经介绍了一些工具的示例,因此这里我们重点介绍一下使用工具的原则。一般来说,工具应该是模块化和原子化的,这样才能很好地与上文讨论的 "思维链 "流程的各个步骤相匹配。为大语言模型智能体配备外部工具,还能显著扩展其能力。对于软件开发人员来说,将工具视为专门的外部API最为实用。无论这些工具是否具体符合 REST API 结构或类似结构,它们对大语言模型智能体的作用都类似于外部API 对应用程序的作用。工具可以是神经式的(利用神经网络模型),也可以是符号式的(如上文讨论的计算器)。

行动是一个与工具非常接近的概念。当一个大语言模型智能体使用某一工具时,它决定采取一个行动。该行动可以是:1)在智能体的思维过程中,也可以是 2)作为过程输出的外部行动。对话型智能体通常仅限于前者,而任务导向型智能体也会参与后者。在一些简单的互动中,如果智能体认为某项行动不会给推理带来额外的价值,那么它也可以决定不采取任何动作。

最简单的大语言模型智能体可以没有记忆功能,但几乎每个实际实现都将需要某种程度的记忆。在智能体的语境中,记忆意味着的不仅仅是增强检索生成(RAG),后者是一种利用企业知识增强大语言模型的常用技术。智能体背景下的记忆分为两种:短期记忆和长期记忆。短期记忆指的是回答单个问题时的思路,通常适合于大语言模型 的上下文窗口,而长期记忆则是智能体与用户之间更持久的事件日志,并持久保存到外部存储器中。

示例用例 - 语义搜索智能体

语义搜索基于意义,与侧重于使用确切词汇的词汇搜索不同。在这篇文章中,我不会深入探讨语义搜索的概念(如嵌入式),但下面的用例应该可以在不了解这些概念的情况下阅读。

随着语义搜索的普及和新颖性价值的降低,一个明显的问题是,将简单的语义搜索作为单一工具来应用往往是不够的。终端用户往往会更细致地理解搜索意图,而不仅仅是搜索最接近的语义匹配。例如,请考虑以下搜索短语:"我想找到在欧洲从事量子软件,至少获得了500万美元的股权融资的公司"。可以将其拆分为以下几个部分:

  1. "从事量子软件的公司 "是实际的语义搜索,用户期望的是语义理解而不是精确的关键词匹配
  2. "在欧洲 "是一个过滤器,用户希望以二进制的方式进行搜索。用户只对欧洲境内的公司感兴趣,而不是其他地方的公司。
  3. "筹集了至少500万美元的股权融资 "是另一个过滤器,需要用逻辑运算符 "AND "将其与前一个过滤器结合起来。

现在,如果使用完整的搜索短语进行语义搜索,我们将只根据嵌入向量的余弦相似度等来查找最接近的嵌入匹配。匹配结果可能会偏向于股权融资超过 500 万美元的欧洲公司,但并不能保证一定能得到这样的结果。了解可用的筛选器,能够从搜索短语中提取筛选器,并能够构造正确的搜索API调用,以正确应用搜索短语和过滤器。这在 GPT 出现之前几乎是不可能的,但现在对于大语言模型智能体来说却是小事一桩。

现代的解决方案是建立一个具有语义搜索工具和可用过滤器知识的大语言模型智能体。智能体将利用其推理能力解释用户的实际搜索意图,并将其分解为过滤器和搜索短语。这些信息将被发送到矢量数据库进行组合搜索,过滤器以二进制方式使用,从而对用户的搜索意图做出正确的评估。

在实践中,这种实现方式将 大语言模型智能体与检索增强生成(RAG)相结合,将两个AI使用的热词融合为一个连贯的解决方案。对于创始人来说,这是一个如何将大语言模型的通用知识和推理能力与更具体的软件工具相结合的范例。类似解决方案的全部范围仅受想象力的限制,需要推理和判断的部分则交由大语言模型智能体完成。

多智能体协作

既然我们已经了解了大语言模型智能体的工作原理,那么接下来的问题是什么呢?事实证明,多个智能体协作,甚至是智能体群,往往比单个智能体表现得更好,能够解决单个智能体无法解决的问题。同样令人惊讶的是,这类似于团队合作。不同的智能体可以扮演不同的角色,它们可以以协作或竞争的方式相互影响。

举出多智能体交互的示例用例很容易。一个实际例子就是医疗保健的临床决策支持。通过采用多个大语言模型智能体作为不同医疗领域(如心脏病学、放射学、肿瘤学)的专家,并由一个大语言模型智能体来协调诊断工作,有可能取得比普通大语言模型更好的结果。这种想法是基于引导专家智能体从特定角度处理病例。这使他们能在自己的专业领域内更加专注、更能发挥能力和理解力,而无需考虑问题的每一个潜在角度。而协调智能体可以在相互关联的背景下评估输出,并使用其更通用的方法来决定最可能的诊断和最有效的治疗方案。

下一步是什么?

我们 NGP Capital 会继续开发人工智能驱动的投资平台,并在这一过程中随时利用大语言模型智能体。大语言模型智能体在构建成为几乎所有市场垂直领域内产品的构建基础。

一个被一定程度上讨论的现象是,大语言模型智能体能否增强或取代机器人流程自动化(RPA)。由于大语言模型具备推理能力并能独立行动,因此其能力似乎可以在更广泛、更通用的用途范围内超越RPA。我们不仅可以期待LLM自动化确定性任务,还可能期待LLM根据相对通用的指令执行一定程度的判断。

一个更广泛的愿景是将大语言模型智能体视为实现软件2.0的一种使能技术,如AI重量级人物Andrej Karpathy在这里所定义。软件2.0概念基于这样一种思考:传统软件(这里称为软件1.0)是程序员为计算机编写的明确指令。它是针对一个非常具体的目标的指令点,无法贡献或解决几乎相同(但不完全相同)的问题。

图 4:软件 1.0 与软件 2.0(作者:Andrej Karpathy)

软件 2.0 利用人工智能,特别是神经网络,来构建智能的自学习系统。源代码可以是定义软件理想行为的数据集和作为软件骨架的神经网络架构,而不是编写明确的程序代码。wiz.ai 在本文中讨论了大语言模型智能体作为软件 2.0 推动者的作用。在实践中,大语言模型智能体可以成为软件 2.0 的指挥中心,协调不同大语言模型及其对不同工具的动态调用,使软件深入理解企业知识。