@cascadeflow/n8n-nodes-cascadeflow 0.6.0 → 0.6.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LmChatCascadeFlow.node.d.ts","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EACX,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"LmChatCascadeFlow.node.d.ts","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EACX,MAAM,cAAc,CAAC;AA2hCtB,qBAAa,iBAAkB,YAAW,SAAS;IACjD,WAAW,EAAE,oBAAoB,CAoH/B;IAEI,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;CAkJlE"}
|
|
@@ -4,12 +4,73 @@ exports.LmChatCascadeFlow = void 0;
|
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
5
|
const chat_models_1 = require("@langchain/core/language_models/chat_models");
|
|
6
6
|
const outputs_1 = require("@langchain/core/outputs");
|
|
7
|
-
//
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// DOMAIN CONSTANTS - All 16 supported domains
|
|
9
|
+
// =============================================================================
|
|
10
|
+
const DOMAINS = {
|
|
11
|
+
CODE: 'code',
|
|
12
|
+
DATA: 'data',
|
|
13
|
+
STRUCTURED: 'structured',
|
|
14
|
+
RAG: 'rag',
|
|
15
|
+
CONVERSATION: 'conversation',
|
|
16
|
+
TOOL: 'tool',
|
|
17
|
+
CREATIVE: 'creative',
|
|
18
|
+
SUMMARY: 'summary',
|
|
19
|
+
TRANSLATION: 'translation',
|
|
20
|
+
MATH: 'math',
|
|
21
|
+
SCIENCE: 'science',
|
|
22
|
+
MEDICAL: 'medical',
|
|
23
|
+
LEGAL: 'legal',
|
|
24
|
+
FINANCIAL: 'financial',
|
|
25
|
+
MULTIMODAL: 'multimodal',
|
|
26
|
+
GENERAL: 'general',
|
|
27
|
+
};
|
|
28
|
+
// Domain display names for n8n UI
|
|
29
|
+
const DOMAIN_DISPLAY_NAMES = {
|
|
30
|
+
code: 'Code',
|
|
31
|
+
data: 'Data Analysis',
|
|
32
|
+
structured: 'Structured Output',
|
|
33
|
+
rag: 'RAG (Retrieval)',
|
|
34
|
+
conversation: 'Conversation',
|
|
35
|
+
tool: 'Tool Calling',
|
|
36
|
+
creative: 'Creative Writing',
|
|
37
|
+
summary: 'Summarization',
|
|
38
|
+
translation: 'Translation',
|
|
39
|
+
math: 'Mathematics',
|
|
40
|
+
science: 'Science',
|
|
41
|
+
medical: 'Medical',
|
|
42
|
+
legal: 'Legal',
|
|
43
|
+
financial: 'Financial',
|
|
44
|
+
multimodal: 'Multimodal',
|
|
45
|
+
general: 'General',
|
|
46
|
+
};
|
|
47
|
+
// Domain descriptions for n8n UI
|
|
48
|
+
const DOMAIN_DESCRIPTIONS = {
|
|
49
|
+
code: 'Programming, debugging, code generation',
|
|
50
|
+
data: 'Data analysis, statistics, pandas/SQL',
|
|
51
|
+
structured: 'JSON, XML, structured data extraction',
|
|
52
|
+
rag: 'Retrieval-augmented generation, document Q&A',
|
|
53
|
+
conversation: 'Chat, dialogue, multi-turn conversations',
|
|
54
|
+
tool: 'Function calling, tool use, API interactions',
|
|
55
|
+
creative: 'Creative writing, stories, poetry',
|
|
56
|
+
summary: 'Text summarization, condensing content',
|
|
57
|
+
translation: 'Language translation, multilingual',
|
|
58
|
+
math: 'Mathematical reasoning, calculations, proofs',
|
|
59
|
+
science: 'Scientific knowledge, research, experiments',
|
|
60
|
+
medical: 'Healthcare, medical knowledge, clinical',
|
|
61
|
+
legal: 'Legal documents, contracts, regulations',
|
|
62
|
+
financial: 'Finance, accounting, investment analysis',
|
|
63
|
+
multimodal: 'Images, audio, video understanding',
|
|
64
|
+
general: 'General purpose, fallback domain',
|
|
65
|
+
};
|
|
66
|
+
// Quality validation, cost tracking, routing, and circuit breaker - optional import
|
|
8
67
|
let QualityValidator;
|
|
9
68
|
let CASCADE_QUALITY_CONFIG;
|
|
10
69
|
let CostCalculator;
|
|
11
70
|
let ComplexityDetector;
|
|
12
71
|
let PreRouter;
|
|
72
|
+
let DomainDetector;
|
|
73
|
+
let CircuitBreaker;
|
|
13
74
|
try {
|
|
14
75
|
const cascadeCore = require('@cascadeflow/core');
|
|
15
76
|
QualityValidator = cascadeCore.QualityValidator;
|
|
@@ -17,35 +78,50 @@ try {
|
|
|
17
78
|
CostCalculator = cascadeCore.CostCalculator;
|
|
18
79
|
ComplexityDetector = cascadeCore.ComplexityDetector;
|
|
19
80
|
PreRouter = cascadeCore.PreRouter;
|
|
81
|
+
DomainDetector = cascadeCore.DomainDetector;
|
|
82
|
+
CircuitBreaker = cascadeCore.CircuitBreaker;
|
|
20
83
|
}
|
|
21
84
|
catch (e) {
|
|
22
85
|
// @cascadeflow/core not available - use simple validation and estimates
|
|
23
86
|
console.warn('⚠️ @cascadeflow/core not available, using fallbacks');
|
|
24
87
|
}
|
|
25
88
|
/**
|
|
26
|
-
* Custom CascadeChatModel that wraps
|
|
27
|
-
* and implements cascading logic with cost tracking
|
|
89
|
+
* Custom CascadeChatModel that wraps multiple models (drafter, verifier, and domain-specific)
|
|
90
|
+
* and implements intelligent domain-aware cascading logic with cost tracking
|
|
28
91
|
*/
|
|
29
92
|
class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
30
|
-
constructor(drafterModel, verifierModelGetter, qualityThreshold = 0.7, useSemanticValidation = true, useAlignmentScoring = true, useComplexityRouting = true) {
|
|
93
|
+
constructor(drafterModel, verifierModelGetter, qualityThreshold = 0.7, useSemanticValidation = true, useAlignmentScoring = true, useComplexityRouting = true, useDomainRouting = false, enabledDomains = [], domainModelGetters = new Map(), domainConfigs = new Map(), useCircuitBreaker = true) {
|
|
31
94
|
super({});
|
|
95
|
+
// Domain-specific models and configurations
|
|
96
|
+
this.domainModels = new Map();
|
|
97
|
+
this.domainConfigs = new Map();
|
|
98
|
+
this.enabledDomains = [];
|
|
32
99
|
// Cost tracking
|
|
33
100
|
this.drafterCost = 0;
|
|
34
101
|
this.verifierCost = 0;
|
|
102
|
+
this.domainCosts = new Map();
|
|
35
103
|
this.drafterCount = 0;
|
|
36
104
|
this.verifierCount = 0;
|
|
105
|
+
this.domainCounts = new Map();
|
|
37
106
|
this.drafterModel = drafterModel;
|
|
38
107
|
this.verifierModelGetter = verifierModelGetter;
|
|
39
108
|
this.qualityThreshold = qualityThreshold;
|
|
109
|
+
this.enabledDomains = enabledDomains;
|
|
110
|
+
this.domainConfigs = domainConfigs;
|
|
111
|
+
// Store domain model getters for lazy loading
|
|
112
|
+
for (const [domain, getter] of domainModelGetters.entries()) {
|
|
113
|
+
// Lazy load domain models
|
|
114
|
+
this.domainModels.set(domain, undefined);
|
|
115
|
+
}
|
|
40
116
|
// Initialize quality validator with CASCADE-optimized config + semantic validation
|
|
41
117
|
if (QualityValidator && CASCADE_QUALITY_CONFIG) {
|
|
42
118
|
try {
|
|
43
119
|
this.qualityValidator = new QualityValidator({
|
|
44
120
|
...CASCADE_QUALITY_CONFIG,
|
|
45
121
|
minConfidence: qualityThreshold,
|
|
46
|
-
useSemanticValidation,
|
|
47
|
-
useAlignmentScoring,
|
|
48
|
-
semanticThreshold: 0.5,
|
|
122
|
+
useSemanticValidation,
|
|
123
|
+
useAlignmentScoring,
|
|
124
|
+
semanticThreshold: 0.5,
|
|
49
125
|
});
|
|
50
126
|
console.log('✅ CascadeFlow quality validator initialized');
|
|
51
127
|
if (useSemanticValidation) {
|
|
@@ -77,24 +153,51 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
77
153
|
else {
|
|
78
154
|
this.costCalculator = null;
|
|
79
155
|
}
|
|
80
|
-
// Initialize complexity detector and
|
|
81
|
-
if (useComplexityRouting && ComplexityDetector
|
|
156
|
+
// Initialize complexity detector and domain detector
|
|
157
|
+
if (useComplexityRouting && ComplexityDetector) {
|
|
82
158
|
try {
|
|
83
159
|
this.complexityDetector = new ComplexityDetector();
|
|
84
|
-
// Note: PreRouter needs model configs, but we only have 2 models in n8n (drafter/verifier)
|
|
85
|
-
// We'll use complexity detection to decide: trivial/simple → drafter, hard/expert → direct verifier
|
|
86
|
-
this.preRouter = null; // Not using full PreRouter since we only have 2 models
|
|
87
160
|
console.log('🧠 CascadeFlow complexity-based routing enabled');
|
|
88
161
|
}
|
|
89
162
|
catch (e) {
|
|
90
163
|
console.warn('⚠️ Complexity detector initialization failed');
|
|
91
164
|
this.complexityDetector = null;
|
|
92
|
-
this.preRouter = null;
|
|
93
165
|
}
|
|
94
166
|
}
|
|
95
167
|
else {
|
|
96
168
|
this.complexityDetector = null;
|
|
97
|
-
|
|
169
|
+
}
|
|
170
|
+
// Initialize domain detector if domain routing is enabled
|
|
171
|
+
if (useDomainRouting && DomainDetector && enabledDomains.length > 0) {
|
|
172
|
+
try {
|
|
173
|
+
this.domainDetector = new DomainDetector({ enabledDomains });
|
|
174
|
+
console.log(`🎯 CascadeFlow domain routing enabled for: ${enabledDomains.join(', ')}`);
|
|
175
|
+
}
|
|
176
|
+
catch (e) {
|
|
177
|
+
console.warn('⚠️ Domain detector initialization failed');
|
|
178
|
+
this.domainDetector = null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
this.domainDetector = null;
|
|
183
|
+
}
|
|
184
|
+
// Initialize circuit breaker for fault tolerance
|
|
185
|
+
if (useCircuitBreaker && CircuitBreaker) {
|
|
186
|
+
try {
|
|
187
|
+
this.circuitBreaker = new CircuitBreaker({
|
|
188
|
+
failureThreshold: 3,
|
|
189
|
+
recoveryTimeout: 30000, // 30 seconds
|
|
190
|
+
halfOpenMaxCalls: 2,
|
|
191
|
+
});
|
|
192
|
+
console.log('🛡️ CascadeFlow circuit breaker enabled');
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
console.warn('⚠️ Circuit breaker initialization failed');
|
|
196
|
+
this.circuitBreaker = null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
this.circuitBreaker = null;
|
|
98
201
|
}
|
|
99
202
|
}
|
|
100
203
|
async getVerifierModel() {
|
|
@@ -106,6 +209,17 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
106
209
|
}
|
|
107
210
|
return this.verifierModel;
|
|
108
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Get domain-specific model if available, falls back to drafter
|
|
214
|
+
*/
|
|
215
|
+
async getDomainModel(domain) {
|
|
216
|
+
const existingModel = this.domainModels.get(domain);
|
|
217
|
+
if (existingModel) {
|
|
218
|
+
return existingModel;
|
|
219
|
+
}
|
|
220
|
+
// Fallback to drafter if no domain-specific model
|
|
221
|
+
return this.drafterModel;
|
|
222
|
+
}
|
|
109
223
|
/**
|
|
110
224
|
* Helper to get model info string (type and name)
|
|
111
225
|
*/
|
|
@@ -114,21 +228,36 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
114
228
|
const modelName = model.modelName || model.model || 'unknown';
|
|
115
229
|
return `${type} (${modelName})`;
|
|
116
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Detect the domain of a query using semantic detection
|
|
233
|
+
*/
|
|
234
|
+
async detectDomain(queryText) {
|
|
235
|
+
if (!this.domainDetector || this.enabledDomains.length === 0) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
const result = await this.domainDetector.detect(queryText);
|
|
240
|
+
if (result && result.domain && this.enabledDomains.includes(result.domain)) {
|
|
241
|
+
console.log(`🎯 Domain detected: ${result.domain} (confidence: ${result.confidence?.toFixed(2) || 'N/A'})`);
|
|
242
|
+
return result.domain;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
console.warn('Domain detection failed, using default routing');
|
|
247
|
+
}
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
117
250
|
/**
|
|
118
251
|
* Check if message contains tool calls
|
|
119
|
-
* Tool calls can be in additional_kwargs.tool_calls or additional_kwargs.function_call
|
|
120
252
|
*/
|
|
121
253
|
hasToolCalls(message) {
|
|
122
254
|
const additionalKwargs = message.additional_kwargs || {};
|
|
123
|
-
// Check for tool_calls array (OpenAI format)
|
|
124
255
|
if (additionalKwargs.tool_calls && Array.isArray(additionalKwargs.tool_calls) && additionalKwargs.tool_calls.length > 0) {
|
|
125
256
|
return true;
|
|
126
257
|
}
|
|
127
|
-
// Check for function_call object (legacy format)
|
|
128
258
|
if (additionalKwargs.function_call && typeof additionalKwargs.function_call === 'object') {
|
|
129
259
|
return true;
|
|
130
260
|
}
|
|
131
|
-
// Check for tool_calls in response_metadata (Anthropic format)
|
|
132
261
|
const responseMetadata = message.response_metadata || {};
|
|
133
262
|
if (responseMetadata.tool_calls && Array.isArray(responseMetadata.tool_calls) && responseMetadata.tool_calls.length > 0) {
|
|
134
263
|
return true;
|
|
@@ -141,15 +270,12 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
141
270
|
getToolCallsCount(message) {
|
|
142
271
|
const additionalKwargs = message.additional_kwargs || {};
|
|
143
272
|
const responseMetadata = message.response_metadata || {};
|
|
144
|
-
// Count tool_calls array
|
|
145
273
|
if (additionalKwargs.tool_calls && Array.isArray(additionalKwargs.tool_calls)) {
|
|
146
274
|
return additionalKwargs.tool_calls.length;
|
|
147
275
|
}
|
|
148
|
-
// Count function_call (legacy - counts as 1)
|
|
149
276
|
if (additionalKwargs.function_call) {
|
|
150
277
|
return 1;
|
|
151
278
|
}
|
|
152
|
-
// Count Anthropic format tool_calls
|
|
153
279
|
if (responseMetadata.tool_calls && Array.isArray(responseMetadata.tool_calls)) {
|
|
154
280
|
return responseMetadata.tool_calls.length;
|
|
155
281
|
}
|
|
@@ -157,17 +283,13 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
157
283
|
}
|
|
158
284
|
/**
|
|
159
285
|
* Calculate accurate cost from message token usage
|
|
160
|
-
* Falls back to rough estimates if cost calculator unavailable
|
|
161
286
|
*/
|
|
162
287
|
async calculateMessageCost(message, model) {
|
|
163
|
-
// Extract token usage from response metadata
|
|
164
288
|
const responseMetadata = message.response_metadata || {};
|
|
165
289
|
const tokenUsage = responseMetadata.tokenUsage || responseMetadata.usage || {};
|
|
166
290
|
const inputTokens = tokenUsage.promptTokens || tokenUsage.prompt_tokens || 0;
|
|
167
291
|
const outputTokens = tokenUsage.completionTokens || tokenUsage.completion_tokens || 0;
|
|
168
|
-
// Get model name
|
|
169
292
|
const modelName = model.modelName || model.model || 'unknown';
|
|
170
|
-
// Use cost calculator if available
|
|
171
293
|
if (this.costCalculator && inputTokens > 0) {
|
|
172
294
|
try {
|
|
173
295
|
const cost = await this.costCalculator.calculateCost({
|
|
@@ -192,7 +314,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
192
314
|
'claude-3-haiku': { input: 0.25, output: 1.25 },
|
|
193
315
|
default: { input: 1.0, output: 2.0 },
|
|
194
316
|
};
|
|
195
|
-
// Find matching estimate
|
|
196
317
|
let estimate = estimatesPerMillion.default;
|
|
197
318
|
for (const [key, value] of Object.entries(estimatesPerMillion)) {
|
|
198
319
|
if (modelName.includes(key)) {
|
|
@@ -209,9 +330,7 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
209
330
|
*/
|
|
210
331
|
simpleQualityCheck(responseText) {
|
|
211
332
|
const wordCount = responseText.split(/\s+/).length;
|
|
212
|
-
// Base confidence on response length and structure
|
|
213
333
|
let confidence = 0.75;
|
|
214
|
-
// Very short responses get lower confidence
|
|
215
334
|
if (wordCount < 5) {
|
|
216
335
|
confidence = 0.50;
|
|
217
336
|
}
|
|
@@ -221,7 +340,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
221
340
|
else if (wordCount > 30) {
|
|
222
341
|
confidence = 0.85;
|
|
223
342
|
}
|
|
224
|
-
// Check for uncertainty markers
|
|
225
343
|
const uncertaintyMarkers = ['i don\'t know', 'i\'m not sure', 'unclear', 'uncertain'];
|
|
226
344
|
const hasUncertainty = uncertaintyMarkers.some(marker => responseText.toLowerCase().includes(marker));
|
|
227
345
|
if (hasUncertainty) {
|
|
@@ -238,15 +356,27 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
238
356
|
}
|
|
239
357
|
async _generate(messages, options, runManager) {
|
|
240
358
|
try {
|
|
241
|
-
// Step 1: Detect query complexity (if enabled)
|
|
242
359
|
const queryText = messages.map(m => m.content.toString()).join(' ');
|
|
360
|
+
// Step 1: Detect domain if domain routing is enabled
|
|
361
|
+
let detectedDomain = null;
|
|
362
|
+
let domainModel = null;
|
|
363
|
+
if (this.enabledDomains.length > 0) {
|
|
364
|
+
detectedDomain = await this.detectDomain(queryText);
|
|
365
|
+
if (detectedDomain) {
|
|
366
|
+
const domainConfig = this.domainConfigs.get(detectedDomain);
|
|
367
|
+
if (domainConfig?.model) {
|
|
368
|
+
domainModel = domainConfig.model;
|
|
369
|
+
await runManager?.handleText(`🎯 Domain: ${DOMAIN_DISPLAY_NAMES[detectedDomain]} → Using domain-specific model\n`);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Step 2: Detect query complexity
|
|
243
374
|
let complexity;
|
|
244
375
|
let shouldSkipDrafter = false;
|
|
245
376
|
if (this.complexityDetector) {
|
|
246
377
|
try {
|
|
247
378
|
const complexityResult = await this.complexityDetector.detectComplexity(queryText);
|
|
248
379
|
complexity = complexityResult.level;
|
|
249
|
-
// Skip drafter for hard/expert queries - go directly to verifier
|
|
250
380
|
if (complexity === 'hard' || complexity === 'expert') {
|
|
251
381
|
shouldSkipDrafter = true;
|
|
252
382
|
await runManager?.handleText(`🧠 Complexity: ${complexity} → Routing directly to verifier (skip drafter)\n`);
|
|
@@ -261,17 +391,34 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
261
391
|
console.warn('Complexity detection failed, using normal flow');
|
|
262
392
|
}
|
|
263
393
|
}
|
|
264
|
-
// Step
|
|
394
|
+
// Step 3: Execute with circuit breaker protection if available
|
|
395
|
+
const executeWithProtection = async (model, modelType) => {
|
|
396
|
+
if (this.circuitBreaker) {
|
|
397
|
+
return await this.circuitBreaker.execute(modelType, async () => await model.invoke(messages, options));
|
|
398
|
+
}
|
|
399
|
+
return await model.invoke(messages, options);
|
|
400
|
+
};
|
|
401
|
+
// Step 3a: If complexity routing says skip drafter, go directly to verifier
|
|
265
402
|
if (shouldSkipDrafter) {
|
|
266
403
|
const verifierModel = await this.getVerifierModel();
|
|
267
404
|
const verifierInfo = this.getModelInfo(verifierModel);
|
|
268
405
|
await runManager?.handleText(`⚡ Direct route: Using verifier for ${complexity} query\n`);
|
|
269
406
|
const verifierStartTime = Date.now();
|
|
270
|
-
const verifierMessage = await verifierModel
|
|
407
|
+
const verifierMessage = await executeWithProtection(verifierModel, 'verifier');
|
|
271
408
|
const verifierLatency = Date.now() - verifierStartTime;
|
|
272
409
|
this.verifierCount++;
|
|
273
410
|
const verifierCost = await this.calculateMessageCost(verifierMessage, verifierModel);
|
|
274
|
-
const flowLog =
|
|
411
|
+
const flowLog = `
|
|
412
|
+
┌────────────────────────────────────────────┐
|
|
413
|
+
│ ⚡ FLOW: DIRECT VERIFIER (SMART ROUTE) │
|
|
414
|
+
└────────────────────────────────────────────┘
|
|
415
|
+
Query → Complexity Check (${complexity}) → Verifier → Response
|
|
416
|
+
🧠 Smart routing: Skipped drafter for complex query
|
|
417
|
+
Model used: ${verifierInfo}
|
|
418
|
+
Latency: ${verifierLatency}ms
|
|
419
|
+
💰 Cost: $${verifierCost.toFixed(6)}
|
|
420
|
+
📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier
|
|
421
|
+
`;
|
|
275
422
|
await runManager?.handleText(flowLog);
|
|
276
423
|
console.log(flowLog);
|
|
277
424
|
if (!verifierMessage.response_metadata) {
|
|
@@ -280,6 +427,7 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
280
427
|
verifierMessage.response_metadata.cascadeflow = {
|
|
281
428
|
flow: 'direct_verifier',
|
|
282
429
|
complexity,
|
|
430
|
+
domain: detectedDomain,
|
|
283
431
|
latency_ms: verifierLatency,
|
|
284
432
|
cost_usd: verifierCost,
|
|
285
433
|
model_used: 'verifier',
|
|
@@ -292,26 +440,41 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
292
440
|
}],
|
|
293
441
|
};
|
|
294
442
|
}
|
|
295
|
-
// Step
|
|
296
|
-
const
|
|
297
|
-
|
|
298
|
-
|
|
443
|
+
// Step 4: Try domain-specific model first if available
|
|
444
|
+
const modelToUse = domainModel || this.drafterModel;
|
|
445
|
+
const modelType = domainModel ? `domain:${detectedDomain}` : 'drafter';
|
|
446
|
+
const modelInfo = this.getModelInfo(modelToUse);
|
|
447
|
+
await runManager?.handleText(`🎯 CascadeFlow: Trying ${modelType} model: ${modelInfo}\n`);
|
|
448
|
+
console.log(`🎯 CascadeFlow: Trying ${modelType} model: ${modelInfo}`);
|
|
299
449
|
const drafterStartTime = Date.now();
|
|
300
|
-
const drafterMessage = await
|
|
450
|
+
const drafterMessage = await executeWithProtection(modelToUse, modelType);
|
|
301
451
|
const drafterLatency = Date.now() - drafterStartTime;
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
452
|
+
if (domainModel && detectedDomain) {
|
|
453
|
+
this.domainCounts.set(detectedDomain, (this.domainCounts.get(detectedDomain) || 0) + 1);
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
this.drafterCount++;
|
|
457
|
+
}
|
|
458
|
+
// Step 5: Check if response contains tool calls
|
|
305
459
|
const hasToolCalls = this.hasToolCalls(drafterMessage);
|
|
306
460
|
if (hasToolCalls) {
|
|
307
461
|
const toolCallsCount = this.getToolCallsCount(drafterMessage);
|
|
308
462
|
const toolLog = ` 🔧 Tool calls detected (${toolCallsCount}) - bypassing quality check\n`;
|
|
309
463
|
await runManager?.handleText(toolLog);
|
|
310
464
|
console.log(toolLog);
|
|
311
|
-
const flowLog =
|
|
465
|
+
const flowLog = `
|
|
466
|
+
┌──────────────────────────────────────────┐
|
|
467
|
+
│ 🔧 FLOW: TOOL CALLS (DIRECT PASS) │
|
|
468
|
+
└──────────────────────────────────────────┘
|
|
469
|
+
Query → ${modelType} → Tool Calls (${toolCallsCount}) → Response
|
|
470
|
+
⚡ Tool calling: ${modelType} generated tool calls
|
|
471
|
+
Model used: ${modelInfo}
|
|
472
|
+
${detectedDomain ? `Domain: ${DOMAIN_DISPLAY_NAMES[detectedDomain]}` : ''}
|
|
473
|
+
Latency: ${drafterLatency}ms
|
|
474
|
+
📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier
|
|
475
|
+
`;
|
|
312
476
|
await runManager?.handleText(flowLog);
|
|
313
477
|
console.log(flowLog);
|
|
314
|
-
// Add tool call metadata
|
|
315
478
|
if (!drafterMessage.response_metadata) {
|
|
316
479
|
drafterMessage.response_metadata = {};
|
|
317
480
|
}
|
|
@@ -319,8 +482,9 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
319
482
|
flow: 'tool_calls_direct',
|
|
320
483
|
has_tool_calls: true,
|
|
321
484
|
tool_calls_count: toolCallsCount,
|
|
485
|
+
domain: detectedDomain,
|
|
322
486
|
latency_ms: drafterLatency,
|
|
323
|
-
model_used:
|
|
487
|
+
model_used: modelType
|
|
324
488
|
};
|
|
325
489
|
return {
|
|
326
490
|
generations: [{
|
|
@@ -329,15 +493,17 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
329
493
|
}],
|
|
330
494
|
};
|
|
331
495
|
}
|
|
332
|
-
// Step
|
|
496
|
+
// Step 6: Quality check with domain-aware threshold
|
|
333
497
|
const responseText = drafterMessage.content.toString();
|
|
498
|
+
const effectiveThreshold = detectedDomain
|
|
499
|
+
? (this.domainConfigs.get(detectedDomain)?.threshold ?? this.qualityThreshold)
|
|
500
|
+
: this.qualityThreshold;
|
|
334
501
|
let validationResult;
|
|
335
502
|
if (this.qualityValidator) {
|
|
336
|
-
// Use full CascadeFlow quality validator
|
|
337
|
-
const queryText = messages.map(m => m.content.toString()).join(' ');
|
|
338
503
|
try {
|
|
339
504
|
validationResult = await this.qualityValidator.validate(responseText, queryText);
|
|
340
|
-
|
|
505
|
+
validationResult.passed = validationResult.confidence >= effectiveThreshold;
|
|
506
|
+
const qualityLog = ` 📊 Quality validation: confidence=${validationResult.confidence.toFixed(2)}, threshold=${effectiveThreshold}, method=${validationResult.method}\n`;
|
|
341
507
|
await runManager?.handleText(qualityLog);
|
|
342
508
|
console.log(qualityLog);
|
|
343
509
|
if (validationResult.details?.alignmentScore) {
|
|
@@ -351,33 +517,46 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
351
517
|
await runManager?.handleText(errorLog);
|
|
352
518
|
console.warn(errorLog);
|
|
353
519
|
validationResult = this.simpleQualityCheck(responseText);
|
|
520
|
+
validationResult.passed = validationResult.confidence >= effectiveThreshold;
|
|
354
521
|
}
|
|
355
522
|
}
|
|
356
523
|
else {
|
|
357
|
-
// Use simple quality check (fallback)
|
|
358
524
|
validationResult = this.simpleQualityCheck(responseText);
|
|
525
|
+
validationResult.passed = validationResult.confidence >= effectiveThreshold;
|
|
359
526
|
const simpleLog = ` 📊 Simple quality check: confidence=${validationResult.confidence.toFixed(2)}\n`;
|
|
360
527
|
await runManager?.handleText(simpleLog);
|
|
361
528
|
console.log(simpleLog);
|
|
362
529
|
}
|
|
363
|
-
// Step
|
|
530
|
+
// Step 7: If quality is sufficient, return response
|
|
364
531
|
if (validationResult.passed) {
|
|
365
|
-
|
|
366
|
-
const
|
|
367
|
-
|
|
532
|
+
const drafterCost = await this.calculateMessageCost(drafterMessage, modelToUse);
|
|
533
|
+
const flowLog = `
|
|
534
|
+
┌─────────────────────────────────────────┐
|
|
535
|
+
│ ✅ FLOW: ${modelType.toUpperCase()} ACCEPTED (FAST PATH) │
|
|
536
|
+
└─────────────────────────────────────────┘
|
|
537
|
+
Query → ${detectedDomain ? `Domain(${detectedDomain}) → ` : ''}${modelType} → Quality Check ✅ → Response
|
|
538
|
+
⚡ Fast & Cheap: Used ${modelType} model only
|
|
539
|
+
Model used: ${modelInfo}
|
|
540
|
+
${detectedDomain ? `Domain: ${DOMAIN_DISPLAY_NAMES[detectedDomain]}` : ''}
|
|
541
|
+
Confidence: ${validationResult.confidence.toFixed(2)} (threshold: ${effectiveThreshold})
|
|
542
|
+
Quality score: ${validationResult.score.toFixed(2)}
|
|
543
|
+
Latency: ${drafterLatency}ms
|
|
544
|
+
💰 Cost: $${drafterCost.toFixed(6)} (${modelType} only)
|
|
545
|
+
📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier, domains: ${JSON.stringify(Object.fromEntries(this.domainCounts))}
|
|
546
|
+
`;
|
|
368
547
|
await runManager?.handleText(flowLog);
|
|
369
548
|
console.log(flowLog);
|
|
370
|
-
// Add flow metadata to message for n8n UI visibility (logs only, not in response text)
|
|
371
549
|
if (!drafterMessage.response_metadata) {
|
|
372
550
|
drafterMessage.response_metadata = {};
|
|
373
551
|
}
|
|
374
552
|
drafterMessage.response_metadata.cascadeflow = {
|
|
375
|
-
flow:
|
|
553
|
+
flow: `${modelType}_accepted`,
|
|
376
554
|
confidence: validationResult.confidence,
|
|
377
555
|
quality_score: validationResult.score,
|
|
556
|
+
domain: detectedDomain,
|
|
378
557
|
latency_ms: drafterLatency,
|
|
379
558
|
cost_usd: drafterCost,
|
|
380
|
-
model_used:
|
|
559
|
+
model_used: modelType
|
|
381
560
|
};
|
|
382
561
|
return {
|
|
383
562
|
generations: [{
|
|
@@ -386,31 +565,46 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
386
565
|
}],
|
|
387
566
|
};
|
|
388
567
|
}
|
|
389
|
-
// Step
|
|
390
|
-
const escalateLog =
|
|
568
|
+
// Step 8: Otherwise, escalate to verifier
|
|
569
|
+
const escalateLog = `
|
|
570
|
+
┌────────────────────────────────────────────────┐
|
|
571
|
+
│ ⚠️ FLOW: ESCALATED TO VERIFIER (SLOW PATH) │
|
|
572
|
+
└────────────────────────────────────────────────┘
|
|
573
|
+
Query → ${detectedDomain ? `Domain(${detectedDomain}) → ` : ''}${modelType} → Quality Check ❌ → Verifier → Response
|
|
574
|
+
🔄 Escalating: ${modelType} quality too low, using verifier
|
|
575
|
+
Confidence: ${validationResult.confidence.toFixed(2)} < ${effectiveThreshold} (threshold)
|
|
576
|
+
Reason: ${validationResult.reason}
|
|
577
|
+
${modelType} latency: ${drafterLatency}ms
|
|
578
|
+
🔄 Loading verifier model...
|
|
579
|
+
`;
|
|
391
580
|
await runManager?.handleText(escalateLog);
|
|
392
581
|
console.log(escalateLog);
|
|
393
582
|
const verifierStartTime = Date.now();
|
|
394
583
|
const verifierModel = await this.getVerifierModel();
|
|
395
584
|
const verifierInfo = this.getModelInfo(verifierModel);
|
|
396
|
-
const verifierMessage = await verifierModel
|
|
585
|
+
const verifierMessage = await executeWithProtection(verifierModel, 'verifier');
|
|
397
586
|
const verifierLatency = Date.now() - verifierStartTime;
|
|
398
587
|
this.verifierCount++;
|
|
399
|
-
// Calculate costs
|
|
400
588
|
const verifierCost = await this.calculateMessageCost(verifierMessage, verifierModel);
|
|
401
|
-
const totalCost = verifierCost;
|
|
589
|
+
const totalCost = verifierCost;
|
|
402
590
|
const totalLatency = drafterLatency + verifierLatency;
|
|
403
591
|
const acceptanceRate = (this.drafterCount / (this.drafterCount + this.verifierCount) * 100).toFixed(1);
|
|
404
|
-
const completionLog = ` ✅ Verifier completed successfully
|
|
592
|
+
const completionLog = ` ✅ Verifier completed successfully
|
|
593
|
+
Model used: ${verifierInfo}
|
|
594
|
+
Verifier latency: ${verifierLatency}ms
|
|
595
|
+
Total latency: ${totalLatency}ms (${modelType}: ${drafterLatency}ms + verifier: ${verifierLatency}ms)
|
|
596
|
+
💰 Cost: $${totalCost.toFixed(6)} (verifier only, ${modelType} attempt wasted)
|
|
597
|
+
📊 Stats: ${this.drafterCount} drafter (${acceptanceRate}%), ${this.verifierCount} verifier
|
|
598
|
+
`;
|
|
405
599
|
await runManager?.handleText(completionLog);
|
|
406
600
|
console.log(completionLog);
|
|
407
|
-
// Add flow metadata to message for n8n UI visibility (logs only, not in response text)
|
|
408
601
|
if (!verifierMessage.response_metadata) {
|
|
409
602
|
verifierMessage.response_metadata = {};
|
|
410
603
|
}
|
|
411
604
|
verifierMessage.response_metadata.cascadeflow = {
|
|
412
605
|
flow: 'escalated_to_verifier',
|
|
413
606
|
confidence: validationResult.confidence,
|
|
607
|
+
domain: detectedDomain,
|
|
414
608
|
drafter_latency_ms: drafterLatency,
|
|
415
609
|
verifier_latency_ms: verifierLatency,
|
|
416
610
|
total_latency_ms: totalLatency,
|
|
@@ -426,24 +620,35 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
426
620
|
};
|
|
427
621
|
}
|
|
428
622
|
catch (error) {
|
|
429
|
-
//
|
|
623
|
+
// Handle circuit breaker open state
|
|
430
624
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
431
|
-
const
|
|
625
|
+
const isCircuitOpen = errorMsg.includes('Circuit breaker') || errorMsg.includes('circuit is open');
|
|
626
|
+
const errorLog = `
|
|
627
|
+
┌─────────────────────────────────────────────┐
|
|
628
|
+
│ ❌ FLOW: ${isCircuitOpen ? 'CIRCUIT OPEN' : 'DRAFTER ERROR'} - FALLBACK PATH │
|
|
629
|
+
└─────────────────────────────────────────────┘
|
|
630
|
+
Query → Drafter ❌ ${isCircuitOpen ? 'CIRCUIT OPEN' : 'ERROR'} → Verifier → Response
|
|
631
|
+
🔄 Fallback: ${isCircuitOpen ? 'Circuit breaker open' : 'Drafter failed'}, using verifier as backup
|
|
632
|
+
Error: ${errorMsg}
|
|
633
|
+
🔄 Loading verifier model...
|
|
634
|
+
`;
|
|
432
635
|
await runManager?.handleText(errorLog);
|
|
433
636
|
console.log(errorLog);
|
|
434
637
|
const verifierModel = await this.getVerifierModel();
|
|
435
638
|
const verifierInfo = this.getModelInfo(verifierModel);
|
|
436
639
|
const verifierMessage = await verifierModel.invoke(messages, options);
|
|
437
640
|
this.verifierCount++;
|
|
438
|
-
const fallbackCompleteLog = ` ✅ Verifier fallback completed successfully
|
|
641
|
+
const fallbackCompleteLog = ` ✅ Verifier fallback completed successfully
|
|
642
|
+
Model used: ${verifierInfo}
|
|
643
|
+
💰 Cost: Full verifier cost (fallback due to ${isCircuitOpen ? 'circuit open' : 'error'})
|
|
644
|
+
`;
|
|
439
645
|
await runManager?.handleText(fallbackCompleteLog);
|
|
440
646
|
console.log(fallbackCompleteLog);
|
|
441
|
-
// Add flow metadata to message for n8n UI visibility (logs only, not in response text)
|
|
442
647
|
if (!verifierMessage.response_metadata) {
|
|
443
648
|
verifierMessage.response_metadata = {};
|
|
444
649
|
}
|
|
445
650
|
verifierMessage.response_metadata.cascadeflow = {
|
|
446
|
-
flow: 'error_fallback',
|
|
651
|
+
flow: isCircuitOpen ? 'circuit_breaker_fallback' : 'error_fallback',
|
|
447
652
|
error: errorMsg,
|
|
448
653
|
cost_savings_percent: 0,
|
|
449
654
|
model_used: 'verifier'
|
|
@@ -458,73 +663,82 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
458
663
|
}
|
|
459
664
|
/**
|
|
460
665
|
* Streaming implementation for real-time cascade feedback
|
|
461
|
-
* Streams drafter response, then quality checks, then optionally streams verifier
|
|
462
666
|
*/
|
|
463
667
|
async *_streamResponseChunks(messages, options, runManager) {
|
|
464
668
|
try {
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
669
|
+
const queryText = messages.map(m => m.content.toString()).join(' ');
|
|
670
|
+
// Detect domain for streaming
|
|
671
|
+
let detectedDomain = null;
|
|
672
|
+
let modelToUse = this.drafterModel;
|
|
673
|
+
if (this.enabledDomains.length > 0) {
|
|
674
|
+
detectedDomain = await this.detectDomain(queryText);
|
|
675
|
+
if (detectedDomain) {
|
|
676
|
+
const domainConfig = this.domainConfigs.get(detectedDomain);
|
|
677
|
+
if (domainConfig?.model) {
|
|
678
|
+
modelToUse = domainConfig.model;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
const modelInfo = this.getModelInfo(modelToUse);
|
|
683
|
+
const modelType = detectedDomain ? `domain:${detectedDomain}` : 'drafter';
|
|
684
|
+
await runManager?.handleText(`🎯 CascadeFlow (Streaming): Trying ${modelType} model: ${modelInfo}\n`);
|
|
685
|
+
console.log(`🎯 CascadeFlow (Streaming): Trying ${modelType} model: ${modelInfo}`);
|
|
469
686
|
const drafterStartTime = Date.now();
|
|
470
687
|
let fullDrafterContent = '';
|
|
471
688
|
let lastChunk = null;
|
|
472
|
-
|
|
473
|
-
const drafterStream = await this.drafterModel.stream(messages, options);
|
|
689
|
+
const drafterStream = await modelToUse.stream(messages, options);
|
|
474
690
|
for await (const chunk of drafterStream) {
|
|
475
691
|
fullDrafterContent += chunk.content;
|
|
476
|
-
// Convert AIMessageChunk to ChatGenerationChunk
|
|
477
692
|
const generationChunk = new outputs_1.ChatGenerationChunk({
|
|
478
693
|
text: chunk.content.toString(),
|
|
479
694
|
message: chunk,
|
|
480
695
|
});
|
|
481
696
|
lastChunk = generationChunk;
|
|
482
|
-
yield generationChunk;
|
|
697
|
+
yield generationChunk;
|
|
483
698
|
}
|
|
484
699
|
const drafterLatency = Date.now() - drafterStartTime;
|
|
485
700
|
this.drafterCount++;
|
|
486
|
-
// Step 2: Check for tool calls (after streaming complete)
|
|
487
701
|
if (lastChunk && this.hasToolCalls(lastChunk.message)) {
|
|
488
702
|
const toolCallsCount = this.getToolCallsCount(lastChunk.message);
|
|
489
703
|
const toolLog = `\n🔧 Tool calls detected (${toolCallsCount}) - cascade complete\n`;
|
|
490
704
|
await runManager?.handleText(toolLog);
|
|
491
705
|
console.log(toolLog);
|
|
492
|
-
return;
|
|
706
|
+
return;
|
|
493
707
|
}
|
|
494
|
-
// Step 3: Quality check (after streaming complete)
|
|
495
|
-
const queryText = messages.map(m => m.content.toString()).join(' ');
|
|
496
708
|
await runManager?.handleText(`\n📊 Running quality check...\n`);
|
|
709
|
+
const effectiveThreshold = detectedDomain
|
|
710
|
+
? (this.domainConfigs.get(detectedDomain)?.threshold ?? this.qualityThreshold)
|
|
711
|
+
: this.qualityThreshold;
|
|
497
712
|
let validationResult;
|
|
498
713
|
if (this.qualityValidator) {
|
|
499
714
|
try {
|
|
500
715
|
validationResult = await this.qualityValidator.validate(fullDrafterContent, queryText);
|
|
501
|
-
|
|
716
|
+
validationResult.passed = validationResult.confidence >= effectiveThreshold;
|
|
717
|
+
await runManager?.handleText(` Confidence: ${validationResult.confidence.toFixed(2)} (threshold: ${effectiveThreshold})\n`);
|
|
502
718
|
}
|
|
503
719
|
catch (e) {
|
|
504
720
|
validationResult = this.simpleQualityCheck(fullDrafterContent);
|
|
721
|
+
validationResult.passed = validationResult.confidence >= effectiveThreshold;
|
|
505
722
|
}
|
|
506
723
|
}
|
|
507
724
|
else {
|
|
508
725
|
validationResult = this.simpleQualityCheck(fullDrafterContent);
|
|
726
|
+
validationResult.passed = validationResult.confidence >= effectiveThreshold;
|
|
509
727
|
}
|
|
510
|
-
// Step 4: If quality sufficient, we're done
|
|
511
728
|
if (validationResult.passed) {
|
|
512
|
-
await runManager?.handleText(`✅ Quality check passed - cascade complete (
|
|
513
|
-
console.log(`✅ Streaming:
|
|
514
|
-
return;
|
|
729
|
+
await runManager?.handleText(`✅ Quality check passed - cascade complete (${modelType} accepted)\n`);
|
|
730
|
+
console.log(`✅ Streaming: ${modelType} accepted (${drafterLatency}ms)`);
|
|
731
|
+
return;
|
|
515
732
|
}
|
|
516
|
-
// Step 5: Quality insufficient - escalate to verifier and stream its response
|
|
517
733
|
await runManager?.handleText(`\n⚠️ Quality check failed - escalating to verifier...\n`);
|
|
518
|
-
console.log(`⚠️ Streaming: Escalating to verifier (confidence ${validationResult.confidence.toFixed(2)} < ${
|
|
734
|
+
console.log(`⚠️ Streaming: Escalating to verifier (confidence ${validationResult.confidence.toFixed(2)} < ${effectiveThreshold})`);
|
|
519
735
|
const verifierModel = await this.getVerifierModel();
|
|
520
736
|
const verifierInfo = this.getModelInfo(verifierModel);
|
|
521
737
|
await runManager?.handleText(`🔄 Streaming verifier response from ${verifierInfo}...\n`);
|
|
522
738
|
const verifierStartTime = Date.now();
|
|
523
739
|
const verifierStream = await verifierModel.stream(messages, options);
|
|
524
740
|
this.verifierCount++;
|
|
525
|
-
// Stream verifier response
|
|
526
741
|
for await (const chunk of verifierStream) {
|
|
527
|
-
// Convert AIMessageChunk to ChatGenerationChunk
|
|
528
742
|
yield new outputs_1.ChatGenerationChunk({
|
|
529
743
|
text: chunk.content.toString(),
|
|
530
744
|
message: chunk,
|
|
@@ -535,7 +749,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
535
749
|
console.log(`✅ Streaming: Verifier complete (${verifierLatency}ms)`);
|
|
536
750
|
}
|
|
537
751
|
catch (error) {
|
|
538
|
-
// Fallback to verifier on error
|
|
539
752
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
540
753
|
await runManager?.handleText(`\n❌ Drafter error - falling back to verifier: ${errorMsg}\n`);
|
|
541
754
|
console.log(`❌ Streaming: Drafter error, using verifier fallback`);
|
|
@@ -543,7 +756,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
543
756
|
const verifierStream = await verifierModel.stream(messages, options);
|
|
544
757
|
this.verifierCount++;
|
|
545
758
|
for await (const chunk of verifierStream) {
|
|
546
|
-
// Convert AIMessageChunk to ChatGenerationChunk
|
|
547
759
|
yield new outputs_1.ChatGenerationChunk({
|
|
548
760
|
text: chunk.content.toString(),
|
|
549
761
|
message: chunk,
|
|
@@ -552,6 +764,122 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
|
|
|
552
764
|
}
|
|
553
765
|
}
|
|
554
766
|
}
|
|
767
|
+
// =============================================================================
|
|
768
|
+
// Generate dynamic inputs based on enabled domains
|
|
769
|
+
// =============================================================================
|
|
770
|
+
function generateDomainInputs(enabledDomains) {
|
|
771
|
+
const baseInputs = [
|
|
772
|
+
{
|
|
773
|
+
displayName: 'Verifier',
|
|
774
|
+
type: 'ai_languageModel',
|
|
775
|
+
maxConnections: 1,
|
|
776
|
+
required: true,
|
|
777
|
+
},
|
|
778
|
+
{
|
|
779
|
+
displayName: 'Drafter',
|
|
780
|
+
type: 'ai_languageModel',
|
|
781
|
+
maxConnections: 1,
|
|
782
|
+
required: true,
|
|
783
|
+
},
|
|
784
|
+
];
|
|
785
|
+
// Add domain-specific model inputs for each enabled domain
|
|
786
|
+
for (const domain of enabledDomains) {
|
|
787
|
+
baseInputs.push({
|
|
788
|
+
displayName: `${DOMAIN_DISPLAY_NAMES[domain]} Model`,
|
|
789
|
+
type: 'ai_languageModel',
|
|
790
|
+
maxConnections: 1,
|
|
791
|
+
required: false,
|
|
792
|
+
});
|
|
793
|
+
}
|
|
794
|
+
return baseInputs;
|
|
795
|
+
}
|
|
796
|
+
// =============================================================================
|
|
797
|
+
// Generate domain toggle properties for n8n UI
|
|
798
|
+
// =============================================================================
|
|
799
|
+
function generateDomainProperties() {
|
|
800
|
+
const domainOptions = Object.entries(DOMAINS).map(([key, value]) => ({
|
|
801
|
+
name: DOMAIN_DISPLAY_NAMES[value],
|
|
802
|
+
value: value,
|
|
803
|
+
description: DOMAIN_DESCRIPTIONS[value],
|
|
804
|
+
}));
|
|
805
|
+
return [
|
|
806
|
+
{
|
|
807
|
+
displayName: 'Enable Domain Routing',
|
|
808
|
+
name: 'enableDomainRouting',
|
|
809
|
+
type: 'boolean',
|
|
810
|
+
default: false,
|
|
811
|
+
description: 'Whether to enable intelligent routing based on detected query domain (math, code, legal, etc.)',
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
displayName: 'Enabled Domains',
|
|
815
|
+
name: 'enabledDomains',
|
|
816
|
+
type: 'multiOptions',
|
|
817
|
+
options: domainOptions,
|
|
818
|
+
default: [],
|
|
819
|
+
displayOptions: {
|
|
820
|
+
show: {
|
|
821
|
+
enableDomainRouting: [true],
|
|
822
|
+
},
|
|
823
|
+
},
|
|
824
|
+
description: 'Select which domains to enable for intelligent routing. Connect domain-specific models for each.',
|
|
825
|
+
},
|
|
826
|
+
{
|
|
827
|
+
displayName: 'Domain-Specific Settings',
|
|
828
|
+
name: 'domainSettings',
|
|
829
|
+
type: 'fixedCollection',
|
|
830
|
+
typeOptions: {
|
|
831
|
+
multipleValues: true,
|
|
832
|
+
},
|
|
833
|
+
displayOptions: {
|
|
834
|
+
show: {
|
|
835
|
+
enableDomainRouting: [true],
|
|
836
|
+
},
|
|
837
|
+
},
|
|
838
|
+
default: {},
|
|
839
|
+
options: [
|
|
840
|
+
{
|
|
841
|
+
name: 'domainConfig',
|
|
842
|
+
displayName: 'Domain Configuration',
|
|
843
|
+
values: [
|
|
844
|
+
{
|
|
845
|
+
displayName: 'Domain',
|
|
846
|
+
name: 'domain',
|
|
847
|
+
type: 'options',
|
|
848
|
+
options: domainOptions,
|
|
849
|
+
default: 'general',
|
|
850
|
+
description: 'Select the domain to configure',
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
displayName: 'Quality Threshold',
|
|
854
|
+
name: 'threshold',
|
|
855
|
+
type: 'number',
|
|
856
|
+
default: 0.64,
|
|
857
|
+
typeOptions: {
|
|
858
|
+
minValue: 0,
|
|
859
|
+
maxValue: 1,
|
|
860
|
+
numberPrecision: 2,
|
|
861
|
+
},
|
|
862
|
+
description: 'Quality threshold for this domain (overrides global threshold)',
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
displayName: 'Temperature',
|
|
866
|
+
name: 'temperature',
|
|
867
|
+
type: 'number',
|
|
868
|
+
default: 0.7,
|
|
869
|
+
typeOptions: {
|
|
870
|
+
minValue: 0,
|
|
871
|
+
maxValue: 2,
|
|
872
|
+
numberPrecision: 1,
|
|
873
|
+
},
|
|
874
|
+
description: 'Temperature setting for this domain',
|
|
875
|
+
},
|
|
876
|
+
],
|
|
877
|
+
},
|
|
878
|
+
],
|
|
879
|
+
description: 'Configure per-domain quality thresholds and temperatures',
|
|
880
|
+
},
|
|
881
|
+
];
|
|
882
|
+
}
|
|
555
883
|
class LmChatCascadeFlow {
|
|
556
884
|
constructor() {
|
|
557
885
|
this.description = {
|
|
@@ -559,8 +887,8 @@ class LmChatCascadeFlow {
|
|
|
559
887
|
name: 'lmChatCascadeFlow',
|
|
560
888
|
icon: 'file:cascadeflow.svg',
|
|
561
889
|
group: ['transform'],
|
|
562
|
-
version:
|
|
563
|
-
description: 'Smart AI model cascading with 40-85% cost savings.
|
|
890
|
+
version: 2,
|
|
891
|
+
description: 'Smart AI model cascading with 40-85% cost savings. Supports 16 domains with domain-specific model routing.',
|
|
564
892
|
defaults: {
|
|
565
893
|
name: 'CascadeFlow',
|
|
566
894
|
},
|
|
@@ -577,26 +905,52 @@ class LmChatCascadeFlow {
|
|
|
577
905
|
],
|
|
578
906
|
},
|
|
579
907
|
},
|
|
580
|
-
// Sub-node: accepts AI model connections
|
|
581
|
-
// Visual layout: Index 0 = "Verifier" label (top), Index 1 = "Drafter" label (bottom)
|
|
582
|
-
// Actual logic: Index 0 = VERIFIER model (only if needed), Index 1 = DRAFTER model (tried first)
|
|
583
|
-
// User connects: TOP port = verifier model, BOTTOM port = drafter model
|
|
584
908
|
// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
|
|
585
|
-
inputs:
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
909
|
+
inputs: `={{ ((params) => {
|
|
910
|
+
// Always include Verifier and Drafter
|
|
911
|
+
const inputs = [
|
|
912
|
+
{
|
|
913
|
+
displayName: 'Verifier',
|
|
914
|
+
type: 'ai_languageModel',
|
|
915
|
+
maxConnections: 1,
|
|
916
|
+
required: true,
|
|
917
|
+
},
|
|
918
|
+
{
|
|
919
|
+
displayName: 'Drafter',
|
|
920
|
+
type: 'ai_languageModel',
|
|
921
|
+
maxConnections: 1,
|
|
922
|
+
required: true,
|
|
923
|
+
},
|
|
924
|
+
];
|
|
925
|
+
|
|
926
|
+
// Only add domain model inputs if domain routing is enabled
|
|
927
|
+
if (params?.enableDomainRouting) {
|
|
928
|
+
const enabledDomains = params?.enabledDomains || [];
|
|
929
|
+
const domainInputs = {
|
|
930
|
+
code: 'Code Model',
|
|
931
|
+
math: 'Math Model',
|
|
932
|
+
data: 'Data Model',
|
|
933
|
+
creative: 'Creative Model',
|
|
934
|
+
legal: 'Legal Model',
|
|
935
|
+
medical: 'Medical Model',
|
|
936
|
+
financial: 'Financial Model',
|
|
937
|
+
science: 'Science Model',
|
|
938
|
+
};
|
|
939
|
+
|
|
940
|
+
for (const [domain, displayName] of Object.entries(domainInputs)) {
|
|
941
|
+
if (enabledDomains.includes(domain)) {
|
|
942
|
+
inputs.push({
|
|
943
|
+
displayName,
|
|
944
|
+
type: 'ai_languageModel',
|
|
945
|
+
maxConnections: 1,
|
|
946
|
+
required: false,
|
|
947
|
+
});
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
return inputs;
|
|
953
|
+
})($parameter) }}`,
|
|
600
954
|
// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
|
|
601
955
|
outputs: ['ai_languageModel'],
|
|
602
956
|
outputNames: ['Model'],
|
|
@@ -634,22 +988,49 @@ class LmChatCascadeFlow {
|
|
|
634
988
|
default: true,
|
|
635
989
|
description: 'Whether to route queries directly to the verifier based on detected complexity',
|
|
636
990
|
},
|
|
991
|
+
{
|
|
992
|
+
displayName: 'Enable Circuit Breaker',
|
|
993
|
+
name: 'useCircuitBreaker',
|
|
994
|
+
type: 'boolean',
|
|
995
|
+
default: true,
|
|
996
|
+
description: 'Whether to use circuit breaker for fault tolerance (auto-fallback on repeated failures)',
|
|
997
|
+
},
|
|
998
|
+
// Domain routing settings
|
|
999
|
+
...generateDomainProperties(),
|
|
637
1000
|
],
|
|
638
1001
|
};
|
|
639
1002
|
}
|
|
640
1003
|
async supplyData() {
|
|
641
|
-
// Get parameters
|
|
1004
|
+
// Get core parameters
|
|
642
1005
|
const qualityThreshold = this.getNodeParameter('qualityThreshold', 0, 0.64);
|
|
643
1006
|
const useSemanticValidation = this.getNodeParameter('useSemanticValidation', 0, true);
|
|
644
1007
|
const useAlignmentScoring = this.getNodeParameter('useAlignmentScoring', 0, true);
|
|
645
1008
|
const useComplexityRouting = this.getNodeParameter('useComplexityRouting', 0, true);
|
|
646
|
-
|
|
1009
|
+
const useCircuitBreaker = this.getNodeParameter('useCircuitBreaker', 0, true);
|
|
1010
|
+
// Get domain routing parameters
|
|
1011
|
+
const enableDomainRouting = this.getNodeParameter('enableDomainRouting', 0, false);
|
|
1012
|
+
const enabledDomains = enableDomainRouting
|
|
1013
|
+
? this.getNodeParameter('enabledDomains', 0, [])
|
|
1014
|
+
: [];
|
|
1015
|
+
// Get domain-specific settings
|
|
1016
|
+
const domainSettingsRaw = this.getNodeParameter('domainSettings', 0, { domainConfig: [] });
|
|
1017
|
+
const domainConfigs = new Map();
|
|
1018
|
+
if (domainSettingsRaw?.domainConfig) {
|
|
1019
|
+
for (const config of domainSettingsRaw.domainConfig) {
|
|
1020
|
+
domainConfigs.set(config.domain, {
|
|
1021
|
+
enabled: enabledDomains.includes(config.domain),
|
|
1022
|
+
threshold: config.threshold || qualityThreshold,
|
|
1023
|
+
temperature: config.temperature || 0.7,
|
|
1024
|
+
});
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
// Get the drafter model (index 1 - bottom port, labeled "Drafter")
|
|
647
1028
|
const drafterData = await this.getInputConnectionData('ai_languageModel', 1);
|
|
648
1029
|
const drafterModel = (Array.isArray(drafterData) ? drafterData[0] : drafterData);
|
|
649
1030
|
if (!drafterModel) {
|
|
650
1031
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Drafter model is required. Please connect your DRAFTER model to the BOTTOM port (labeled "Drafter").');
|
|
651
1032
|
}
|
|
652
|
-
// Create
|
|
1033
|
+
// Create lazy loader for verifier (index 0 - top port, labeled "Verifier")
|
|
653
1034
|
const verifierModelGetter = async () => {
|
|
654
1035
|
const verifierData = await this.getInputConnectionData('ai_languageModel', 0);
|
|
655
1036
|
const verifierModel = (Array.isArray(verifierData) ? verifierData[0] : verifierData);
|
|
@@ -658,22 +1039,74 @@ class LmChatCascadeFlow {
|
|
|
658
1039
|
}
|
|
659
1040
|
return verifierModel;
|
|
660
1041
|
};
|
|
661
|
-
//
|
|
1042
|
+
// Domain input order (same as dynamic inputs template)
|
|
1043
|
+
// Only domains in this list can have dedicated model inputs
|
|
1044
|
+
const domainInputOrder = [
|
|
1045
|
+
'code', 'math', 'data', 'creative', 'legal', 'medical', 'financial', 'science'
|
|
1046
|
+
];
|
|
1047
|
+
// Build dynamic index mapping based on which domains are actually enabled
|
|
1048
|
+
// Inputs: 0=Verifier, 1=Drafter, then enabled domains in order
|
|
1049
|
+
const domainInputMap = new Map();
|
|
1050
|
+
let inputIndex = 2; // Start after Verifier (0) and Drafter (1)
|
|
1051
|
+
for (const domain of domainInputOrder) {
|
|
1052
|
+
if (enabledDomains.includes(domain)) {
|
|
1053
|
+
domainInputMap.set(domain, inputIndex);
|
|
1054
|
+
inputIndex++;
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
// Create domain model getters for enabled domains
|
|
1058
|
+
const domainModelGetters = new Map();
|
|
1059
|
+
for (const domain of enabledDomains) {
|
|
1060
|
+
const domainIndex = domainInputMap.get(domain);
|
|
1061
|
+
if (domainIndex !== undefined) {
|
|
1062
|
+
domainModelGetters.set(domain, async () => {
|
|
1063
|
+
try {
|
|
1064
|
+
const domainData = await this.getInputConnectionData('ai_languageModel', domainIndex);
|
|
1065
|
+
const domainModel = (Array.isArray(domainData) ? domainData[0] : domainData);
|
|
1066
|
+
if (domainModel) {
|
|
1067
|
+
// Store in domain config
|
|
1068
|
+
const config = domainConfigs.get(domain) || {
|
|
1069
|
+
enabled: true,
|
|
1070
|
+
threshold: qualityThreshold,
|
|
1071
|
+
temperature: 0.7,
|
|
1072
|
+
};
|
|
1073
|
+
config.model = domainModel;
|
|
1074
|
+
domainConfigs.set(domain, config);
|
|
1075
|
+
return domainModel;
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
catch (e) {
|
|
1079
|
+
console.log(`No ${domain} model connected, using drafter as fallback`);
|
|
1080
|
+
}
|
|
1081
|
+
return undefined;
|
|
1082
|
+
});
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
// Eagerly load domain models
|
|
1086
|
+
for (const [domain, getter] of domainModelGetters.entries()) {
|
|
1087
|
+
await getter();
|
|
1088
|
+
}
|
|
1089
|
+
// Debug info
|
|
662
1090
|
const getDrafterInfo = () => {
|
|
663
1091
|
const type = typeof drafterModel._llmType === 'function' ? drafterModel._llmType() : 'unknown';
|
|
664
1092
|
const modelName = drafterModel.modelName || drafterModel.model || 'unknown';
|
|
665
1093
|
return `${type} (${modelName})`;
|
|
666
1094
|
};
|
|
667
|
-
console.log('🚀 CascadeFlow initialized');
|
|
1095
|
+
console.log('🚀 CascadeFlow v2 initialized');
|
|
668
1096
|
console.log(` PORT MAPPING:`);
|
|
669
|
-
console.log(` ├─ TOP port (labeled "Verifier") → VERIFIER model: lazy-loaded
|
|
1097
|
+
console.log(` ├─ TOP port (labeled "Verifier") → VERIFIER model: lazy-loaded`);
|
|
670
1098
|
console.log(` └─ BOTTOM port (labeled "Drafter") → DRAFTER model: ${getDrafterInfo()}`);
|
|
671
1099
|
console.log(` Quality threshold: ${qualityThreshold}`);
|
|
672
1100
|
console.log(` Semantic validation: ${useSemanticValidation ? 'enabled' : 'disabled'}`);
|
|
673
1101
|
console.log(` Alignment scoring: ${useAlignmentScoring ? 'enabled' : 'disabled'}`);
|
|
674
1102
|
console.log(` Complexity routing: ${useComplexityRouting ? 'enabled' : 'disabled'}`);
|
|
675
|
-
|
|
676
|
-
|
|
1103
|
+
console.log(` Circuit breaker: ${useCircuitBreaker ? 'enabled' : 'disabled'}`);
|
|
1104
|
+
console.log(` Domain routing: ${enableDomainRouting ? 'enabled' : 'disabled'}`);
|
|
1105
|
+
if (enabledDomains.length > 0) {
|
|
1106
|
+
console.log(` Enabled domains: ${enabledDomains.join(', ')}`);
|
|
1107
|
+
}
|
|
1108
|
+
// Create and return the cascade model
|
|
1109
|
+
const cascadeModel = new CascadeChatModel(drafterModel, verifierModelGetter, qualityThreshold, useSemanticValidation, useAlignmentScoring, useComplexityRouting, enableDomainRouting, enabledDomains, domainModelGetters, domainConfigs, useCircuitBreaker);
|
|
677
1110
|
return {
|
|
678
1111
|
response: cascadeModel,
|
|
679
1112
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LmChatCascadeFlow.node.js","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LmChatCascadeFlow.node.js","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"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"}
|