A Visual Guide to LLM Agents
探索单一代理和多代理的主要组成部分
LLM 代理技术越来越普及,似乎已经取代了我们熟悉的“常规”对话 LLM。这种惊人的能力不容易实现,需要许多组件协同工作。
本帖子包含超过 60 个自定义视觉效果,你将探索 LLM Agents、其主要组件,以及多代理框架。
👉 点击左侧的线条堆栈,查看目录(ToC)
什么是 LLM 代理?
要理解 LLM 代理是什么,我们先来了解一下 LLM 的基本功能。传统上,LLM 只是进行下一个词的预测。
通过连续采样多个词元,我们可以模拟对话,并使用 LLM 给出更详细的回答。
然而,当我们继续“对话”时,任何 LLM 都会暴露其主要缺点之一。它记不住对话!
大语言模型经常失败的还有其他任务,包括基本的数学运算,如乘法和除法:
这是否意味着大语言模型很糟糕?绝对不是!大语言模型不需要什么都能做,因为我们可以通过外部工具、记忆和检索系统来弥补它们的不足。
通过外部系统,LLM 的功能可以增强。Anthropic 称之为“增强版 LLM”。
例如,面对数学问题时,LLM可能会决定使用计算器。
所以这个“增强LLM”到底是不是一个代理?不,但也有几分
我们从代理的定义开始:1
任何可以被视为通过传感器感知环境并通过执行器作用于环境的实体,都可以被视为智能体。
— Russell 和 Norvig,《人工智能:现代方法》(2016)
智能体与环境互动,通常由几个重要组件组成:
环境 — 代理所交互的世界
传感器 — 用于观察环境
执行器 — 用于与环境交互的工具
效应器 — 控制从观察到行动的决策中心
这个框架适用于各种代理与环境交互的情景,比如机器人与物理环境的互动,或 AI 代理与软件的互动。
我们可以稍微扩展一下框架,使其适用于“增强LLM”。
使用“增强”LLM,代理可以通过文本输入观察环境(因为大语言模型通常是文本模型),并通过工具(如网络搜索)执行某些操作。
为了选择行动,LLM 代理的关键在于其规划能力。为此,大语言模型需要具备推理和思考的能力,比如通过思维链的方法。
想了解更多关于推理的信息,可以看看《推理大模型的视觉指南》
根据这种推理行为,LLM 代理将规划必要的行动。
这种规划行为使代理能够理解情况(LLM),规划下一步(规划),采取行动(工具),并跟踪已采取的行动(记忆)。
根据系统不同,你可以 LLM 个自主程度不同的代理。
根据不同人的看法,系统越由 LLM 决定其行为,就越具有主动性。
在接下来的部分,我们将通过 LLM Agent 的三个主要部分:记忆、工具和规划,来介绍各种自主行为的方法。
Memory
大语言模型是健忘的系统,或者更准确地说,在与它们互动时,实际上并不进行任何记忆。
例如,当你问一个 LLM 一个问题,然后又问另一个问题,它不会记得之前的那个。
我们通常称之为短期记忆,也称为工作记忆,它作为近期行为的缓冲区。这包括了 LLM 代理最近的行动。
然而,LLM 代理还需要跟踪可能几十步的操作,而不仅仅是最近的动作。
这被称为长期记忆,因为 LLM 代理理论上可能需要记住几十甚至上百步。
让我们探索一些技巧,让这些模型具备记忆能力。
短期记忆
启用短期记忆最直接的方法是使用模型的上下文窗口,这个窗口的大小决定了 LLM 能处理的 token 数量。
上下文窗口通常至少包含 8192 个词,有时可以扩展到数十万个词!
一个大的上下文窗口可以用来跟踪完整的对话历史,作为输入提示的一部分。
只要对话历史在 LLM 的上下文窗口内,这种方法就有效,并且是一种模仿记忆的好方法。然而,我们并不是真的记忆对话,而是“告诉”LLM对话的内容。
对于上下文窗口较小的模型,或对话历史较长时,我们可以使用另一个 LLM 来总结已有的对话内容。
通过持续总结对话,我们可以保持对话的规模小。这将减少 token 数量,同时只记录关键信息。
长期记忆
LLM 代理的长期记忆包含需要长期保留的代理行动空间。
一种常用的方法是将之前的互动、行动和对话存储在外部向量数据库中。
为了构建这样的数据库,对话内容首先被转化为数字形式,以捕捉其含义。
构建数据库后,我们可以嵌入任何给定的提示,并通过将提示嵌入与数据库中的向量进行比较,找到最相关的信息。
这种方法常被称为检索增强生成(RAG)。
长期记忆还包括保留不同会话的信息。例如,你可能希望 LLM 代理记住之前进行的研究。
不同类型的信息可以与不同类型的记忆相关联。在心理学中,有许多种类的记忆,但《语言代理的认知架构》论文将其中四个与 LLM 代理结合。2
这种区分有助于构建代理框架。语义记忆(关于世界的知识)可能存储在不同的数据库中,而工作记忆(当前和近期的情况)则存储在另一个不同的数据库中。
Tools
工具允许给定的 LLM 与外部环境(如数据库)进行交互,或使用外部应用程序(如自定义代码)。
工具通常有两种用途:获取数据以获取最新信息,以及执行操作,如安排会议或订购食物。
要实际使用工具,LLM 必须生成符合指定工具 API 的文本。我们通常希望这些字符串能被格式化为 JSON,以便轻松导入代码解释器。
你还可以生成 LLM 可以使用的自定义函数,比如基本的乘法函数。这通常称为函数调用。
如果提示得当且全面,一些大语言模型可以使用任何工具。大多数大语言模型都能使用工具。
更稳定地访问工具的方法是微调 LLM(稍后详细说明!)
如果代理框架固定,工具可以按顺序使用……
…或者 LLM 可以自主选择使用什么工具和时间。LLM 代理,像上面的图片一样,本质上是一系列的 LLM 调用(但具有自主选择的能力)。
换句话说,中间步骤的输出会反馈到 LLM 中继续处理。
工具形成者
工具使用是一种强大的技术,可以增强大语言模型的能力并弥补其不足。因此,过去几年中,关于工具使用和学习的研究迅速增加。
这项研究不仅包括引导大语言模型使用工具,还包括专门为工具使用而对它们进行训练。
其中一种早期技术称为 Toolformer,这是一种训练有素的模型,用于决定调用哪些 API 和如何调用。3
它通过使用 [
和 ]
来表示工具的调用开始和结束来实现这一点。例如,当提示为“5 乘以 3 是多少?”时,它会生成标记,直到到达 [
标记。
之后,它会生成令牌,直到遇到 →
令牌,这表示 LLM 停止生成令牌。
然后,工具会被调用,输出将被添加到已生成的 token 中。
]
符号表示 LLM 现在可以继续生成,如有需要。
Toolformer 通过精心生成一个包含大量工具使用的数据集来实现这一效果,模型可以在这些数据上进行训练。对于每种工具,会手动创建几个示例,并用于生成使用这些工具的输出。
根据工具使用是否正确、输出内容和损失减少情况,对结果进行了筛选。生成的训练数据用于训练 LLM,使其符合这种工具使用格式。
自 Toolformer 发布以来,出现了许多令人兴奋的技术,如能使用数千个工具的大语言模型(ToolLLM 4),以及能轻松检索最相关工具的大语言模型(Gorilla 5)。
无论哪种方式,大多数当前的大语言模型(2025 年初)都经过训练,可以通过生成 JSON 调用工具(如前所述)。
模型上下文协议 (MCP)
工具是代理框架的重要组成部分,使大语言模型能够与世界互动并扩展其能力。然而,当有多种不同的 API 时,使用工具变得麻烦,因为每个工具都需要:
手动跟踪并提交到 LLM
手动描述(包括预期的 JSON 模式)
每当 API 发生变化时,都会手动更新
为了使特定代理框架更容易使用工具,Anthropic 开发了模型上下文协议 (MCP)。6 MCP 规范了天气应用和 GitHub 等服务的 API 访问。
它由三个部分组成:
MCP 主机 — LLM 应用程序(如 Cursor),负责管理连接
MCP 客户端 — 与 MCP 服务器保持一对一连接
MCP 服务器 — 为大语言模型提供上下文、工具和功能
例如,假设你希望某个 LLM 应用程序来汇总仓库中最近的 5 个提交。
MCP 主机(连同客户端)会先调用 MCP 服务器,询问有哪些可用的工具。
LLM 收到信息后,可能会选择使用某个工具。它通过主机向 MCP 服务器发送请求,并接收结果,包括使用的工具。
最后,LLM 收到结果并为用户解析答案。
这个框架通过连接到任何 LLM 应用程序都可以使用的 MCP 服务器,简化了工具创建。因此,当你创建一个与 Github 交互的 MCP 服务器时,支持 MCP 的任何 LLM 应用程序都可以使用它。
Planning
工具的使用可以让 LLM 提升其能力。通常通过类似 JSON 的请求来调用它们。
但在一个代理系统中,LLM 怎么决定用什么工具和什么时候用呢?
这就是规划的起作用的地方。在LLM代理中,规划需要将任务分解成可操作的步骤。
这个计划允许模型回顾过去的行为,并在必要时更新当前的计划。
为了在 LLM 代理中实现规划,我们先来看看这项技术的基石——推理。
Reasoning
规划行动步骤需要复杂的推理能力。因此,LLM 在规划下一步任务前,必须能够展示这种能力。
“推理”的大语言模型是指那些在回答问题前会先‘思考’的大语言模型。
我在这里有点模糊地用了“推理”和“思考”这两个词,因为我们也可以争论这是否就是人类式的思考,或者只是把答案分解成结构化的步骤。
这种推理行为可以通过两种方式实现:微调 LLM 或特定的提示工程。
通过提示工程,我们可以创建 LLM 应遵循的推理过程示例。提供示例(也称为少样本提示 7)是引导 LLM 行为的有效方法。
这种提供思维过程示例的方法称为 '思维链',它能实现更复杂的推理。8
也可以无需任何示例(零样本提示)通过简单地说“让我们一步一步地思考”来启用思维链。 9
在训练 LLM 时,我们可以提供包含思维示例的数据集,也可以让 LLM 自行探索思维过程。
一个很好的例子是 DeepSeek-R1,奖励用于引导思考过程。
想了解更多关于推理大语言模型的信息,请查看我的视觉指南。
推理与行动
在大语言模型中启用推理能力是不错的,但这并不一定意味着它能够规划行动。
我们迄今为止关注的技术要么展示了推理行为,要么通过工具与环境互动。
例如,Chain-of-Thought 专注于推理。
最早结合这两种方法的技术之一被称为 ReAct(推理与行动)。10
ReAct 通过精细的工程实现这一目标。ReAct 提示包含三个步骤:
思考 - 对当前情况的推理步骤
操作 - 一组要执行的操作(例如,工具)
观察 - 对行动结果进行的推理步骤
提示本身很简单。
LLM 利用这个提示(可以作为系统提示使用)来引导行为,进行思维、行动和观察的循环。
它会一直保持这种行为,直到某个操作指定返回结果。通过对想法和观察进行迭代,LLM 可以规划行动、观察输出并进行相应调整。
因此,这种框架使大语言模型能够比具有预定义和固定步骤的代理表现出更自主的行为。
反思
没有人,即使是具备 ReAct 的大语言模型,也能完美完成每项任务。只要你能反思过程,失败就是过程中的一部分。
ReAct 缺少这个过程,而 Reflexion 正是在这里发挥作用的。Reflexion 是一种使用语言强化来帮助智能体从之前的失败中学习的技术。11
该方法假设三个 LLM 角色:
Actor — 根据状态观察选择并执行动作。可以使用思维链或 ReAct 等方法。
评估器 — 评估演员生成的输出。
自我反思 — 反思演员的行动及评估器的评分。
添加了记忆模块,用于跟踪短期行动和长期反思,帮助代理从错误中学习,并识别改进的行动。
一个类似且优雅的方法叫做 SELF-REFINE,其中会重复优化输出和生成反馈的动作。12
同一个 LLM 负责生成初始输出、优化输出和反馈。
有趣的是,这种自我反思的行为——Reflexion 和 SELF-REFINE——与强化学习非常相似,强化学习根据输出的质量给予奖励。
多智能体协作
我们研究的单个代理存在几个问题:工具过多可能使选择复杂化,上下文变得过于复杂,任务可能需要专门化。
我们可以转向多代理系统,这些框架中有多个代理(每个都有自己的工具、记忆和规划能力),它们相互作用并与环境互动:
这些多代理系统通常由专业代理组成,每个代理配备自己的工具,并由一个主管监督。主管负责管理代理之间的通信,并可以分配具体任务给各个代理。
每个代理可能拥有不同类型的工具,但也有可能存在不同的记忆系统。
实际上,有几十种多代理架构,其核心由两个部分组成:
初始化 — 专门的代理是如何创建的?
代理协调 — 这些代理是如何协调的?
让我们探索一些有趣的多代理框架,并介绍这些组件是如何实现的。
人类行为的互动仿真
可以说,最具影响力和非常酷的多智能体论文之一被称为“生成智能体:人类行为的互动拟像”。13
在这篇论文中,他们创建了计算软件代理,模拟真实的人类行为,称为生成代理。
每个生成代理的个人资料使它们以独特的方式行动,有助于创造更有趣、更动态的行为。
每个代理初始化了三个模块(记忆、规划和反思),类似于我们之前在 ReAct 和 Reflexion 中见过的核心组件。
记忆模块是这个框架中最关键的组成部分之一。它存储了规划和反思的行为,以及所有发生的事件。
对于每一步或问题,会检索并评估记忆的时效性、重要性和相关性。得分最高的记忆会被分享给智能体。
它们让代理自由行动和互动。因此,由于没有特定的目标,对代理的协调很少。
这篇论文里有很多惊人的信息点,但我特别想强调他们的评估标准。14
他们的评估主要基于 AI 行为的可信度,由人类评估者进行评分。
它展示了观察、规划和反思在生成代理的性能中是多么重要。正如之前所探讨的,没有反思行为,规划是不完整的。
模块化框架
无论你选择什么框架来创建多智能体系统,它们通常由几个部分组成,包括其特征、环境感知、记忆、规划和可用的动作。15 16
常用的组件实现框架有 AutoGen 17、MetaGPT 18 和 CAMEL 19。然而,每个框架的代理间通信方式各不相同。
例如,使用 CAMEL 时,用户首先要创建问题并定义 AI 用户和 AI 助手。AI 用户角色代表人类用户,并指导整个过程。
之后,AI 用户和 AI 助手将通过互动共同解决查询。
这种角色扮演方法让智能体之间能进行协作沟通。
AutoGen 和 MetaGPT 采用不同的通信方式,但归根结底都是协作的。代理们可以互相交流,更新当前状态、目标和下一步行动。
过去一年,尤其是最近几周,这些框架的发展势头迅猛。
2025 年将是真正激动人心的一年,因为这些框架不断成熟和发展!
结论
至此,我们的 LLM 代理之旅就结束了!希望这篇帖子能帮助大家更好地理解 LLM 代理的构建。
要查看更多与大语言模型相关的可视化内容,并支持本通讯,请查看我写的关于大语言模型的书!
Russell, S. J., & Norvig, P. (2016). 人工智能:现代方法. 培生。
苏默斯、西奥多等。《语言代理的认知架构》。机器学习研究汇刊(2023)。
Schick, Timo, et al. "Toolformer: Language models can teach themselves to use tools." Advances in Neural Information Processing Systems 36 (2023): 68539-68551.
Qin, Yujia, et al. "Toolllm: Facilitating large language models to master 16000+ real-world apis." arXiv preprint arXiv:2307.16789 (2023).
Patil, Shishir G., et al. "Gorilla: Large language model connected with massive apis." Advances in Neural Information Processing Systems 37 (2024): 126544-126565.
"Introducing the Model Context Protocol." Anthropic, www.anthropic.com/news/model-context-protocol. Accessed 13 Mar. 2025.
Mann, Ben, et al. "Language models are few-shot learners." arXiv preprint arXiv:2005.14165 1 (2020): 3.
Wei, Jason, et al. "Chain-of-thought prompting elicits reasoning in large language models." Advances in neural information processing systems 35 (2022): 24824-24837.
Kojima, Takeshi, et al. "Large language models are zero-shot reasoners." Advances in neural information processing systems 35 (2022): 22199-22213.
Yao, Shunyu, Zhao, Jeffrey, Yu, Dian, Du, Nan, Shafran, Izhak, Narasimhan, Karthik, and Cao, Yuan. ReAct: Synergizing Reasoning and Acting in Language Models. Retrieved from https://par.nsf.gov/biblio/10451467. International Conference on Learning Representations (ICLR).
Shinn, Noah, et al. "Reflexion: Language agents with verbal reinforcement learning." Advances in Neural Information Processing Systems 36 (2023): 8634-8652.
Madaan, Aman, et al. "Self-refine: Iterative refinement with self-feedback." Advances in Neural Information Processing Systems 36 (2023): 46534-46594.
Park, Joon Sung, et al. "Generative agents: Interactive simulacra of human behavior." Proceedings of the 36th annual acm symposium on user interface software and technology. 2023.
To see a cool interactive playground of the Generative Agents, follow this link: https://reverie.herokuapp.com/arXiv_Demo/
Wang, Lei, et al. "A survey on large language model based autonomous agents." Frontiers of Computer Science 18.6 (2024): 186345.
Xi, Zhiheng, et al. "The rise and potential of large language model based agents: A survey." Science China Information Sciences 68.2 (2025): 121101.
Wu, Qingyun, et al. "Autogen: Enabling next-gen llm applications via multi-agent conversation." arXiv preprint arXiv:2308.08155 (2023).
Hong, Sirui, et al. "Metagpt: Meta programming for multi-agent collaborative framework." arXiv preprint arXiv:2308.00352 3.4 (2023): 6.
Li, Guohao, et al. "Camel: Communicative agents for" mind" exploration of large language model society." Advances in Neural Information Processing Systems 36 (2023): 51991-52008.
I love your work. After reading the article I ordered the book ;-) Thanks so much for your excellent contributions and for making this complex information available in such a visually engaging manner.
great article!