【翻译】LLM智能体图解指南

821 阅读20分钟

原作者写文章习惯性的缺省内容,导致初学者读者可能有些许困难,所以我会用xxx进行补充。

LLM智能体图解指南 —— 探索单智能体与多智能体的核心组成部分

大语言模型智能体现在越来越常见了,似乎甚至到了逐渐取代了我们熟悉的“普通”对话式大语言模型的程度。智能体相对于对话式LLM能实现更多交互,但是智能体强大的能力并不是轻而易举就能实现的,它们背后需要很多组件协同配合,才能发挥其能力。

image.png

本文中,原作者画了60多张图,带你深入了解 LLM 智能体这个领域,搞清楚它们的核心组成部分,并进一步探索多智能体框架的运作方式。

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

要理解基于大语言模型的智能体到底是什么,我们得先看看大语言模型(LLM)的基本能力是什么。传统意义上,LLM 最核心的功能就是预测下一个词元(token) 。

image.png

通过让 LLM 连续生成多个词元(token),就可以模拟一段对话,对我们的问题给出更完整、更丰富的回答。

image.png 但当我们尝试跟它“持续对话”时,就会发现一个明显的短板——LLM 并不会真正“记住”之前的对话内容。

image.png

LLM 在很多其他任务上也会出错,比如简单的数学运算,像乘法、除法都经常算错:

image.png

这是不是说明 LLM 很差劲?当然不是! LLM 并不需要什么都会,因为我们可以通过引入外部工具、记忆模块、检索系统等手段,来补上它的短板。

通过这些外部系统,LLM的能力就会增强。Anthropic 称其为为 “增强型 LLM(Augmented LLM)”

image.png

比如,当碰到一道数学题时,LLM可以调用一个合适的工具(比如计算器)来帮忙。

image.png

那增强型 LLM 就算是一个“智能体”了吗? 有一点,但不多。

我们先来看看对“智能体(Agent)”的一个经典定义:

An agent is anything that can be viewed as perceiving its environment through sensors and acting upon that environment through actuators.

— Russell & Norvig, AI: A Modern Approach (2016)

智能体是一种能通过感知器感知环境,并通过执行器对环境做出反应的系统。” —— Russell & Norvig,《人工智能:一种现代方法》(2016)

智能体能与其所处的环境进行交互,通常包含以下几个核心组件:

  • 环境(Environment) :智能体所交互的世界
  • 感知器(Sensors) :用来感知环境
  • 执行器(Actuators) :与环境交互的的工具
  • 决策器(Effectors) :也可以理解为“大脑”或规则系统,负责根据观察结果做出决策

image.png

这个框架可以应用到各种智能体上,比如与现实世界交互的机器人,或者与软件交互的AI智能体。

我们可以稍微泛化一下这个框架,让它更适用于“增强型 LLM”的场景。

image.png

在“增强型” LLM 的架构下,智能体可以通过文本输入来感知环境(因为 LLM 本身就是文本模型),并通过调用各种工具(比如搜索引擎)来执行特定的动作。

为了决定该采取哪些行动,LLM 智能体还有一个关键组成部分,也就是规划能力。要具备这种能力,LLM 需要能够进行一定程度的“推理”和“思考”,比如通过“链式思维(Chain-of-Thought)”的方式来做出决策。

image.png

想深入了解 LLM 的推理方式,可以参考《LLM 推理图解指南》

通过这种推理能力,LLM 智能体能够规划出需要执行的具体行动步骤。

image.png

这种规划行为使得智能体能够理解当前情况(LLM)、制定下一步计划(规划)、执行具体操作(工具),并且记录已经采取的行动(记忆)。

image.png

根据系统的设计不同,LLM 智能体的自主性也有强有弱。

image.png

LLM越能自主决定系统行为的方式,智能体系统就更具智能体特性(agentic)。

接下来,我们将围绕 LLM 智能体的三个核心部分——记忆(Memory)、工具(Tools)和规划(Planning),讲解实现自主行为的各种方法。

记忆

大语言模型其实是“健忘”的,更准确地说,它们在与人交互时并不会真正“记住”任何内容。

比如说,当你问了一个问题,然后紧接着打开一个新的会话又问另一个问题,模型其实并不会记得你之前上一个会话问过什么。比如下图两个独立的对话中,即使之前使用者已经介绍过自己的名字,当开启一个新的对话,模型不会保留上一个对话的记忆。

