@langchain/community
Version:
Third-party integrations for LangChain.js
1 lines • 4.54 kB
Source Map (JSON)
{"version":3,"file":"astradb.cjs","names":["BaseListChatMessageHistory","DataAPIClient"],"sources":["../../../src/stores/message/astradb.ts"],"sourcesContent":["import { BaseListChatMessageHistory } from \"@langchain/core/chat_history\";\nimport {\n BaseMessage,\n StoredMessage,\n mapChatMessagesToStoredMessages,\n mapStoredMessagesToChatMessages,\n} from \"@langchain/core/messages\";\nimport { DataAPIClient, Collection } from \"@datastax/astra-db-ts\";\n\nexport interface AstraDBChatMessageHistoryInput {\n token: string;\n endpoint: string;\n collectionName: string;\n namespace?: string;\n sessionId: string;\n}\n\nexport interface AstraDBChatMessageHistoryProps {\n collection: Collection;\n sessionId: string;\n}\n\n/**\n * Class for storing chat message history with Astra DB. It extends the\n * BaseListChatMessageHistory class and provides methods to get, add, and\n * clear messages.\n * @example\n *\n * ```typescript\n * const client = new AstraDB(\n * process.env.ASTRA_DB_APPLICATION_TOKEN,\n * process.env.ASTRA_DB_ENDPOINT,\n * process.env.ASTRA_DB_NAMESPACE\n * );\n *\n * const collection = await client.collection(\"test_chat\");\n *\n * const chatHistory = new AstraDBChatMessageHistory({\n * collection,\n * sessionId: \"YOUR_SESSION_ID\",\n * });\n *\n * const messages = await chatHistory.getMessages();\n *\n * await chatHistory.clear();\n */\nexport class AstraDBChatMessageHistory extends BaseListChatMessageHistory {\n lc_namespace = [\"langchain\", \"stores\", \"message\", \"astradb\"];\n\n private sessionId: string;\n\n private collection: Collection;\n\n constructor({ collection, sessionId }: AstraDBChatMessageHistoryProps) {\n super();\n this.sessionId = sessionId;\n this.collection = collection;\n }\n\n /**\n * async initializer function to return a new instance of AstraDBChatMessageHistory in a single step\n * @param AstraDBChatMessageHistoryInput\n * @returns Promise<AstraDBChatMessageHistory>\n *\n * @example\n * const chatHistory = await AstraDBChatMessageHistory.initialize({\n * token: process.env.ASTRA_DB_APPLICATION_TOKEN,\n * endpoint: process.env.ASTRA_DB_ENDPOINT,\n * namespace: process.env.ASTRA_DB_NAMESPACE,\n * collectionName:\"test_chat\",\n * sessionId: \"YOUR_SESSION_ID\"\n * });\n */\n static async initialize({\n token,\n endpoint,\n collectionName,\n namespace,\n sessionId,\n }: AstraDBChatMessageHistoryInput): Promise<AstraDBChatMessageHistory> {\n const client = new DataAPIClient(token, { caller: [\"langchainjs\"] });\n const db = client.db(endpoint, { namespace });\n const collection = await db.collection(collectionName);\n return new AstraDBChatMessageHistory({ collection, sessionId });\n }\n\n async getMessages(): Promise<BaseMessage[]> {\n const docs = this.collection.find({\n sessionId: this.sessionId,\n });\n\n const docsArray = await docs.toArray();\n\n const sortedDocs = docsArray.sort((a, b) => a.timestamp - b.timestamp);\n\n const storedMessages: StoredMessage[] = sortedDocs.map((doc) => ({\n type: doc.type,\n data: doc.data,\n }));\n\n return mapStoredMessagesToChatMessages(storedMessages);\n }\n\n async addMessage(message: BaseMessage): Promise<void> {\n const messages = mapChatMessagesToStoredMessages([message]);\n const { type, data } = messages[0];\n\n await this.collection.insertOne({\n sessionId: this.sessionId,\n timestamp: Date.now(),\n type,\n data,\n });\n }\n\n async clear(): Promise<void> {\n await this.collection.deleteMany({\n sessionId: this.sessionId,\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAa,4BAAb,MAAa,kCAAkCA,6BAAAA,2BAA2B;CACxE,eAAe;EAAC;EAAa;EAAU;EAAW;EAAU;CAE5D;CAEA;CAEA,YAAY,EAAE,YAAY,aAA6C;AACrE,SAAO;AACP,OAAK,YAAY;AACjB,OAAK,aAAa;;;;;;;;;;;;;;;;CAiBpB,aAAa,WAAW,EACtB,OACA,UACA,gBACA,WACA,aACqE;AAIrE,SAAO,IAAI,0BAA0B;GAAE,YADpB,MAFJ,IAAIC,sBAAAA,cAAc,OAAO,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC,CAClD,GAAG,UAAU,EAAE,WAAW,CAAC,CACjB,WAAW,eAAe;GACH;GAAW,CAAC;;CAGjE,MAAM,cAAsC;AAc1C,UAAA,GAAA,yBAAA,kCATkB,MAJL,KAAK,WAAW,KAAK,EAChC,WAAW,KAAK,WACjB,CAAC,CAE2B,SAAS,EAET,MAAM,GAAG,MAAM,EAAE,YAAY,EAAE,UAAU,CAEnB,KAAK,SAAS;GAC/D,MAAM,IAAI;GACV,MAAM,IAAI;GACX,EAAE,CAEmD;;CAGxD,MAAM,WAAW,SAAqC;EAEpD,MAAM,EAAE,MAAM,UAAA,GAAA,yBAAA,iCADmC,CAAC,QAAQ,CAAC,CAC3B;AAEhC,QAAM,KAAK,WAAW,UAAU;GAC9B,WAAW,KAAK;GAChB,WAAW,KAAK,KAAK;GACrB;GACA;GACD,CAAC;;CAGJ,MAAM,QAAuB;AAC3B,QAAM,KAAK,WAAW,WAAW,EAC/B,WAAW,KAAK,WACjB,CAAC"}