UNPKG

@langchain/community

Version:
1 lines • 4.73 kB
{"version":3,"file":"astradb.cjs","names":["BaseListChatMessageHistory","DataAPIClient","storedMessages: StoredMessage[]","message: BaseMessage"],"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,yDAA2B;CACxE,eAAe;EAAC;EAAa;EAAU;EAAW;CAAU;CAE5D,AAAQ;CAER,AAAQ;CAER,YAAY,EAAE,YAAY,WAA2C,EAAE;EACrE,OAAO;EACP,KAAK,YAAY;EACjB,KAAK,aAAa;CACnB;;;;;;;;;;;;;;;CAgBD,aAAa,WAAW,EACtB,OACA,UACA,gBACA,WACA,WAC+B,EAAsC;EACrE,MAAM,SAAS,IAAIC,qCAAc,OAAO,EAAE,QAAQ,CAAC,aAAc,EAAE;EACnE,MAAM,KAAK,OAAO,GAAG,UAAU,EAAE,UAAW,EAAC;EAC7C,MAAM,aAAa,MAAM,GAAG,WAAW,eAAe;AACtD,SAAO,IAAI,0BAA0B;GAAE;GAAY;EAAW;CAC/D;CAED,MAAM,cAAsC;EAC1C,MAAM,OAAO,KAAK,WAAW,KAAK,EAChC,WAAW,KAAK,UACjB,EAAC;EAEF,MAAM,YAAY,MAAM,KAAK,SAAS;EAEtC,MAAM,aAAa,UAAU,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,UAAU;EAEtE,MAAMC,iBAAkC,WAAW,IAAI,CAAC,SAAS;GAC/D,MAAM,IAAI;GACV,MAAM,IAAI;EACX,GAAE;AAEH,wEAAuC,eAAe;CACvD;CAED,MAAM,WAAWC,SAAqC;EACpD,MAAM,0EAA2C,CAAC,OAAQ,EAAC;EAC3D,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;EAEhC,MAAM,KAAK,WAAW,UAAU;GAC9B,WAAW,KAAK;GAChB,WAAW,KAAK,KAAK;GACrB;GACA;EACD,EAAC;CACH;CAED,MAAM,QAAuB;EAC3B,MAAM,KAAK,WAAW,WAAW,EAC/B,WAAW,KAAK,UACjB,EAAC;CACH;AACF"}