MongoDB 聊天记忆
兼容性
仅支持 Node.js。
您仍然可以通过将 runtime 变量设置为 nodejs 来在 Next.js 中创建使用 MongoDB 的 API 路由,如下所示:
export const runtime = "nodejs";
您可以在 Next.js 文档中此处了解更多关于 Edge 运行时的信息。
为了在聊天会话之间实现更长期的持久化存储,您可以将默认的内存中 chatHistory(用于支持 BufferMemory 等聊天记忆类)替换为 MongoDB 实例。
安装配置
您需要在项目中安装 Node MongoDB SDK:
- npm
- Yarn
- pnpm
npm install -S mongodb
yarn add mongodb
pnpm add mongodb
:::提示 请参阅安装集成包的一般说明部分。 :::
- npm
- Yarn
- pnpm
npm install @langchain/openai @langchain/community @langchain/core
yarn add @langchain/openai @langchain/community @langchain/core
pnpm add @langchain/openai @langchain/community @langchain/core
您还需要一个可以连接的 MongoDB 实例。
使用方法
存储在 MongoDB 中的每个聊天历史会话都必须具有唯一的会话 ID。
import { MongoClient, ObjectId } from "mongodb";
import { BufferMemory } from "langchain/memory";
import { ChatOpenAI } from "@langchain/openai";
import { ConversationChain } from "langchain/chains";
import { MongoDBChatMessageHistory } from "@langchain/mongodb";
const client = new MongoClient(process.env.MONGODB_ATLAS_URI || "", {
driverInfo: { name: "langchainjs" },
});
await client.connect();
const collection = client.db("langchain").collection("memory");
// generate a new sessionId string
const sessionId = new ObjectId().toString();
const memory = new BufferMemory({
chatHistory: new MongoDBChatMessageHistory({
collection,
sessionId,
}),
});
const model = new ChatOpenAI({
model: "gpt-3.5-turbo",
temperature: 0,
});
const chain = new ConversationChain({ llm: model, memory });
const res1 = await chain.invoke({ input: "Hi! I'm Jim." });
console.log({ res1 });
/*
{
res1: {
text: "Hello Jim! It's nice to meet you. My name is AI. How may I assist you today?"
}
}
*/
const res2 = await chain.invoke({ input: "What did I just say my name was?" });
console.log({ res2 });
/*
{
res1: {
text: "You said your name was Jim."
}
}
*/
// See the chat history in the MongoDb
console.log(await memory.chatHistory.getMessages());
// clear chat history
await memory.chatHistory.clear();
API Reference:
- BufferMemory from
langchain/memory - ChatOpenAI from
@langchain/openai - ConversationChain from
langchain/chains - MongoDBChatMessageHistory from
@langchain/mongodb