UNPKG

@n8n/n8n-nodes-langchain

Version:

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

88 lines 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.baseAnalyze = baseAnalyze; const n8n_workflow_1 = require("n8n-workflow"); const utils_1 = require("./utils"); const transport_1 = require("../transport"); async function baseAnalyze(i, urlsPropertyName, fallbackMimeType) { const model = this.getNodeParameter('modelId', i, '', { extractValue: true }); const inputType = this.getNodeParameter('inputType', i, 'url'); const text = this.getNodeParameter('text', i, ''); const simplify = this.getNodeParameter('simplify', i, true); const options = this.getNodeParameter('options', i, {}); (0, n8n_workflow_1.validateNodeParameters)(options, { maxOutputTokens: { type: 'number', required: false } }, this.getNode()); const generationConfig = { maxOutputTokens: options.maxOutputTokens, }; let contents; if (inputType === 'url') { const urls = this.getNodeParameter(urlsPropertyName, i, ''); const filesDataPromises = urls .split(',') .map((url) => url.trim()) .filter((url) => url) .map(async (url) => { if (url.startsWith('https://generativelanguage.googleapis.com')) { const { mimeType } = (await transport_1.apiRequest.call(this, 'GET', '', { option: { url }, })); return { fileUri: url, mimeType }; } else { const { fileContent, mimeType } = await utils_1.downloadFile.call(this, url, fallbackMimeType); return await utils_1.uploadFile.call(this, fileContent, mimeType); } }); const filesData = await Promise.all(filesDataPromises); contents = [ { role: 'user', parts: filesData.map((fileData) => ({ fileData, })), }, ]; } else { const binaryPropertyNames = this.getNodeParameter('binaryPropertyName', i, 'data'); const promises = binaryPropertyNames .split(',') .map((binaryPropertyName) => binaryPropertyName.trim()) .filter((binaryPropertyName) => binaryPropertyName) .map(async (binaryPropertyName) => { const binaryData = this.helpers.assertBinaryData(i, binaryPropertyName); const buffer = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName); return await utils_1.uploadFile.call(this, buffer, binaryData.mimeType); }); const filesData = await Promise.all(promises); contents = [ { role: 'user', parts: filesData.map((fileData) => ({ fileData, })), }, ]; } contents[0].parts.push({ text }); const body = { contents, generationConfig, }; const response = (await transport_1.apiRequest.call(this, 'POST', `/v1beta/${model}:generateContent`, { body, })); if (simplify) { return response.candidates.map((candidate) => ({ json: candidate, pairedItem: { item: i }, })); } return [ { json: { ...response }, pairedItem: { item: i }, }, ]; } //# sourceMappingURL=baseAnalyze.js.map