LLM智能体图解指南 —— 探索单智能体与多智能体的核心组成部分
大语言模型智能体(LLM Agents)现在越来越常见,似乎已经逐渐取代了我们熟悉的“普通”对话式大模型。这些强大的能力并不是轻而易举就能实现的,它们背后需要很多组件协同配合,才能发挥作用。
这篇文章里有超过 60 张定制图示,会带你深入了解 LLM 智能体这个领域,搞清楚它们的核心组成部分,并进一步探索多智能体框架的运作方式。
什么是 LLM 智能体?
要理解 LLM 智能体到底是什么,我们得先看看大语言模型(LLM)的基本能力是什么。传统意义上,LLM 最核心的能力就是 “预测下一个词” 。
通过连续生成多个词(token),我们就可以模拟一段对话,让 LLM 给出更完整、更丰富的回答。
但当我们尝试跟它“持续对话”时,就会发现一个明显的短板:
LLM 并不会真正“记住”之前的对话!
除了记忆能力差,LLM 在很多其他任务上也会出错,比如连简单的乘法、除法都经常算错:
这是不是说明 LLM 很差劲? 当然不是! LLM 并不需要“什么都会”,因为我们可以通过引入外部工具、记忆模块、检索系统等手段,来补上它的短板。
通过这些外部系统,我们就能增强 LLM 的能力。Anthropic 称其为为 “增强型 LLM(Augmented LLM)” 。
比如,当碰到一道数学题时,LLM可以调用一个合适的工具(比如计算器)来帮忙。
那增强型 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) :也可以理解为“大脑”或规则系统,负责根据观察结果做出决策
这个框架可以应用到各种智能体上,比如与现实世界互动的机器人,或者与软件世界互动的AI智能体。
我们可以稍微泛化一下这个框架,让它更适用于“增强型 LLM”的场景。
在“增强型” LLM 的架构下,智能体可以通过文本输入来“感知”环境(因为 LLM 本身就是基于文本的模型),并通过调用各种工具(比如搜索引擎)来执行特定的动作。
为了决定该采取哪些行动,LLM 智能体还有一个关键能力:规划(planning) 。 要具备这种能力,LLM 需要能够进行一定程度的“推理”和“思考”,比如通过“链式思维(Chain-of-Thought)”的方式来做出决策。
想深入了解 LLM 的推理方式,可以参考《LLM 推理图解指南》
通过这种推理能力,LLM 智能体能够规划出需要执行的具体行动步骤。
这种规划行为使得智能体能够理解当前情况(LLM)、制定下一步计划(规划)、执行具体操作(工具),并且记录已经采取的行动(记忆)。
根据系统的设计不同,LLM 智能体的自主性也有强有弱。
一个系统越能自主决定自己怎么行动,就越“像一个真正的智能体”。
接下来,我们将围绕 LLM 智能体的三个核心部分——记忆(Memory)、工具(Tools)和规划(Planning),讲解实现自主行为的各种方法。
记忆
大语言模型其实是“健忘”的,更准确地说,它们在与人交互时并不会真正“记住”任何内容。
安安提示:下面这几段作者原文有省略的部分,初学者读起来可能会迷惑,所有
()
内的语句都是我补全之后的内容。
比如说,当你问了一个问题,然后紧接着(打开一个新的会话)又问另一个问题,模型其实并不会记得你之前(上一个会话)问过什么。(比如下图两个独立的对话中,即使之前使用者已经介绍过自己的名字,当开启一个新的对话,模型不会保留上一个对话的记忆。)
我们通常把这种能力(在同一个对话中能记住你之前的对话信息的能力)称为短期记忆(short-term memory),也称为工作记忆(working memory)。它就像一个临时缓存区,保存着模型最近的一些动作或上下文。
但有时候,模型还需要记住几十步之前发生的事情,而不仅仅是刚刚的内容。
+这就是所谓的长期记忆(long-term memory),因为一个智能体(LLM Agent)在执行任务时可能会经历几十甚至上百个步骤,这些都需要被“记住”。
接下来,我们来看几个让模型“具备记忆”的方法。
短期记忆
让模型拥有短期记忆最直接的方法就是利用它的上下文窗口(context window) ,也就是它能一次性“读入”的tokens长度。
现在的大模型一般能处理至少 8192 个 token,有些甚至能处理几十万个 token。
“上下文窗口”就是利用大模型一次输入的长度,每次获取整个对话历史,作为输入提示词的一部分。
(比如下图,用户提问新的问题时候,会把历史会话一起加入到提示词中,这样就能模拟出“记住之前说过什么”的效果)
这种方式的前提是:整个对话内容不能超出模型的上下文窗口。严格来说,模型并不是“记住了”,而是我们在每次提问时,把之前的对话“重新告诉”了它。
如果上下文太长,超出了窗口限制,我们也可以使用另一个 LLM 来对对话进行总结,提取关键信息。
通过不断总结过去的对话,我们就能用更少的 token 保留住最重要的内容,从而节省上下文空间。
长期记忆
长期记忆对 LLM 智能体来说,是指那些需要长时间保存的信息,比如过去做过的操作、对话历史等等。
一个常用的方法是把这些历史信息存进一个外部向量数据库(vector database) 。
要建向量数据库,首先要把对话内容转成“向量”这种数字表示,捕获对话表达的语义,然后把这些向量存起来。
建好向量数据库之后,每当有新问题时,我们就把这个新问题也转成向量,通过对比提示词嵌入和数据库中已有的嵌入向量,找到最相关的信息。
这种方法被称为RAG(检索增强生成,Retrieval-Augmented Generation) 。
长期记忆还可以让模型“记住”跨会话的信息。比如说,你可能希望 LLM 智能体记得前几次它查过的研究资料。
不同类型的信息还可以分开存储。心理学中将记忆分为很多种,而《Cognitive Architectures for Language Agents》这篇论文提出了其中的四种记忆类型,分别与 LLM Agent 的不同功能相对应。
这种区分有助于构建更清晰的智能体框架。例如,语义记忆(记住世界事实)和工作记忆(当前环境信息)可以分别存储在不同的数据库中。
工具
工具让大语言模型(LLM)可以与外部环境交互(比如查询数据库),或者调用外部程序(比如运行一段代码)。
工具的常见用途主要有两个:
- 获取信息:比如抓取最新数据;执行操作:比如安排会议、点外卖。
要让模型能使用某个工具,大模型必须能生成符合该工具 API 格式的文本。通常是可以格式化成 JSON 的字符串,方便传给代码解释器执行。
不过,并不一定非得用 JSON,也可以直接让模型输出代码来调用工具。
我们还可以自定义函数给模型使用,比如写一个简单的乘法函数。这种方式叫做 Function Calling(函数调用) 。
只要提示写得好,现在大多数 LLM 都可以使用各种工具。有些模型甚至在设计时就支持自动调用工具。
当然,还有更稳定的做法:通过微调模型来让它更精准地使用工具(这部分后面会讲)。
如果智能体(agentic framework)的框架是固定的,那么可以按照预设顺序依次调用工具……
……也可以让 LLM 自主决定使用哪个工具、什么时候使用。
像上图那样的 LLM 智能体,本质上是一系列连续的 LLM 调用组成的过程——但每一步操作、选择的工具等都是模型自己决定的。
每一步的输出(中间结果)都会重新作为输入提供给模型,帮助它一步步推进任务。
Toolformer
工具使用是一种显著增强大语言模型能力、弥补其不足的重要技术。 因此,近年来关于“工具使用”和“工具学习”的研究正在快速增长。
图源《Tool Learning with Large Language Models: A Survey》
随着人们越来越重视工具使用,带有“智能体”能力的 LLM 也被寄予厚望,会变得更强大。
很多研究不仅关注“怎么用提示词让模型使用工具”,还在尝试直接训练模型,让它学会怎么用工具。
其中一个早期的代表性技术就是 Toolformer,这是一个专门训练出来的模型,能够决定调用哪个 API、怎么调用。
使用 [
和 ]
这两个符号标记工具调用的开始和结束。比如,给模型提问“5 乘以 3 是多少?”,模型开始生成答案,一直生成到 [
,表示要开始调用工具。
接着生成一段内容,直到出现 →
,表示停止LLM生成token。
然后就开始调用外部工具,把调用结果插入到当前内容中;
最后遇到 ]
,表示模型可以继续生成文本了(如果需要的话)。
Toolformer 之所以能具备这样的工具调用能力,是通过精心构建一个包含大量“工具使用案例”的数据集来训练模型实现的。对于每个工具,研究人员都会手动设计几个示例提示(few-shot prompt) ,并用这些提示引导模型生成包含工具调用的输出。
生成的输出会根据以下几个标准进行筛选:
- 工具使用是否正确;工具的返回结果是否合理;是否能减少模型的损失(loss)。
通过这些标准过滤后的数据,就组成了最终的训练集,用来训练 LLM ,用于学习这种工具调用的方法。
自从 Toolformer 发布以来,也陆续出现很多很好的工作,例如: ToolLLM:可以调用上千种工具的模型; Gorilla:可以快速找到最相关工具并调用。
总的来说,到 2025 年初,大多数主流 LLM 已经具备了通过生成 JSON 来调用工具的能力。
MCP
工具是Agentic智能体框架的重要组成部分,它们让大语言模型(LLM)能够“动手”,与外部世界交互,扩展自身能力。
但当你需要接入很多不同的 API 工具时,工具使用会变得非常麻烦,因为每一个工具都需要:
- 手动编写并提供给 LLM手动编写工具说明,包括该模型适配的JSON 输入/输出格式手动更新,一旦 API 有改动,就要重新维护工具描述
为了各种工具的接入更简单,Anthropic 开发了一个叫 MCP(Model Context Protocol) 的协议,MCP让各种服务接入实现标准化,比如MCP可以用来接入像天气服务、GitHub 等外部服务。
MCP 有三个核心组成部分:
- MCP Host:LLM 应用(比如 Cursor 编辑器),用来管理与外部服务的连接MCP Client:客户端组件,维护与每个 MCP Server 的一对一连接MCP Server:提供上下文、工具和功能,供 LLM 使用
举个例子( 用 LLM 总结 GitHub 最新提交记录),假设你希望 LLM 帮你总结仓库里最新的 5 条 commit,MCP 是怎么做的?
MCP Host(+客户端)先向 MCP Server 查询:当前有哪些工具可用?
LLM 得到这些信息后,决定使用某个工具。它通过 Host 发出调用请求给MCP Server, (Service 调用外部工具,返回结果),LLM获取结果以及调用了哪个工具。
最终LLM解析结果,生成回答返回给用户。
这个框架通过连接 MCP 服务器,让工具的创建变得更加简单。任何支持 MCP 的 LLM 应用都可以使用这些工具。所以,当你创建了一个用于与 GitHub 交互的 MCP 服务器时,所有支持 MCP 的 LLM 应用都能直接使用它。
规划(Planning)
工具的使用能显著增强 LLM 的能力。一般来说,工具是通过类 JSON 格式的请求被调用的。
但在一个智能体系统(agentic system)中,模型要如何决定何时、使用哪个工具呢?
这就需要引入“规划”的概念。在 LLM 智能体中,规划就是把一个任务拆解成可执行的步骤(actionable steps) 。
这个计划能帮助模型不断回顾过去的行为,并在需要时调整当前的任务方案。
要让 LLM 智能体具备规划能力,首先得了解这一技术的基础——推理。
推理
想把任务拆解成清晰的行动步骤,这种规划需要模型必须具备复杂的推理能力。因此,LLM 必须先展现出这种推理行为,才能继续规划任务的下一步。
所谓“推理”型的 LLM,就是指那些在回答问题前会“先思考”的模型。
这种推理行为大致可以通过两种方式实现:微调模型(fine-tuning)或特定的提示工程(prompt engineering)。
通过提示工程,我们可以设计出推理过程的示例,让 LLM 按照这些示例进行思考。提供示例(也称为少样本提示 few-shot prompting)可以有效地引导 LLM 行为。
这种通过提供思考过程示例的方法叫做“思维链”(Chain-of-Thought),能够让模型展现更复杂的推理能力。
即使没有示例,也可以通过一句话“让我们一步步来思考”(Let’s think step-by-step)来启用思维链,这叫做零样本提示(zero-shot prompting)。
在训练一个 LLM 时,我们可以给它大量带“思考过程”的样本,或者让它自己发现什么是好的思考方式。
比如 DeepSeek-R1 模型就是通过奖励机制,引导模型学会使用更有效的推理过程,从而改进任务执行效果。
推理与行动
让 LLM 具备推理能力很重要,但仅有推理能力并不代表它就能规划出具体的可执行步骤。
到目前为止,我们讨论的方法,要么专注于展示推理过程,要么专注于通过工具与环境交互。
例如,“思维链(Chain-of-Thought)”主要关注的是推理。
第一个把推理和行动结合起来的方法之一叫做 ReAct(Reason and Act)。
ReAct 通过精心设计的提示(prompt engineering)实现,其提示包含三个步骤:
- Thought(思考) — 对当前情况进行推理;Action(行动) — 执行一系列动作(比如调用工具);Observation(观察) — 对行动结果进行推理和分析。
提示词非常直接:
模型按照这个提示(通常作为系统提示)引导自身行为,形成思考→行动→观察的循环。
它会一直这样循环,直到某个行动步骤指明可以返回结果。通过不断地思考和观察,LLM 能够规划行动、观察结果并据此调整策略。
因此,这种框架让 LLM 展现出比那些预先设定固定步骤的智能体更强的自主智能行为。
反思
没有人,甚至连使用了 ReAct 的 LLM,也不可能每次都完美完成任务。 失败是过程的一部分,只要模型能从失败中反思并改进。
ReAct 框架中缺少这种反思能力,所以Reflexion技术出现了。Reflexion 是一种使用“语言强化”的方法,让智能体能从过去的失败中吸取教训。
这个方法设定了三种 LLM 的角色:
- 执行者(Actor) — 根据当前环境做出决策和行动,可以用思维链(Chain-of-Thought)或 ReAct 方法;评估者(Evaluator) — 给执行者产生的结果打分;自我反思者(Self-reflection) — 反思执行者的行为,并参考评估者给的分数,提出改进意见。
系统中加入了记忆模块,用于记录行动(短期记忆)和自我反思(长期记忆),帮助智能体从错误中学习,并找到更优的行动方式。
一个类似且优雅的方法叫做 SELF-REFINE,它通过反复进行输出优化和生成反馈的过程,来不断提升模型表现。
在 SELF-REFINE 方法中,同一个 LLM 负责生成初始输出、改进后的输出以及反馈内容。
有趣的是,Reflexion 和 SELF-REFINE 中的这种“自我反思”机制,非常类似于强化学习(Reinforcement Learning)——模型根据输出质量获得“奖励”,从而逐步改进行为。
多智能体协作
我们前面介绍的单个智能体(Single Agent)虽然功能强大,但也存在一些问题:工具太多时,选择困难、上下文信息过于复杂、某些任务可能需要专业化处理。
为了解决这些问题,我们可以引入 多智能体框架(Multi-Agent Systems) ,也就是让多个智能体协同工作。这些智能体各自具备工具、记忆和规划能力,并能相互交流与配合完成任务。
这些多智能体系统通常由具备专长的智能体组成,每个智能体都配有自己的工具集,并由一个主管智能体(Supervisor)进行统筹管理。主管智能体负责协调智能体之间的通信,并可以将具体任务分配给对应的专业智能体。
每个智能体可能拥有不同类型的工具,也可能使用不同的记忆系统。
在实践中,多智能体系统主要包含两个核心组件:
- 智能体初始化(Agent Initialization) :如何创建每个专业化的智能体?智能体协同调度(Agent Orchestration) :如何协调所有智能体协作?
作者信息
A Visual Guide to LLM Agents - by Maarten Grootendorst