大语言模型智能体 (LLM Agents) 入门指南
人类具备一项非凡的能力,那就是能够持续吸收信息、做出决策、采取行动、观察变化,并由此做出下一个决策。我们的整个生命就是一个永无止境的观察、思考和行动的循环。研究人员希望将这个概念应用到大型语言模型(LLM)中,使其能够不断做出新的决策,逐步接近具备解决复杂问题的能力。
什么是智能体
科幻电影和间谍电影中经常出现一种中央人工智能,它与主角交流,搜索互联网和各种秘密数据库,引导主角完成任务。例如电影《钢铁侠》中的贾维斯(J.A.R.V.I.S.)就是一个典型例子。
是什么让贾维斯如此特别?钢铁侠甚至不需要告诉它如何解决问题,它会自己找到方法。这正是我们希望通过智能体实现的目标。
如何构建智能助手
核心毫无疑问是超级强大的大型语言模型,它能够理解问题、观察环境并基于此做出决策。除此之外,再加上一些将语音转换为文本的模型以及解释图像内容的模型,我们就拥有了构建自己的'贾维斯'所需的一切。
智能助手需要掌握的技能包括:
- 感知能力:理解文本、图像、音频等多模态输入。
- 推理能力:基于上下文进行逻辑分析和决策。
- 行动能力:调用外部工具或 API 执行具体操作。
如何连接各项技能 - 智能体背后的理论
智能体是一种可访问一系列工具的组件。其主要特征在于它能够做出明智的决策并利用适当的工具,直到找到足够好的答案。
在大型语言模型应用方面,智能体的概念可能是最引人注目的进展。它让我们梦想着拥有一个能够自主控制流程、进行研究或通过找到生存概率最高的方案来拯救超级英雄的人工智能。
当我们应用智能体的概念时,我们不仅仅使用大型语言模型来回答问题,而是将其作为大脑,处理它看到的观察结果并决定接下来要做什么。我们人类一直在做着同样的事情:面对要解决的任务,寻找能够帮助我们尽可能轻松地完成任务的方法和工具。
通过应用这种概念和使用正确的工具,计算机也能够解决复杂的查询。例如,如果我们使用大型语言模型将文本转换为 SQL,当执行生成的 SQL 时发生错误,LangChain 的 SQLAgent 不会轻易放弃,而是尝试解释错误并修正问题。
刚刚提到的 SQL 智能体使用了一套名为 SQLDatabaseToolkit 的 LangChain 工具。目前可用的工具并不局限于 SQL。本文将在下面详细介绍 LangChain 已经提供的工具,不过请记住,工具可以是任何东西。之前提及大型语言模型在简单的分析计算方面有时表现不佳,因此解决这类问题需要的是一个能够识别分析任务并使用计算器解决问题的智能体。
OpenAI 的 ChatGPT 已经做到了这一点。如果你通过 Plus 订阅发送请求,你会看到一个分析步骤,聊天机器人根据分析的结果决定如何响应请求。它会从一系列工具中进行选择,例如 Python REPL 用于解决分析任务,需要最新信息时使用网络搜索,用户要求创建图像时使用 Dall-E3 等等。
智能体的运作方式 - 思维链
人类的一大优势就是能够吸收大量的信息,过滤掉不重要的细节,并基于关键信息做出决策。我们通常首先将大问题分解为假设,然后尝试通过观察逐步支持或反驳这些假设。
我们使用'思维链提示'模拟这一过程,将多步骤问题分解为中间步骤。
它可以用 3 个简单步骤来描述:
- 我们发起一个行动 (Action),大型语言模型观察来自选定环境的反馈。
- 收集所有信息并利用这些信息来决定下一步采取什么合适的行动。
- 如果我们反复执行这些步骤来解决更复杂的任务,我们会使用一种称为'推理追踪 (reasoning trace)'的方法,追踪过程中经历的步骤或阶段,以得出结论或解决方案。
因此,如果要实现类似功能,首先需要一个潜在行动的集合。LangChain 以'工具箱'的形式来提供可能的功能组合。
这些工具箱提供各种函数或功能供大型语言模型根据当前任务进行选择。
工具的描述方式需要让智能体清楚地知道每个工具的用途。 这合乎常理,因为大型语言模型和智能体无法施展魔法,它们至少需要这些描述作为输入,才能决定使用哪些工具完成任务。
LangChain 已经提供了一些内置工具,同时也允许你创建自己的工具集。
那么还剩下哪些内容有待了解呢?我们需要一个使用这些工具的'执行者',这就是智能体执行器 (Agent Executor)。
智能体执行器 - 智能体的幕后主脑
智能体能够连续使用正确的工具,持续观察结果,然后决定下一步需要哪些工具。这种迭代执行功能的操作由所谓的智能体执行器完成。
整个过程会反复进行,直到达到预定义的终止条件。下图展示了一个例子,使用 LangChain 中的 SQLDatabaseToolkit 来找到'我们的数据库中有多少客户'这个问题的答案。


