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 работает хорошо.

Другие вопросы по тегам