{"version":3,"file":"embeddings.cjs","names":["OpenAIEmbeddings","getEnvironmentVariable","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;EACA,MAAM,MAAM;EACZ,KAAK,YAAY,QAAQ,aAAa;EACtC,KAAK,oBACH,QAAQ,sBACP,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS,KAAA,OAAA,GACvDC,0BAAAA,uBAAAA,CAAuB,sBAAsB;EAE/C,KAAK,wBACH,QAAQ,yBACR,QAAQ,qBAAA,GACRA,0BAAAA,uBAAAA,CAAuB,0BAA0B;EAEnD,KAAK,sBACH,QAAQ,wBAAA,GACRA,0BAAAA,uBAAAA,CAAuB,wBAAwB;EAEjD,KAAK,6BACH,QAAQ,+BAAA,GACRA,0BAAAA,uBAAAA,CAAuB,gCAAgC;EAEzD,KAAK,gCACF,QAAQ,0CACP,QAAQ,mCAAA,GACTA,0BAAAA,uBAAAA,CAAuB,6CAA6C,MAAA,GACnEA,0BAAAA,uBAAAA,CAAuB,kCAAkC;EAE7D,KAAK,uBAAuB,QAAQ;CACtC;CAEA,MAAgB,mBACd,SACA;EACA,IAAI,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;GAC7B;GAEA,MAAM,WAAWC,cAAAA,YAAY,oBAAoB;GAEjD,MAAM,EAAE,QAAQ,gBAAgB,GAAG,qBAAqB,KAAK;GAC7D,MAAM,SAA8D;IAClE,GAAG;IACH,SAAS;IACT,SAAS,KAAK;IACd,YAAY;GACd;GAEA,IAAI,CAAC,KAAK,sBACR,OAAO,SAAS,qBAAqB;GAGvC,IAAI,CAAC,OAAO,SACV,OAAO,OAAO;GAGhB,OAAO,iBAAiBC,cAAAA,wBACtB,OAAO,gBACP,MACA,OACF;GAEA,KAAK,SAAS,IAAIC,OAAAA,YAAkB;IAClC,YAAY,KAAK;IACjB,sBAAsB,KAAK;IAC3B,YAAY,KAAK;IACjB,GAAG;GACL,CAAC;EACH;EACA,MAAM,iBAA2C,CAAC;EAClD,IAAI,KAAK,mBAAmB;GAC1B,eAAe,UAAU;IACvB,WAAW,KAAK;IAChB,GAAG,eAAe;GACpB;GACA,eAAe,QAAQ;IACrB,eAAe,KAAK;IACpB,GAAG,eAAe;GACpB;EACF;EACA,OAAO,KAAK,OAAO,KAAK,YAAY;GAClC,IAAI;IAKF,OAAO,MAJW,KAAK,OAAO,WAAW,OACvC,SACA,cACF;GAEF,SAAS,GAAG;IAEV,MADcC,eAAAA,sBAAsB,CAC1B;GACZ;EACF,CAAC;CACH;AACF"}