添加消息历史记录(内存)
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 的更持久的存储。