UNPKG

@n8n/n8n-nodes-langchain

Version:

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

111 lines 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TextSplitterRecursiveCharacterTextSplitter = void 0; const textsplitters_1 = require("@langchain/textsplitters"); const n8n_workflow_1 = require("n8n-workflow"); const ai_utilities_1 = require("@n8n/ai-utilities"); const supportedLanguages = [ 'cpp', 'go', 'java', 'js', 'php', 'proto', 'python', 'rst', 'ruby', 'rust', 'scala', 'swift', 'markdown', 'latex', 'html', ]; class TextSplitterRecursiveCharacterTextSplitter { constructor() { this.description = { displayName: 'Recursive Character Text Splitter', name: 'textSplitterRecursiveCharacterTextSplitter', icon: 'node:recursive-character-text-splitter', iconColor: 'black', group: ['transform'], version: 1, description: 'Split text into chunks by characters recursively, recommended for most use cases', defaults: { name: 'Recursive Character Text Splitter', }, codex: { categories: ['AI'], subcategories: { AI: ['Text Splitters'], }, resources: { primaryDocumentation: [ { url: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplitterrecursivecharactertextsplitter/', }, ], }, }, inputs: [], outputs: [n8n_workflow_1.NodeConnectionTypes.AiTextSplitter], outputNames: ['Text Splitter'], properties: [ (0, ai_utilities_1.getConnectionHintNoticeField)([n8n_workflow_1.NodeConnectionTypes.AiDocument]), { displayName: 'Chunk Size', name: 'chunkSize', type: 'number', default: 1000, }, { displayName: 'Chunk Overlap', name: 'chunkOverlap', type: 'number', default: 0, }, { displayName: 'Options', name: 'options', placeholder: 'Add Option', description: 'Additional options to add', type: 'collection', default: {}, options: [ { displayName: 'Split Code', name: 'splitCode', default: 'markdown', type: 'options', options: supportedLanguages.map((lang) => ({ name: lang, value: lang })), }, ], }, ], }; } async supplyData(itemIndex) { this.logger.debug('Supply Data for Text Splitter'); const chunkSize = this.getNodeParameter('chunkSize', itemIndex); const chunkOverlap = this.getNodeParameter('chunkOverlap', itemIndex); const splitCode = this.getNodeParameter('options.splitCode', itemIndex, null); const params = { separators: ['\n\n', '\n', ' ', ''], chunkSize, chunkOverlap, keepSeparator: false, }; let splitter; if (splitCode && supportedLanguages.includes(splitCode)) { splitter = textsplitters_1.RecursiveCharacterTextSplitter.fromLanguage(splitCode, params); } else { splitter = new textsplitters_1.RecursiveCharacterTextSplitter(params); } return { response: (0, ai_utilities_1.logWrapper)(splitter, this), }; } } exports.TextSplitterRecursiveCharacterTextSplitter = TextSplitterRecursiveCharacterTextSplitter; //# sourceMappingURL=TextSplitterRecursiveCharacterTextSplitter.node.js.map