1. 项目概述
今天继续探索Agent开发的核心模块——记忆系统。在实际对话场景中,记忆能力直接决定了Agent的上下文理解水平。我们将重点拆解LangChain框架中的两种经典记忆实现:ConversationBufferMemory和ConversationBufferWindowMemory,通过代码实例展示其工作机制和适用场景。
提示:本文所有代码示例基于LangChain 0.1.x版本,建议配合官方文档交叉验证
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 记忆模块核心原理解析
2.1 对话记忆的本质需求
在开发对话型Agent时,记忆系统需要解决三个核心问题:
- 上下文保持:如何存储历史对话内容
- 信息过滤:如何避免无关历史干扰当前响应
- 长度控制:如何防止超长上下文导致模型性能下降
LangChain通过抽象Memory基类,提供了多种记忆实现方案。我们先看最基础的缓冲区记忆实现。
2.2 ConversationBufferMemory 详解
这是最简单的记忆形式,完整保存所有历史对话。其核心数据结构为:
python复制class ConversationBufferMemory(BaseMemory):
chat_memory: ChatMessageHistory = Field(default_factory=ChatMessageHistory)
memory_key: str = "history" # 存储到prompt模板的变量名
典型使用示例:
python复制from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({"input": "你好"}, {"output": "我是AI助手"})
memory.save_context({"input": "今天天气如何"}, {"output": "请提供您的位置"})
print(memory.load_memory_variables({}))
# 输出: {'history': 'Human: 你好\nAI: 我是AI助手\nHuman: 今天天气如何\
