LangChain之多轮对话

发布时间:2026/8/15 9:17:21
LangChain之多轮对话 为了让大模型能够记忆历史消息让其在回答每一个问题时不至于都开启一次新的会话langchain中内置了会话记忆的功能接下来我将举例介绍当我们有多个用户在对话时为了方便对会话内容进行标记我们为他们的对话进行一个标记这里我们命名为session_id,并用store{}进行统一管理。获取对应会话历史消息内容store{} # 获取会话历史 def get_session_history(session_id:str)-BaseChatMessageHistory: if session_id not in store: store[session_id] InMemoryChatMessageHistory() return store[session_id]其中:InMemoryChatMessageHistory()就是一个内存中的聊天历史容器我们将聊天历史存入其对应的store[session_id]中进行保存。创建一个可运行的模型带会话历史# 创建一个可运行的模型带会话历史 with_history_message_model RunnableWithMessageHistory(model,get_session_history) config{configurable:{session_id:1}}RunnableWithMessageHistory(model,get_session_history) 给一个普通 Runnable 加上“自动管理聊天历史”的能力把 model 包装起来让它能够根据 session_id 自动读取和保存历史消息。