image.png

我们通常把这种在同一个对话中能记住你之前的对话信息的能力称为短期记忆(short-term memory),也称为工作记忆(working memory)。它就像一个临时缓存区,保存着模型最近的一些动作或上下文。

但有时候,模型不仅要记住刚刚的内容,还需要记住几十步之前发生的事情。

image.png

这就是所谓的长期记忆(long-term memory),因为一个智能体(LLM Agent)在执行任务时可能会经历几十甚至上百个步骤,这些都需要被记住。

image.png

接下来,我们来看几个让模型“具备记忆”的方法。

短期记忆

让模型拥有短期记忆最直接的方法就是利用它的上下文窗口(context window) ,也就是它能一次性“读入”的tokens长度。

image.png

现在的大模型一般能处理至少 8192 个词元,有些甚至能处理几十万个词元。

大的上下文窗口利用大模型一次输入的长度,每次获取整个对话历史,作为输入提示词的一部分。

比如下图,用户提问新的问题时候,会把历史会话一起加入到提示词中,这样就能模拟出“记住之前说过什么”的效果

image.png

只要整个对话内容不超出模型的上下文窗口这个方法就能用,这是一个模拟记忆的好方法。但是,模型并不是真正记住了会话历史,而是在每次提问时,我们都会把之前的对话“重新告诉”了它。

如果模型的上下文窗口太小,或者历史会话太长超出了窗口限制,我们也可以使用另一个 LLM 来总结当前对话,提取关键信息

image.png

通过不断总结过去的对话,我们可以缩小对话,这样就能用更少的词元保留住最重要的内容,从而节省上下文空间

长期记忆

长期记忆对 LLM 智能体来说,是指那些需要长时间保存的信息,比如过去做过的操作、对话历史等等。

一个常用的方法是把这些历史信息存进一个外部向量数据库(vector database)

要建向量数据库,首先要把对话内容转成向量这种数据表示,捕获对话表达的语义,然后把这些向量存起来组成向量数据库

image.png

建好向量数据库之后,每当有新问题时,我们就把这个新问题也转成向量,通过对比提示词嵌入和数据库中已有的嵌入向量,找到最相关的信息。

image.png

这种方法被称为RAG(检索增强生成,Retrieval-Augmented Generation)

长期记忆还可以让模型记住跨会话的信息。比如说,你可能希望 LLM 智能体记得前几次它查过的研究资料。

不同类型的信息还可以分开存储。心理学中将记忆分为很多种,但《Cognitive Architectures for Language Agents》这篇论文提出了LLM智能体记忆可以划分为四种类型。

image.png

这种区分有助于构建更清晰的智能体框架。例如,语义记忆(记住世界事实)和工作记忆(当前环境信息)可以分别存储在不同的数据库中。

工具

工具让大语言模型(LLM)可以与外部环境交互(比如查询数据库),或者调用外部程序(比如运行一段代码)。

image.png

工具的常见用途主要有两个:

  1. 获取信息:比如抓取最新数据;
  2. 执行操作:比如安排会议、点外卖。

要让模型能使用某个工具,大模型必须能生成符合该工具 API 格式的文本。通常是可以格式化成 JSON 的字符串,方便传给代码解释器执行。

image.png 不过,并不一定非得用 JSON格式,也可以直接用代码。

我们还可以自定义函数给模型使用,比如写一个简单的乘法函数。这种方式叫做 Function Calling(函数调用)

image.png

只要提示词写得好,现在大多数 LLM 都可以调用各种工具。现在的大模型大都支持自动的工具调用。

image.png

当然,还有更稳定的做法:通过微调模型来让它更精准地使用工具(这部分后面会讲)。

如果智能体(agentic framework)的框架是固定的,那么可以按照预设顺序依次调用工具……

image.png

……也可以让 LLM 自主决定使用哪个工具、什么时候使用。像上图那样的 LLM 智能体,本质上是一系列连续的 LLM 调用组成的过程(但每一步操作、选择的工具等都是模型自己决定的)。

image.png

每一步的输出(中间结果)都会重新作为输入提供给模型,帮助它一步步推进任务。

image.png

Toolformer

