UNPKG

@n8n/n8n-nodes-langchain

Version:

![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

119 lines 5.02 kB
"use strict"; 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