@memberjunction/ai-prompts 3.4.0 → 4.0.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/dist/AIPromptRunner.d.ts +540 -2
- package/dist/AIPromptRunner.d.ts.map +1 -1
- package/dist/AIPromptRunner.js +1156 -232
- package/dist/AIPromptRunner.js.map +1 -1
- package/dist/ExecutionPlanner.d.ts +116 -1
- package/dist/ExecutionPlanner.d.ts.map +1 -1
- package/dist/ExecutionPlanner.js +171 -40
- package/dist/ExecutionPlanner.js.map +1 -1
- package/dist/ParallelExecution.d.ts +178 -1
- package/dist/ParallelExecution.d.ts.map +1 -1
- package/dist/ParallelExecution.js +1 -2
- package/dist/ParallelExecutionCoordinator.d.ts +182 -3
- package/dist/ParallelExecutionCoordinator.d.ts.map +1 -1
- package/dist/ParallelExecutionCoordinator.js +304 -79
- package/dist/ParallelExecutionCoordinator.js.map +1 -1
- package/dist/__tests__/AIPromptRunner.failover.test.d.ts +21 -0
- package/dist/__tests__/AIPromptRunner.failover.test.d.ts.map +1 -1
- package/dist/__tests__/AIPromptRunner.failover.test.js +92 -6
- package/dist/__tests__/AIPromptRunner.failover.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -19
- package/dist/index.js.map +1 -1
- package/package.json +21 -20
|
@@ -1,19 +1,134 @@
|
|
|
1
1
|
import { UserInfo } from '@memberjunction/core';
|
|
2
2
|
import { AIPromptModelEntity } from '@memberjunction/core-entities';
|
|
3
|
-
import { ExecutionTask } from './ParallelExecution';
|
|
3
|
+
import { ExecutionTask } from './ParallelExecution.js';
|
|
4
4
|
import { ChatMessage } from '@memberjunction/ai';
|
|
5
5
|
import { AIModelEntityExtended, AIPromptEntityExtended, TemplateMessageRole } from '@memberjunction/ai-core-plus';
|
|
6
|
+
/**
|
|
7
|
+
* Plans and organizes execution tasks for AI prompts based on parallelization configuration.
|
|
8
|
+
*
|
|
9
|
+
* This class analyzes prompt configuration and creates execution plans that determine:
|
|
10
|
+
* - Which models to use
|
|
11
|
+
* - How many parallel executions to perform
|
|
12
|
+
* - How to group executions for coordination
|
|
13
|
+
* - Priority and ordering of tasks
|
|
14
|
+
*/
|
|
6
15
|
export declare class ExecutionPlanner {
|
|
16
|
+
/**
|
|
17
|
+
* Creates an execution plan for a prompt based on its parallelization configuration.
|
|
18
|
+
*
|
|
19
|
+
* Analyzes the prompt's ParallelizationMode and associated models to determine
|
|
20
|
+
* the optimal execution strategy and task distribution.
|
|
21
|
+
*
|
|
22
|
+
* @param prompt - The AI prompt to create an execution plan for
|
|
23
|
+
* @param promptModels - Associated model configurations for this prompt
|
|
24
|
+
* @param allModels - All available AI models in the system
|
|
25
|
+
* @param renderedPrompt - The rendered prompt text ready for execution
|
|
26
|
+
* @param contextUser - User context for authentication and permissions
|
|
27
|
+
* @param configurationId - Optional configuration ID for environment-specific behavior
|
|
28
|
+
* @returns ExecutionTask[] - Array of execution tasks to be processed
|
|
29
|
+
*/
|
|
7
30
|
createExecutionPlan(prompt: AIPromptEntityExtended, promptModels: AIPromptModelEntity[], allModels: AIModelEntityExtended[], renderedPrompt: string, contextUser?: UserInfo, configurationId?: string, conversationMessages?: ChatMessage[], templateMessageRole?: TemplateMessageRole): ExecutionTask[];
|
|
31
|
+
/**
|
|
32
|
+
* Creates a single execution task (no parallelization).
|
|
33
|
+
*
|
|
34
|
+
* Selects the best model based on prompt configuration and creates a single task.
|
|
35
|
+
*
|
|
36
|
+
* @param prompt - The AI prompt to execute
|
|
37
|
+
* @param promptModels - Associated model configurations
|
|
38
|
+
* @param allModels - All available models
|
|
39
|
+
* @param renderedPrompt - Rendered prompt text
|
|
40
|
+
* @param contextUser - User context
|
|
41
|
+
* @param configurationId - Configuration ID
|
|
42
|
+
* @returns ExecutionTask[] - Array containing single execution task
|
|
43
|
+
*/
|
|
8
44
|
private createSingleExecutionPlan;
|
|
45
|
+
/**
|
|
46
|
+
* Creates execution tasks based on a static count of parallel executions.
|
|
47
|
+
*
|
|
48
|
+
* Uses the ParallelCount field to determine how many parallel executions to create.
|
|
49
|
+
*
|
|
50
|
+
* @param prompt - The AI prompt to execute
|
|
51
|
+
* @param promptModels - Associated model configurations
|
|
52
|
+
* @param allModels - All available models
|
|
53
|
+
* @param renderedPrompt - Rendered prompt text
|
|
54
|
+
* @param contextUser - User context
|
|
55
|
+
* @param configurationId - Configuration ID
|
|
56
|
+
* @returns ExecutionTask[] - Array of execution tasks for parallel processing
|
|
57
|
+
*/
|
|
9
58
|
private createStaticCountPlan;
|
|
59
|
+
/**
|
|
60
|
+
* Creates execution tasks based on a configuration parameter.
|
|
61
|
+
*
|
|
62
|
+
* Looks up the parallel count from a configuration parameter specified in ParallelConfigParam.
|
|
63
|
+
*
|
|
64
|
+
* @param prompt - The AI prompt to execute
|
|
65
|
+
* @param promptModels - Associated model configurations
|
|
66
|
+
* @param allModels - All available models
|
|
67
|
+
* @param renderedPrompt - Rendered prompt text
|
|
68
|
+
* @param contextUser - User context
|
|
69
|
+
* @param configurationId - Configuration ID
|
|
70
|
+
* @returns ExecutionTask[] - Array of execution tasks for parallel processing
|
|
71
|
+
*/
|
|
10
72
|
private createConfigParamPlan;
|
|
73
|
+
/**
|
|
74
|
+
* Creates execution tasks based on model-specific parallelization settings.
|
|
75
|
+
*
|
|
76
|
+
* Uses individual AIPromptModel configurations to determine execution groups and parallel counts.
|
|
77
|
+
*
|
|
78
|
+
* @param prompt - The AI prompt to execute
|
|
79
|
+
* @param promptModels - Associated model configurations
|
|
80
|
+
* @param allModels - All available models
|
|
81
|
+
* @param renderedPrompt - Rendered prompt text
|
|
82
|
+
* @param contextUser - User context
|
|
83
|
+
* @param configurationId - Configuration ID
|
|
84
|
+
* @returns ExecutionTask[] - Array of execution tasks organized by execution groups
|
|
85
|
+
*/
|
|
11
86
|
private createModelSpecificPlan;
|
|
87
|
+
/**
|
|
88
|
+
* Selects the best model based on prompt configuration and available models.
|
|
89
|
+
*
|
|
90
|
+
* @param prompt - The AI prompt requiring a model
|
|
91
|
+
* @param promptModels - Associated model configurations
|
|
92
|
+
* @param allModels - All available models
|
|
93
|
+
* @param configurationId - Configuration ID
|
|
94
|
+
* @returns AIModelEntityExtended | null - The selected model or null if none suitable
|
|
95
|
+
*/
|
|
12
96
|
private selectBestModel;
|
|
97
|
+
/**
|
|
98
|
+
* Gets all available models for a prompt considering configuration constraints.
|
|
99
|
+
*
|
|
100
|
+
* @param prompt - The AI prompt
|
|
101
|
+
* @param promptModels - Associated model configurations
|
|
102
|
+
* @param allModels - All available models
|
|
103
|
+
* @param configurationId - Configuration ID
|
|
104
|
+
* @returns AIModelEntityExtended[] - Array of suitable models
|
|
105
|
+
*/
|
|
13
106
|
private getAvailableModels;
|
|
107
|
+
/**
|
|
108
|
+
* Determines the parallel count for a specific model configuration.
|
|
109
|
+
*
|
|
110
|
+
* @param promptModel - The prompt model configuration
|
|
111
|
+
* @returns number - Number of parallel executions for this model
|
|
112
|
+
*/
|
|
14
113
|
private getModelParallelCount;
|
|
114
|
+
/**
|
|
115
|
+
* Looks up a configuration parameter value.
|
|
116
|
+
*
|
|
117
|
+
* @param paramName - Name of the configuration parameter
|
|
118
|
+
* @param configurationId - Configuration context ID
|
|
119
|
+
* @returns number | null - The parameter value or null if not found
|
|
120
|
+
*/
|
|
15
121
|
private getConfigurationParameter;
|
|
122
|
+
/**
|
|
123
|
+
* Parses model parameters from JSON string.
|
|
124
|
+
*
|
|
125
|
+
* @param modelParametersJson - JSON string containing model parameters
|
|
126
|
+
* @returns Record<string, any> | undefined - Parsed parameters or undefined
|
|
127
|
+
*/
|
|
16
128
|
private parseModelParameters;
|
|
129
|
+
/**
|
|
130
|
+
* Selects vendor information for a model, preferring inference providers
|
|
131
|
+
*/
|
|
17
132
|
private selectVendorForModel;
|
|
18
133
|
}
|
|
19
134
|
//# sourceMappingURL=ExecutionPlanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionPlanner.d.ts","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ExecutionPlanner.d.ts","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAKlH;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;;;OAaG;IACI,mBAAmB,CACxB,MAAM,EAAE,sBAAsB,EAC9B,YAAY,EAAE,mBAAmB,EAAE,EACnC,SAAS,EAAE,qBAAqB,EAAE,EAClC,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,QAAQ,EACtB,eAAe,CAAC,EAAE,MAAM,EACxB,oBAAoB,CAAC,EAAE,WAAW,EAAE,EACpC,mBAAmB,GAAE,mBAA8B,GAClD,aAAa,EAAE;IAqElB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,yBAAyB;IA0CjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IA0D7B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IAoE7B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,uBAAuB;IA2D/B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAgDvB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAsDjC;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAwC7B"}
|
package/dist/ExecutionPlanner.js
CHANGED
|
@@ -1,13 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class
|
|
1
|
+
import { LogError, LogStatus } from '@memberjunction/core';
|
|
2
|
+
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
3
|
+
import { AIEngine } from '@memberjunction/aiengine';
|
|
4
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
5
|
+
/**
|
|
6
|
+
* Plans and organizes execution tasks for AI prompts based on parallelization configuration.
|
|
7
|
+
*
|
|
8
|
+
* This class analyzes prompt configuration and creates execution plans that determine:
|
|
9
|
+
* - Which models to use
|
|
10
|
+
* - How many parallel executions to perform
|
|
11
|
+
* - How to group executions for coordination
|
|
12
|
+
* - Priority and ordering of tasks
|
|
13
|
+
*/
|
|
14
|
+
export class ExecutionPlanner {
|
|
15
|
+
/**
|
|
16
|
+
* Creates an execution plan for a prompt based on its parallelization configuration.
|
|
17
|
+
*
|
|
18
|
+
* Analyzes the prompt's ParallelizationMode and associated models to determine
|
|
19
|
+
* the optimal execution strategy and task distribution.
|
|
20
|
+
*
|
|
21
|
+
* @param prompt - The AI prompt to create an execution plan for
|
|
22
|
+
* @param promptModels - Associated model configurations for this prompt
|
|
23
|
+
* @param allModels - All available AI models in the system
|
|
24
|
+
* @param renderedPrompt - The rendered prompt text ready for execution
|
|
25
|
+
* @param contextUser - User context for authentication and permissions
|
|
26
|
+
* @param configurationId - Optional configuration ID for environment-specific behavior
|
|
27
|
+
* @returns ExecutionTask[] - Array of execution tasks to be processed
|
|
28
|
+
*/
|
|
9
29
|
createExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
|
|
10
|
-
|
|
30
|
+
LogStatus(`Creating execution plan for prompt "${prompt.Name}" with parallelization mode: ${prompt.ParallelizationMode}`);
|
|
11
31
|
const strategy = prompt.ParallelizationMode;
|
|
12
32
|
switch (strategy) {
|
|
13
33
|
case 'None':
|
|
@@ -19,20 +39,33 @@ class ExecutionPlanner {
|
|
|
19
39
|
case 'ModelSpecific':
|
|
20
40
|
return this.createModelSpecificPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
|
|
21
41
|
default:
|
|
22
|
-
|
|
42
|
+
LogError(`Unknown parallelization strategy: ${strategy}, falling back to single execution`);
|
|
23
43
|
return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
|
|
24
44
|
}
|
|
25
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates a single execution task (no parallelization).
|
|
48
|
+
*
|
|
49
|
+
* Selects the best model based on prompt configuration and creates a single task.
|
|
50
|
+
*
|
|
51
|
+
* @param prompt - The AI prompt to execute
|
|
52
|
+
* @param promptModels - Associated model configurations
|
|
53
|
+
* @param allModels - All available models
|
|
54
|
+
* @param renderedPrompt - Rendered prompt text
|
|
55
|
+
* @param contextUser - User context
|
|
56
|
+
* @param configurationId - Configuration ID
|
|
57
|
+
* @returns ExecutionTask[] - Array containing single execution task
|
|
58
|
+
*/
|
|
26
59
|
createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
|
|
27
60
|
const selectedModel = this.selectBestModel(prompt, promptModels, allModels, configurationId);
|
|
28
61
|
if (!selectedModel) {
|
|
29
|
-
|
|
62
|
+
LogError(`No suitable model found for prompt "${prompt.Name}"`);
|
|
30
63
|
return [];
|
|
31
64
|
}
|
|
32
65
|
const promptModel = promptModels.find((pm) => pm.ModelID === selectedModel.ID);
|
|
33
66
|
const vendorInfo = this.selectVendorForModel(selectedModel);
|
|
34
67
|
const task = {
|
|
35
|
-
taskId: (
|
|
68
|
+
taskId: uuidv4(),
|
|
36
69
|
prompt,
|
|
37
70
|
model: selectedModel,
|
|
38
71
|
promptModel,
|
|
@@ -48,32 +81,46 @@ class ExecutionPlanner {
|
|
|
48
81
|
vendorDriverClass: vendorInfo.vendorDriverClass,
|
|
49
82
|
vendorApiName: vendorInfo.vendorApiName,
|
|
50
83
|
};
|
|
51
|
-
|
|
84
|
+
LogStatus(`Created single execution plan with model: ${selectedModel.Name}`);
|
|
52
85
|
return [task];
|
|
53
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Creates execution tasks based on a static count of parallel executions.
|
|
89
|
+
*
|
|
90
|
+
* Uses the ParallelCount field to determine how many parallel executions to create.
|
|
91
|
+
*
|
|
92
|
+
* @param prompt - The AI prompt to execute
|
|
93
|
+
* @param promptModels - Associated model configurations
|
|
94
|
+
* @param allModels - All available models
|
|
95
|
+
* @param renderedPrompt - Rendered prompt text
|
|
96
|
+
* @param contextUser - User context
|
|
97
|
+
* @param configurationId - Configuration ID
|
|
98
|
+
* @returns ExecutionTask[] - Array of execution tasks for parallel processing
|
|
99
|
+
*/
|
|
54
100
|
createStaticCountPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
|
|
55
101
|
const parallelCount = prompt.ParallelCount || 1;
|
|
56
102
|
if (parallelCount <= 1) {
|
|
57
|
-
|
|
103
|
+
LogStatus(`StaticCount parallelization with count ${parallelCount}, falling back to single execution`);
|
|
58
104
|
return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
|
|
59
105
|
}
|
|
60
106
|
const tasks = [];
|
|
61
107
|
const availableModels = this.getAvailableModels(prompt, promptModels, allModels, configurationId);
|
|
62
108
|
if (availableModels.length === 0) {
|
|
63
|
-
|
|
109
|
+
LogError(`No suitable models found for prompt "${prompt.Name}"`);
|
|
64
110
|
return [];
|
|
65
111
|
}
|
|
112
|
+
// Create tasks by cycling through available models
|
|
66
113
|
for (let i = 0; i < parallelCount; i++) {
|
|
67
114
|
const modelIndex = i % availableModels.length;
|
|
68
115
|
const selectedModel = availableModels[modelIndex];
|
|
69
116
|
const promptModel = promptModels.find((pm) => pm.ModelID === selectedModel.ID);
|
|
70
117
|
const vendorInfo = this.selectVendorForModel(selectedModel);
|
|
71
118
|
const task = {
|
|
72
|
-
taskId: (
|
|
119
|
+
taskId: uuidv4(),
|
|
73
120
|
prompt,
|
|
74
121
|
model: selectedModel,
|
|
75
122
|
promptModel,
|
|
76
|
-
executionGroup: 0,
|
|
123
|
+
executionGroup: 0, // All in same group for true parallelization
|
|
77
124
|
priority: promptModel?.Priority || 0,
|
|
78
125
|
renderedPrompt,
|
|
79
126
|
contextUser,
|
|
@@ -87,37 +134,53 @@ class ExecutionPlanner {
|
|
|
87
134
|
};
|
|
88
135
|
tasks.push(task);
|
|
89
136
|
}
|
|
90
|
-
|
|
137
|
+
LogStatus(`Created StaticCount execution plan with ${tasks.length} parallel tasks`);
|
|
91
138
|
return tasks;
|
|
92
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Creates execution tasks based on a configuration parameter.
|
|
142
|
+
*
|
|
143
|
+
* Looks up the parallel count from a configuration parameter specified in ParallelConfigParam.
|
|
144
|
+
*
|
|
145
|
+
* @param prompt - The AI prompt to execute
|
|
146
|
+
* @param promptModels - Associated model configurations
|
|
147
|
+
* @param allModels - All available models
|
|
148
|
+
* @param renderedPrompt - Rendered prompt text
|
|
149
|
+
* @param contextUser - User context
|
|
150
|
+
* @param configurationId - Configuration ID
|
|
151
|
+
* @returns ExecutionTask[] - Array of execution tasks for parallel processing
|
|
152
|
+
*/
|
|
93
153
|
createConfigParamPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
|
|
94
154
|
const configParamName = prompt.ParallelConfigParam;
|
|
95
155
|
if (!configParamName) {
|
|
96
|
-
|
|
156
|
+
LogError(`ConfigParam parallelization specified but ParallelConfigParam is not set for prompt "${prompt.Name}"`);
|
|
97
157
|
return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
|
|
98
158
|
}
|
|
159
|
+
// Look up the configuration parameter to get the parallel count
|
|
99
160
|
const parallelCount = this.getConfigurationParameter(configParamName, configurationId) || 1;
|
|
100
|
-
|
|
161
|
+
LogStatus(`ConfigParam parallelization: ${configParamName} = ${parallelCount}`);
|
|
162
|
+
// Create tasks using the resolved parallel count
|
|
101
163
|
if (parallelCount <= 1) {
|
|
102
164
|
return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
|
|
103
165
|
}
|
|
104
166
|
const tasks = [];
|
|
105
167
|
const availableModels = this.getAvailableModels(prompt, promptModels, allModels, configurationId);
|
|
106
168
|
if (availableModels.length === 0) {
|
|
107
|
-
|
|
169
|
+
LogError(`No suitable models found for prompt "${prompt.Name}"`);
|
|
108
170
|
return [];
|
|
109
171
|
}
|
|
172
|
+
// Create tasks by cycling through available models
|
|
110
173
|
for (let i = 0; i < parallelCount; i++) {
|
|
111
174
|
const modelIndex = i % availableModels.length;
|
|
112
175
|
const selectedModel = availableModels[modelIndex];
|
|
113
176
|
const promptModel = promptModels.find((pm) => pm.ModelID === selectedModel.ID);
|
|
114
177
|
const vendorInfo = this.selectVendorForModel(selectedModel);
|
|
115
178
|
const task = {
|
|
116
|
-
taskId: (
|
|
179
|
+
taskId: uuidv4(),
|
|
117
180
|
prompt,
|
|
118
181
|
model: selectedModel,
|
|
119
182
|
promptModel,
|
|
120
|
-
executionGroup: 0,
|
|
183
|
+
executionGroup: 0, // All in same group for true parallelization
|
|
121
184
|
priority: promptModel?.Priority || 0,
|
|
122
185
|
renderedPrompt,
|
|
123
186
|
contextUser,
|
|
@@ -131,27 +194,42 @@ class ExecutionPlanner {
|
|
|
131
194
|
};
|
|
132
195
|
tasks.push(task);
|
|
133
196
|
}
|
|
134
|
-
|
|
197
|
+
LogStatus(`Created ConfigParam execution plan with ${tasks.length} parallel tasks`);
|
|
135
198
|
return tasks;
|
|
136
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* Creates execution tasks based on model-specific parallelization settings.
|
|
202
|
+
*
|
|
203
|
+
* Uses individual AIPromptModel configurations to determine execution groups and parallel counts.
|
|
204
|
+
*
|
|
205
|
+
* @param prompt - The AI prompt to execute
|
|
206
|
+
* @param promptModels - Associated model configurations
|
|
207
|
+
* @param allModels - All available models
|
|
208
|
+
* @param renderedPrompt - Rendered prompt text
|
|
209
|
+
* @param contextUser - User context
|
|
210
|
+
* @param configurationId - Configuration ID
|
|
211
|
+
* @returns ExecutionTask[] - Array of execution tasks organized by execution groups
|
|
212
|
+
*/
|
|
137
213
|
createModelSpecificPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole = 'system') {
|
|
138
214
|
const tasks = [];
|
|
139
215
|
const activePromptModels = promptModels.filter((pm) => pm.Status === 'Active' || pm.Status === 'Preview');
|
|
140
216
|
if (activePromptModels.length === 0) {
|
|
141
|
-
|
|
217
|
+
LogError(`No active prompt models found for ModelSpecific parallelization of prompt "${prompt.Name}"`);
|
|
142
218
|
return this.createSingleExecutionPlan(prompt, promptModels, allModels, renderedPrompt, contextUser, configurationId, conversationMessages, templateMessageRole);
|
|
143
219
|
}
|
|
220
|
+
// Create tasks based on each prompt model's configuration
|
|
144
221
|
for (const promptModel of activePromptModels) {
|
|
145
222
|
const model = allModels.find((m) => m.ID === promptModel.ModelID && m.IsActive);
|
|
146
223
|
if (!model) {
|
|
147
|
-
|
|
224
|
+
LogError(`Model ${promptModel.ModelID} not found or inactive for prompt "${prompt.Name}"`);
|
|
148
225
|
continue;
|
|
149
226
|
}
|
|
150
227
|
const parallelCount = this.getModelParallelCount(promptModel);
|
|
228
|
+
// Create multiple tasks for this model if parallel count > 1
|
|
151
229
|
for (let i = 0; i < parallelCount; i++) {
|
|
152
230
|
const vendorInfo = this.selectVendorForModel(model);
|
|
153
231
|
const task = {
|
|
154
|
-
taskId: (
|
|
232
|
+
taskId: uuidv4(),
|
|
155
233
|
prompt,
|
|
156
234
|
model,
|
|
157
235
|
promptModel,
|
|
@@ -170,12 +248,23 @@ class ExecutionPlanner {
|
|
|
170
248
|
tasks.push(task);
|
|
171
249
|
}
|
|
172
250
|
}
|
|
173
|
-
|
|
251
|
+
LogStatus(`Created ModelSpecific execution plan with ${tasks.length} tasks across ${new Set(tasks.map((t) => t.executionGroup)).size} execution groups`);
|
|
174
252
|
return tasks;
|
|
175
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Selects the best model based on prompt configuration and available models.
|
|
256
|
+
*
|
|
257
|
+
* @param prompt - The AI prompt requiring a model
|
|
258
|
+
* @param promptModels - Associated model configurations
|
|
259
|
+
* @param allModels - All available models
|
|
260
|
+
* @param configurationId - Configuration ID
|
|
261
|
+
* @returns AIModelEntityExtended | null - The selected model or null if none suitable
|
|
262
|
+
*/
|
|
176
263
|
selectBestModel(prompt, promptModels, allModels, configurationId) {
|
|
264
|
+
// First try to use prompt-specific models
|
|
177
265
|
const availablePromptModels = promptModels.filter((pm) => (pm.Status === 'Active' || pm.Status === 'Preview') && (!configurationId || !pm.ConfigurationID || pm.ConfigurationID === configurationId));
|
|
178
266
|
if (availablePromptModels.length > 0) {
|
|
267
|
+
// Sort by priority and return the highest priority model
|
|
179
268
|
availablePromptModels.sort((a, b) => b.Priority - a.Priority);
|
|
180
269
|
const selectedPromptModel = availablePromptModels[0];
|
|
181
270
|
const model = allModels.find((m) => m.ID === selectedPromptModel.ModelID && m.IsActive);
|
|
@@ -183,10 +272,12 @@ class ExecutionPlanner {
|
|
|
183
272
|
return model;
|
|
184
273
|
}
|
|
185
274
|
}
|
|
275
|
+
// Fall back to automatic model selection
|
|
186
276
|
const candidateModels = allModels.filter((m) => m.IsActive && m.PowerRank >= (prompt.MinPowerRank || 0) && (!prompt.AIModelTypeID || m.AIModelTypeID === prompt.AIModelTypeID));
|
|
187
277
|
if (candidateModels.length === 0) {
|
|
188
278
|
return null;
|
|
189
279
|
}
|
|
280
|
+
// Sort by power preference
|
|
190
281
|
switch (prompt.PowerPreference) {
|
|
191
282
|
case 'Highest':
|
|
192
283
|
candidateModels.sort((a, b) => b.PowerRank - a.PowerRank);
|
|
@@ -201,12 +292,23 @@ class ExecutionPlanner {
|
|
|
201
292
|
}
|
|
202
293
|
return candidateModels[0];
|
|
203
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Gets all available models for a prompt considering configuration constraints.
|
|
297
|
+
*
|
|
298
|
+
* @param prompt - The AI prompt
|
|
299
|
+
* @param promptModels - Associated model configurations
|
|
300
|
+
* @param allModels - All available models
|
|
301
|
+
* @param configurationId - Configuration ID
|
|
302
|
+
* @returns AIModelEntityExtended[] - Array of suitable models
|
|
303
|
+
*/
|
|
204
304
|
getAvailableModels(prompt, promptModels, allModels, configurationId) {
|
|
205
305
|
const availablePromptModels = promptModels.filter((pm) => (pm.Status === 'Active' || pm.Status === 'Preview') && (!configurationId || !pm.ConfigurationID || pm.ConfigurationID === configurationId));
|
|
206
306
|
if (availablePromptModels.length > 0) {
|
|
307
|
+
// Use prompt-specific models
|
|
207
308
|
const models = availablePromptModels
|
|
208
309
|
.map((pm) => allModels.find((m) => m.ID === pm.ModelID && m.IsActive))
|
|
209
310
|
.filter((m) => m !== undefined);
|
|
311
|
+
// Sort by priority from prompt models
|
|
210
312
|
models.sort((a, b) => {
|
|
211
313
|
const aPriority = availablePromptModels.find((pm) => pm.ModelID === a.ID)?.Priority || 0;
|
|
212
314
|
const bPriority = availablePromptModels.find((pm) => pm.ModelID === b.ID)?.Priority || 0;
|
|
@@ -214,8 +316,15 @@ class ExecutionPlanner {
|
|
|
214
316
|
});
|
|
215
317
|
return models;
|
|
216
318
|
}
|
|
319
|
+
// Fall back to all suitable models
|
|
217
320
|
return allModels.filter((m) => m.IsActive && m.PowerRank >= (prompt.MinPowerRank || 0) && (!prompt.AIModelTypeID || m.AIModelTypeID === prompt.AIModelTypeID));
|
|
218
321
|
}
|
|
322
|
+
/**
|
|
323
|
+
* Determines the parallel count for a specific model configuration.
|
|
324
|
+
*
|
|
325
|
+
* @param promptModel - The prompt model configuration
|
|
326
|
+
* @returns number - Number of parallel executions for this model
|
|
327
|
+
*/
|
|
219
328
|
getModelParallelCount(promptModel) {
|
|
220
329
|
switch (promptModel.ParallelizationMode) {
|
|
221
330
|
case 'StaticCount':
|
|
@@ -229,49 +338,64 @@ class ExecutionPlanner {
|
|
|
229
338
|
return 1;
|
|
230
339
|
}
|
|
231
340
|
}
|
|
341
|
+
/**
|
|
342
|
+
* Looks up a configuration parameter value.
|
|
343
|
+
*
|
|
344
|
+
* @param paramName - Name of the configuration parameter
|
|
345
|
+
* @param configurationId - Configuration context ID
|
|
346
|
+
* @returns number | null - The parameter value or null if not found
|
|
347
|
+
*/
|
|
232
348
|
getConfigurationParameter(paramName, configurationId) {
|
|
233
349
|
if (!paramName) {
|
|
234
350
|
return null;
|
|
235
351
|
}
|
|
236
352
|
if (!configurationId) {
|
|
237
|
-
|
|
353
|
+
LogStatus(`No configuration ID provided for parameter lookup: ${paramName}`);
|
|
238
354
|
return null;
|
|
239
355
|
}
|
|
240
356
|
try {
|
|
241
|
-
const aiEngine =
|
|
357
|
+
const aiEngine = AIEngineBase.Instance;
|
|
242
358
|
const configParam = aiEngine.GetConfigurationParam(configurationId, paramName);
|
|
243
359
|
if (!configParam) {
|
|
244
|
-
|
|
360
|
+
LogStatus(`Configuration parameter "${paramName}" not found in configuration "${configurationId}"`);
|
|
245
361
|
return null;
|
|
246
362
|
}
|
|
363
|
+
// Parse the value based on the Type
|
|
247
364
|
let value = null;
|
|
248
365
|
switch (configParam.Type) {
|
|
249
366
|
case 'number':
|
|
250
367
|
value = parseFloat(configParam.Value);
|
|
251
368
|
if (isNaN(value)) {
|
|
252
|
-
|
|
369
|
+
LogError(`Failed to parse number value for configuration parameter "${paramName}": ${configParam.Value}`);
|
|
253
370
|
return null;
|
|
254
371
|
}
|
|
255
372
|
break;
|
|
256
373
|
case 'string':
|
|
374
|
+
// Try to parse string as number
|
|
257
375
|
value = parseFloat(configParam.Value);
|
|
258
376
|
if (isNaN(value)) {
|
|
259
|
-
|
|
377
|
+
LogError(`Configuration parameter "${paramName}" is a string but expected a number: ${configParam.Value}`);
|
|
260
378
|
return null;
|
|
261
379
|
}
|
|
262
380
|
break;
|
|
263
381
|
default:
|
|
264
|
-
|
|
382
|
+
LogError(`Unsupported data type for parallel count configuration parameter "${paramName}": ${configParam.Type}`);
|
|
265
383
|
return null;
|
|
266
384
|
}
|
|
267
|
-
|
|
385
|
+
LogStatus(`Retrieved configuration parameter "${paramName}" = ${value} from configuration "${configurationId}"`);
|
|
268
386
|
return value;
|
|
269
387
|
}
|
|
270
388
|
catch (error) {
|
|
271
|
-
|
|
389
|
+
LogError(`Error retrieving configuration parameter "${paramName}": ${error.message}`);
|
|
272
390
|
return null;
|
|
273
391
|
}
|
|
274
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* Parses model parameters from JSON string.
|
|
395
|
+
*
|
|
396
|
+
* @param modelParametersJson - JSON string containing model parameters
|
|
397
|
+
* @returns Record<string, any> | undefined - Parsed parameters or undefined
|
|
398
|
+
*/
|
|
275
399
|
parseModelParameters(modelParametersJson) {
|
|
276
400
|
if (!modelParametersJson) {
|
|
277
401
|
return undefined;
|
|
@@ -280,29 +404,37 @@ class ExecutionPlanner {
|
|
|
280
404
|
return JSON.parse(modelParametersJson);
|
|
281
405
|
}
|
|
282
406
|
catch (error) {
|
|
283
|
-
|
|
407
|
+
LogError(`Failed to parse model parameters JSON: ${error.message}`);
|
|
284
408
|
return undefined;
|
|
285
409
|
}
|
|
286
410
|
}
|
|
411
|
+
/**
|
|
412
|
+
* Selects vendor information for a model, preferring inference providers
|
|
413
|
+
*/
|
|
287
414
|
selectVendorForModel(model) {
|
|
288
|
-
|
|
415
|
+
// Find the inference provider type from vendor type definitions
|
|
416
|
+
const inferenceProviderType = AIEngine.Instance.VendorTypeDefinitions.find(vt => vt.Name === 'Inference Provider');
|
|
289
417
|
if (!inferenceProviderType) {
|
|
418
|
+
// Fallback to model defaults if we can't find the inference provider type
|
|
290
419
|
return {
|
|
291
420
|
vendorDriverClass: model.DriverClass,
|
|
292
421
|
vendorApiName: model.APIName
|
|
293
422
|
};
|
|
294
423
|
}
|
|
295
|
-
|
|
424
|
+
// Get active model vendors for this model that are inference providers
|
|
425
|
+
const modelVendors = AIEngine.Instance.ModelVendors
|
|
296
426
|
.filter(mv => mv.ModelID === model.ID &&
|
|
297
427
|
mv.Status === 'Active' &&
|
|
298
428
|
mv.TypeID === inferenceProviderType.ID)
|
|
299
429
|
.sort((a, b) => b.Priority - a.Priority);
|
|
300
430
|
if (modelVendors.length === 0) {
|
|
431
|
+
// No vendors found, use model defaults
|
|
301
432
|
return {
|
|
302
433
|
vendorDriverClass: model.DriverClass,
|
|
303
434
|
vendorApiName: model.APIName
|
|
304
435
|
};
|
|
305
436
|
}
|
|
437
|
+
// Use the highest priority vendor
|
|
306
438
|
const selectedVendor = modelVendors[0];
|
|
307
439
|
return {
|
|
308
440
|
vendorId: selectedVendor.VendorID,
|
|
@@ -311,5 +443,4 @@ class ExecutionPlanner {
|
|
|
311
443
|
};
|
|
312
444
|
}
|
|
313
445
|
}
|
|
314
|
-
exports.ExecutionPlanner = ExecutionPlanner;
|
|
315
446
|
//# sourceMappingURL=ExecutionPlanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExecutionPlanner.js","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExecutionPlanner.js","sourceRoot":"","sources":["../src/ExecutionPlanner.ts"],"names":[],"mappings":"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"}
|