---
id: ai-agent-notes
title: AI Agent 学习笔记
summary: 阅读 Lilian Weng 的文章，整理以语言模型为核心的 Agent 如何规划任务、利用记忆和调用工具。
tags:
  - AI
  - Agent
publishedAt: 2026-11-05T06:56:17.250Z
updatedAt: 2026-11-05T06:56:17.250Z
originalPublishedAt: 2023-09-28T14:20:00+08:00
wechatUrl: https://mp.weixin.qq.com/s/MMIJRxKsrNwYCY2_wlgKTQ
url: https://wuyanji.datiaomao.com/articles/ai-agent-notes/
markdownUrl: https://wuyanji.datiaomao.com/articles/ai-agent-notes/index.md
---

Lilian Weng是OpenAI的安全系统负责人，之前还领导过OpenAI的应用AI团队。她认为LLM的潜力不仅限于生成内容、故事、论文和应用等方面，它还具有强大的通用问题解决能力，可以应用于各个领域。要实现通用问题的解决能力，就需要建立一个有效的Agent System。

## Agent System

在最近的大模型领域，"Agent"已经是一个非常热门的词，Lilian将Agents定义为LLM、记忆、任务规划和工具使用的集合，其中LLM是核心大脑，记忆、任务规划和工具使用则是Agents系统实现的三个关键组件。再加上行动端，形成一个完整的Agent System。

