一、消息内存缓存
核心概念
通过 InMemoryChatMessageHistory 将对话历史存储在内存中,使模型能"记住"之前的对话内容。
关键组件
| 组件 | 作用 |
|---|---|
InMemoryChatMessageHistory | 内存中的聊天记录存储器 |
RunnableWithMessageHistory | 将模型包装为支持历史记录的可运行对象 |
memory_store(字典) | 以 session_id 为 key 管理多个会话的历史 |
代码流程
# 1. 创建内存存储字典
memory_store = {}
# 2. 定义获取会话历史的函数(按 session_id 区分会话)
def get_session_history(session_id: str):
if session_id not in memory_store:
memory_store[session_id] = InMemoryChatMessageHistory()
return memory_store[session_id]
# 3. 用 RunnableWithMessageHistory 包装模型
message_model = RunnableWithMessageHistory(model, get_session_history)
# 4. 通过 config 指定会话 ID
config = {"configurable": {"session_id": "123"}}
# 5. 多轮对话,模型自动记住上下文
response1 = message_model.invoke({"input": "你好,我是小明"}, config=config)
response2 = message_model.invoke({"input": "我叫什么名字?"}, config=config)
# → 模型能回答出"小明",因为历史被缓存了
运行效果
- 第一轮:用户说"我是小明",AI 正常打招呼
- 第二轮:用户问"我叫什么名字",AI 能从历史中回忆出"小明"
从 LangChain 的 v0.3 版本开始,官方建议 LangChain 用户不要使用 RunnableWithMessageHistory,而是利用 LangGraph 持久性来完成。
二、消息过滤
核心概念
使用 filter_messages 函数对消息列表进行筛选,按或过滤消息。


