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.
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.To install for Node.js:
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.
Copy
Ask AI
import { CacheClient, Configurations, CredentialProvider,} from "@gomomento/sdk"; // `from "gomomento/sdk-web";` for browser/edgeimport { 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 optionsconst client = new CacheClient({ configuration: Configurations.Laptop.v1(), credentialProvider: CredentialProvider.fromEnvironmentVariable({ environmentVariableName: "MOMENTO_API_KEY", }), defaultTtlSeconds: 60 * 60 * 24,});// Create a unique session IDconst 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 Momentoconsole.log(await memory.chatHistory.getMessages());
Assistant
Responses are generated using AI and may contain mistakes.