{"version":3,"file":"embeddings.cjs","names":["OpenAIEmbeddings","getEndpoint","getHeadersWithUserAgent","AzureOpenAIClient","wrapOpenAIClientError"],"sources":["../../src/azure/embeddings.ts"],"sourcesContent":["import {\n  type ClientOptions,\n  AzureOpenAI as AzureOpenAIClient,\n  OpenAI as OpenAIClient,\n} from \"openai\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { OpenAIEmbeddings, OpenAIEmbeddingsParams } from \"../embeddings.js\";\nimport { AzureOpenAIInput, OpenAICoreRequestOptions } from \"../types.js\";\nimport {\n  getEndpoint,\n  OpenAIEndpointConfig,\n  getHeadersWithUserAgent,\n} from \"../utils/azure.js\";\nimport { wrapOpenAIClientError } from \"../utils/client.js\";\n\nexport class AzureOpenAIEmbeddings extends OpenAIEmbeddings {\n  azureOpenAIApiVersion?: string;\n\n  azureOpenAIApiKey?: string;\n\n  azureADTokenProvider?: () => Promise<string>;\n\n  azureOpenAIApiInstanceName?: string;\n\n  azureOpenAIApiDeploymentName?: string;\n\n  azureOpenAIBasePath?: string;\n\n  constructor(\n    fields?: Partial<OpenAIEmbeddingsParams> &\n      Partial<AzureOpenAIInput> & {\n        verbose?: boolean;\n        /** The OpenAI API key to use. */\n        apiKey?: string;\n        configuration?: ClientOptions;\n        deploymentName?: string;\n        openAIApiVersion?: string;\n      }\n  ) {\n    super(fields);\n    this.batchSize = fields?.batchSize ?? 1;\n    this.azureOpenAIApiKey =\n      fields?.azureOpenAIApiKey ??\n      (typeof fields?.apiKey === \"string\" ? fields?.apiKey : undefined) ??\n      getEnvironmentVariable(\"AZURE_OPENAI_API_KEY\");\n\n    this.azureOpenAIApiVersion =\n      fields?.azureOpenAIApiVersion ??\n      fields?.openAIApiVersion ??\n      getEnvironmentVariable(\"AZURE_OPENAI_API_VERSION\");\n\n    this.azureOpenAIBasePath =\n      fields?.azureOpenAIBasePath ??\n      getEnvironmentVariable(\"AZURE_OPENAI_BASE_PATH\");\n\n    this.azureOpenAIApiInstanceName =\n      fields?.azureOpenAIApiInstanceName ??\n      getEnvironmentVariable(\"AZURE_OPENAI_API_INSTANCE_NAME\");\n\n    this.azureOpenAIApiDeploymentName =\n      (fields?.azureOpenAIApiEmbeddingsDeploymentName ||\n        fields?.azureOpenAIApiDeploymentName) ??\n      (getEnvironmentVariable(\"AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME\") ||\n        getEnvironmentVariable(\"AZURE_OPENAI_API_DEPLOYMENT_NAME\"));\n\n    this.azureADTokenProvider = fields?.azureADTokenProvider;\n  }\n\n  protected async embeddingWithRetry(\n    request: OpenAIClient.EmbeddingCreateParams\n  ) {\n    if (!this.client) {\n      const openAIEndpointConfig: OpenAIEndpointConfig = {\n        azureOpenAIApiDeploymentName: this.azureOpenAIApiDeploymentName,\n        azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,\n        azureOpenAIApiKey: this.azureOpenAIApiKey,\n        azureOpenAIBasePath: this.azureOpenAIBasePath,\n        azureADTokenProvider: this.azureADTokenProvider,\n        baseURL: this.clientConfig.baseURL,\n      };\n\n      const endpoint = getEndpoint(openAIEndpointConfig);\n\n      const { apiKey: existingApiKey, ...clientConfigRest } = this.clientConfig;\n      const params: Omit<ClientOptions, \"apiKey\"> & { apiKey?: string } = {\n        ...clientConfigRest,\n        baseURL: endpoint,\n        timeout: this.timeout,\n        maxRetries: 0,\n      };\n\n      if (!this.azureADTokenProvider) {\n        params.apiKey = openAIEndpointConfig.azureOpenAIApiKey;\n      }\n\n      if (!params.baseURL) {\n        delete params.baseURL;\n      }\n\n      params.defaultHeaders = getHeadersWithUserAgent(\n        params.defaultHeaders,\n        true,\n        \"2.0.0\"\n      );\n\n      this.client = new AzureOpenAIClient({\n        apiVersion: this.azureOpenAIApiVersion,\n        azureADTokenProvider: this.azureADTokenProvider,\n        deployment: this.azureOpenAIApiDeploymentName,\n        ...params,\n      });\n    }\n    const requestOptions: OpenAICoreRequestOptions = {};\n    if (this.azureOpenAIApiKey) {\n      requestOptions.headers = {\n        \"api-key\": this.azureOpenAIApiKey,\n        ...requestOptions.headers,\n      };\n      requestOptions.query = {\n        \"api-version\": this.azureOpenAIApiVersion,\n        ...requestOptions.query,\n      };\n    }\n    return this.caller.call(async () => {\n      try {\n        const res = await this.client.embeddings.create(\n          request,\n          requestOptions\n        );\n        return res;\n      } catch (e) {\n        const error = wrapOpenAIClientError(e);\n        throw error;\n      }\n    });\n  }\n}\n"],"mappings":";;;;;;AAeA,IAAa,wBAAb,cAA2CA,mBAAAA,iBAAiB;CAC1D;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,YACE,QASA;AACA,QAAM,OAAO;AACb,OAAK,YAAY,QAAQ,aAAa;AACtC,OAAK,oBACH,QAAQ,sBACP,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS,KAAA,OAAA,GAAA,0BAAA,wBAChC,uBAAuB;AAEhD,OAAK,wBACH,QAAQ,yBACR,QAAQ,qBAAA,GAAA,0BAAA,wBACe,2BAA2B;AAEpD,OAAK,sBACH,QAAQ,wBAAA,GAAA,0BAAA,wBACe,yBAAyB;AAElD,OAAK,6BACH,QAAQ,+BAAA,GAAA,0BAAA,wBACe,iCAAiC;AAE1D,OAAK,gCACF,QAAQ,0CACP,QAAQ,mCAAA,GAAA,0BAAA,wBACc,8CAA8C,KAAA,GAAA,0BAAA,wBAC7C,mCAAmC;AAE9D,OAAK,uBAAuB,QAAQ;;CAGtC,MAAgB,mBACd,SACA;AACA,MAAI,CAAC,KAAK,QAAQ;GAChB,MAAM,uBAA6C;IACjD,8BAA8B,KAAK;IACnC,4BAA4B,KAAK;IACjC,mBAAmB,KAAK;IACxB,qBAAqB,KAAK;IAC1B,sBAAsB,KAAK;IAC3B,SAAS,KAAK,aAAa;IAC5B;GAED,MAAM,WAAWC,cAAAA,YAAY,qBAAqB;GAElD,MAAM,EAAE,QAAQ,gBAAgB,GAAG,qBAAqB,KAAK;GAC7D,MAAM,SAA8D;IAClE,GAAG;IACH,SAAS;IACT,SAAS,KAAK;IACd,YAAY;IACb;AAED,OAAI,CAAC,KAAK,qBACR,QAAO,SAAS,qBAAqB;AAGvC,OAAI,CAAC,OAAO,QACV,QAAO,OAAO;AAGhB,UAAO,iBAAiBC,cAAAA,wBACtB,OAAO,gBACP,MACA,QACD;AAED,QAAK,SAAS,IAAIC,OAAAA,YAAkB;IAClC,YAAY,KAAK;IACjB,sBAAsB,KAAK;IAC3B,YAAY,KAAK;IACjB,GAAG;IACJ,CAAC;;EAEJ,MAAM,iBAA2C,EAAE;AACnD,MAAI,KAAK,mBAAmB;AAC1B,kBAAe,UAAU;IACvB,WAAW,KAAK;IAChB,GAAG,eAAe;IACnB;AACD,kBAAe,QAAQ;IACrB,eAAe,KAAK;IACpB,GAAG,eAAe;IACnB;;AAEH,SAAO,KAAK,OAAO,KAAK,YAAY;AAClC,OAAI;AAKF,WAJY,MAAM,KAAK,OAAO,WAAW,OACvC,SACA,eACD;YAEM,GAAG;AAEV,UADcC,eAAAA,sBAAsB,EAAE;;IAGxC"}