@banumeow/n8n-nodes-oracle-cloud 1.3.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/LICENSE.md +27 -0
- package/README.md +36 -0
- package/dist/credentials/OciApi.credentials.d.ts +11 -0
- package/dist/credentials/OciApi.credentials.js +74 -0
- package/dist/credentials/OciApi.credentials.js.map +1 -0
- package/dist/credentials/OracleDatabaseApi.credentials.d.ts +11 -0
- package/dist/credentials/OracleDatabaseApi.credentials.js +57 -0
- package/dist/credentials/OracleDatabaseApi.credentials.js.map +1 -0
- package/dist/credentials/icons/oracle.svg +3 -0
- package/dist/nodes/OCI/AISpeech/oracle.svg +3 -0
- package/dist/nodes/OCI/GenerativeAI/EmbeddingsOciGenerativeAi.node.d.ts +10 -0
- package/dist/nodes/OCI/GenerativeAI/EmbeddingsOciGenerativeAi.node.js +105 -0
- package/dist/nodes/OCI/GenerativeAI/EmbeddingsOciGenerativeAi.node.js.map +1 -0
- package/dist/nodes/OCI/GenerativeAI/LmChatOciGenerativeAi.node.d.ts +10 -0
- package/dist/nodes/OCI/GenerativeAI/LmChatOciGenerativeAi.node.js +169 -0
- package/dist/nodes/OCI/GenerativeAI/LmChatOciGenerativeAi.node.js.map +1 -0
- package/dist/nodes/OCI/GenerativeAI/langchain/ChatOci.d.ts +40 -0
- package/dist/nodes/OCI/GenerativeAI/langchain/ChatOci.js +377 -0
- package/dist/nodes/OCI/GenerativeAI/langchain/ChatOci.js.map +1 -0
- package/dist/nodes/OCI/GenerativeAI/langchain/OciEmbedings.d.ts +21 -0
- package/dist/nodes/OCI/GenerativeAI/langchain/OciEmbedings.js +84 -0
- package/dist/nodes/OCI/GenerativeAI/langchain/OciEmbedings.js.map +1 -0
- package/dist/nodes/OCI/GenerativeAI/oracle.svg +3 -0
- package/dist/nodes/OCI/Loaders/SimpleLoaders.d.ts +12 -0
- package/dist/nodes/OCI/Loaders/SimpleLoaders.js +58 -0
- package/dist/nodes/OCI/Loaders/SimpleLoaders.js.map +1 -0
- package/dist/nodes/OCI/N8nBinaryLoader.d.ts +18 -0
- package/dist/nodes/OCI/N8nBinaryLoader.js +168 -0
- package/dist/nodes/OCI/N8nBinaryLoader.js.map +1 -0
- package/dist/nodes/OCI/N8nJsonLoader.d.ts +11 -0
- package/dist/nodes/OCI/N8nJsonLoader.js +76 -0
- package/dist/nodes/OCI/N8nJsonLoader.js.map +1 -0
- package/dist/nodes/OCI/N8nLlmTracing.d.ts +46 -0
- package/dist/nodes/OCI/N8nLlmTracing.js +169 -0
- package/dist/nodes/OCI/N8nLlmTracing.js.map +1 -0
- package/dist/nodes/OCI/SpeechTranscriptionOci/SpeechTranscriptionOci.node.d.ts +5 -0
- package/dist/nodes/OCI/SpeechTranscriptionOci/SpeechTranscriptionOci.node.js +416 -0
- package/dist/nodes/OCI/SpeechTranscriptionOci/SpeechTranscriptionOci.node.js.map +1 -0
- package/dist/nodes/OCI/SpeechTranscriptionOci/oracle.svg +3 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracle.node.d.ts +5 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracle.node.js +113 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracle.node.js.map +1 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracleInsert.node.d.ts +5 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracleInsert.node.js +100 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracleInsert.node.js.map +1 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracleTool.node.d.ts +6 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracleTool.node.js +253 -0
- package/dist/nodes/OCI/VectorStore/VectorStoreOracleTool.node.js.map +1 -0
- package/dist/nodes/OCI/VectorStore/langchain/OracleDbVectorStore.d.ts +45 -0
- package/dist/nodes/OCI/VectorStore/langchain/OracleDbVectorStore.js +239 -0
- package/dist/nodes/OCI/VectorStore/langchain/OracleDbVectorStore.js.map +1 -0
- package/dist/nodes/OCI/VectorStore/oracle.svg +3 -0
- package/dist/nodes/OCI/logWrapper.d.ts +21 -0
- package/dist/nodes/OCI/logWrapper.js +152 -0
- package/dist/nodes/OCI/logWrapper.js.map +1 -0
- package/dist/nodes/OCI/n8nDefaultFailedAttemptHandler.d.ts +1 -0
- package/dist/nodes/OCI/n8nDefaultFailedAttemptHandler.js +31 -0
- package/dist/nodes/OCI/n8nDefaultFailedAttemptHandler.js.map +1 -0
- package/dist/nodes/OCI/n8nLlmFailedAttemptHandler.d.ts +3 -0
- package/dist/nodes/OCI/n8nLlmFailedAttemptHandler.js +28 -0
- package/dist/nodes/OCI/n8nLlmFailedAttemptHandler.js.map +1 -0
- package/dist/nodes/OCI/processDocuments.d.ts +25 -0
- package/dist/nodes/OCI/processDocuments.js +30 -0
- package/dist/nodes/OCI/processDocuments.js.map +1 -0
- package/dist/nodes/OCI/utils.d.ts +1 -0
- package/dist/nodes/OCI/utils.js +25 -0
- package/dist/nodes/OCI/utils.js.map +1 -0
- package/dist/package.json +85 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.N8nBinaryLoader = void 0;
|
|
4
|
+
const csv_1 = require("@langchain/community/document_loaders/fs/csv");
|
|
5
|
+
const docx_1 = require("@langchain/community/document_loaders/fs/docx");
|
|
6
|
+
const epub_1 = require("@langchain/community/document_loaders/fs/epub");
|
|
7
|
+
const pdf_1 = require("@langchain/community/document_loaders/fs/pdf");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const SimpleLoaders_1 = require("./Loaders/SimpleLoaders");
|
|
10
|
+
const SimpleLoaders_2 = require("./Loaders/SimpleLoaders");
|
|
11
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
12
|
+
const promises_1 = require("stream/promises");
|
|
13
|
+
const tmp_promise_1 = require("tmp-promise");
|
|
14
|
+
function getMetadataFiltersValues(ctx, itemIndex) {
|
|
15
|
+
const options = ctx.getNodeParameter('options', itemIndex, {});
|
|
16
|
+
if (options.metadata) {
|
|
17
|
+
const { metadataValues: metadata } = options.metadata;
|
|
18
|
+
if (metadata.length > 0) {
|
|
19
|
+
return metadata.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
const SUPPORTED_MIME_TYPES = {
|
|
25
|
+
auto: ['*/*'],
|
|
26
|
+
pdfLoader: ['application/pdf'],
|
|
27
|
+
csvLoader: ['text/csv'],
|
|
28
|
+
epubLoader: ['application/epub+zip'],
|
|
29
|
+
docxLoader: ['application/vnd.openxmlformats-officedocument.wordprocessingml.document'],
|
|
30
|
+
textLoader: ['text/plain', 'text/mdx', 'text/md'],
|
|
31
|
+
jsonLoader: ['application/json'],
|
|
32
|
+
};
|
|
33
|
+
class N8nBinaryLoader {
|
|
34
|
+
constructor(context, optionsPrefix = '', binaryDataKey = '', textSplitter) {
|
|
35
|
+
this.context = context;
|
|
36
|
+
this.optionsPrefix = optionsPrefix;
|
|
37
|
+
this.binaryDataKey = binaryDataKey;
|
|
38
|
+
this.textSplitter = textSplitter;
|
|
39
|
+
}
|
|
40
|
+
async processAll(items) {
|
|
41
|
+
const docs = [];
|
|
42
|
+
if (!items)
|
|
43
|
+
return [];
|
|
44
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
45
|
+
const processedDocuments = await this.processItem(items[itemIndex], itemIndex);
|
|
46
|
+
docs.push(...processedDocuments);
|
|
47
|
+
}
|
|
48
|
+
return docs;
|
|
49
|
+
}
|
|
50
|
+
async validateMimeType(mimeType, selectedLoader) {
|
|
51
|
+
if (selectedLoader !== 'auto' && !SUPPORTED_MIME_TYPES[selectedLoader].includes(mimeType)) {
|
|
52
|
+
const neededLoader = Object.keys(SUPPORTED_MIME_TYPES).find((loader) => SUPPORTED_MIME_TYPES[loader].includes(mimeType));
|
|
53
|
+
throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Mime type doesn't match selected loader. Please select under "Loader Type": ${neededLoader}`);
|
|
54
|
+
}
|
|
55
|
+
if (!Object.values(SUPPORTED_MIME_TYPES).flat().includes(mimeType)) {
|
|
56
|
+
throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Unsupported mime type: ${mimeType}`);
|
|
57
|
+
}
|
|
58
|
+
if (!SUPPORTED_MIME_TYPES[selectedLoader].includes(mimeType) &&
|
|
59
|
+
selectedLoader !== 'textLoader' &&
|
|
60
|
+
selectedLoader !== 'auto') {
|
|
61
|
+
throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), `Unsupported mime type: ${mimeType} for selected loader: ${selectedLoader}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async getFilePathOrBlob(binaryData, mimeType) {
|
|
65
|
+
if (binaryData.id) {
|
|
66
|
+
const binaryBuffer = await this.context.helpers.binaryToBuffer(await this.context.helpers.getBinaryStream(binaryData.id));
|
|
67
|
+
return new Blob([binaryBuffer], {
|
|
68
|
+
type: mimeType,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return new Blob([Buffer.from(binaryData.data, n8n_workflow_1.BINARY_ENCODING)], {
|
|
73
|
+
type: mimeType,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async getLoader(mimeType, filePathOrBlob, itemIndex) {
|
|
78
|
+
switch (mimeType) {
|
|
79
|
+
case 'application/pdf':
|
|
80
|
+
const splitPages = this.context.getNodeParameter(`${this.optionsPrefix}splitPages`, itemIndex, false);
|
|
81
|
+
return new pdf_1.PDFLoader(filePathOrBlob, { splitPages });
|
|
82
|
+
case 'text/csv':
|
|
83
|
+
const column = this.context.getNodeParameter(`${this.optionsPrefix}column`, itemIndex, null);
|
|
84
|
+
const separator = this.context.getNodeParameter(`${this.optionsPrefix}separator`, itemIndex, ',');
|
|
85
|
+
return new csv_1.CSVLoader(filePathOrBlob, { column: column !== null && column !== void 0 ? column : undefined, separator });
|
|
86
|
+
case 'application/epub+zip':
|
|
87
|
+
let filePath;
|
|
88
|
+
if (filePathOrBlob instanceof Blob) {
|
|
89
|
+
const tmpFileData = await (0, tmp_promise_1.file)({ prefix: 'epub-loader-' });
|
|
90
|
+
const bufferData = await filePathOrBlob.arrayBuffer();
|
|
91
|
+
await (0, promises_1.pipeline)([new Uint8Array(bufferData)], (0, fs_1.createWriteStream)(tmpFileData.path));
|
|
92
|
+
return new epub_1.EPubLoader(tmpFileData.path);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
filePath = filePathOrBlob;
|
|
96
|
+
}
|
|
97
|
+
return new epub_1.EPubLoader(filePath);
|
|
98
|
+
case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
|
|
99
|
+
return new docx_1.DocxLoader(filePathOrBlob);
|
|
100
|
+
case 'text/plain':
|
|
101
|
+
return new SimpleLoaders_2.TextBlobLoader(filePathOrBlob);
|
|
102
|
+
case 'application/json':
|
|
103
|
+
const pointers = this.context.getNodeParameter(`${this.optionsPrefix}pointers`, itemIndex, '');
|
|
104
|
+
const pointersArray = pointers.split(',').map((pointer) => pointer.trim());
|
|
105
|
+
return new SimpleLoaders_1.JSONBlobLoader(filePathOrBlob, pointersArray);
|
|
106
|
+
default:
|
|
107
|
+
return new SimpleLoaders_2.TextBlobLoader(filePathOrBlob);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async loadDocuments(loader) {
|
|
111
|
+
return this.textSplitter
|
|
112
|
+
? await this.textSplitter.splitDocuments(await loader.load())
|
|
113
|
+
: await loader.load();
|
|
114
|
+
}
|
|
115
|
+
async cleanupTmpFileIfNeeded(cleanupTmpFile) {
|
|
116
|
+
if (cleanupTmpFile) {
|
|
117
|
+
await cleanupTmpFile();
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async processItem(item, itemIndex) {
|
|
121
|
+
const docs = [];
|
|
122
|
+
const binaryMode = this.context.getNodeParameter('binaryMode', itemIndex, 'allInputData');
|
|
123
|
+
if (binaryMode === 'allInputData') {
|
|
124
|
+
const binaryData = this.context.getInputData();
|
|
125
|
+
for (const data of binaryData) {
|
|
126
|
+
if (data.binary) {
|
|
127
|
+
const binaryDataKeys = Object.keys(data.binary);
|
|
128
|
+
for (const fileKey of binaryDataKeys) {
|
|
129
|
+
const processedDocuments = await this.processItemByKey(item, itemIndex, fileKey);
|
|
130
|
+
docs.push(...processedDocuments);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const processedDocuments = await this.processItemByKey(item, itemIndex, this.binaryDataKey);
|
|
137
|
+
docs.push(...processedDocuments);
|
|
138
|
+
}
|
|
139
|
+
return docs;
|
|
140
|
+
}
|
|
141
|
+
async processItemByKey(item, itemIndex, binaryKey) {
|
|
142
|
+
const selectedLoader = this.context.getNodeParameter('loader', itemIndex, 'auto');
|
|
143
|
+
const docs = [];
|
|
144
|
+
const metadata = getMetadataFiltersValues(this.context, itemIndex);
|
|
145
|
+
if (!item)
|
|
146
|
+
return [];
|
|
147
|
+
const binaryData = this.context.helpers.assertBinaryData(itemIndex, binaryKey);
|
|
148
|
+
const { mimeType } = binaryData;
|
|
149
|
+
await this.validateMimeType(mimeType, selectedLoader);
|
|
150
|
+
const filePathOrBlob = await this.getFilePathOrBlob(binaryData, mimeType);
|
|
151
|
+
const cleanupTmpFile = undefined;
|
|
152
|
+
const loader = await this.getLoader(mimeType, filePathOrBlob, itemIndex);
|
|
153
|
+
const loadedDoc = await this.loadDocuments(loader);
|
|
154
|
+
docs.push(...loadedDoc);
|
|
155
|
+
if (metadata) {
|
|
156
|
+
docs.forEach((document) => {
|
|
157
|
+
document.metadata = {
|
|
158
|
+
...document.metadata,
|
|
159
|
+
...metadata,
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
await this.cleanupTmpFileIfNeeded(cleanupTmpFile);
|
|
164
|
+
return docs;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.N8nBinaryLoader = N8nBinaryLoader;
|
|
168
|
+
//# sourceMappingURL=N8nBinaryLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"N8nBinaryLoader.js","sourceRoot":"","sources":["../../../nodes/OCI/N8nBinaryLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Document } from '@langchain/core/documents';
|
|
2
|
+
import type { TextSplitter } from '@langchain/textsplitters';
|
|
3
|
+
import { type IExecuteFunctions, type INodeExecutionData, type ISupplyDataFunctions } from 'n8n-workflow';
|
|
4
|
+
export declare class N8nJsonLoader {
|
|
5
|
+
private context;
|
|
6
|
+
private optionsPrefix;
|
|
7
|
+
private textSplitter?;
|
|
8
|
+
constructor(context: IExecuteFunctions | ISupplyDataFunctions, optionsPrefix?: string, textSplitter?: TextSplitter | undefined);
|
|
9
|
+
processAll(items?: INodeExecutionData[]): Promise<Document[]>;
|
|
10
|
+
processItem(item: INodeExecutionData, itemIndex: number): Promise<Document[]>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.N8nJsonLoader = void 0;
|
|
4
|
+
const SimpleLoaders_1 = require("./Loaders/SimpleLoaders");
|
|
5
|
+
const SimpleLoaders_2 = require("./Loaders/SimpleLoaders");
|
|
6
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
7
|
+
function getMetadataFiltersValues(ctx, itemIndex) {
|
|
8
|
+
const options = ctx.getNodeParameter('options', itemIndex, {});
|
|
9
|
+
if (options.metadata) {
|
|
10
|
+
const { metadataValues: metadata } = options.metadata;
|
|
11
|
+
if (metadata.length > 0) {
|
|
12
|
+
return metadata.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
class N8nJsonLoader {
|
|
18
|
+
constructor(context, optionsPrefix = '', textSplitter) {
|
|
19
|
+
this.context = context;
|
|
20
|
+
this.optionsPrefix = optionsPrefix;
|
|
21
|
+
this.textSplitter = textSplitter;
|
|
22
|
+
}
|
|
23
|
+
async processAll(items) {
|
|
24
|
+
const docs = [];
|
|
25
|
+
if (!items)
|
|
26
|
+
return [];
|
|
27
|
+
for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
|
|
28
|
+
const processedDocuments = await this.processItem(items[itemIndex], itemIndex);
|
|
29
|
+
docs.push(...processedDocuments);
|
|
30
|
+
}
|
|
31
|
+
return docs;
|
|
32
|
+
}
|
|
33
|
+
async processItem(item, itemIndex) {
|
|
34
|
+
var _a;
|
|
35
|
+
const mode = this.context.getNodeParameter('jsonMode', itemIndex, 'allInputData');
|
|
36
|
+
const pointers = this.context.getNodeParameter(`${this.optionsPrefix}pointers`, itemIndex, '');
|
|
37
|
+
const pointersArray = pointers.split(',').map((pointer) => pointer.trim());
|
|
38
|
+
const metadata = (_a = getMetadataFiltersValues(this.context, itemIndex)) !== null && _a !== void 0 ? _a : [];
|
|
39
|
+
if (!item)
|
|
40
|
+
return [];
|
|
41
|
+
let documentLoader = null;
|
|
42
|
+
if (mode === 'allInputData') {
|
|
43
|
+
const itemString = JSON.stringify(item.json);
|
|
44
|
+
const itemBlob = new Blob([itemString], { type: 'application/json' });
|
|
45
|
+
documentLoader = new SimpleLoaders_1.JSONBlobLoader(itemBlob, pointersArray);
|
|
46
|
+
}
|
|
47
|
+
if (mode === 'expressionData') {
|
|
48
|
+
const dataString = this.context.getNodeParameter('jsonData', itemIndex);
|
|
49
|
+
if (typeof dataString === 'object') {
|
|
50
|
+
const itemBlob = new Blob([JSON.stringify(dataString)], { type: 'application/json' });
|
|
51
|
+
documentLoader = new SimpleLoaders_1.JSONBlobLoader(itemBlob, pointersArray);
|
|
52
|
+
}
|
|
53
|
+
if (typeof dataString === 'string') {
|
|
54
|
+
const itemBlob = new Blob([dataString], { type: 'text/plain' });
|
|
55
|
+
documentLoader = new SimpleLoaders_2.TextBlobLoader(itemBlob);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (documentLoader === null) {
|
|
59
|
+
throw new n8n_workflow_1.NodeOperationError(this.context.getNode(), 'Document loader is not initialized');
|
|
60
|
+
}
|
|
61
|
+
const docs = this.textSplitter
|
|
62
|
+
? await this.textSplitter.splitDocuments(await documentLoader.load())
|
|
63
|
+
: await documentLoader.load();
|
|
64
|
+
if (metadata) {
|
|
65
|
+
docs.forEach((doc) => {
|
|
66
|
+
doc.metadata = {
|
|
67
|
+
...doc.metadata,
|
|
68
|
+
...metadata,
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return docs;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.N8nJsonLoader = N8nJsonLoader;
|
|
76
|
+
//# sourceMappingURL=N8nJsonLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"N8nJsonLoader.js","sourceRoot":"","sources":["../../../nodes/OCI/N8nJsonLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
|
|
2
|
+
import type { SerializedFields } from '@langchain/core/dist/load/map_keys';
|
|
3
|
+
import type { Serialized, SerializedNotImplemented, SerializedSecret } from '@langchain/core/load/serializable';
|
|
4
|
+
import type { BaseMessage } from '@langchain/core/messages';
|
|
5
|
+
import type { LLMResult } from '@langchain/core/outputs';
|
|
6
|
+
import type { IDataObject, ISupplyDataFunctions } from 'n8n-workflow';
|
|
7
|
+
import { NodeError } from 'n8n-workflow';
|
|
8
|
+
type TokensUsageParser = (result: LLMResult) => {
|
|
9
|
+
completionTokens: number;
|
|
10
|
+
promptTokens: number;
|
|
11
|
+
totalTokens: number;
|
|
12
|
+
};
|
|
13
|
+
type RunDetail = {
|
|
14
|
+
index: number;
|
|
15
|
+
messages: BaseMessage[] | string[] | string;
|
|
16
|
+
options: SerializedSecret | SerializedNotImplemented | SerializedFields;
|
|
17
|
+
};
|
|
18
|
+
export declare class N8nLlmTracing extends BaseCallbackHandler {
|
|
19
|
+
#private;
|
|
20
|
+
private executionFunctions;
|
|
21
|
+
name: string;
|
|
22
|
+
awaitHandlers: boolean;
|
|
23
|
+
connectionType: "ai_languageModel";
|
|
24
|
+
promptTokensEstimate: number;
|
|
25
|
+
completionTokensEstimate: number;
|
|
26
|
+
runsMap: Record<string, RunDetail>;
|
|
27
|
+
options: {
|
|
28
|
+
tokensUsageParser: (result: LLMResult) => {
|
|
29
|
+
completionTokens: number;
|
|
30
|
+
promptTokens: number;
|
|
31
|
+
totalTokens: number;
|
|
32
|
+
};
|
|
33
|
+
errorDescriptionMapper: (error: NodeError) => string | null | undefined;
|
|
34
|
+
};
|
|
35
|
+
constructor(executionFunctions: ISupplyDataFunctions, options?: {
|
|
36
|
+
tokensUsageParser?: TokensUsageParser;
|
|
37
|
+
errorDescriptionMapper?: (error: NodeError) => string;
|
|
38
|
+
});
|
|
39
|
+
estimateTokensFromGeneration(generations: LLMResult['generations']): Promise<number>;
|
|
40
|
+
estimateTokensFromStringList(list: string[]): Promise<number>;
|
|
41
|
+
handleLLMEnd(output: LLMResult, runId: string): Promise<void>;
|
|
42
|
+
handleLLMStart(llm: Serialized, prompts: string[], runId: string): Promise<void>;
|
|
43
|
+
handleLLMError(error: IDataObject | Error, runId: string, parentRunId?: string): Promise<void>;
|
|
44
|
+
setParentRunIndex(runIndex: number): void;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
var _N8nLlmTracing_parentRunIndex;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.N8nLlmTracing = void 0;
|
|
19
|
+
const base_1 = require("@langchain/core/callbacks/base");
|
|
20
|
+
const base_2 = require("@langchain/core/language_models/base");
|
|
21
|
+
const tiktoken_1 = require("@langchain/core/utils/tiktoken");
|
|
22
|
+
const pick_1 = __importDefault(require("lodash/pick"));
|
|
23
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
24
|
+
function logAiEvent(executeFunctions, event, data) {
|
|
25
|
+
try {
|
|
26
|
+
executeFunctions.logAiEvent(event, data ? (0, n8n_workflow_1.jsonStringify)(data) : undefined);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
executeFunctions.logger.debug(`Error logging AI event: ${event}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const TIKTOKEN_ESTIMATE_MODEL = 'gpt-4o';
|
|
33
|
+
class N8nLlmTracing extends base_1.BaseCallbackHandler {
|
|
34
|
+
constructor(executionFunctions, options) {
|
|
35
|
+
super();
|
|
36
|
+
this.executionFunctions = executionFunctions;
|
|
37
|
+
this.name = 'N8nLlmTracing';
|
|
38
|
+
this.awaitHandlers = true;
|
|
39
|
+
this.connectionType = n8n_workflow_1.NodeConnectionTypes.AiLanguageModel;
|
|
40
|
+
this.promptTokensEstimate = 0;
|
|
41
|
+
this.completionTokensEstimate = 0;
|
|
42
|
+
_N8nLlmTracing_parentRunIndex.set(this, void 0);
|
|
43
|
+
this.runsMap = {};
|
|
44
|
+
this.options = {
|
|
45
|
+
tokensUsageParser: (result) => {
|
|
46
|
+
var _a, _b, _c, _d, _e, _f;
|
|
47
|
+
const completionTokens = (_c = (_b = (_a = result === null || result === void 0 ? void 0 : result.llmOutput) === null || _a === void 0 ? void 0 : _a.tokenUsage) === null || _b === void 0 ? void 0 : _b.completionTokens) !== null && _c !== void 0 ? _c : 0;
|
|
48
|
+
const promptTokens = (_f = (_e = (_d = result === null || result === void 0 ? void 0 : result.llmOutput) === null || _d === void 0 ? void 0 : _d.tokenUsage) === null || _e === void 0 ? void 0 : _e.promptTokens) !== null && _f !== void 0 ? _f : 0;
|
|
49
|
+
return {
|
|
50
|
+
completionTokens,
|
|
51
|
+
promptTokens,
|
|
52
|
+
totalTokens: completionTokens + promptTokens,
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
errorDescriptionMapper: (error) => error.description,
|
|
56
|
+
};
|
|
57
|
+
this.options = { ...this.options, ...options };
|
|
58
|
+
}
|
|
59
|
+
async estimateTokensFromGeneration(generations) {
|
|
60
|
+
const messages = generations.flatMap((gen) => gen.map((g) => g.text));
|
|
61
|
+
return await this.estimateTokensFromStringList(messages);
|
|
62
|
+
}
|
|
63
|
+
async estimateTokensFromStringList(list) {
|
|
64
|
+
const embeddingModel = (0, base_2.getModelNameForTiktoken)(TIKTOKEN_ESTIMATE_MODEL);
|
|
65
|
+
const encoder = await (0, tiktoken_1.encodingForModel)(embeddingModel);
|
|
66
|
+
const encodedListLength = await Promise.all(list.map(async (text) => encoder.encode(text).length));
|
|
67
|
+
return encodedListLength.reduce((acc, curr) => acc + curr, 0);
|
|
68
|
+
}
|
|
69
|
+
async handleLLMEnd(output, runId) {
|
|
70
|
+
var _a;
|
|
71
|
+
const runDetails = (_a = this.runsMap[runId]) !== null && _a !== void 0 ? _a : { index: Object.keys(this.runsMap).length };
|
|
72
|
+
output.generations = output.generations.map((gen) => gen.map((g) => (0, pick_1.default)(g, ['text', 'generationInfo'])));
|
|
73
|
+
const tokenUsageEstimate = {
|
|
74
|
+
completionTokens: 0,
|
|
75
|
+
promptTokens: 0,
|
|
76
|
+
totalTokens: 0,
|
|
77
|
+
};
|
|
78
|
+
const tokenUsage = this.options.tokensUsageParser(output);
|
|
79
|
+
if (output.generations.length > 0) {
|
|
80
|
+
tokenUsageEstimate.completionTokens = await this.estimateTokensFromGeneration(output.generations);
|
|
81
|
+
tokenUsageEstimate.promptTokens = this.promptTokensEstimate;
|
|
82
|
+
tokenUsageEstimate.totalTokens =
|
|
83
|
+
tokenUsageEstimate.completionTokens + this.promptTokensEstimate;
|
|
84
|
+
}
|
|
85
|
+
const response = {
|
|
86
|
+
response: { generations: output.generations },
|
|
87
|
+
};
|
|
88
|
+
if (tokenUsage.completionTokens > 0) {
|
|
89
|
+
response.tokenUsage = tokenUsage;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
response.tokenUsageEstimate = tokenUsageEstimate;
|
|
93
|
+
}
|
|
94
|
+
const parsedMessages = typeof runDetails.messages === 'string'
|
|
95
|
+
? runDetails.messages
|
|
96
|
+
: runDetails.messages.map((message) => {
|
|
97
|
+
if (typeof message === 'string')
|
|
98
|
+
return message;
|
|
99
|
+
if (typeof (message === null || message === void 0 ? void 0 : message.toJSON) === 'function')
|
|
100
|
+
return message.toJSON();
|
|
101
|
+
return message;
|
|
102
|
+
});
|
|
103
|
+
const sourceNodeRunIndex = __classPrivateFieldGet(this, _N8nLlmTracing_parentRunIndex, "f") !== undefined ? __classPrivateFieldGet(this, _N8nLlmTracing_parentRunIndex, "f") + runDetails.index : undefined;
|
|
104
|
+
this.executionFunctions.addOutputData(this.connectionType, runDetails.index, [[{ json: { ...response } }]], undefined, sourceNodeRunIndex);
|
|
105
|
+
logAiEvent(this.executionFunctions, 'ai-llm-generated-output', {
|
|
106
|
+
messages: parsedMessages,
|
|
107
|
+
options: runDetails.options,
|
|
108
|
+
response,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async handleLLMStart(llm, prompts, runId) {
|
|
112
|
+
const estimatedTokens = await this.estimateTokensFromStringList(prompts);
|
|
113
|
+
const sourceNodeRunIndex = __classPrivateFieldGet(this, _N8nLlmTracing_parentRunIndex, "f") !== undefined
|
|
114
|
+
? __classPrivateFieldGet(this, _N8nLlmTracing_parentRunIndex, "f") + this.executionFunctions.getNextRunIndex()
|
|
115
|
+
: undefined;
|
|
116
|
+
const options = llm.type === 'constructor' ? llm.kwargs : llm;
|
|
117
|
+
const { index } = this.executionFunctions.addInputData(this.connectionType, [
|
|
118
|
+
[
|
|
119
|
+
{
|
|
120
|
+
json: {
|
|
121
|
+
messages: prompts,
|
|
122
|
+
estimatedTokens,
|
|
123
|
+
options,
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
], sourceNodeRunIndex);
|
|
128
|
+
this.runsMap[runId] = {
|
|
129
|
+
index,
|
|
130
|
+
options,
|
|
131
|
+
messages: prompts,
|
|
132
|
+
};
|
|
133
|
+
this.promptTokensEstimate = estimatedTokens;
|
|
134
|
+
}
|
|
135
|
+
async handleLLMError(error, runId, parentRunId) {
|
|
136
|
+
var _a;
|
|
137
|
+
const runDetails = (_a = this.runsMap[runId]) !== null && _a !== void 0 ? _a : { index: Object.keys(this.runsMap).length };
|
|
138
|
+
if (typeof error === 'object' && (error === null || error === void 0 ? void 0 : error.hasOwnProperty('headers'))) {
|
|
139
|
+
const errorWithHeaders = error;
|
|
140
|
+
Object.keys(errorWithHeaders.headers).forEach((key) => {
|
|
141
|
+
if (!key.startsWith('x-')) {
|
|
142
|
+
delete errorWithHeaders.headers[key];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
if (error instanceof n8n_workflow_1.NodeError) {
|
|
147
|
+
if (this.options.errorDescriptionMapper) {
|
|
148
|
+
error.description = this.options.errorDescriptionMapper(error);
|
|
149
|
+
}
|
|
150
|
+
this.executionFunctions.addOutputData(this.connectionType, runDetails.index, error);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
this.executionFunctions.addOutputData(this.connectionType, runDetails.index, new n8n_workflow_1.NodeOperationError(this.executionFunctions.getNode(), error, {
|
|
154
|
+
functionality: 'configuration-node',
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
logAiEvent(this.executionFunctions, 'ai-llm-errored', {
|
|
158
|
+
error: Object.keys(error).length === 0 ? error.toString() : error,
|
|
159
|
+
runId,
|
|
160
|
+
parentRunId,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
setParentRunIndex(runIndex) {
|
|
164
|
+
__classPrivateFieldSet(this, _N8nLlmTracing_parentRunIndex, runIndex, "f");
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.N8nLlmTracing = N8nLlmTracing;
|
|
168
|
+
_N8nLlmTracing_parentRunIndex = new WeakMap();
|
|
169
|
+
//# sourceMappingURL=N8nLlmTracing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"N8nLlmTracing.js","sourceRoot":"","sources":["../../../nodes/OCI/N8nLlmTracing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
|
|
2
|
+
export declare class SpeechTranscriptionOci implements INodeType {
|
|
3
|
+
description: INodeTypeDescription;
|
|
4
|
+
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
5
|
+
}
|