{"version":3,"file":"llms.cjs","names":["OpenAI","getEndpoint","getHeadersWithUserAgent","AzureOpenAIClient"],"sources":["../../src/azure/llms.ts"],"sourcesContent":["import { type ClientOptions, AzureOpenAI as AzureOpenAIClient } from \"openai\";\nimport { type BaseLLMParams } from \"@langchain/core/language_models/llms\";\nimport { getEnvironmentVariable } from \"@langchain/core/utils/env\";\nimport { OpenAI } from \"../llms.js\";\nimport {\n  OpenAIEndpointConfig,\n  getEndpoint,\n  getHeadersWithUserAgent,\n} from \"../utils/azure.js\";\nimport type {\n  OpenAIInput,\n  AzureOpenAIInput,\n  OpenAICoreRequestOptions,\n} from \"../types.js\";\n\nexport class AzureOpenAI extends OpenAI {\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  azureOpenAIEndpoint?: string;\n\n  get lc_aliases(): Record<string, string> {\n    return {\n      ...super.lc_aliases,\n      openAIApiKey: \"openai_api_key\",\n      openAIApiVersion: \"openai_api_version\",\n      openAIBasePath: \"openai_api_base\",\n      deploymentName: \"deployment_name\",\n      azureOpenAIEndpoint: \"azure_endpoint\",\n      azureOpenAIApiVersion: \"openai_api_version\",\n      azureOpenAIBasePath: \"openai_api_base\",\n      azureOpenAIApiDeploymentName: \"deployment_name\",\n    };\n  }\n\n  get lc_secrets(): { [key: string]: string } | undefined {\n    return {\n      ...super.lc_secrets,\n      azureOpenAIApiKey: \"AZURE_OPENAI_API_KEY\",\n    };\n  }\n\n  constructor(\n    fields?: Partial<OpenAIInput> & {\n      openAIApiKey?: string;\n      openAIApiVersion?: string;\n      openAIBasePath?: string;\n      deploymentName?: string;\n    } & Partial<AzureOpenAIInput> &\n      BaseLLMParams & {\n        configuration?: ClientOptions;\n      }\n  ) {\n    super(fields);\n\n    this.azureOpenAIApiDeploymentName =\n      (fields?.azureOpenAIApiCompletionsDeploymentName ||\n        fields?.azureOpenAIApiDeploymentName) ??\n      (getEnvironmentVariable(\"AZURE_OPENAI_API_COMPLETIONS_DEPLOYMENT_NAME\") ||\n        getEnvironmentVariable(\"AZURE_OPENAI_API_DEPLOYMENT_NAME\"));\n\n    this.azureOpenAIApiKey =\n      fields?.azureOpenAIApiKey ??\n      (typeof fields?.openAIApiKey === \"string\"\n        ? fields?.openAIApiKey\n        : undefined) ??\n      (typeof fields?.apiKey === \"string\" ? fields?.apiKey : undefined) ??\n      getEnvironmentVariable(\"AZURE_OPENAI_API_KEY\");\n\n    this.azureOpenAIApiInstanceName =\n      fields?.azureOpenAIApiInstanceName ??\n      getEnvironmentVariable(\"AZURE_OPENAI_API_INSTANCE_NAME\");\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.azureOpenAIEndpoint =\n      fields?.azureOpenAIEndpoint ??\n      getEnvironmentVariable(\"AZURE_OPENAI_ENDPOINT\");\n\n    this.azureADTokenProvider = fields?.azureADTokenProvider;\n\n    if (!this.azureOpenAIApiKey && !this.apiKey && !this.azureADTokenProvider) {\n      throw new Error(\"Azure OpenAI API key or Token Provider not found\");\n    }\n  }\n\n  protected _getClientOptions(\n    options: OpenAICoreRequestOptions | undefined\n  ): OpenAICoreRequestOptions {\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        ...params,\n      });\n    }\n\n    const requestOptions = {\n      ...this.clientConfig,\n      ...options,\n    } as 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 requestOptions;\n  }\n\n  // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n  toJSON(): any {\n    const json = super.toJSON() as unknown;\n\n    function isRecord(obj: unknown): obj is Record<string, unknown> {\n      return typeof obj === \"object\" && obj != null;\n    }\n\n    if (isRecord(json) && isRecord(json.kwargs)) {\n      delete json.kwargs.azure_openai_base_path;\n      delete json.kwargs.azure_openai_api_deployment_name;\n      delete json.kwargs.azure_openai_api_key;\n      delete json.kwargs.azure_openai_api_version;\n      delete json.kwargs.azure_open_ai_base_path;\n    }\n\n    return json;\n  }\n}\n"],"mappings":";;;;;AAeA,IAAa,cAAb,cAAiCA,aAAAA,OAAO;CACtC;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA;CAEA,IAAI,aAAqC;AACvC,SAAO;GACL,GAAG,MAAM;GACT,cAAc;GACd,kBAAkB;GAClB,gBAAgB;GAChB,gBAAgB;GAChB,qBAAqB;GACrB,uBAAuB;GACvB,qBAAqB;GACrB,8BAA8B;GAC/B;;CAGH,IAAI,aAAoD;AACtD,SAAO;GACL,GAAG,MAAM;GACT,mBAAmB;GACpB;;CAGH,YACE,QASA;AACA,QAAM,OAAO;AAEb,OAAK,gCACF,QAAQ,2CACP,QAAQ,mCAAA,GAAA,0BAAA,wBACc,+CAA+C,KAAA,GAAA,0BAAA,wBAC9C,mCAAmC;AAE9D,OAAK,oBACH,QAAQ,sBACP,OAAO,QAAQ,iBAAiB,WAC7B,QAAQ,eACR,KAAA,OACH,OAAO,QAAQ,WAAW,WAAW,QAAQ,SAAS,KAAA,OAAA,GAAA,0BAAA,wBAChC,uBAAuB;AAEhD,OAAK,6BACH,QAAQ,+BAAA,GAAA,0BAAA,wBACe,iCAAiC;AAE1D,OAAK,wBACH,QAAQ,yBACR,QAAQ,qBAAA,GAAA,0BAAA,wBACe,2BAA2B;AAEpD,OAAK,sBACH,QAAQ,wBAAA,GAAA,0BAAA,wBACe,yBAAyB;AAElD,OAAK,sBACH,QAAQ,wBAAA,GAAA,0BAAA,wBACe,wBAAwB;AAEjD,OAAK,uBAAuB,QAAQ;AAEpC,MAAI,CAAC,KAAK,qBAAqB,CAAC,KAAK,UAAU,CAAC,KAAK,qBACnD,OAAM,IAAI,MAAM,mDAAmD;;CAIvE,kBACE,SAC0B;AAC1B,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,GAAG;IACJ,CAAC;;EAGJ,MAAM,iBAAiB;GACrB,GAAG,KAAK;GACR,GAAG;GACJ;AACD,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;;CAIT,SAAc;EACZ,MAAM,OAAO,MAAM,QAAQ;EAE3B,SAAS,SAAS,KAA8C;AAC9D,UAAO,OAAO,QAAQ,YAAY,OAAO;;AAG3C,MAAI,SAAS,KAAK,IAAI,SAAS,KAAK,OAAO,EAAE;AAC3C,UAAO,KAAK,OAAO;AACnB,UAAO,KAAK,OAAO;AACnB,UAAO,KAAK,OAAO;AACnB,UAAO,KAAK,OAAO;AACnB,UAAO,KAAK,OAAO;;AAGrB,SAAO"}