UNPKG

@langchain/community

Version:
1 lines 6.62 kB
{"version":3,"file":"zep_cloud.cjs","names":["BaseRetriever","ZepClient","Document","NotFoundError"],"sources":["../../src/retrievers/zep_cloud.ts"],"sourcesContent":["import { ZepClient } from \"@getzep/zep-cloud\";\nimport {\n SearchScope,\n SearchType,\n MemorySearchResult,\n NotFoundError,\n} from \"@getzep/zep-cloud/api\";\nimport { BaseRetriever, BaseRetrieverInput } from \"@langchain/core/retrievers\";\nimport { Document } from \"@langchain/core/documents\";\n\n/**\n * Configuration interface for the ZepRetriever class. Extends the\n * BaseRetrieverInput interface.\n *\n * @argument {string} sessionId - The ID of the Zep session.\n * @argument {string} [apiKey] - The Zep Cloud Project Key.\n * @argument {number} [topK] - The number of results to return.\n * @argument [searchScope] [searchScope] - The scope of the search: \"messages\" or \"summary\".\n * @argument [searchType] [searchType] - The type of search to perform: \"similarity\" or \"mmr\".\n * @argument {number} [mmrLambda] - The lambda value for the MMR search.\n * @argument {Record<string, unknown>} [filter] - The metadata filter to apply to the search.\n */\nexport interface ZepCloudRetrieverConfig extends BaseRetrieverInput {\n sessionId: string;\n topK?: number;\n apiKey: string;\n searchScope?: SearchScope;\n searchType?: SearchType;\n mmrLambda?: number;\n filter?: Record<string, unknown>;\n}\n\n/**\n * Class for retrieving information from a Zep Cloud long-term memory store.\n * Extends the BaseRetriever class.\n * @example\n * ```typescript\n * const retriever = new ZepCloudRetriever({\n * apiKey: \"<zep cloud project api key>\",\n * sessionId: \"session_exampleUUID\",\n * topK: 3,\n * });\n * const query = \"Can I drive red cars in France?\";\n * const docs = await retriever.getRelevantDocuments(query);\n * ```\n */\nexport class ZepCloudRetriever extends BaseRetriever {\n static lc_name() {\n return \"ZepRetriever\";\n }\n\n lc_namespace = [\"langchain\", \"retrievers\", \"zep\"];\n\n get lc_secrets(): { [key: string]: string } | undefined {\n return {\n apiKey: \"ZEP_API_KEY\",\n };\n }\n\n get lc_aliases(): { [key: string]: string } | undefined {\n return { apiKey: \"api_key\" };\n }\n\n client: ZepClient;\n\n private sessionId: string;\n\n private topK?: number;\n\n private searchScope?: SearchScope;\n\n private searchType?: SearchType;\n\n private mmrLambda?: number;\n\n private filter?: Record<string, unknown>;\n\n constructor(config: ZepCloudRetrieverConfig) {\n super(config);\n this.sessionId = config.sessionId;\n this.topK = config.topK;\n this.searchScope = config.searchScope;\n this.searchType = config.searchType;\n this.mmrLambda = config.mmrLambda;\n this.filter = config.filter;\n this.client = new ZepClient({ apiKey: config.apiKey });\n }\n\n /**\n * Converts an array of message search results to an array of Document objects.\n * @param {MemorySearchResult[]} results - The array of search results.\n * @returns {Document[]} An array of Document objects representing the search results.\n */\n private searchMessageResultToDoc(results: MemorySearchResult[]): Document[] {\n return results\n .filter((r) => r.message)\n .map(\n ({\n message: { content, metadata: messageMetadata } = {},\n score,\n ...rest\n }) =>\n new Document({\n pageContent: content ?? \"\",\n metadata: { score, ...messageMetadata, ...rest },\n })\n );\n }\n\n /**\n * Converts an array of summary search results to an array of Document objects.\n * @param {MemorySearchResult[]} results - The array of search results.\n * @returns {Document[]} An array of Document objects representing the search results.\n */\n private searchSummaryResultToDoc(results: MemorySearchResult[]): Document[] {\n return results\n .filter((r) => r.summary)\n .map(\n ({\n summary: { content, metadata: summaryMetadata } = {},\n score,\n ...rest\n }) =>\n new Document({\n pageContent: content ?? \"\",\n metadata: { score, ...summaryMetadata, ...rest },\n })\n );\n }\n\n /**\n * Retrieves the relevant documents based on the given query.\n * @param {string} query - The query string.\n * @returns {Promise<Document[]>} A promise that resolves to an array of relevant Document objects.\n */\n async _getRelevantDocuments(query: string): Promise<Document[]> {\n try {\n const results: MemorySearchResult[] = await this.client.memory.search(\n this.sessionId,\n {\n text: query,\n metadata: this.filter,\n searchScope: this.searchScope,\n searchType: this.searchType,\n mmrLambda: this.mmrLambda,\n limit: this.topK,\n }\n );\n return this.searchScope === \"summary\"\n ? this.searchSummaryResultToDoc(results)\n : this.searchMessageResultToDoc(results);\n } catch (error) {\n // eslint-disable-next-line no-instanceof/no-instanceof\n if (error instanceof NotFoundError) {\n return Promise.resolve([]); // Return an empty Document array\n }\n // If it's not a NotFoundError, throw the error again\n throw error;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAa,oBAAb,cAAuCA,2BAAAA,cAAc;CACnD,OAAO,UAAU;AACf,SAAO;;CAGT,eAAe;EAAC;EAAa;EAAc;EAAM;CAEjD,IAAI,aAAoD;AACtD,SAAO,EACL,QAAQ,eACT;;CAGH,IAAI,aAAoD;AACtD,SAAO,EAAE,QAAQ,WAAW;;CAG9B;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YAAY,QAAiC;AAC3C,QAAM,OAAO;AACb,OAAK,YAAY,OAAO;AACxB,OAAK,OAAO,OAAO;AACnB,OAAK,cAAc,OAAO;AAC1B,OAAK,aAAa,OAAO;AACzB,OAAK,YAAY,OAAO;AACxB,OAAK,SAAS,OAAO;AACrB,OAAK,SAAS,IAAIC,kBAAAA,UAAU,EAAE,QAAQ,OAAO,QAAQ,CAAC;;;;;;;CAQxD,yBAAiC,SAA2C;AAC1E,SAAO,QACJ,QAAQ,MAAM,EAAE,QAAQ,CACxB,KACE,EACC,SAAS,EAAE,SAAS,UAAU,oBAAoB,EAAE,EACpD,OACA,GAAG,WAEH,IAAIC,0BAAAA,SAAS;GACX,aAAa,WAAW;GACxB,UAAU;IAAE;IAAO,GAAG;IAAiB,GAAG;IAAM;GACjD,CAAC,CACL;;;;;;;CAQL,yBAAiC,SAA2C;AAC1E,SAAO,QACJ,QAAQ,MAAM,EAAE,QAAQ,CACxB,KACE,EACC,SAAS,EAAE,SAAS,UAAU,oBAAoB,EAAE,EACpD,OACA,GAAG,WAEH,IAAIA,0BAAAA,SAAS;GACX,aAAa,WAAW;GACxB,UAAU;IAAE;IAAO,GAAG;IAAiB,GAAG;IAAM;GACjD,CAAC,CACL;;;;;;;CAQL,MAAM,sBAAsB,OAAoC;AAC9D,MAAI;GACF,MAAM,UAAgC,MAAM,KAAK,OAAO,OAAO,OAC7D,KAAK,WACL;IACE,MAAM;IACN,UAAU,KAAK;IACf,aAAa,KAAK;IAClB,YAAY,KAAK;IACjB,WAAW,KAAK;IAChB,OAAO,KAAK;IACb,CACF;AACD,UAAO,KAAK,gBAAgB,YACxB,KAAK,yBAAyB,QAAQ,GACtC,KAAK,yBAAyB,QAAQ;WACnC,OAAO;AAEd,OAAI,iBAAiBC,+BAAAA,cACnB,QAAO,QAAQ,QAAQ,EAAE,CAAC;AAG5B,SAAM"}