添加消息历史记录(内存)
RunnableWithMessageHistory 允许我们将消息历史记录添加到某些类型的链中。它包装另一个 Runnable 并管理它的聊天消息历史记录。
具体来说,它可用于任何将以下之一作为输入的 Runnable
- BaseMessage 序列
 - 一个字典,其键采用 BaseMessage 序列
 - 带有一个键的字典,该键将最新消息作为 BaseMessage 的字符串或序列,以及一个单独的键,该键将历史消息
 
并作为输出之一返回
- 一个字符串可以视为 AIMessage 的内容
 - BaseMessage 序列
 - 一个字典,其键包含 BaseMessage 序列
 
让我们看一些示例,看看它是如何工作的。首先我们构造一个可运行的(这里接受一个字典作为输入并返回一条消息作为输出):
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_openai.chat_models import ChatOpenAI
model = ChatOpenAI()
prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "You're an assistant who's good at {ability}. Respond in 20 words or fewer",
        ),
        MessagesPlaceholder(variable_name="history"),
        ("human", "{input}"),
    ]
)
runnable = prompt | model
为了管理消息历史记录,我们需要: 1. 这个可运行程序; 2. 返回 BaseChatMessageHistory 实例的可调用函数。
查看内存集成页面,了解使用 Redis 和其他提供程序实现聊天消息历史记录。在这里,我们演示如何使用内存中的 ChatMessageHistory 以及使用 RedisChatMessageHistory 的更持久的存储。