@langchain/openai
Version:
OpenAI integrations for LangChain.js
125 lines (123 loc) • 5.88 kB
JavaScript
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
const require_azure = require('../../utils/azure.cjs');
const openai = require_rolldown_runtime.__toESM(require("openai"));
const __langchain_core_utils_env = require_rolldown_runtime.__toESM(require("@langchain/core/utils/env"));
//#region src/azure/chat_models/common.ts
const AZURE_ALIASES = {
openAIApiKey: "openai_api_key",
openAIApiVersion: "openai_api_version",
openAIBasePath: "openai_api_base",
deploymentName: "deployment_name",
azureOpenAIEndpoint: "azure_endpoint",
azureOpenAIApiVersion: "openai_api_version",
azureOpenAIBasePath: "openai_api_base",
azureOpenAIApiDeploymentName: "deployment_name"
};
const AZURE_SECRETS = { azureOpenAIApiKey: "AZURE_OPENAI_API_KEY" };
const AZURE_SERIALIZABLE_KEYS = [
"azureOpenAIApiKey",
"azureOpenAIApiVersion",
"azureOpenAIBasePath",
"azureOpenAIEndpoint",
"azureOpenAIApiInstanceName",
"azureOpenAIApiDeploymentName",
"deploymentName",
"openAIApiKey",
"openAIApiVersion"
];
function _constructAzureFields(fields) {
this.azureOpenAIApiKey = fields?.azureOpenAIApiKey ?? (typeof fields?.openAIApiKey === "string" ? fields?.openAIApiKey : void 0) ?? (typeof fields?.apiKey === "string" ? fields?.apiKey : void 0) ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("AZURE_OPENAI_API_KEY");
this.azureOpenAIApiInstanceName = fields?.azureOpenAIApiInstanceName ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("AZURE_OPENAI_API_INSTANCE_NAME");
this.azureOpenAIApiDeploymentName = fields?.azureOpenAIApiDeploymentName ?? fields?.deploymentName ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("AZURE_OPENAI_API_DEPLOYMENT_NAME");
this.azureOpenAIApiVersion = fields?.azureOpenAIApiVersion ?? fields?.openAIApiVersion ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("AZURE_OPENAI_API_VERSION");
this.azureOpenAIBasePath = fields?.azureOpenAIBasePath ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("AZURE_OPENAI_BASE_PATH");
this.azureOpenAIEndpoint = fields?.azureOpenAIEndpoint ?? (0, __langchain_core_utils_env.getEnvironmentVariable)("AZURE_OPENAI_ENDPOINT");
this.azureADTokenProvider = fields?.azureADTokenProvider;
if (!this.azureOpenAIApiKey && !this.apiKey && !this.azureADTokenProvider) throw new Error("Azure OpenAI API key or Token Provider not found");
}
function _getAzureClientOptions(options) {
if (!this.client) {
const openAIEndpointConfig = {
azureOpenAIApiDeploymentName: this.azureOpenAIApiDeploymentName,
azureOpenAIApiInstanceName: this.azureOpenAIApiInstanceName,
azureOpenAIApiKey: this.azureOpenAIApiKey,
azureOpenAIBasePath: this.azureOpenAIBasePath,
azureADTokenProvider: this.azureADTokenProvider,
baseURL: this.clientConfig.baseURL,
azureOpenAIEndpoint: this.azureOpenAIEndpoint
};
const endpoint = require_azure.getEndpoint(openAIEndpointConfig);
const { apiKey: existingApiKey,...clientConfigRest } = this.clientConfig;
const params = {
...clientConfigRest,
baseURL: endpoint,
timeout: this.timeout,
maxRetries: 0
};
if (!this.azureADTokenProvider) params.apiKey = openAIEndpointConfig.azureOpenAIApiKey;
if (!params.baseURL) delete params.baseURL;
params.defaultHeaders = require_azure.getHeadersWithUserAgent(params.defaultHeaders, true, "2.0.0");
this.client = new openai.AzureOpenAI({
apiVersion: this.azureOpenAIApiVersion,
azureADTokenProvider: this.azureADTokenProvider,
deployment: this.azureOpenAIApiDeploymentName,
...params
});
}
const requestOptions = {
...this.clientConfig,
...options
};
if (this.azureOpenAIApiKey) {
requestOptions.headers = {
"api-key": this.azureOpenAIApiKey,
...requestOptions.headers
};
requestOptions.query = {
"api-version": this.azureOpenAIApiVersion,
...requestOptions.query
};
}
return requestOptions;
}
function _serializeAzureChat(input) {
const json = input;
function isRecord(obj) {
return typeof obj === "object" && obj != null;
}
if (isRecord(json) && isRecord(json.kwargs)) {
delete json.kwargs.azure_openai_base_path;
delete json.kwargs.azure_openai_api_deployment_name;
delete json.kwargs.azure_openai_api_key;
delete json.kwargs.azure_openai_api_version;
delete json.kwargs.azure_open_ai_base_path;
if (!json.kwargs.azure_endpoint && this.azureOpenAIEndpoint) json.kwargs.azure_endpoint = this.azureOpenAIEndpoint;
if (!json.kwargs.azure_endpoint && this.azureOpenAIBasePath) {
const parts = this.azureOpenAIBasePath.split("/openai/deployments/");
if (parts.length === 2 && parts[0].startsWith("http")) {
const [endpoint] = parts;
json.kwargs.azure_endpoint = endpoint;
}
}
if (!json.kwargs.azure_endpoint && this.azureOpenAIApiInstanceName) json.kwargs.azure_endpoint = `https://${this.azureOpenAIApiInstanceName}.openai.azure.com/`;
if (!json.kwargs.deployment_name && this.azureOpenAIApiDeploymentName) json.kwargs.deployment_name = this.azureOpenAIApiDeploymentName;
if (!json.kwargs.deployment_name && this.azureOpenAIBasePath) {
const parts = this.azureOpenAIBasePath.split("/openai/deployments/");
if (parts.length === 2) {
const [, deployment] = parts;
json.kwargs.deployment_name = deployment;
}
}
if (json.kwargs.azure_endpoint && json.kwargs.deployment_name && json.kwargs.openai_api_base) delete json.kwargs.openai_api_base;
if (json.kwargs.azure_openai_api_instance_name && json.kwargs.azure_endpoint) delete json.kwargs.azure_openai_api_instance_name;
}
return json;
}
//#endregion
exports.AZURE_ALIASES = AZURE_ALIASES;
exports.AZURE_SECRETS = AZURE_SECRETS;
exports.AZURE_SERIALIZABLE_KEYS = AZURE_SERIALIZABLE_KEYS;
exports._constructAzureFields = _constructAzureFields;
exports._getAzureClientOptions = _getAzureClientOptions;
exports._serializeAzureChat = _serializeAzureChat;
//# sourceMappingURL=common.cjs.map