Exercises Neo4jChatMessageHistory and Neo4jEntityRetriever directly,
without depending on any specific @langchain/* package version. These
classes are duck-typed against the LangChain JS interfaces, so they fit
into RunnableWithMessageHistory and a retriever chain regardless of
LangChain JS version skew.
cp .env.example .env # set MEMORY_API_KEY
npm install
npm startThe script:
- Creates a fresh conversation.
- Persists three messages via the
BaseChatMessageHistory-shaped API. - Reads them back.
- Adds an entity and queries it via the retriever interface.
import { ChatOpenAI } from "@langchain/openai";
import { RunnableWithMessageHistory } from "@langchain/core/runnables";
import { Neo4jChatMessageHistory } from "@neo4j-labs/agent-memory/integrations/langchain";
const chain = new ChatOpenAI({ model: "gpt-4o-mini" }).pipe(...);
const memoryChain = new RunnableWithMessageHistory({
runnable: chain,
getMessageHistory: (sessionId) => new Neo4jChatMessageHistory(memory, sessionId),
inputMessagesKey: "input",
historyMessagesKey: "history",
});