大语言模型智能体(LLM Agent)正变得越来越普及,甚至可能取代我们习以为常的传统对话型大语言模型。这些强大能力并非一蹴而就,而是众多组件协同工作的结晶。
本文包含超过 60 张定制图片,通过视觉化的方式,带你深入了解大语言模型智能体领域、其主要组成部分,并探索多智能体框架。
什么是大语言模型智能体?
想了解什么是大语言模型智能体?我们不妨先回顾一下大语言模型的基本能力。传统上,大语言模型仅通过预测下一个词元(token)来生成文本。
通过连续采样多个词元(token),我们可以模拟对话,并使用大语言模型对我们的查询给出更详尽的答案。
然而,随着"对话"的进行,任何给定的大语言模型都会暴露出其主要缺点之一:它不记得对话内容!
大语言模型常常无法胜任的任务还有很多,包括基本的数学运算,如乘法和除法:
难道说大语言模型就如此不堪吗?当然不是!我们无需苛求大语言模型无所不能,因为可以通过外部工具、记忆和检索系统来弥补它们的不足。
通过外部系统,可以增强大语言模型的能力。Anthropic 将此称为"增强型大语言模型"。
例如,当遇到数学问题时,LLM 往往会调用诸如计算器之类的外部工具。
所以,这个"增强型大语言模型"就是智能体了吗?说不是吧,又有点像,说是吧,又不太像……
让我们从智能体的定义开始:
智能体是可以被视为通过传感器感知其环境,并通过执行器作用于该环境的任何事物。
— Russell & Norvig, AI: A Modern Approach (2016)
智能体与其环境互动,通常由几个重要组成部分构成:
- 环境 (Environments) — 智能体与之互动的世界
- 传感器 (Sensors) — 用于观察环境
- 执行器 (Actuators) — 用于与环境互动的工具
- 效应器 (Effectors) — 决定如何从观察到行动的"大脑"或规则
此框架适用于与各种环境交互的各类智能体,例如与物理环境交互的机器人或与软件交互的人工智能智能体。
我们可以对这一框架进行概括,使其更适合用于"增强型大语言模型"的构建。
使用"增强型"大语言模型,智能体可以通过文本输入(因为大语言模型通常是文本模型)来观察环境,并通过使用工具(如网络搜索)来执行某些操作。
为了选择要采取哪些行动,大语言模型智能体需要一个至关重要的组成部分:其规划能力。为此,大语言模型需要能够通过诸如思维链之类的方法进行"推理"和"思考"。
有关推理的更多信息,请查看 大语言模型推理可视化指南
利用这种推理行为,大语言模型智能体将规划出需要采取的必要行动。
这种规划行为使智能体能够理解情况(LLM)、规划后续步骤(规划)、采取行动(工具)并跟踪已采取的行动(记忆)。
根据系统的不同,你可以构建具有不同自主程度的大语言模型智能体。
在不同的人看来,一个系统越是依赖大语言模型来决定系统的行为方式,该系统就越具有"自主性 (agentic)"。
在接下来的章节中,我们将通过大语言模型智能体的三个主要组成部分:记忆、工具和规划,来探讨各种实现自主行为的方法。
记忆
大语言模型这玩意儿,记性不太好,或者更准确地说,和它们互动时,它们压根儿就不往脑子里记。
例如,当你向大语言模型提出一个问题,然后紧接着提出另一个问题时,它不会记住前一个问题。
我们通常称之为短期记忆(或工作记忆),它充当近即时上下文的缓冲区。也就是说,它保存了智能体最近采取的行动。
但是,大语言模型智能体还需要跟踪可能数十个步骤,而不仅仅是最新的操作。
这被称为长期记忆,因为大语言模型智能体理论上可能需要记住数十甚至数百个步骤。
让我们探索几种让这些模型拥有记忆的技巧。
短期记忆
启用短期记忆最直接的方法是使用模型的上下文窗口,这本质上是大语言模型可以处理的 token 数量。
上下文窗口通常至少为 8192 个 token,有时可以扩展到数十万个 token!
可以使用大的上下文窗口来跟踪作为输入提示一部分的完整对话历史记录。
只要对话内容没超出大语言模型的上下文窗口,这种方法就能很好地模拟记忆功能。但是,我们本质上不是实际记住对话,而是"告诉"大语言模型对话的内容。对于上下文窗口较小的模型,或者当对话历史记录很大时,我们可以借助另一种大语言模型来对之前的对话进行总结,从而压缩信息量。
通过不断总结对话,我们可以保持对话的大小。这将减少 token 的数量,同时仅跟踪最重要的信息。
长期记忆
大语言模型智能体中的长期记忆包括需要在较长时间内保留的智能体过去的操作空间。
启用长期记忆的常用技术是将所有先前的交互、操作和对话存储在外部向量数据库中。
为了构建这样的数据库,首先将对话嵌入到捕获其含义的数字表示中。
构建数据库后,我们可以嵌入任何给定的提示,并通过将提示嵌入与数据库嵌入进行比较,在向量数据库中找到最相关的信息。
这种方法通常被称为检索增强生成(Retrieval-Augmented Generation,RAG)。
长期记忆还能记住不同会话中的信息。比如说,你可能希望大语言模型智能体记住之前跟你聊过的研究内容。
不同类型的信息也可能与要存储的不同类型的记忆相关。在心理学中,有许多类型的记忆需要区分,但 用于语言智能体的认知架构 论文将其中四种与大语言模型智能体结合起来。
这种区分有助于构建自主智能体框架。语义记忆(关于世界的知识)可以存储在与工作记忆(当前和最近的情况)不同的数据库中。
工具
工具允许给定的 LLM 与外部环境(例如数据库)交互或使用外部应用程序(例如运行自定义代码)。
工具主要有两个用处:一是获取数据,帮你找到最新的信息;二是采取行动,比如安排个会,或者点个外卖啥的。
为了实际使用工具,LLM 必须生成符合给定工具 API 的文本。我们倾向于期望可以格式化为 JSON 的字符串,以便可以轻松地将其馈送到代码解释器。
请注意,这不限于 JSON,我们也可以在代码本身中调用该工具!
你还可以生成 LLM 可以使用的自定义函数,例如基本乘法函数。这通常被称为函数调用。
如果提示正确且广泛,一些 LLM 可以使用任何工具。工具使用是当前大多数 LLM 都能胜任的事情。
一种更稳定的访问工具的方法是通过微调 LLM(稍后会详细介绍!)。
如果智能体框架是固定的,则可以按给定的顺序使用工具……
……或者 LLM 可以自主选择使用哪个工具以及何时使用。如上图所示的 LLM 智能体本质上是 LLM 调用的序列(但具有自主选择操作/工具等功能)。
换句话说,中间步骤的输出被反馈到 LLM 中以继续处理。
Toolformer
工具用得好,能大大增强大语言模型的能力,弥补它的不足。因此,最近几年,关于工具使用和学习的研究才如雨后春笋般涌现。
" 使用大型语言模型进行工具学习:一项调查 "论文的注释和裁剪图片。随着对工具使用的日益关注,(自主)LLM 有望变得更加强大。
许多此类研究不仅涉及提示 LLM 使用工具,还涉及专门训练它们用于工具使用。
Toolformer 是最早实现这一目标的技术之一,它是一种经过训练的模型,可以决定调用哪些 API 以及如何调用。
它通过使用 [
和 ]
token 来指示调用工具的开始和结束。例如,当给出提示"5 乘以 3 是多少?"时,它会开始生成token,直到到达 [
token。
之后,它会生成 token,直到到达 →
token,这表明 LLM 停止生成 token。
然后,将调用该工具,并将输出添加到到目前为止生成的 token 中。
]
符号表示 LLM 现在可以在必要时继续生成。
Toolformer 通过仔细生成一个包含模型可以训练的许多工具使用的数据集来创建此行为。对于每个工具,手动创建一个小样本提示,并用于采样使用这些工具的输出。
根据工具使用、输出和损失减少的正确性来过滤输出。生成的数据集用于训练 LLM 以遵守这种工具使用格式。
自 Toolformer 发布以来,出现了许多令人兴奋的技术,例如可以使用数千种工具的 LLM (ToolLLM ) 或可以轻松检索最相关工具的 LLM (Gorilla )。
无论如何,目前大多数 LLM(2025 年初)都经过训练,可以通过 JSON 生成轻松调用工具(正如我们之前看到的)。
模型上下文协议(MCP)
为了让大家更方便地在各种自主框架里使用工具,Anthropic 提出了模型上下文协议(MCP)。MCP 标准化了对天气应用程序和 GitHub 等服务的 API 访问。
它由三个组件组成:
- MCP 主机 — 管理连接的 LLM 应用程序(例如 Cursor)
- MCP 客户端 — 维护与 MCP 服务器的 1:1 连接
- MCP 服务器 — 向 LLM 提供上下文、工具和功能
例如,让我们假设你希望给定的 LLM 应用程序总结你存储库中的 5 个最新提交。
MCP 主机(与客户端一起)首先会调用 MCP 服务器以询问哪些工具可用。
LLM 接收到信息,可能会选择使用某个工具。它通过主机向 MCP 服务器发送请求,然后接收结果,包括使用的工具。
最后,LLM 接收到结果,可以解析用户的答案。
此框架通过连接到任何 LLM 应用程序都可以使用的 MCP 服务器,使创建工具变得更加容易。因此,当你创建一个与 Github 交互的 MCP 服务器时,任何支持 MCP 的 LLM 应用程序都可以使用它。
规划
工具的使用使 LLM 能够提高其能力。它们通常使用类似 JSON 的请求来调用。
但是,在大语言模型自主系统中,它是怎么决定用哪个工具,什么时候用的呢?
这就是规划的用武之地。LLM 智能体中的规划涉及将给定的任务分解为可操作的步骤。
该计划允许模型迭代地反思过去的行为,并在必要时更新当前计划。
为了在 LLM 智能体中启用规划,让我们首先看看这项技术的基础,即推理。
推理
规划可操作的步骤需要复杂的推理行为。因此,LLM 必须能够展示这种行为,然后才能采取规划任务的下一步。
所谓的"推理型"大语言模型,就是那种在回答问题之前会先"动动脑子"的大语言模型。
我在这里有点随意地使用术语"推理"和"思考",因为我们可以争论这是否是类人思考,或者仅仅是将答案分解为结构化步骤。
可以通过大约两种选择来启用这种推理行为:微调 LLM 或特定的提示工程。
通过提示工程,我们可以创建LLM 应遵循的推理过程示例。提供示例(也称为小样本提示 )是指导 LLM 行为的好方法。
这种通过提供思维过程示例的方法,就是大名鼎鼎的思维链,它能让大语言模型的推理能力更上一层楼。
还可以通过简单地说"让我们逐步思考"来启用思维链,而无需任何示例(零样本提示)。
当训练 LLM 时,我们可以选择给它提供足够多的包含思维过程示例的数据集,或者让 LLM 自己摸索出思考过程。
DeepSeek-R1 就是个很好的例子,它使用奖励来引导思考过程的使用。
想要了解更多关于推理大语言模型 (Reasoning LLMs) 的信息,请参阅我的可视化指南。
推理与行动
大语言模型具备推理能力固然很好,但还需要使其能够规划可执行的步骤。
到目前为止,我们关注的技术,要么着重展示其卓越的推理能力,要么通过工具与环境互动。
例如,思维链 (Chain-of-Thought),其重点完全在于推理。
ReAct (Reason and Act,推理和行动) ,是首批将这两个过程结合起来的技术之一。
ReAct 通过精心设计的提示策略来实现这一点。ReAct 提示 (ReAct prompt) 描述了三个步骤:
- 思考 (Thought) - 对当前情况进行推理
- 行动 (Action) - 执行一系列动作(例如,使用工具)
- 观察 (Observation) - 对行动结果进行推理
提示本身非常简单直接。
大语言模型 (LLM) 使用这个提示(也可作为系统提示)来引导自身行为,使其在思考、行动和观察的循环中运作。
它持续进行这个循环,直到某个行动指示返回结果。通过迭代思考和观察,大语言模型 (LLM) 可以规划行动、观察输出并进行相应调整。
因此,相较于预先设定固定步骤的智能体 (Agent),该框架让大语言模型 (LLM) 能够展现出更强的自主性(agentic 行为)。
反思
没有人能够完美地完成每项任务,即使是使用了 ReAct 的大语言模型 (LLM) 也不例外。失败是过程的一部分,只要你能反思这个过程。
ReAct 正是缺少了这一反思过程,而 Reflexion 的出现恰好弥补了这一不足(Reflexion:指利用口头强化使智能体从以往失败中不断改进的一种技术)。Reflexion 是一种利用口头强化来帮助智能体 (Agent) 从先前的失败中学习的技术。
该方法设定了三个大语言模型 (LLM) 的角色:
- 行动者 (Actor) — 根据状态观察选择并执行行动。我们可以使用诸如思维链(Chain-of-Thought) 或 ReAct 之类的方法。
- 评估者 (Evaluator) — 对行动者 (Actor) 产生的输出进行评分。
- 自我反思 (Self-reflection) — 反思行动者 (Actor) 采取的行动和评估者(Evaluator) 生成的分数。
记忆模块被添加来跟踪行动(短期记忆)和自我反思(长期记忆),从而帮助智能体 (Agent) 从错误中学习并找到改进的行动。
SELF-REFINE 是一种类似且优雅的技术,它重复进行改进输出和生成反馈的行动。
同一个大语言模型 (LLM) 负责生成初始输出、改进后的输出和反馈。
" SELF-REFINE:通过自我反馈进行迭代改进 " 论文的注释图。
有趣的是,这种自我反思行为(包括 Reflexion 和 SELF-REFINE)与强化学习非常相似,在强化学习中,奖励是根据输出的质量来给出的。
多智能体协作
我们之前探讨的单个智能体 (Agent) 存在以下几个问题:过多的工具可能会使选择变得复杂,上下文变得过于复杂,并且任务可能需要专业化。
因此,我们可以采用多智能体 (Multi-Agent) 框架,在此框架下,各智能体(均具备工具、记忆和规划模块)不仅彼此协作,还能与周围环境有效互动。
这些多智能体 (Multi-Agent) 系统通常由专门的智能体 (Agent)组成,每个智能体 (Agent) 都配备了自己的工具集,并由监督者负责管理它们之间的通信。监督者管理智能体 (Agent) 之间的通信,并且可以将特定任务分配给专门的智能体 (Agent)。
每个智能体 (Agent) 可能有不同类型的可用工具,但也可能存在不同的记忆系统。
在实践中,有数十种多智能体 (Multi-Agent) 架构,它们的核心包含两个组成部分:
- 智能体 (Agent) 初始化 (Initialization) — 如何创建单个(专门的)智能体 (Agent)?
- 智能体 (Agent) 编排 (Orchestration) — 如何协调所有智能体 (Agent)?
让我们探索各种有趣的多智能体 (Multi-Agent) 框架,并重点介绍如何实现这些组件。
人类行为的交互式模拟
" 生成智能体:人类行为的交互式模拟 ",堪称是最有影响力,且令人叹为观止的多智能体 (Multi-Agent) 论文之一。在本文中,他们创建了计算软件智能体 (Agent),可以模拟可信的人类行为,他们称之为生成智能体 (Generative Agents)。
每个生成智能体 (Generative Agent) 都拥有独特的配置文件 (profile),这不仅赋予了它们各异的行为风格,也使其表现更具动态性和趣味性。每个智能体 (Agent) 都使用三个模块(记忆 (memory)、规划 (planning) 和 反思 (reflection))进行初始化,这与我们之前在 ReAct 和 Reflexion 中看到的核心组件非常相似。
记忆 (Memory) 模块是此框架中最重要的组件之一。它存储规划和反思行为,以及到目前为止的所有事件。
对于任何给定的下一步或问题,都会检索记忆并根据其新近度、重要性和相关性对其进行评分。得分最高的记忆将与智能体 (Agent) 共享。
生成智能体:人类行为的交互式模拟 论文的注释图。
它们共同使智能体 (Agent) 可以自由地进行其行为并相互交互。因此,智能体 (Agent) 编排很少,因为它们没有要实现的特定目标。
来自交互式演示的注释图像。
这篇论文包含的信息量非常丰富,其中最值得一提的是他们的评估指标。
生成智能体:人类行为的交互式模拟 论文的注释图。
它展示了观察、规划和反思对于这些生成智能体 (Generative Agents) 的表现是多么重要。正如之前探讨的那样,没有反思行为,规划是不完整的。
模块化框架
无论你选择哪种框架来构建多智能体 (Multi-Agent) 系统,它们通常都由以下几个关键要素构成:配置文件 (profile)、对环境的感知、记忆、规划和可用的行动。
用于实现这些组件的流行框架包括 AutoGen 、MetaGPT 和 CAMEL 。但是,每个框架处理每个智能体 (Agent) 之间的通信的方式都略有不同。
例如,使用 CAMEL,用户首先创建其问题并定义 AI 用户 (AI User) 和 AI 助手 (AI Assistant) 角色。AI 用户 (AI User) 角色代表人类用户,并将指导该过程。
之后,AI 用户 (AI User) 和 AI 助手 (AI Assistant) 将通过相互交互来协作解决该查询。
这种角色扮演方法实现了智能体 (Agent) 之间的协作通信。
AutoGen 和 MetaGPT 具有不同的通信方法,但所有这些都归结为这种协作通信的性质。智能体 (Agent) 有机会参与并相互交谈,以更新其当前状态、目标和后续步骤。
在过去一年,特别是最近几周,这些框架的增长呈爆炸式增长。
随着这些框架不断成熟和发展,2025 年将是真正令人兴奋的一年!
结论
我们的智能体 (Agent) 之旅到此结束!希望这篇文章能让你更好地了解智能体 (Agent) 是如何构建的。