1. LangChain InMemorySaver 短期记忆机制解析
在构建对话系统时,短期记忆(Short-term Memory)是让AI助手保持上下文连贯性的核心技术。LangChain提供的InMemorySaver就是一种轻量级的内存检查点机制,它能在单次会话中临时保存对话状态。下面通过一个实际案例,拆解其工作原理和实现细节。
1.1 核心组件构成
示例代码中主要涉及三个关键组件:
- ChatQwen:对接通义千问模型的LangChain封装,配置参数包括:
python复制llm = ChatQwen( model="qwen-plus", # 模型版本 max_tokens=1000, # 最大token限制 api_key=os.getenv('DASHSCOPE_API_KEY'), # API密钥 base_url=os.getenv('DASHSCOPE_BASE_URL'), # 服务地址 enable_thinking=False # 禁用思考链 ) - create_agent:创建带记忆能力的对话代理,关键参数
checkpointer=InMemorySaver()启用了内存检查点 - config对象:通过
"thread_id": "1"标识会话线程,这是记忆关联的关键
注意:
enable_thinking=False会禁用模型的推理过程优化,在简单对话场景下可以提升响应速度,但复杂任务建议开启。
1.2 记忆实现原理
InMemorySaver的工作原理可分为三个层次:
- 数据存储:以Python字典形式在内存中保存对话状态
- 会话关联:通过
thread_id区分不同对话线程 - 自动装配:每次调用时自动将历史消息作为上下文注入
当执行第二次invoke时,系统会自动将首次对话记录:
python复制{"role": "user", "content": "我叫nick.", "name": "pangchengyong"}
作为上下文注入,因此助手能正确回答"你叫Nick"。