工具使用是一种显著提高大语言模型能力、弥补其不足的重要技术。 因此,近年来关于“工具使用”和“工具学习”的研究正在快速增长。

image.png

图源《Tool Learning with Large Language Models: A Survey

随着人们越来越重视工具使用,带有“智能体”能力的 LLM 也被寄予厚望,会变得更强大。

很多研究不仅关注“怎么用提示词让模型使用工具”,还在尝试直接训练模型,让它学会怎么用工具

其中一个早期的代表性技术就是 Toolformer,这是一个专门训练出来的模型,能够决定调用哪个 API、怎么调用。

使用 [] 这两个符号标记工具调用的开始和结束。比如,给模型提问“5 乘以 3 是多少?”,模型开始生成答案,一直生成到 [,表示要开始调用工具。

image.png

接着生成一段内容,直到出现 ,表示停止LLM生成token。

image.png

然后就开始调用外部工具,把调用结果插入到当前内容中;

image.png

最后遇到 ],表示模型可以继续生成文本了(如果需要的话)。

Toolformer 之所以能具备这样的工具调用能力,是通过精心构建一个包含大量“工具使用案例”的数据集来训练模型实现的。 对于每个工具,研究人员都会手动设计几个示例提示(few-shot prompt) ,并用这些提示引导模型生成包含工具调用的输出。

image.png

生成的输出会根据以下几个标准进行筛选:

  • 工具使用是否正确;
  • 工具的返回结果是否合理;
  • 是否能减少模型的损失(loss)。

通过这些标准过滤后的数据,就组成了最终的训练集,生成的数据集,用来训练 LLM ,用于学习这种工具调用的方法。

自从 Toolformer 发布以来,也陆续出现很多很好的工作,例如: ToolLLM:可以调用上千种工具的模型; Gorilla:可以快速找到最相关工具并调用。

总的来说,从2025 年开始,大多数主流 LLM 都会训练通过生成 JSON 来调用工具的能力。

MCP

工具是Agentic智能体框架的重要组成部分,它们让大语言模型(LLM)能够“动手”,与外部世界交互,扩展自身能力。

但当你需要接入很多不同的 API 工具时,工具使用会变得非常麻烦,因为每一个工具都需要:

  • 手动编写并提供给 LLM
  • 手动编写工具说明,包括该模型适配的JSON 输入/输出格式
  • 手动更新,一旦 API 有改动,就要重新维护工具描述

image.png

为了各种工具的接入更简单,Anthropic 开发了一个叫 MCP(Model Context Protocol) 的协议,MCP让各种服务接入实现标准化,比如MCP可以用来接入像天气服务、GitHub 等外部服务。

MCP 有三个核心组成部分:

  • MCP Host:LLM 应用(比如 Cursor 编辑器),用来管理与外部服务的连接
  • MCP Client:客户端组件,维护与每个 MCP Server 的一对一连接
  • MCP Server:提供上下文、工具和功能,供 LLM 使用

image.png

举个例子( 用 LLM 总结 GitHub 最新提交记录),假设你希望 LLM 帮你总结仓库里最新的 5 条 commit,MCP 是怎么做的?

MCP Host(+客户端)先向 MCP Server 查询:当前有哪些工具可用?

image.png

LLM 得到这些信息后,决定使用某个工具。它通过 Host 发出调用请求给MCP Server, (Service 调用外部工具,返回结果),LLM获取结果以及调用了哪个工具。

image.png

最终LLM解析结果,生成回答返回给用户。

image.png

这个框架通过连接 MCP 服务器,让工具的创建变得更加简单。任何支持 MCP 的 LLM 应用都可以使用这些工具。 所以,当你创建了一个用于与 GitHub 交互的 MCP 服务器时,所有支持 MCP 的 LLM 应用都能直接使用它。

规划(Planning)

工具的使用能显著增强 LLM 的能力。一般来说,工具是通过类-JSON 格式的请求被调用的。

但在一个智能体系统(agentic system)中,模型要如何决定何时、使用哪个工具呢?

这就需要引入“规划”的概念。在 LLM 智能体中,规划就是把一个任务拆解成可执行的步骤(actionable steps) 。

image.png

这个计划能帮助模型不断回顾过去的行为,并在需要时调整当前的任务方案。

image.png

要让 LLM 智能体具备规划能力,首先得了解这一技术的基础——推理。

