Momento 支持的聊天内存
¥Momento-Backed Chat Memory
为了在聊天会话中实现分布式、无服务器持久化,你可以换入由 Momento 支持的聊天消息历史记录。由于 Momento 缓存可立即使用且无需任何基础设施维护,因此无论是在本地构建还是在生产环境中,它都是开始使用聊天历史记录的绝佳方式。
¥For distributed, serverless persistence across chat sessions, you can swap in a Momento-backed chat message history. Because a Momento cache is instantly available and requires zero infrastructure maintenance, it's a great way to get started with chat history whether building locally or in production.
设置
¥Setup
你需要在你的项目中安装 Momento 客户端库。鉴于 Momento 与 Node.js、浏览器和边缘环境的兼容性,请确保你安装了相关的软件包。
¥You will need to install the Momento Client Library in your project. Given Momento's compatibility with Node.js, browser, and edge environments, ensure you install the relevant package.
要为 Node.js 安装:
¥To install for Node.js:
- npm
- Yarn
- pnpm
npm install @gomomento/sdk
yarn add @gomomento/sdk
pnpm add @gomomento/sdk
浏览器/Edge 工作器安装:
¥To install for browser/edge workers:
- npm
- Yarn
- pnpm
npm install @gomomento/sdk-web
yarn add @gomomento/sdk-web
pnpm add @gomomento/sdk-web
- 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
你还需要一个来自 Momento 的 API 密钥。你可以注册一个免费账户 此处。
¥You will also need an API key from Momento. You can sign up for a free account here.
用法
¥Usage
为了区分不同的聊天历史记录会话,我们需要一个唯一的 sessionId。你还可以提供可选的 sessionTtl,使会话在指定的秒数后过期。
¥To distinguish one chat history session from another, we need a unique sessionId. You may also provide an optional sessionTtl to make sessions expire after a given number of seconds.
import {
CacheClient,
Configurations,
CredentialProvider,
} from "@gomomento/sdk"; // `from "gomomento/sdk-web";` for browser/edge
import { BufferMemory } from "langchain/memory";
import { ChatOpenAI } from "@langchain/openai";
import { ConversationChain } from "langchain/chains";
import { MomentoChatMessageHistory } from "@langchain/community/stores/message/momento";
// See https://github.com/momentohq/client-sdk-javascript for connection options
const client = new CacheClient({
configuration: Configurations.Laptop.v1(),
credentialProvider: CredentialProvider.fromEnvironmentVariable({
environmentVariableName: "MOMENTO_API_KEY",
}),
defaultTtlSeconds: 60 * 60 * 24,
});
// Create a unique session ID
const sessionId = new Date().toISOString();
const cacheName = "langchain";
const memory = new BufferMemory({
chatHistory: await MomentoChatMessageHistory.fromProps({
client,
cacheName,
sessionId,
sessionTtl: 300,
}),
});
console.log(
`cacheName=${cacheName} and sessionId=${sessionId} . This will be used to store the chat history. You can inspect the values at your Momento console at https://console.gomomento.com.`
);
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 Momento
console.log(await memory.chatHistory.getMessages());
API Reference:
- BufferMemory from
langchain/memory - ChatOpenAI from
@langchain/openai - ConversationChain from
langchain/chains - MomentoChatMessageHistory from
@langchain/community/stores/message/momento