LLM 认知架构
概述
大语言模型(LLM)的出现催生了一种全新的认知架构范式:以 LLM 作为核心"认知引擎",配合结构化的记忆、工具和控制流来构建智能体。本文深入分析 CoALA(Cognitive Architectures for Language Agents)框架、RAISE 架构以及 LLM 如何映射到经典认知功能。
1. 为什么需要 LLM 认知架构?
LLM 本身只是一个"文本到文本"的函数:
\[
f_{\theta}: \text{String} \rightarrow \text{String}
\]
要将 LLM 变成智能体,需要回答:
- 记忆:如何扩展有限的上下文窗口?
- 推理:如何实现多步、可回溯的推理?
- 行动:如何与外部世界交互?
- 学习:如何从经验中改进?
- 控制:如何协调这些组件?
认知架构为这些问题提供了系统化的答案。
2. CoALA 框架
CoALA(Cognitive Architectures for Language Agents)由 Sumers et al. (2024) 提出,是目前最完整的 LLM 智能体认知架构框架。
2.1 架构总览
graph TD
subgraph CoALA 框架
subgraph 记忆系统
WM[工作记忆<br/>Working Memory]
LTM[长期记忆<br/>Long-Term Memory]
LTM --> EP[情景记忆<br/>Episodic]
LTM --> SEM[语义记忆<br/>Semantic]
LTM --> PROC[程序式记忆<br/>Procedural]
end
subgraph 决策过程
LLM_CORE[LLM 核心<br/>推理引擎]
DL[慎思循环<br/>Deliberation Loop]
end
subgraph 行动空间
INT[内部动作<br/>推理 / 检索 / 学习]
EXT[外部动作<br/>工具调用 / 环境交互]
end
ENV[外部环境] -->|感知| WM
WM --> LLM_CORE
LTM --> WM
LLM_CORE --> DL
DL --> INT
DL --> EXT
INT -->|更新| WM
INT -->|存储| LTM
EXT -->|观察| WM
EXT --> ENV
end
2.2 记忆系统
CoALA 将 LLM 智能体的记忆分为三个层次:
工作记忆 (Working Memory)
对应 LLM 的上下文窗口:
| 组件 | 内容 |
|---|---|
| 系统提示 | 角色定义、行为规范 |
| 对话历史 | 用户消息和助手回复 |
| 检索结果 | 从长期记忆检索的相关信息 |
| 工具输出 | 工具调用的返回结果 |
| 中间推理 | CoT 的思考步骤 |
工作记忆的容量受上下文窗口限制:
\[
|\text{WM}| \leq L_{\text{context}} \quad (\text{如 128K tokens})
\]
长期记忆子类
| 类型 | 存储内容 | 实现方式 | 对应经典概念 |
|---|---|---|---|
| 情景记忆 | 过去的交互经历 | 向量数据库 + 时间索引 | ACT-R 声明式记忆 |
| 语义记忆 | 事实和概念知识 | 知识图谱 / 文档库 | ACT-R 声明式记忆 |
| 程序式记忆 | 技能和操作方法 | 代码库 / 工具定义 / Few-shot | SOAR 产生式规则 |
2.3 决策过程
CoALA 的决策过程是一个慎思循环(Deliberation Loop):
while task_not_complete:
# 1. 感知:获取新信息
observation = perceive(environment)
working_memory.update(observation)
# 2. 检索:从长期记忆获取相关信息
retrieved = long_term_memory.retrieve(working_memory.query())
working_memory.update(retrieved)
# 3. 推理:LLM 基于工作记忆进行推理
thought, action = llm.reason(working_memory)
# 4. 行动选择与执行
if action.type == "internal":
# 内部动作:推理、记忆更新、学习
result = execute_internal(action)
elif action.type == "external":
# 外部动作:工具调用、环境交互
result = execute_external(action)
# 5. 更新记忆
working_memory.update(result)
long_term_memory.store(episode=(observation, thought, action, result))
2.4 行动空间
CoALA 将智能体的行动分为内部和外部两类:
内部动作(不改变外部环境):
- 推理 (Reasoning):CoT、ToT 等思考过程
- 检索 (Retrieval):从记忆或知识库中查询信息
- 学习 (Learning):更新长期记忆中的知识
外部动作(影响外部环境):
- 工具调用 (Tool Use):调用 API、执行代码
- 通信 (Communication):与用户或其他智能体交流
- 环境操作 (Grounding):操作文件、浏览网页
3. RAISE 架构
RAISE(Reasoning, Acting, Interacting, Self-improving, Experience-learning)是另一个有影响力的 LLM 认知架构。
3.1 五大模块
graph LR
R[推理模块<br/>Reasoning] --> A[行动模块<br/>Acting]
A --> I[交互模块<br/>Interacting]
I --> S[自我改进<br/>Self-improving]
S --> E[经验学习<br/>Experience]
E --> R
R -.-> |CoT/ToT| R
A -.-> |工具调用| A
I -.-> |环境反馈| I
S -.-> |反思| S
E -.-> |记忆存储| E
| 模块 | 功能 | 关键技术 |
|---|---|---|
| Reasoning | 多步推理和规划 | CoT, ToT, 自我一致性 |
| Acting | 执行动作和使用工具 | Function Calling, Code Execution |
| Interacting | 与环境和用户交互 | 对话管理, 反馈处理 |
| Self-improving | 反思和自我纠正 | Reflexion, Self-Refine |
| Experience | 经验积累和学习 | 记忆存储, 案例库 |
4. LLM 到认知功能的映射
4.1 认知功能映射表
| 认知功能 | 经典实现 | LLM 实现 |
|---|---|---|
| 感知 | 传感器 + 特征提取 | 多模态输入编码(文本/图像/音频) |
| 注意力 | 特征选择 | Self-Attention 机制 + 上下文窗口管理 |
| 工作记忆 | 容量有限的缓冲区 | 上下文窗口(有限但远大于人类 7±2) |
| 长期记忆 | 知识库 / 语义网络 | 模型参数(隐式) + 外部存储(显式) |
| 推理 | 逻辑推导 / 搜索 | 自回归生成 + CoT |
| 规划 | STRIPS / HTN | 任务分解 + 多步生成 |
| 学习 | 参数更新 / 规则获取 | In-context Learning + 经验记忆 |
| 语言 | NLU/NLG 管道 | 端到端语言模型(天然优势) |
| 元认知 | 元推理规则 | 自我反思 / Confidence 估计 |
4.2 LLM 作为"系统 1 + 系统 2"
借鉴 Kahneman 的双过程理论:
| 特征 | 系统 1(快思考) | 系统 2(慢思考) | LLM 实现 |
|---|---|---|---|
| 速度 | 快速、自动 | 缓慢、受控 | 直接生成 vs CoT |
| 努力 | 低认知负荷 | 高认知负荷 | 短回复 vs 长推理链 |
| 意识 | 无意识 | 有意识 | 隐式知识 vs 显式思考 |
| 控制 | 难以控制 | 可有意控制 | Temperature 低 vs 高 |
LLM 的"系统 1":直接生成回答(单次前向传播)
\[
y = \arg\max P(y \mid x; \theta)
\]
LLM 的"系统 2":通过 CoT 进行慎思推理
\[
y = \arg\max P(y \mid x, t_1, t_2, \ldots, t_n; \theta)
\]
其中 \(t_1, \ldots, t_n\) 是中间思考步骤。
交叉引用
思维链的详细讨论见 思维链与推理模式。
5. 现代 LLM 智能体架构模式
5.1 标准 ReAct 架构
最基本的 LLM 智能体架构:
graph TD
U[用户输入] --> LLM
LLM --> T[Thought<br/>思考]
T --> A[Action<br/>动作选择]
A --> TOOL[工具执行]
TOOL --> O[Observation<br/>观察结果]
O --> LLM
LLM --> |任务完成| R[Final Answer]
5.2 带记忆的增强架构
graph TD
U[用户输入] --> WM[工作记忆组装]
SYS[系统提示] --> WM
MEM[长期记忆检索] --> WM
HIST[对话历史] --> WM
WM --> LLM[LLM 推理]
LLM --> D{决策}
D -->|思考| T[内部推理]
D -->|行动| A[工具调用]
D -->|反思| REF[自我评估]
D -->|回答| R[最终回复]
T --> LLM
A --> O[观察] --> LLM
REF --> MEM_W[写入记忆]
MEM_W --> MEM
5.3 Anthropic 的智能体设计模式
Anthropic (2024) 在《Building Effective Agents》中总结的模式:
| 模式 | 描述 | 适用场景 |
|---|---|---|
| 增强 LLM | LLM + 检索 + 工具,无循环 | 简单任务,单步可完成 |
| Prompt Chaining | 多个 LLM 调用串联,每步有明确输入/输出 | 可分解为固定步骤的任务 |
| 路由 | 根据输入类型分发到不同处理流 | 多类型输入,各类有专门处理 |
| 并行化 | 多个 LLM 同时处理子任务 | 独立子任务 + 结果聚合 |
| 编排-工作者 | 中心 LLM 分配任务给工作 LLM | 复杂任务需要动态分解 |
| 评估-优化 | 一个 LLM 生成,另一个评估 | 有明确质量标准的生成任务 |
| 自主循环 | 智能体自主循环直到完成 | 开放式任务,需要探索 |
6. 设计 LLM 认知架构的关键决策
6.1 记忆策略
\[
\text{记忆效用} = \text{相关性}(q, m) \times \text{时近度}(t_m) \times \text{重要性}(m)
\]
- 什么信息放入工作记忆?(上下文窗口管理)
- 什么信息存入长期记忆?(选择性存储)
- 如何检索?(语义搜索、时间衰减、重要性加权)
6.2 推理深度
- 何时使用"系统 1"(直接回答)?
- 何时使用"系统 2"(CoT 深度推理)?
- 何时需要树搜索(ToT)?
- 推理深度与计算成本的权衡
6.3 行动粒度
- 原子动作(单个 API 调用)vs 复合动作(预定义工作流)
- 动作空间的大小与选择难度
- 动作验证与安全检查
6.4 控制流
- 固定循环(ReAct loop)vs 动态规划(Plan-and-Execute)
- 何时停止?(终止条件设计)
- 失败时如何恢复?(重试、回退、求助)
7. 开放挑战
- 幻觉问题:LLM 的"信念"可能是虚构的,缺乏接地
- 长期一致性:跨多轮对话保持一致的"信念"和"意图"
- 学习效率:In-context Learning 的样本效率远低于人类
- 元认知:LLM 难以准确评估自己"知道什么"和"不知道什么"
- 可扩展记忆:如何在不丢失关键信息的情况下管理不断增长的记忆
- 多模态整合:如何统一处理文本、图像、代码等不同模态
参考文献
- Sumers, T. et al. (2024). Cognitive Architectures for Language Agents. arXiv:2309.02427.
- Anthropic. (2024). Building Effective Agents. anthropic.com.
- Weng, L. (2023). LLM Powered Autonomous Agents. lilianweng.github.io.
- Kahneman, D. (2011). Thinking, Fast and Slow. Farrar, Straus and Giroux.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023.
- Wang, L. et al. (2024). A Survey on Large Language Model based Autonomous Agents. Frontiers of Computer Science.