推理

想把任务拆解成清晰的行动步骤,这种规划需要模型必须具备复杂的推理能力。因此,LLM 必须先展现出这种推理行为,才能继续规划任务的下一步。

所谓“推理”型的 LLM,就是指那些在回答问题前会“先思考”的模型。

image.png

原作者说:这里我对“推理(reasoning)”和“思考(thinking)”这两个词的使用是比较宽泛的, 因为我们可以讨论:这究竟是类似人类的思考,还是仅仅是把答案拆解成结构化的步骤。

这种推理行为大致可以通过两种方式实现:微调模型(fine-tuning)或特定的提示工程(prompt engineering)。

通过提示工程,我们可以设计出推理过程的示例,让 LLM 按照这些示例进行思考。提供示例(也称为小样本提示 few-shot prompting)可以有效地引导 LLM 行为。

image.png

这种通过提供思考过程示例的方法叫做“思维链”(Chain-of-Thought),能够让模型展现更复杂的推理能力。
即使没有示例,也可以通过一句话“让我们一步步来思考”(Let’s think step-by-step)来启用思维链,这叫做零样本提示(zero-shot prompting)。

image.png

在训练一个 LLM 时,我们可以给它大量带“思考过程”的样本,或者让它自己发现什么是好的思考方式。

比如 DeepSeek-R1 模型就是通过奖励机制,引导模型学会使用更有效的推理过程,从而改进任务执行效果。

image.png

推理与行动

让 LLM 具备推理能力很重要,但仅有推理能力并不代表它就能规划出具体的可执行步骤。

到目前为止,我们讨论的方法,要么专注于展示推理过程,要么专注于通过工具与环境交互。

image.png

例如,“思维链(Chain-of-Thought)”主要关注的是推理。

第一个把推理和行动结合起来的方法之一叫做 ReAct(Reason and Act)。

image.png

ReAct 通过精心设计的提示(prompt engineering)实现,其提示包含三个步骤:

  • Thought(思考) — 对当前情况进行推理;
  • Action(行动) — 执行一系列动作(比如调用工具);
  • Observation(观察) — 对行动结果进行推理和分析。

提示词非常直接:

image.png

模型按照这个提示(通常作为系统提示)引导自身行为,形成思考→行动→观察的循环。

image.png

它会一直这样循环,直到某个行动步骤指明可以返回结果。通过不断地思考和观察,LLM 能够规划行动、观察结果并据此调整策略。

因此,这种框架让 LLM 展现出比那些预先设定固定步骤的智能体更强的自主智能行为。

反思

没有人,甚至连使用了 ReAct 的 LLM,也不可能每次都完美完成任务。 失败是过程的一部分,只要模型能从失败中反思并改进。

ReAct 框架中缺少这种反思能力,所以Reflexion技术出现了。Reflexion 是一种使用“语言强化”的方法,让智能体能从过去的失败中吸取教训。

这个方法设定了三种 LLM 的角色:

  • 执行者(Actor) — 根据当前环境做出决策和行动,可以用思维链(Chain-of-Thought)或 ReAct 方法;
  • 评估者(Evaluator) — 给执行者产生的结果打分;
  • 自我反思者(Self-reflection) — 反思执行者的行为,并参考评估者给的分数,提出改进意见。

image.png

系统中加入了记忆模块,用于记录行动(短期记忆)和自我反思(长期记忆),帮助智能体从错误中学习,并找到更优的行动方式。

一个类似且优雅的方法叫做 SELF-REFINE,它通过反复进行输出优化和生成反馈的过程,来不断提升模型表现。

image.png

在 SELF-REFINE 方法中,同一个 LLM 负责生成初始输出、改进后的输出以及反馈内容。

image.png

有趣的是,Reflexion 和 SELF-REFINE 中的这种“自我反思”机制,非常类似于强化学习(Reinforcement Learning)——模型根据输出质量获得“奖励”,从而逐步改进行为。

多智能体协作

我们前面介绍的单个智能体(Single Agent)虽然功能强大,但也存在一些问题:工具太多时,选择困难、上下文信息过于复杂、某些任务可能需要专业化处理。

为了解决这些问题,我们可以引入 多智能体框架(Multi-Agent Systems) ,也就是让多个智能体协同工作。这些智能体各自具备工具、记忆和规划能力,并能相互交流与配合完成任务。

