@n8n/n8n-nodes-langchain 0.4.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.js +18 -3
- package/dist/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.js.map +1 -1
- package/dist/nodes/chains/ChainLLM/ChainLlm.node.js +49 -19
- package/dist/nodes/chains/ChainLLM/ChainLlm.node.js.map +1 -1
- package/dist/nodes/chains/ChainSummarization/ChainSummarization.node.d.ts +3 -4
- package/dist/nodes/chains/ChainSummarization/ChainSummarization.node.js +10 -205
- package/dist/nodes/chains/ChainSummarization/ChainSummarization.node.js.map +1 -1
- package/dist/nodes/chains/ChainSummarization/V1/ChainSummarizationV1.node.d.ts +6 -0
- package/dist/nodes/chains/ChainSummarization/V1/ChainSummarizationV1.node.js +216 -0
- package/dist/nodes/chains/ChainSummarization/V1/ChainSummarizationV1.node.js.map +1 -0
- package/dist/nodes/chains/ChainSummarization/V2/ChainSummarizationV2.node.d.ts +6 -0
- package/dist/nodes/chains/ChainSummarization/V2/ChainSummarizationV2.node.js +347 -0
- package/dist/nodes/chains/ChainSummarization/V2/ChainSummarizationV2.node.js.map +1 -0
- package/dist/nodes/chains/ChainSummarization/helpers.d.ts +9 -0
- package/dist/nodes/chains/ChainSummarization/helpers.js +51 -0
- package/dist/nodes/chains/ChainSummarization/helpers.js.map +1 -0
- package/dist/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.js +3 -1
- package/dist/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.js.map +1 -1
- package/dist/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.js +4 -2
- package/dist/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.js.map +1 -1
- package/dist/nodes/document_loaders/DocumentJSONInputLoader/DocumentJsonInputLoader.node.js +2 -1
- package/dist/nodes/document_loaders/DocumentJSONInputLoader/DocumentJsonInputLoader.node.js.map +1 -1
- package/dist/nodes/llms/LMOpenAi/LmOpenAi.node.js +2 -2
- package/dist/nodes/llms/LMOpenAi/LmOpenAi.node.js.map +1 -1
- package/dist/nodes/tools/ToolCode/ToolCode.node.js +1 -1
- package/dist/nodes/tools/ToolCode/ToolCode.node.js.map +1 -1
- package/dist/nodes/vector_store/shared/methods/listSearch.d.ts +1 -1
- package/dist/nodes/vector_store/shared/methods/listSearch.js +6 -2
- package/dist/nodes/vector_store/shared/methods/listSearch.js.map +1 -1
- package/dist/types/nodes.json +5 -4
- package/dist/utils/N8nBinaryLoader.d.ts +4 -1
- package/dist/utils/N8nBinaryLoader.js +6 -6
- package/dist/utils/N8nBinaryLoader.js.map +1 -1
- package/dist/utils/N8nJsonLoader.d.ts +3 -1
- package/dist/utils/N8nJsonLoader.js +4 -4
- package/dist/utils/N8nJsonLoader.js.map +1 -1
- package/dist/utils/logWrapper.d.ts +1 -1
- package/dist/utils/logWrapper.js +4 -0
- package/dist/utils/logWrapper.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChainSummarizationV1 = void 0;
|
|
4
|
+
const chains_1 = require("langchain/chains");
|
|
5
|
+
const prompts_1 = require("langchain/prompts");
|
|
6
|
+
const N8nJsonLoader_1 = require("../../../../utils/N8nJsonLoader");
|
|
7
|
+
const N8nBinaryLoader_1 = require("../../../../utils/N8nBinaryLoader");
|
|
8
|
+
const sharedFields_1 = require("../../../../utils/sharedFields");
|
|
9
|
+
const prompt_1 = require("../prompt");
|
|
10
|
+
class ChainSummarizationV1 {
|
|
11
|
+
constructor(baseDescription) {
|
|
12
|
+
this.description = {
|
|
13
|
+
...baseDescription,
|
|
14
|
+
version: 1,
|
|
15
|
+
defaults: {
|
|
16
|
+
name: 'Summarization Chain',
|
|
17
|
+
color: '#909298',
|
|
18
|
+
},
|
|
19
|
+
inputs: [
|
|
20
|
+
"main",
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Model',
|
|
23
|
+
maxConnections: 1,
|
|
24
|
+
type: "ai_languageModel",
|
|
25
|
+
required: true,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
displayName: 'Document',
|
|
29
|
+
maxConnections: 1,
|
|
30
|
+
type: "ai_document",
|
|
31
|
+
required: true,
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
outputs: ["main"],
|
|
35
|
+
credentials: [],
|
|
36
|
+
properties: [
|
|
37
|
+
(0, sharedFields_1.getTemplateNoticeField)(1951),
|
|
38
|
+
{
|
|
39
|
+
displayName: 'Type',
|
|
40
|
+
name: 'type',
|
|
41
|
+
type: 'options',
|
|
42
|
+
description: 'The type of summarization to run',
|
|
43
|
+
default: 'map_reduce',
|
|
44
|
+
options: [
|
|
45
|
+
{
|
|
46
|
+
name: 'Map Reduce (Recommended)',
|
|
47
|
+
value: 'map_reduce',
|
|
48
|
+
description: 'Summarize each document (or chunk) individually, then summarize those summaries',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'Refine',
|
|
52
|
+
value: 'refine',
|
|
53
|
+
description: 'Summarize the first document (or chunk). Then update that summary based on the next document (or chunk), and repeat.',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'Stuff',
|
|
57
|
+
value: 'stuff',
|
|
58
|
+
description: 'Pass all documents (or chunks) at once. Ideal for small datasets.',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
displayName: 'Options',
|
|
64
|
+
name: 'options',
|
|
65
|
+
type: 'collection',
|
|
66
|
+
default: {},
|
|
67
|
+
placeholder: 'Add Option',
|
|
68
|
+
options: [
|
|
69
|
+
{
|
|
70
|
+
displayName: 'Final Prompt to Combine',
|
|
71
|
+
name: 'combineMapPrompt',
|
|
72
|
+
type: 'string',
|
|
73
|
+
hint: 'The prompt to combine individual summaries',
|
|
74
|
+
displayOptions: {
|
|
75
|
+
show: {
|
|
76
|
+
'/type': ['map_reduce'],
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
80
|
+
typeOptions: {
|
|
81
|
+
rows: 6,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
displayName: 'Individual Summary Prompt',
|
|
86
|
+
name: 'prompt',
|
|
87
|
+
type: 'string',
|
|
88
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
89
|
+
hint: 'The prompt to summarize an individual document (or chunk)',
|
|
90
|
+
displayOptions: {
|
|
91
|
+
show: {
|
|
92
|
+
'/type': ['map_reduce'],
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
typeOptions: {
|
|
96
|
+
rows: 6,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
displayName: 'Prompt',
|
|
101
|
+
name: 'prompt',
|
|
102
|
+
type: 'string',
|
|
103
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
104
|
+
displayOptions: {
|
|
105
|
+
show: {
|
|
106
|
+
'/type': ['stuff'],
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
typeOptions: {
|
|
110
|
+
rows: 6,
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
displayName: 'Subsequent (Refine) Prompt',
|
|
115
|
+
name: 'refinePrompt',
|
|
116
|
+
type: 'string',
|
|
117
|
+
displayOptions: {
|
|
118
|
+
show: {
|
|
119
|
+
'/type': ['refine'],
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
default: prompt_1.REFINE_PROMPT_TEMPLATE,
|
|
123
|
+
hint: 'The prompt to refine the summary based on the next document (or chunk)',
|
|
124
|
+
typeOptions: {
|
|
125
|
+
rows: 6,
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
displayName: 'Initial Prompt',
|
|
130
|
+
name: 'refineQuestionPrompt',
|
|
131
|
+
type: 'string',
|
|
132
|
+
displayOptions: {
|
|
133
|
+
show: {
|
|
134
|
+
'/type': ['refine'],
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
138
|
+
hint: 'The prompt for the first document (or chunk)',
|
|
139
|
+
typeOptions: {
|
|
140
|
+
rows: 6,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
async execute() {
|
|
149
|
+
this.logger.verbose('Executing Vector Store QA Chain');
|
|
150
|
+
const type = this.getNodeParameter('type', 0);
|
|
151
|
+
const model = (await this.getInputConnectionData("ai_languageModel", 0));
|
|
152
|
+
const documentInput = (await this.getInputConnectionData("ai_document", 0));
|
|
153
|
+
const options = this.getNodeParameter('options', 0, {});
|
|
154
|
+
const chainArgs = {
|
|
155
|
+
type,
|
|
156
|
+
};
|
|
157
|
+
if (type === 'map_reduce') {
|
|
158
|
+
const mapReduceArgs = chainArgs;
|
|
159
|
+
if (options.combineMapPrompt) {
|
|
160
|
+
mapReduceArgs.combineMapPrompt = new prompts_1.PromptTemplate({
|
|
161
|
+
template: options.combineMapPrompt,
|
|
162
|
+
inputVariables: ['text'],
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
if (options.prompt) {
|
|
166
|
+
mapReduceArgs.combinePrompt = new prompts_1.PromptTemplate({
|
|
167
|
+
template: options.prompt,
|
|
168
|
+
inputVariables: ['text'],
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (type === 'stuff') {
|
|
173
|
+
const stuffArgs = chainArgs;
|
|
174
|
+
if (options.prompt) {
|
|
175
|
+
stuffArgs.prompt = new prompts_1.PromptTemplate({
|
|
176
|
+
template: options.prompt,
|
|
177
|
+
inputVariables: ['text'],
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
if (type === 'refine') {
|
|
182
|
+
const refineArgs = chainArgs;
|
|
183
|
+
if (options.refinePrompt) {
|
|
184
|
+
refineArgs.refinePrompt = new prompts_1.PromptTemplate({
|
|
185
|
+
template: options.refinePrompt,
|
|
186
|
+
inputVariables: ['existing_answer', 'text'],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
if (options.refineQuestionPrompt) {
|
|
190
|
+
refineArgs.questionPrompt = new prompts_1.PromptTemplate({
|
|
191
|
+
template: options.refineQuestionPrompt,
|
|
192
|
+
inputVariables: ['text'],
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const chain = (0, chains_1.loadSummarizationChain)(model, chainArgs);
|
|
197
|
+
const items = this.getInputData();
|
|
198
|
+
const returnData = [];
|
|
199
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
200
|
+
let processedDocuments;
|
|
201
|
+
if (documentInput instanceof N8nJsonLoader_1.N8nJsonLoader || documentInput instanceof N8nBinaryLoader_1.N8nBinaryLoader) {
|
|
202
|
+
processedDocuments = await documentInput.processItem(items[itemIndex], itemIndex);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
processedDocuments = documentInput;
|
|
206
|
+
}
|
|
207
|
+
const response = await chain.call({
|
|
208
|
+
input_documents: processedDocuments,
|
|
209
|
+
});
|
|
210
|
+
returnData.push({ json: { response } });
|
|
211
|
+
}
|
|
212
|
+
return this.prepareOutputData(returnData);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.ChainSummarizationV1 = ChainSummarizationV1;
|
|
216
|
+
//# sourceMappingURL=ChainSummarizationV1.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainSummarizationV1.node.js","sourceRoot":"","sources":["../../../../../nodes/chains/ChainSummarization/V1/ChainSummarizationV1.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { INodeTypeBaseDescription, IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class ChainSummarizationV2 implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
constructor(baseDescription: INodeTypeBaseDescription);
|
|
5
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChainSummarizationV2 = void 0;
|
|
4
|
+
const chains_1 = require("langchain/chains");
|
|
5
|
+
const text_splitter_1 = require("langchain/text_splitter");
|
|
6
|
+
const N8nJsonLoader_1 = require("../../../../utils/N8nJsonLoader");
|
|
7
|
+
const N8nBinaryLoader_1 = require("../../../../utils/N8nBinaryLoader");
|
|
8
|
+
const sharedFields_1 = require("../../../../utils/sharedFields");
|
|
9
|
+
const prompt_1 = require("../prompt");
|
|
10
|
+
const helpers_1 = require("../helpers");
|
|
11
|
+
function getInputs(parameters) {
|
|
12
|
+
const chunkingMode = parameters === null || parameters === void 0 ? void 0 : parameters.chunkingMode;
|
|
13
|
+
const operationMode = parameters === null || parameters === void 0 ? void 0 : parameters.operationMode;
|
|
14
|
+
const inputs = [
|
|
15
|
+
{ displayName: '', type: "main" },
|
|
16
|
+
{
|
|
17
|
+
displayName: 'Model',
|
|
18
|
+
maxConnections: 1,
|
|
19
|
+
type: "ai_languageModel",
|
|
20
|
+
required: true,
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
if (operationMode === 'documentLoader') {
|
|
24
|
+
inputs.push({
|
|
25
|
+
displayName: 'Document',
|
|
26
|
+
type: "ai_document",
|
|
27
|
+
required: true,
|
|
28
|
+
maxConnections: 1,
|
|
29
|
+
});
|
|
30
|
+
return inputs;
|
|
31
|
+
}
|
|
32
|
+
if (chunkingMode === 'advanced') {
|
|
33
|
+
inputs.push({
|
|
34
|
+
displayName: 'Text Splitter',
|
|
35
|
+
type: "ai_textSplitter",
|
|
36
|
+
required: false,
|
|
37
|
+
maxConnections: 1,
|
|
38
|
+
});
|
|
39
|
+
return inputs;
|
|
40
|
+
}
|
|
41
|
+
return inputs;
|
|
42
|
+
}
|
|
43
|
+
class ChainSummarizationV2 {
|
|
44
|
+
constructor(baseDescription) {
|
|
45
|
+
this.description = {
|
|
46
|
+
...baseDescription,
|
|
47
|
+
version: [2],
|
|
48
|
+
defaults: {
|
|
49
|
+
name: 'Summarization Chain',
|
|
50
|
+
color: '#909298',
|
|
51
|
+
},
|
|
52
|
+
inputs: `={{ ((parameter) => { ${getInputs.toString()}; return getInputs(parameter) })($parameter) }}`,
|
|
53
|
+
outputs: ["main"],
|
|
54
|
+
credentials: [],
|
|
55
|
+
properties: [
|
|
56
|
+
(0, sharedFields_1.getTemplateNoticeField)(1951),
|
|
57
|
+
{
|
|
58
|
+
displayName: 'Data to Summarize',
|
|
59
|
+
name: 'operationMode',
|
|
60
|
+
noDataExpression: true,
|
|
61
|
+
type: 'options',
|
|
62
|
+
description: 'How to pass data into the summarization chain',
|
|
63
|
+
default: 'nodeInputJson',
|
|
64
|
+
options: [
|
|
65
|
+
{
|
|
66
|
+
name: 'Use Node Input (JSON)',
|
|
67
|
+
value: 'nodeInputJson',
|
|
68
|
+
description: 'Summarize the JSON data coming into this node from the previous one',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Use Node Input (Binary)',
|
|
72
|
+
value: 'nodeInputBinary',
|
|
73
|
+
description: 'Summarize the binary data coming into this node from the previous one',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: 'Use Document Loader',
|
|
77
|
+
value: 'documentLoader',
|
|
78
|
+
description: 'Use a loader sub-node with more configuration options',
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
displayName: 'Chunking Strategy',
|
|
84
|
+
name: 'chunkingMode',
|
|
85
|
+
noDataExpression: true,
|
|
86
|
+
type: 'options',
|
|
87
|
+
description: 'Chunk splitting strategy',
|
|
88
|
+
default: 'simple',
|
|
89
|
+
options: [
|
|
90
|
+
{
|
|
91
|
+
name: 'Simple (Define Below)',
|
|
92
|
+
value: 'simple',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'Advanced',
|
|
96
|
+
value: 'advanced',
|
|
97
|
+
description: 'Use a splitter sub-node with more configuration options',
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
displayOptions: {
|
|
101
|
+
show: {
|
|
102
|
+
'/operationMode': ['nodeInputJson', 'nodeInputBinary'],
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
displayName: 'Characters Per Chunk',
|
|
108
|
+
name: 'chunkSize',
|
|
109
|
+
description: 'Controls the max size (in terms of number of characters) of the final document chunk',
|
|
110
|
+
type: 'number',
|
|
111
|
+
default: 1000,
|
|
112
|
+
displayOptions: {
|
|
113
|
+
show: {
|
|
114
|
+
'/chunkingMode': ['simple'],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
displayName: 'Chunk Overlap (Characters)',
|
|
120
|
+
name: 'chunkOverlap',
|
|
121
|
+
type: 'number',
|
|
122
|
+
description: 'Specifies how much characters overlap there should be between chunks',
|
|
123
|
+
default: 200,
|
|
124
|
+
displayOptions: {
|
|
125
|
+
show: {
|
|
126
|
+
'/chunkingMode': ['simple'],
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
displayName: 'Options',
|
|
132
|
+
name: 'options',
|
|
133
|
+
type: 'collection',
|
|
134
|
+
default: {},
|
|
135
|
+
placeholder: 'Add Option',
|
|
136
|
+
options: [
|
|
137
|
+
{
|
|
138
|
+
displayName: 'Input Data Field Name',
|
|
139
|
+
name: 'binaryDataKey',
|
|
140
|
+
type: 'string',
|
|
141
|
+
default: 'data',
|
|
142
|
+
description: 'The name of the field in the agent or chain’s input that contains the binary file to be processed',
|
|
143
|
+
displayOptions: {
|
|
144
|
+
show: {
|
|
145
|
+
'/operationMode': ['nodeInputBinary'],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
displayName: 'Summarization Method and Prompts',
|
|
151
|
+
name: 'summarizationMethodAndPrompts',
|
|
152
|
+
type: 'fixedCollection',
|
|
153
|
+
default: {
|
|
154
|
+
values: {
|
|
155
|
+
summarizationMethod: 'map_reduce',
|
|
156
|
+
prompt: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
157
|
+
combineMapPrompt: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
placeholder: 'Add Option',
|
|
161
|
+
typeOptions: {},
|
|
162
|
+
options: [
|
|
163
|
+
{
|
|
164
|
+
name: 'values',
|
|
165
|
+
displayName: 'Values',
|
|
166
|
+
values: [
|
|
167
|
+
{
|
|
168
|
+
displayName: 'Summarization Method',
|
|
169
|
+
name: 'summarizationMethod',
|
|
170
|
+
type: 'options',
|
|
171
|
+
description: 'The type of summarization to run',
|
|
172
|
+
default: 'map_reduce',
|
|
173
|
+
options: [
|
|
174
|
+
{
|
|
175
|
+
name: 'Map Reduce (Recommended)',
|
|
176
|
+
value: 'map_reduce',
|
|
177
|
+
description: 'Summarize each document (or chunk) individually, then summarize those summaries',
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'Refine',
|
|
181
|
+
value: 'refine',
|
|
182
|
+
description: 'Summarize the first document (or chunk). Then update that summary based on the next document (or chunk), and repeat.',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: 'Stuff',
|
|
186
|
+
value: 'stuff',
|
|
187
|
+
description: 'Pass all documents (or chunks) at once. Ideal for small datasets.',
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
displayName: 'Final Prompt to Combine',
|
|
193
|
+
name: 'combineMapPrompt',
|
|
194
|
+
type: 'string',
|
|
195
|
+
hint: 'The prompt to combine individual summaries',
|
|
196
|
+
displayOptions: {
|
|
197
|
+
hide: {
|
|
198
|
+
'/options.summarizationMethodAndPrompts.values.summarizationMethod': [
|
|
199
|
+
'stuff',
|
|
200
|
+
'refine',
|
|
201
|
+
],
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
205
|
+
typeOptions: {
|
|
206
|
+
rows: 9,
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
displayName: 'Individual Summary Prompt',
|
|
211
|
+
name: 'prompt',
|
|
212
|
+
type: 'string',
|
|
213
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
214
|
+
hint: 'The prompt to summarize an individual document (or chunk)',
|
|
215
|
+
displayOptions: {
|
|
216
|
+
hide: {
|
|
217
|
+
'/options.summarizationMethodAndPrompts.values.summarizationMethod': [
|
|
218
|
+
'stuff',
|
|
219
|
+
'refine',
|
|
220
|
+
],
|
|
221
|
+
},
|
|
222
|
+
},
|
|
223
|
+
typeOptions: {
|
|
224
|
+
rows: 9,
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
displayName: 'Prompt',
|
|
229
|
+
name: 'prompt',
|
|
230
|
+
type: 'string',
|
|
231
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
232
|
+
displayOptions: {
|
|
233
|
+
hide: {
|
|
234
|
+
'/options.summarizationMethodAndPrompts.values.summarizationMethod': [
|
|
235
|
+
'refine',
|
|
236
|
+
'map_reduce',
|
|
237
|
+
],
|
|
238
|
+
},
|
|
239
|
+
},
|
|
240
|
+
typeOptions: {
|
|
241
|
+
rows: 9,
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
displayName: 'Subsequent (Refine) Prompt',
|
|
246
|
+
name: 'refinePrompt',
|
|
247
|
+
type: 'string',
|
|
248
|
+
displayOptions: {
|
|
249
|
+
hide: {
|
|
250
|
+
'/options.summarizationMethodAndPrompts.values.summarizationMethod': [
|
|
251
|
+
'stuff',
|
|
252
|
+
'map_reduce',
|
|
253
|
+
],
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
default: prompt_1.REFINE_PROMPT_TEMPLATE,
|
|
257
|
+
hint: 'The prompt to refine the summary based on the next document (or chunk)',
|
|
258
|
+
typeOptions: {
|
|
259
|
+
rows: 9,
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
displayName: 'Initial Prompt',
|
|
264
|
+
name: 'refineQuestionPrompt',
|
|
265
|
+
type: 'string',
|
|
266
|
+
displayOptions: {
|
|
267
|
+
hide: {
|
|
268
|
+
'/options.summarizationMethodAndPrompts.values.summarizationMethod': [
|
|
269
|
+
'stuff',
|
|
270
|
+
'map_reduce',
|
|
271
|
+
],
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
default: prompt_1.DEFAULT_PROMPT_TEMPLATE,
|
|
275
|
+
hint: 'The prompt for the first document (or chunk)',
|
|
276
|
+
typeOptions: {
|
|
277
|
+
rows: 9,
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
],
|
|
283
|
+
},
|
|
284
|
+
],
|
|
285
|
+
},
|
|
286
|
+
],
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
async execute() {
|
|
290
|
+
var _a;
|
|
291
|
+
this.logger.verbose('Executing Summarization Chain V2');
|
|
292
|
+
const operationMode = this.getNodeParameter('operationMode', 0, 'nodeInputJson');
|
|
293
|
+
const chunkingMode = this.getNodeParameter('chunkingMode', 0, 'simple');
|
|
294
|
+
const model = (await this.getInputConnectionData("ai_languageModel", 0));
|
|
295
|
+
const items = this.getInputData();
|
|
296
|
+
const returnData = [];
|
|
297
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
298
|
+
const summarizationMethodAndPrompts = this.getNodeParameter('options.summarizationMethodAndPrompts.values', itemIndex, {});
|
|
299
|
+
const chainArgs = (0, helpers_1.getChainPromptsArgs)((_a = summarizationMethodAndPrompts.summarizationMethod) !== null && _a !== void 0 ? _a : 'map_reduce', summarizationMethodAndPrompts);
|
|
300
|
+
const chain = (0, chains_1.loadSummarizationChain)(model, chainArgs);
|
|
301
|
+
const item = items[itemIndex];
|
|
302
|
+
let processedDocuments;
|
|
303
|
+
if (operationMode === 'documentLoader') {
|
|
304
|
+
const documentInput = (await this.getInputConnectionData("ai_document", 0));
|
|
305
|
+
const isN8nLoader = documentInput instanceof N8nJsonLoader_1.N8nJsonLoader || documentInput instanceof N8nBinaryLoader_1.N8nBinaryLoader;
|
|
306
|
+
processedDocuments = isN8nLoader
|
|
307
|
+
? await documentInput.processItem(item, itemIndex)
|
|
308
|
+
: documentInput;
|
|
309
|
+
const response = await chain.call({
|
|
310
|
+
input_documents: processedDocuments,
|
|
311
|
+
});
|
|
312
|
+
returnData.push({ json: { response } });
|
|
313
|
+
}
|
|
314
|
+
if (['nodeInputJson', 'nodeInputBinary'].includes(operationMode)) {
|
|
315
|
+
let textSplitter;
|
|
316
|
+
switch (chunkingMode) {
|
|
317
|
+
case 'simple':
|
|
318
|
+
const chunkSize = this.getNodeParameter('chunkSize', itemIndex, 1000);
|
|
319
|
+
const chunkOverlap = this.getNodeParameter('chunkOverlap', itemIndex, 200);
|
|
320
|
+
textSplitter = new text_splitter_1.RecursiveCharacterTextSplitter({ chunkOverlap, chunkSize });
|
|
321
|
+
break;
|
|
322
|
+
case 'advanced':
|
|
323
|
+
textSplitter = (await this.getInputConnectionData("ai_textSplitter", 0));
|
|
324
|
+
break;
|
|
325
|
+
default:
|
|
326
|
+
break;
|
|
327
|
+
}
|
|
328
|
+
let processor;
|
|
329
|
+
if (operationMode === 'nodeInputBinary') {
|
|
330
|
+
const binaryDataKey = this.getNodeParameter('options.binaryDataKey', itemIndex, 'data');
|
|
331
|
+
processor = new N8nBinaryLoader_1.N8nBinaryLoader(this, 'options.', binaryDataKey, textSplitter);
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
processor = new N8nJsonLoader_1.N8nJsonLoader(this, 'options.', textSplitter);
|
|
335
|
+
}
|
|
336
|
+
const processedItem = await processor.processItem(item, itemIndex);
|
|
337
|
+
const response = await chain.call({
|
|
338
|
+
input_documents: processedItem,
|
|
339
|
+
});
|
|
340
|
+
returnData.push({ json: { response } });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return this.prepareOutputData(returnData);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
exports.ChainSummarizationV2 = ChainSummarizationV2;
|
|
347
|
+
//# sourceMappingURL=ChainSummarizationV2.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainSummarizationV2.node.js","sourceRoot":"","sources":["../../../../../nodes/chains/ChainSummarization/V2/ChainSummarizationV2.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SummarizationChainParams } from 'langchain/chains';
|
|
2
|
+
interface ChainTypeOptions {
|
|
3
|
+
combineMapPrompt?: string;
|
|
4
|
+
prompt?: string;
|
|
5
|
+
refinePrompt?: string;
|
|
6
|
+
refineQuestionPrompt?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function getChainPromptsArgs(type: 'stuff' | 'map_reduce' | 'refine', options: ChainTypeOptions): SummarizationChainParams;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getChainPromptsArgs = void 0;
|
|
4
|
+
const prompts_1 = require("langchain/prompts");
|
|
5
|
+
function getChainPromptsArgs(type, options) {
|
|
6
|
+
const chainArgs = {
|
|
7
|
+
type,
|
|
8
|
+
};
|
|
9
|
+
if (type === 'map_reduce') {
|
|
10
|
+
const mapReduceArgs = chainArgs;
|
|
11
|
+
if (options.combineMapPrompt) {
|
|
12
|
+
mapReduceArgs.combineMapPrompt = new prompts_1.PromptTemplate({
|
|
13
|
+
template: options.combineMapPrompt,
|
|
14
|
+
inputVariables: ['text'],
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
if (options.prompt) {
|
|
18
|
+
mapReduceArgs.combinePrompt = new prompts_1.PromptTemplate({
|
|
19
|
+
template: options.prompt,
|
|
20
|
+
inputVariables: ['text'],
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (type === 'stuff') {
|
|
25
|
+
const stuffArgs = chainArgs;
|
|
26
|
+
if (options.prompt) {
|
|
27
|
+
stuffArgs.prompt = new prompts_1.PromptTemplate({
|
|
28
|
+
template: options.prompt,
|
|
29
|
+
inputVariables: ['text'],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (type === 'refine') {
|
|
34
|
+
const refineArgs = chainArgs;
|
|
35
|
+
if (options.refinePrompt) {
|
|
36
|
+
refineArgs.refinePrompt = new prompts_1.PromptTemplate({
|
|
37
|
+
template: options.refinePrompt,
|
|
38
|
+
inputVariables: ['existing_answer', 'text'],
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
if (options.refineQuestionPrompt) {
|
|
42
|
+
refineArgs.questionPrompt = new prompts_1.PromptTemplate({
|
|
43
|
+
template: options.refineQuestionPrompt,
|
|
44
|
+
inputVariables: ['text'],
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return chainArgs;
|
|
49
|
+
}
|
|
50
|
+
exports.getChainPromptsArgs = getChainPromptsArgs;
|
|
51
|
+
//# sourceMappingURL=helpers.js.map
|