Langchain BufferMemory + ChatPromptTemplate не работает
Следующий код устанавливает новую цепочку, используя буферную память, подключенную к Redis, и простое приглашение. Это не работает.
const memory = new BufferMemory({
chatHistory: new RedisChatMessageHistory({
sessionId: "123",
sessionTTL: 300,
config: {
URL: "",
},
}),
memoryKey: "history",
});
const chatPrompt = ChatPromptTemplate.fromPromptMessages([
SystemMessagePromptTemplate.fromTemplate(
"my prompt."
),
new MessagesPlaceholder("history"),
HumanMessagePromptTemplate.fromTemplate("{input}"),
]);
const chain = new ConversationChain({
memory,
prompt: chatPrompt,
llm: model,
});
const response = await chain.call({
input: req.question,
});
Если я удалю приглашение из ConversaitonChain, оно будет работать нормально, поэтому я знаю, что что-то упускаю при извлечении/слиянии истории, но не могу понять, что именно.
Ошибка бесполезна: «message._getType не является функцией»
Что мне не хватает?
1 ответ
У меня была такая же проблема, но благодаря этой теме я смог ее исправить. Судя по всему, вам нужно обновить код, например:
const memory = new BufferMemory({
chatHistory: new RedisChatMessageHistory({
sessionId: "123",
sessionTTL: 300,
config: {
URL: "",
},
}),
memoryKey: "history",
//Add this
returnMessages: true
});
После этого добавление приглашения в ConversaitonChain работает хорошо.