image.png

这些多智能体系统通常由具备专长的智能体组成,每个智能体都配有自己的工具集,并由一个主管智能体(Supervisor)进行统筹管理。 主管智能体负责协调智能体之间的通信,并可以将具体任务分配给对应的专业智能体。

image.png

每个智能体可能拥有不同类型的工具,也可能使用不同的记忆系统。

在实践中,多智能体系统主要包含两个核心组件:

  1. 智能体初始化(Agent Initialization) :如何创建每个专业化的智能体?
  2. 智能体协同调度(Agent Orchestration) :如何协调所有智能体协作?

image.png

接下来我们将探索几种有趣的多智能体框架,并重点介绍这些核心组件是如何实现的。

拟人行为的交互模拟

在多智能体(Multi-Agent)研究中,有一篇可以说是最具影响力、也最酷的论文 《Generative Agents: Interactive Simulacra of Human Behavior

这篇论文中,作者设计了一种名为生成式智能体(Generative Agents) 的计算智能体,能够模拟出可信的人类行为。

image.png

每个智能体都有一个设定的“个人档案(profile)”,让每个智能体的行为具有独特性,从而营造出更真实、更有趣、更动态的交互环境。

这些智能体在初始化时包含三个核心模块:

  • 记忆(Memory)
  • 规划(Planning)
  • 反思(Reflection)

和我们前面介绍的 ReAct 和 Reflexion 框架非常相似。

image.png

记忆模块是整个系统中最关键的部分。它不仅保存了所有事件记录,还包括智能体的思考和反思内容。

当智能体需要做出决策或回答问题时,系统会从记忆中提取信息,并根据:时间的接近度(recency)、事件的重要性(importance)、与当前任务的相关性(relevance)为每条记忆打分,选出得分最高的内容提供给智能体参考。

image.png

这些机制使得智能体可以自由地进行行为决策和彼此互动,因此,系统几乎不需要对智能体进行统一调度,因为它们并没有预设的具体目标要完成。

image.png

这篇论文还有很多精彩细节,其中一个值得一提的亮点是它的评价指标。

通过人类评估者打分,看智能体的行为是否足够“真实可信”

image.png

这进一步说明了,在生成式智能体的表现中,观察、规划和反思三者的协同作用至关重要。我们前边也提到,没有反思,规划就是不完整的。

模块化多智能体框架

无论你选择哪种框架来构建多智能体系统,它们通常都包含以下几个核心组成部分:

  • 角色设定(Profile)
  • 环境感知(Perception)
  • 记忆模块(Memory)
  • 规划能力(Planning)
  • 可执行的动作(Available Actions)

image.png

目前较为流行的多智能体框架包括:AutoGen、MetaGPT、CAMEL等。不过,这些框架在智能体之间的通信方式上各有不同。

以 CAMEL 为例,用户首先提出问题,并定义两个角色 AI 用户(AI User)AI 助手(AI Assistant)。AI 用户代表人类用户,引导问题的解决过程; AI 助手负责提供协助和应答

image.png

然后,这两个 AI 角色会通过互动来协作解决问题。

image.png

这种角色扮演式的对话方式让多个智能体之间可以进行更自然、高效的协作沟通。

AutoGen 和 MetaGPT 的通信方式各不相同,但归根结底,它们都强调智能体之间的协作式交流。 各个智能体可以相互对话、共享信息、更新各自的状态、目标和下一步计划。

在过去的一年,尤其是最近几周内,这些框架的发展速度非常惊人。

image.png

可以预见,2025 年将是多智能体系统快速成熟和广泛应用的一年。

结语

至此,我们的 LLM 智能体之旅也告一段落啦!
希望这篇内容能够帮助你更清晰地理解 —— LLM 智能体是如何构建的,它们具备哪些能力,以及背后的关键技术原理

资源

行有余力可以看一下作者提供的其他资源。

  • This and this paper are great overviews of the latest MoE innovations.
  • The paper on expert choice routing that has gained some traction.
  • great blog post going through some of the major papers (and their findings).
  • A similar blog post that goes through the timeline of MoE.

作者信息

原文地址:A Visual Guide to LLM Agents - by Maarten Grootendorst

跟原作者寒暄了一下,申请翻译。

image.png