@n8n/n8n-nodes-langchain
Version:

119 lines • 5.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LmChatAzureOpenAi = void 0;
const openai_1 = require("@langchain/openai");
const ai_utilities_1 = require("@n8n/ai-utilities");
const n8n_workflow_1 = require("n8n-workflow");
const api_key_1 = require("./credentials/api-key");
const oauth2_1 = require("./credentials/oauth2");
const properties_1 = require("./properties");
class LmChatAzureOpenAi {
constructor() {
this.description = {
displayName: 'Azure OpenAI Chat Model',
name: 'lmChatAzureOpenAi',
icon: 'file:azure.svg',
group: ['transform'],
version: 1,
description: 'For advanced usage with an AI chain',
defaults: {
name: 'Azure OpenAI Chat Model',
},
codex: {
categories: ['AI'],
subcategories: {
AI: ['Language Models', 'Root Nodes'],
'Language Models': ['Chat Models (Recommended)'],
},
resources: {
primaryDocumentation: [
{
url: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai/',
},
],
},
},
inputs: [],
outputs: [n8n_workflow_1.NodeConnectionTypes.AiLanguageModel],
outputNames: ['Model'],
credentials: [
{
name: 'azureOpenAiApi',
required: true,
displayOptions: {
show: {
authentication: ["azureOpenAiApi"],
},
},
},
{
name: 'azureEntraCognitiveServicesOAuth2Api',
required: true,
displayOptions: {
show: {
authentication: ["azureEntraCognitiveServicesOAuth2Api"],
},
},
},
],
properties: properties_1.properties,
};
}
async supplyData(itemIndex) {
try {
const authenticationMethod = this.getNodeParameter('authentication', itemIndex);
const modelName = this.getNodeParameter('model', itemIndex);
const options = this.getNodeParameter('options', itemIndex, {});
let modelConfig;
switch (authenticationMethod) {
case "azureOpenAiApi":
modelConfig = await api_key_1.setupApiKeyAuthentication.call(this, 'azureOpenAiApi');
break;
case "azureEntraCognitiveServicesOAuth2Api":
modelConfig = await oauth2_1.setupOAuth2Authentication.call(this, 'azureEntraCognitiveServicesOAuth2Api');
break;
default:
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Invalid authentication method');
}
this.logger.info(`Instantiating AzureChatOpenAI model with deployment: ${modelName}`);
const timeout = options.timeout;
const model = new openai_1.AzureChatOpenAI({
useResponsesApi: false,
model: modelName,
azureOpenAIApiDeploymentName: modelName,
...modelConfig,
...options,
timeout,
maxRetries: options.maxRetries ?? 2,
callbacks: [new ai_utilities_1.N8nLlmTracing(this)],
configuration: {
fetchOptions: {
dispatcher: (0, ai_utilities_1.getProxyAgent)(undefined, {
headersTimeout: timeout,
bodyTimeout: timeout,
}),
},
},
modelKwargs: options.responseFormat
? {
response_format: { type: options.responseFormat },
}
: undefined,
onFailedAttempt: (0, ai_utilities_1.makeN8nLlmFailedAttemptHandler)(this),
});
this.logger.info(`Azure OpenAI client initialized for deployment: ${modelName}`);
return {
response: model,
};
}
catch (error) {
this.logger.error(`Error in LmChatAzureOpenAi.supplyData: ${error.message}`, error);
if (error instanceof n8n_workflow_1.NodeOperationError) {
throw error;
}
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Failed to initialize Azure OpenAI client: ${error.message}`, error);
}
}
}
exports.LmChatAzureOpenAi = LmChatAzureOpenAi;
//# sourceMappingURL=LmChatAzureOpenAi.node.js.map