LangChain BaseChatMemory 详解与子类实战
一、什么是 BaseChatMemory?

BaseChatMemory 是 LangChain 中所有聊天型记忆模块的基类,简单说就是'所有聊天记忆的模板'——它定义了记忆存储和检索的通用规则,不管是我们后面要学的 ConversationBufferMemory,还是自定义记忆,都得遵守它的规范。
# 核心导入方式
from langchain.memory.chat_memory import BaseChatMemory
它的核心价值在于'标准化':不管你是想存原始对话,还是存对话摘要,甚至想加密存储、过滤敏感信息,都能通过继承它来实现,不用从零造轮子。
二、BaseChatMemory 的核心作用
作为基类,BaseChatMemory 主要干三件大事,撑起所有聊天记忆的基础功能:
1. 标准化接口:统一'存'和'取'的方法
不管什么聊天记忆,都得实现两个核心方法,这是 BaseChatMemory 定好的规矩:
save_context():存上下文——把用户输入和模型输出保存到记忆里;load_memory_variables():取记忆——把保存的对话历史加载出来,供大模型使用。
有了统一接口,我们切换不同记忆模块时,代码不用大改,兼容性拉满!
2. 状态管理:维护对话历史
BaseChatMemory 会通过内部属性,帮我们管好对话消息的增删改查,不用自己手动维护列表。不管是加一条用户消息,还是清空所有记忆,都有现成的方法可用。
3. 高扩展性:支持自定义逻辑
这是最实用的点!我们可以继承 BaseChatMemory,重写它的方法,实现自己的需求:比如保存时过滤'密码'等敏感词,加载时只取最近 3 天的对话,甚至把记忆加密存储。
三、BaseChatMemory 的关键属性和核心方法
要用好 BaseChatMemory,先搞懂它的'核心装备'——属性和方法,用起来就像玩游戏用技能一样简单!
1. 关键属性:chat_memory
这是存储对话消息的'容器',类型是 ChatMessageHistory,里面有个 messages 列表,所有对话消息都存在这里。
每条消息都是 BaseMessage 的子类,常见的有两种:
HumanMessage:用户发送的消息;AIMessage:模型回复的消息。
简单说,chat_memory 就像一个'聊天笔记本',每一页就是一条 HumanMessage 或 AIMessage。
2. 核心方法:3 个常用技能
(1)save_context():保存对话上下文
作用:把用户输入和模型输出成对保存到 chat_memory 里。
用法有两种,效果完全一样:
memory.save_context(
{: },
{: }
)
memory.chat_memory.add_user_message()
memory.chat_memory.add_ai_message()