![图片](https://wuyanji.datiaomao.com/media/ai-agent-notes/6f1e66ef1c5c682bdadd4f94.jpg)

  

1.  任务规划（Planning Skills）
    

*   子目标和分解：AI Agents能够将大型任务分解为较小的、可管理的子目标，以便高效地处理复杂任务。
    
*   反思和细化：Agents可以对过去的行为进行自我批评和反省，从错误中吸取经验教训，并对接下来的行动进行分析、总结和提炼，这种反思和细化可以帮助Agents提高自身的智能和适应性，从而提高最终结果的质量。
    

3.  记忆（Memory）
    

*   短期记忆：所有上下文学习都是依赖模型的短期记忆能力进行的。
    
*   长期记忆：这种设计使得AI Agents能够长期保存和调用无限信息的能力，一般通过外部载体存储和快速检索来实现。
    

5.  工具使用（Tool Use）
    

*   AI Agents可以学习如何调用外部API，以获取模型权重中缺少的额外信息，这些信息通常在预训练后很难更改，包括当前信息、代码执行能力、对专有信息源的访问等。
    

7.  行动端（Action）
    

*   在大脑做出分析、决策后，代理还需要采取行动以适应或改变环境，比如文本输出、图像输出、具体行动。
    

### 任务规划（Planning Skills）

处理复杂任务通常涉及多个步骤，因此 AI Agents 需要预先了解并规划这些步骤。任务规划能帮助 Agents 更好地理解任务结构和目标，并在此基础上分配资源和优化决策，提高任务完成的效率和质量。

推理能力（Reasoning）对于智能代理进行决策、分析等复杂任务而言至关重要。在大型语言模型（LLMs）中，通过思维链（Chain-of-Thought，CoT）等一系列提示方法来实现推理能力。而规划（Planning）则是应对大型挑战时常用的策略。它帮助代理组织思维、设定目标并确定实现这些目标的步骤。

在具体实现中，规划可以包含两个步骤：

1.  计划制定（Plan Formulation）：代理将复杂任务分解为更易于管理的子任务。例如，一次性分解再按顺序执行、逐步规划并执行、多路规划并选取最优路径等。在一些需要专业知识的场景中，代理可与特定领域的 Planner 模块集成，提升能力。
    
2.  计划反思（Plan Reflection）：在制定计划后，可以进行反思并评估其优劣。这种反思一般来自三个方面：借助内部反馈机制；与人类互动获得反馈；从环境中获得反馈。
    

#### 任务分解（Task Decomposition）

Agent 将复杂任务分解为更易于管理的子任务。例如，一次性分解再按顺序执行、逐步规划并执行、多路规划并选取最优路径等。这里可以用到一系列方法。

1.  思维链（Chain of Thought，CoT）已经成为提升复杂任务模型性能的标准提示技术。它通过让模型逐步思考，利用更多的测试时间，将困难的任务拆解为更小、更简单的步骤。CoT 能够将大型任务转化为多个可管理的子任务，并揭示模型的思维链条，从而提高模型性能。这种技术使得模型更易于理解，也更容易获得更好的结果。
    
2.  思维树（Tree of Thoughts）在 CoT 的基础上，通过在每一步探索多种推理可能性来扩展模型性能。思维树首先将问题分解为多个思维步骤，每个步骤生成多个思维，从而创建一个树状结构。搜索过程可以是广度优先搜索（BFS）或深度优先搜索（DFS），每个状态由分类器（通过提示）或多数投票进行评估。
    
3.  PDDL（Planning Domain Definition Language）是一种标准化和通用的规划领域语言，用于描述计划领域的形式语言。它能够用于描述可行动作、初始状态和目标状态的语言，帮助规划器生成计划。PDDL 通常被用于 AI 的自动规划问题，例如机器人路径规划、调度问题、资源分配等。使用特定领域的 PDDL 可以帮助 Agents 更好地规划和执行任务，提高任务完成的效率和质量。
    

#### 自我反思（Self-Reflection）

在制定计划后，进行反思并评估其优劣。在任务规划中，反思是一个重要环节，它让 Agents 能够通过改进过去的行动决策、纠正过往的错误以不断提高自身表现。这种反思一般来自三个方面：

*   借助内部反馈机制进行自我反思；
    
*   与人类互动获得反馈；
    
*   从环境中获得反馈。
    

自我反思（Self-reflection）在系统内部运行，可以更高效地改进自身，而与人类反馈互动和环境反馈互动效率较低。

Auto-GPT 实现的基础组件之一 ReAct，是一个良好的自我反思模型。ReAct 让 LLM 把内心独白“说”出来，然后再根据独白做出相应的动作，模仿人类的推理过程，以提高 LLM 答案的准确性。ReAct 提示模板包含了明确的 LLM 思考步骤，大致格式如下：

```
Thought: ...Action: ...Observation: ...... (Repeated many times)
```

另一种方法是通过微调（fine-tuning），将上千条正确的推理动作轨迹输入到 LLM 进行 fine-tuning，可以显著提高准确率。例如 Chain of Hindsight，其核心思想是在上下文中呈现顺序改进输出的历史，并训练模型以产生更好的输出。它在有监督条件下微调模型，让模型学习如何根据反馈生成更好的输出。CoH 还添加了正则化项来避免过拟合，并在训练过程中屏蔽常用词，以提高泛化能力。

#### 泛化

拥有世界知识的 LLMs 赋予智能代理具备强大的迁移与泛化能力。一个好的 Agent 不仅是静态的知识库，还应具备动态的学习能力：

1.  对未知任务的泛化：通过指令微调，让通用大模型能够在更细分领域取得不亚于专家模型的能力。
    
2.  情景学习（In-context Learning）：从上下文的少量示例中进行类比学习。
    
3.  持续学习（Continual Learning）：保持持续的进步，但要注意避免学习新任务时丢失过往任务中的知识。
    

### 记忆（Memory）

记忆可以定义为获取、存储、保留和稍后检索信息的过程，其中包括储存了Agent过去的观察、思考和行动序列的信息。

#### 短期记忆（Short-term memory）

由于Transformer模型的上下文窗口有限，短期记忆是一种短暂且有限的记忆形式；为了应对这种限制，目前有以下解决方案：

1.  扩展主干架构的长度限制：通过改进Transformer模型固有的序列长度限制问题来提高短期记忆的容量。
    
2.  总结记忆（Summarizing）：对记忆进行摘要总结，增强Agent从记忆中提取关键细节的能力，例如LangChain的Conversation Summary Buffer Memory（它会在内存中保留最近的一些聊天记录作为缓冲区，当缓冲区的总标记数达到预设上限时，对所有聊天记录进行总结摘要作为系统消息，并清理其他历史消息）。
    

#### 长期记忆（Long-term memory）

长期记忆是AI Agent可以在查询时处理的外部向量存储，可以通过快速检索访问，并使用适当的数据结构对记忆进行压缩，以提高记忆检索效率。

外部存储器可以减少有限注意力带来的限制。一种常见的方法是将信息的嵌入保存到向量存储数据库中，该数据库支持快速最大内积搜索（Maximum Inner Product Search，MIPS）。为了提高检索速度，常用的方法是使用近似最近邻（ANN）算法，以返回大约前k个最近邻，以牺牲一定的精度损失来换取巨大的加速。这种方法可以减轻模型处理大量历史信息时的计算负担，提高模型的效率和性能。下面是几种实现ANN的算法和工具，它们的本质都是对信息进行结构化处理（如转换为图形、树形、多层结构等），以实现快速搜索近似值：

*   局部敏感哈希（Locality-Sensitive Hashing，LSH）
    
*   近似最近邻搜索算法（Approximate Nearest Neighbors Oh Yeah，ANNOY）
    
*   分层可导航小世界（Hierarchical Navigable Small World，HNSW）
    
*   Facebook AI相似性搜索（Facebook AI Similarity Search，FAISS）
    
*   可扩展最近邻（Scalable Nearest Neighbors，ScaNN）
    

### 工具使用（Tool Use）

人类通过使用工具来完成超出我们身体和认知极限的任务。同样地，给LLM配备外部工具也可以显著扩展大模型的功能，使其能够处理更加复杂的任务。

#### MRKL（Modular Reasoning, Knowledge and Language）

AI21 Labs的Ehud Karpas等人于2022年5月发布了MRKL框架，这是一种自主代理的神经符号架构，可以帮助大模型更自如地调用外部工具。

MRKL（Modular Reasoning, Knowledge and Language）即“模块化推理、知识和语言”，它设计中包含了一组“专家（expert）”模块，通用LLM将扮演路由器（router）的角色，通过查询路由找到最合适的专家模块。这些模块可以是神经模块（Neural），也可以是符号模块，甚至是其他大模型的API。

具体的流程大致如下：首先，LLM可以访问API搜索引擎，找到合适的API调用，并使用相应的文档进行调用，以便更好地处理请求。

```
1. 发起API请求2. LLM总结或提取关键词3. 使用相关API搜索引擎4. 找到相关的API接口进行调用5. 返回调用结果
```

### 行动端（Action）

#### 文本输出

LLM的基础能力之一，可以生成文本输出。

#### 未来：具身行动（LLM + 实体）

具身（Embodiment）是指代理与环境交互过程中，理解、改造环境并更新自身状态的能力。具身行动（Embodied Action）被视为虚拟智能与物理现实之间的桥梁。当LLM能够连接周围的接收器时，就能像人类一样主动感知物理环境，如果连接到机器人，还可以主动影响物理环境。

具身行动将使LLM具备以下能力：

*   观察（Observation）：帮助智能代理在环境中定位自身位置、感知物体和获取其他环境信息；
    
*   操纵（Manipulation）：完成一些具体的抓取、推动等操作任务；
    
*   导航（Navigation）：根据任务目标改变自身位置，并根据环境信息更新自身状态。
    

基于以上这些行动，代理就能够完成更加复杂的任务。

## Agent 社会

连接，连接，还是连接。当 Agents 建立了足够多的连接，会发生什么？

![图片](https://wuyanji.datiaomao.com/media/ai-agent-notes/a0109c8dd454bc7c299dee42.jpg)

  

### Agent 社会：从个性到社会性

斯坦福大学的 Generative Agents 小镇为大家提供了生动的例子。Generative Agents 生成 AI Agents 是一项非常有趣的实验，其灵感来自模拟人生游戏。实验中有 25 个虚拟角色，每个角色都分别由一个 AI Agent 控制，它们在沙盒环境中生活和互动。这种生成 AI Agents 的设计可以为交互式应用程序创建可信的人类行为模拟，通过将 LLM 与记忆，计划和反思机制相结合，AI Agents 能够根据以往的经验进行调整和改进，并与其他 AI Agents 进行交互。这就形成了一个 Agent 社会。

Agent 社会可以用于探索群体智能的能力边界，例如代理们共同筹办了一场情人节派对；也可以用来加速社会科学的研究，例如通过模拟社交网络来观察传播学现象。此外，还有研究通过模拟道德决策场景来探讨代理背后的价值观、通过模拟政策对社会的影响来辅助决策等。

  

### 模拟社会的运行环境

Agent 社会不仅由独立的个体构成，还包括了与其交互的环境。环境对代理的感知、行动和互动产生影响。反过来，代理也通过他们的行为和决策也改变着环境的状态。

根据这种交互我们就能实现虚拟沙盒环境。可以在计算机领域模拟社会互动、研究政策规划等问题。而且这样的平台具有很好的扩展性。

  

## Agents 的局限

最后说一下 Agents 的局限，基于 LLM 搭建 Agents 系统的实现还存在以下限制：

1.  有限的上下文容量（Finite context length）即使架构再扩展也只能保持有限上下文，这会限制系统的历史信息、详细说明、API 调用上下文和响应的能力。
    
2.  长期规划和任务分解方面的挑战（Challenges in long-term planning and task decomposition），在漫长的历史中进行规划和有效探索解决方案空间仍然具有很大的挑战性。尽管 LLM 能够尝试调整计划来应对意外错误，但与从反复试验中学习的人类相比，它的鲁棒性较低。
    
3.  自然语言接口的可靠性挑战（Reliability of natural language interface），模型输出的可靠性有问题，LLM 可能会出现格式错误、甚至在一些时候也会表现出叛逆行为，如拒绝遵循指令等。为了提高自然语言接口的可靠性，就需要进一步改进自然语言处理技术，以减少错误和提高模型的鲁棒性。
