UNPKG

@langchain/community

Version:
1 lines 11.5 kB
{"version":3,"file":"ibm.cjs","names":["Embeddings","authenticateAndSetGatewayInstance","authenticateAndSetInstance","AsyncCaller"],"sources":["../../src/embeddings/ibm.ts"],"sourcesContent":["import { Embeddings, EmbeddingsParams } from \"@langchain/core/embeddings\";\n\nimport { WatsonXAI } from \"@ibm-cloud/watsonx-ai\";\nimport { AsyncCaller } from \"@langchain/core/utils/async_caller\";\nimport { CreateEmbeddingsParams, Gateway } from \"@ibm-cloud/watsonx-ai/gateway\";\nimport {\n WatsonxAuth,\n WatsonxEmbeddingsBasicOptions,\n XOR,\n} from \"../types/ibm.js\";\nimport {\n authenticateAndSetGatewayInstance,\n authenticateAndSetInstance,\n checkValidProps,\n expectOneOf,\n} from \"../utils/ibm.js\";\n\nexport interface WatsonxEmbeddingsParams\n extends\n EmbeddingsParams,\n Omit<WatsonXAI.TextEmbeddingsParams, \"modelId\" | \"inputs\" | \"parameters\"> {\n /** Represents the maximum number of input tokens accepted. This can be used to avoid requests failing due to\n * input being longer than configured limits. If the text is truncated, then it truncates the end of the input (on\n * the right), so the start of the input will remain the same. If this value exceeds the `maximum sequence length`\n * (refer to the documentation to find this value for the model) then the call will fail if the total number of\n * tokens exceeds the `maximum sequence length`.\n */\n truncateInputTokens?: number;\n /** The return options for text embeddings. */\n returnOptions?: WatsonXAI.EmbeddingReturnOptions;\n /** The `id` of the model to be used for this request. Please refer to the [list of\n * models](https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fm-models-embed.html?context=wx&audience=wdp).\n */\n model: string;\n}\nexport interface WatsonxInputEmbeddings\n extends WatsonxEmbeddingsBasicOptions, WatsonxEmbeddingsParams {}\n\nexport type WatsonxEmbeddingsGatewayKwargs = Omit<\n CreateEmbeddingsParams,\n \"input\" | keyof WatsonxEmbeddingsParams\n>;\n\nexport interface WatsonxEmbeddingsGatewayParams extends EmbeddingsParams {\n modelGatewayKwargs?: WatsonxEmbeddingsGatewayKwargs;\n modelGateway: boolean;\n}\n\nexport interface WatsonxInputGatewayEmbeddings\n extends\n WatsonxEmbeddingsBasicOptions,\n WatsonxEmbeddingsGatewayParams,\n Omit<\n CreateEmbeddingsParams,\n keyof WatsonxEmbeddingsGatewayKwargs | \"input\"\n > {}\n\nexport type WatsonxEmbeddingsConstructor = XOR<\n WatsonxInputEmbeddings,\n WatsonxInputGatewayEmbeddings\n> &\n WatsonxAuth;\n\nexport class WatsonxEmbeddings\n extends Embeddings\n implements WatsonxEmbeddingsParams, WatsonxInputGatewayEmbeddings\n{\n model: string;\n\n serviceUrl: string;\n\n version: string;\n\n spaceId?: string;\n\n projectId?: string;\n\n truncateInputTokens?: number;\n\n returnOptions?: WatsonXAI.EmbeddingReturnOptions;\n\n maxRetries?: number;\n\n maxConcurrency = 1;\n\n modelGatewayKwargs?: WatsonxEmbeddingsGatewayKwargs | undefined;\n\n modelGateway = false;\n\n protected service?: WatsonXAI;\n\n protected gateway?: Gateway;\n\n // oxlint-disable-next-line typescript/no-explicit-any\n private checkValidProperties(fields: any, includeCommonProps = true) {\n const alwaysAllowedProps = [\"headers\", \"signal\", \"promptIndex\"];\n\n const authProps = [\n \"serviceUrl\",\n \"watsonxAIApikey\",\n \"watsonxAIBearerToken\",\n \"watsonxAIUsername\",\n \"watsonxAIPassword\",\n \"watsonxAIUrl\",\n \"watsonxAIAuthType\",\n \"disableSSL\",\n ];\n\n const sharedProps = [\n \"maxRetries\",\n \"watsonxCallbacks\",\n \"authenticator\",\n \"serviceUrl\",\n \"version\",\n \"streaming\",\n \"callbackManager\",\n \"callbacks\",\n \"maxConcurrency\",\n \"cache\",\n \"metadata\",\n \"concurrency\",\n \"onFailedAttempt\",\n \"concurrency\",\n \"verbose\",\n \"tags\",\n \"headers\",\n \"signal\",\n \"disableStreaming\",\n ];\n\n const projectOrSpaceProps = [\n \"truncateInputTokens\",\n \"returnOptions\",\n \"model\",\n \"projectId\",\n \"spaceId\",\n ];\n const gatewayProps = [\"model\", \"modelGatewayKwargs\", \"modelGateway\"];\n const validProps: string[] = [...alwaysAllowedProps];\n if (includeCommonProps) validProps.push(...authProps, ...sharedProps);\n\n if (this.modelGateway) {\n validProps.push(...gatewayProps);\n } else if (this.spaceId || this.projectId) {\n validProps.push(...projectOrSpaceProps);\n }\n\n checkValidProps(fields, validProps);\n }\n\n constructor(fields: WatsonxEmbeddingsConstructor) {\n super(fields);\n expectOneOf(fields, [\"projectId\", \"spaceId\", \"modelGateway\"], true);\n this.projectId = fields?.projectId;\n this.spaceId = fields?.spaceId;\n this.modelGateway = fields.modelGateway ?? this.modelGateway;\n\n this.checkValidProperties(fields);\n\n this.model = fields.model;\n this.version = fields.version;\n this.serviceUrl = fields.serviceUrl;\n this.truncateInputTokens = fields.truncateInputTokens;\n this.returnOptions = fields.returnOptions;\n this.maxConcurrency = fields.maxConcurrency ?? this.maxConcurrency;\n this.maxRetries = fields.maxRetries ?? 0;\n this.serviceUrl = fields?.serviceUrl;\n this.modelGatewayKwargs = fields.modelGatewayKwargs;\n\n const {\n watsonxAIApikey,\n watsonxAIAuthType,\n watsonxAIBearerToken,\n watsonxAIUsername,\n watsonxAIPassword,\n watsonxAIUrl,\n disableSSL,\n version,\n serviceUrl,\n } = fields;\n\n const authData = {\n watsonxAIApikey,\n watsonxAIAuthType,\n watsonxAIBearerToken,\n watsonxAIUsername,\n watsonxAIPassword,\n watsonxAIUrl,\n disableSSL,\n version,\n serviceUrl,\n };\n if (this.modelGateway) {\n const auth = authenticateAndSetGatewayInstance(authData);\n if (auth) this.gateway = auth;\n else throw new Error(\"You have not provided one type of authentication\");\n } else {\n const auth = authenticateAndSetInstance(authData);\n if (auth) this.service = auth;\n else throw new Error(\"You have not provided one type of authentication\");\n }\n }\n\n scopeId():\n | { projectId: string; modelId: string }\n | { spaceId: string; modelId: string }\n | { model: string } {\n if (this.projectId)\n return { projectId: this.projectId, modelId: this.model };\n else if (this.spaceId)\n return { spaceId: this.spaceId, modelId: this.model };\n else\n return {\n model: this.model,\n };\n }\n\n invocationParams() {\n return {\n truncate_input_tokens: this.truncateInputTokens,\n return_options: this.returnOptions,\n };\n }\n\n async listModels() {\n if (this.service) {\n const { service } = this;\n const listModelParams = {\n filters: \"function_embedding\",\n };\n const caller = new AsyncCaller({\n maxConcurrency: this.maxConcurrency,\n maxRetries: this.maxRetries,\n });\n const listModels = await caller.call(() =>\n service.listFoundationModelSpecs(listModelParams)\n );\n return listModels.result.resources?.map((item) => item.model_id);\n } else throw new Error(\"This method is not supported in model gateway\");\n }\n\n private async embedSingleText(inputs: string[]) {\n const scopeId = this.scopeId();\n if (\"modelId\" in scopeId && this.service) {\n const { service } = this;\n const caller = new AsyncCaller({\n maxConcurrency: this.maxConcurrency,\n maxRetries: this.maxRetries,\n });\n const embeddings = await caller.call(() =>\n service.embedText({\n inputs,\n ...scopeId,\n parameters: this.invocationParams(),\n })\n );\n return embeddings.result.results.map((item) => item.embedding);\n } else if (this.gateway && \"model\" in scopeId) {\n const { gateway } = this;\n const caller = new AsyncCaller({\n maxConcurrency: this.maxConcurrency,\n maxRetries: this.maxRetries,\n });\n const embeddings = await caller.call(() =>\n gateway.embeddings.completion.create({\n input: inputs,\n ...scopeId,\n })\n );\n const res = embeddings.result.data.map((item) => item.embedding);\n return res;\n }\n throw new Error(\n \"Invalid parameters provided. Please check passed properties to class instance\"\n );\n }\n\n async embedDocuments(documents: string[]): Promise<number[][]> {\n const data = await this.embedSingleText(documents);\n return data;\n }\n\n async embedQuery(document: string): Promise<number[]> {\n const data = await this.embedSingleText([document]);\n return data[0];\n }\n}\n"],"mappings":"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"}