@memberjunction/ai-prompts 2.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +639 -0
- package/dist/AIPromptCategoryExtended.d.ts +6 -0
- package/dist/AIPromptCategoryExtended.d.ts.map +1 -0
- package/dist/AIPromptCategoryExtended.js +26 -0
- package/dist/AIPromptCategoryExtended.js.map +1 -0
- package/dist/AIPromptRunner.d.ts +41 -0
- package/dist/AIPromptRunner.d.ts.map +1 -0
- package/dist/AIPromptRunner.js +414 -0
- package/dist/AIPromptRunner.js.map +1 -0
- package/dist/ExecutionPlanner.d.ts +16 -0
- package/dist/ExecutionPlanner.d.ts.map +1 -0
- package/dist/ExecutionPlanner.js +232 -0
- package/dist/ExecutionPlanner.js.map +1 -0
- package/dist/ParallelExecution.d.ts +63 -0
- package/dist/ParallelExecution.d.ts.map +1 -0
- package/dist/ParallelExecution.js +3 -0
- package/dist/ParallelExecution.js.map +1 -0
- package/dist/ParallelExecutionCoordinator.d.ts +19 -0
- package/dist/ParallelExecutionCoordinator.d.ts.map +1 -0
- package/dist/ParallelExecutionCoordinator.js +262 -0
- package/dist/ParallelExecutionCoordinator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/package.json +32 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { UserInfo, ValidationResult } from "@memberjunction/core";
|
|
2
|
+
import { AIPromptEntity, AIPromptRunEntity } from "@memberjunction/core-entities";
|
|
3
|
+
export declare class AIPromptParams {
|
|
4
|
+
prompt: AIPromptEntity;
|
|
5
|
+
data?: any;
|
|
6
|
+
modelId?: string;
|
|
7
|
+
vendorId?: string;
|
|
8
|
+
configurationId?: string;
|
|
9
|
+
contextUser?: UserInfo;
|
|
10
|
+
skipValidation?: boolean;
|
|
11
|
+
templateData?: any;
|
|
12
|
+
}
|
|
13
|
+
export declare class AIPromptRunResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
rawResult?: string;
|
|
16
|
+
result?: any;
|
|
17
|
+
errorMessage?: string;
|
|
18
|
+
promptRun?: AIPromptRunEntity;
|
|
19
|
+
executionTimeMS?: number;
|
|
20
|
+
tokensUsed?: number;
|
|
21
|
+
validationResult?: ValidationResult;
|
|
22
|
+
}
|
|
23
|
+
export declare class AIPromptRunner {
|
|
24
|
+
private _metadata;
|
|
25
|
+
private _templateEngine;
|
|
26
|
+
private _executionPlanner;
|
|
27
|
+
private _parallelCoordinator;
|
|
28
|
+
constructor();
|
|
29
|
+
ExecutePrompt(params: AIPromptParams): Promise<AIPromptRunResult>;
|
|
30
|
+
private executeSinglePrompt;
|
|
31
|
+
private executePromptInParallel;
|
|
32
|
+
private loadTemplate;
|
|
33
|
+
private selectModel;
|
|
34
|
+
private createPromptRun;
|
|
35
|
+
private renderPromptTemplate;
|
|
36
|
+
private executeModel;
|
|
37
|
+
private parseAndValidateResult;
|
|
38
|
+
private updatePromptRun;
|
|
39
|
+
}
|
|
40
|
+
export declare function LoadAIPromptRunner(): void;
|
|
41
|
+
//# sourceMappingURL=AIPromptRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,QAAQ,EAAE,gBAAgB,EAAW,MAAM,sBAAsB,CAAC;AAE/F,OAAO,EAAyB,cAAc,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAWzG,qBAAa,cAAc;IAKvB,MAAM,EAAE,cAAc,CAAC;IAKvB,IAAI,CAAC,EAAE,GAAG,CAAC;IAKX,OAAO,CAAC,EAAE,MAAM,CAAC;IAKjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,WAAW,CAAC,EAAE,QAAQ,CAAC;IAKvB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,YAAY,CAAC,EAAE,GAAG,CAAC;CACtB;AAKD,qBAAa,iBAAiB;IAI1B,OAAO,EAAE,OAAO,CAAC;IAKjB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,MAAM,CAAC,EAAE,GAAG,CAAC;IAKb,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAK9B,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,UAAU,CAAC,EAAE,MAAM,CAAC;IAKpB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAcD,qBAAa,cAAc;IACvB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,oBAAoB,CAA+B;;IAe9C,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;YA4EhE,mBAAmB;YAqDnB,uBAAuB;YAgHvB,YAAY;YAeZ,WAAW;YAuHX,eAAe;YAqDf,oBAAoB;YA2BpB,YAAY;YAuCZ,sBAAsB;YA2FtB,eAAe;CAiChC;AAED,wBAAgB,kBAAkB,SAEjC"}
|
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoadAIPromptRunner = exports.AIPromptRunner = exports.AIPromptRunResult = exports.AIPromptParams = void 0;
|
|
4
|
+
const ai_1 = require("@memberjunction/ai");
|
|
5
|
+
const core_1 = require("@memberjunction/core");
|
|
6
|
+
const global_1 = require("@memberjunction/global");
|
|
7
|
+
const templates_1 = require("@memberjunction/templates");
|
|
8
|
+
const ExecutionPlanner_1 = require("./ExecutionPlanner");
|
|
9
|
+
const ParallelExecutionCoordinator_1 = require("./ParallelExecutionCoordinator");
|
|
10
|
+
const aiengine_1 = require("@memberjunction/aiengine");
|
|
11
|
+
class AIPromptParams {
|
|
12
|
+
}
|
|
13
|
+
exports.AIPromptParams = AIPromptParams;
|
|
14
|
+
class AIPromptRunResult {
|
|
15
|
+
}
|
|
16
|
+
exports.AIPromptRunResult = AIPromptRunResult;
|
|
17
|
+
class AIPromptRunner {
|
|
18
|
+
constructor() {
|
|
19
|
+
this._metadata = new core_1.Metadata();
|
|
20
|
+
this._templateEngine = templates_1.TemplateEngineServer.Instance;
|
|
21
|
+
this._executionPlanner = new ExecutionPlanner_1.ExecutionPlanner();
|
|
22
|
+
this._parallelCoordinator = new ParallelExecutionCoordinator_1.ParallelExecutionCoordinator();
|
|
23
|
+
}
|
|
24
|
+
async ExecutePrompt(params) {
|
|
25
|
+
const startTime = new Date();
|
|
26
|
+
let promptRun = null;
|
|
27
|
+
try {
|
|
28
|
+
const prompt = params.prompt;
|
|
29
|
+
if (!prompt) {
|
|
30
|
+
throw new Error(`Prompt entity is required`);
|
|
31
|
+
}
|
|
32
|
+
if (prompt.Status !== 'Active') {
|
|
33
|
+
throw new Error(`Prompt ${prompt.Name} is not active (Status: ${prompt.Status})`);
|
|
34
|
+
}
|
|
35
|
+
await this._templateEngine.Config(false, params.contextUser);
|
|
36
|
+
const template = await this.loadTemplate(prompt.TemplateID, params.contextUser);
|
|
37
|
+
if (!template) {
|
|
38
|
+
throw new Error(`Template with ID ${prompt.TemplateID} not found for prompt ${prompt.Name}`);
|
|
39
|
+
}
|
|
40
|
+
const renderedPrompt = await this.renderPromptTemplate(template, params.data, params.templateData);
|
|
41
|
+
if (!renderedPrompt.Success) {
|
|
42
|
+
throw new Error(`Failed to render template for prompt ${prompt.Name}: ${renderedPrompt.Message}`);
|
|
43
|
+
}
|
|
44
|
+
const shouldUseParallelExecution = prompt.ParallelizationMode && prompt.ParallelizationMode !== 'None';
|
|
45
|
+
if (shouldUseParallelExecution) {
|
|
46
|
+
return await this.executePromptInParallel(prompt, renderedPrompt.Output, params, startTime);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return await this.executeSinglePrompt(prompt, renderedPrompt.Output, params, startTime);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
(0, core_1.LogError)(error);
|
|
54
|
+
const endTime = new Date();
|
|
55
|
+
const executionTimeMS = endTime.getTime() - startTime.getTime();
|
|
56
|
+
if (promptRun) {
|
|
57
|
+
promptRun.CompletedAt = endTime;
|
|
58
|
+
promptRun.ExecutionTimeMS = executionTimeMS;
|
|
59
|
+
promptRun.Result = `ERROR: ${error.message}`;
|
|
60
|
+
const saveResult = await promptRun.Save();
|
|
61
|
+
if (!saveResult) {
|
|
62
|
+
(0, core_1.LogError)(`Failed to save error to AIPromptRun: ${promptRun.LatestResult?.Message || 'Unknown error'}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
errorMessage: error.message,
|
|
68
|
+
promptRun,
|
|
69
|
+
executionTimeMS
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async executeSinglePrompt(prompt, renderedPromptText, params, startTime) {
|
|
74
|
+
const selectedModel = await this.selectModel(prompt, params.modelId, params.contextUser, params.configurationId, params.vendorId);
|
|
75
|
+
if (!selectedModel) {
|
|
76
|
+
throw new Error(`No suitable model found for prompt ${prompt.Name}`);
|
|
77
|
+
}
|
|
78
|
+
const promptRun = await this.createPromptRun(prompt, selectedModel, params, startTime, params.vendorId);
|
|
79
|
+
const modelResult = await this.executeModel(selectedModel, renderedPromptText, prompt, params.contextUser);
|
|
80
|
+
const parsedResult = await this.parseAndValidateResult(modelResult, prompt, params.skipValidation);
|
|
81
|
+
const endTime = new Date();
|
|
82
|
+
const executionTimeMS = endTime.getTime() - startTime.getTime();
|
|
83
|
+
await this.updatePromptRun(promptRun, modelResult, parsedResult, endTime, executionTimeMS);
|
|
84
|
+
const chatResult = modelResult;
|
|
85
|
+
return {
|
|
86
|
+
success: true,
|
|
87
|
+
rawResult: chatResult.data?.choices?.[0]?.message?.content,
|
|
88
|
+
result: parsedResult.result,
|
|
89
|
+
promptRun,
|
|
90
|
+
executionTimeMS,
|
|
91
|
+
tokensUsed: chatResult.data?.usage?.totalTokens,
|
|
92
|
+
validationResult: parsedResult.validationResult
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async executePromptInParallel(prompt, renderedPromptText, params, startTime) {
|
|
96
|
+
await aiengine_1.AIEngine.Instance.Config(false, params.contextUser);
|
|
97
|
+
const promptModels = aiengine_1.AIEngine.Instance.PromptModels.filter(pm => pm.PromptID === prompt.ID &&
|
|
98
|
+
(pm.Status === 'Active' || pm.Status === 'Preview') &&
|
|
99
|
+
(!params.configurationId || !pm.ConfigurationID || pm.ConfigurationID === params.configurationId));
|
|
100
|
+
const executionTasks = this._executionPlanner.createExecutionPlan(prompt, promptModels, aiengine_1.AIEngine.Instance.Models, renderedPromptText, params.contextUser, params.configurationId);
|
|
101
|
+
if (executionTasks.length === 0) {
|
|
102
|
+
throw new Error(`No execution tasks created for parallel execution of prompt ${prompt.Name}`);
|
|
103
|
+
}
|
|
104
|
+
const parallelResult = await this._parallelCoordinator.executeTasksInParallel(executionTasks);
|
|
105
|
+
if (!parallelResult.success) {
|
|
106
|
+
throw new Error(`Parallel execution failed: ${parallelResult.errors.join(', ')}`);
|
|
107
|
+
}
|
|
108
|
+
const successfulResults = parallelResult.taskResults.filter(r => r.success);
|
|
109
|
+
if (successfulResults.length === 0) {
|
|
110
|
+
throw new Error(`No successful results from parallel execution`);
|
|
111
|
+
}
|
|
112
|
+
let selectedResult = successfulResults[0];
|
|
113
|
+
if (successfulResults.length > 1 && prompt.ResultSelectorPromptID) {
|
|
114
|
+
const selectionConfig = {
|
|
115
|
+
method: 'PromptSelector',
|
|
116
|
+
selectorPromptId: prompt.ResultSelectorPromptID
|
|
117
|
+
};
|
|
118
|
+
const aiSelectedResult = await this._parallelCoordinator.selectBestResult(successfulResults, selectionConfig);
|
|
119
|
+
if (aiSelectedResult) {
|
|
120
|
+
selectedResult = aiSelectedResult;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const consolidatedPromptRun = await this.createPromptRun(prompt, selectedResult.task.model, params, startTime, params.vendorId);
|
|
124
|
+
const endTime = new Date();
|
|
125
|
+
consolidatedPromptRun.CompletedAt = endTime;
|
|
126
|
+
consolidatedPromptRun.ExecutionTimeMS = parallelResult.totalExecutionTimeMS;
|
|
127
|
+
consolidatedPromptRun.Result = selectedResult.rawResult || '';
|
|
128
|
+
consolidatedPromptRun.TokensUsed = parallelResult.totalTokensUsed;
|
|
129
|
+
const parallelMetadata = {
|
|
130
|
+
parallelizationMode: prompt.ParallelizationMode,
|
|
131
|
+
totalTasks: executionTasks.length,
|
|
132
|
+
successfulTasks: parallelResult.successCount,
|
|
133
|
+
failedTasks: parallelResult.failureCount,
|
|
134
|
+
selectedTaskId: selectedResult.task.taskId,
|
|
135
|
+
executionGroups: Array.from(parallelResult.groupResults.keys())
|
|
136
|
+
};
|
|
137
|
+
if (params.data || params.templateData || parallelMetadata) {
|
|
138
|
+
consolidatedPromptRun.Messages = JSON.stringify({
|
|
139
|
+
data: params.data,
|
|
140
|
+
templateData: params.templateData,
|
|
141
|
+
parallelExecution: parallelMetadata
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
const saveResult = await consolidatedPromptRun.Save();
|
|
145
|
+
if (!saveResult) {
|
|
146
|
+
(0, core_1.LogError)(`Failed to save consolidated AIPromptRun: ${consolidatedPromptRun.LatestResult?.Message || 'Unknown error'}`);
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
success: true,
|
|
150
|
+
rawResult: selectedResult.rawResult,
|
|
151
|
+
result: selectedResult.parsedResult,
|
|
152
|
+
promptRun: consolidatedPromptRun,
|
|
153
|
+
executionTimeMS: parallelResult.totalExecutionTimeMS,
|
|
154
|
+
tokensUsed: parallelResult.totalTokensUsed,
|
|
155
|
+
validationResult: selectedResult.validationResult
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
async loadTemplate(templateId, _contextUser) {
|
|
159
|
+
try {
|
|
160
|
+
const template = this._templateEngine.Templates.find((t) => t.ID === templateId);
|
|
161
|
+
return template || null;
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
(0, core_1.LogError)(`Error loading template ${templateId}: ${error.message}`);
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async selectModel(prompt, explicitModelId, contextUser, configurationId, vendorId) {
|
|
169
|
+
try {
|
|
170
|
+
await aiengine_1.AIEngine.Instance.Config(false, contextUser);
|
|
171
|
+
let vendorName;
|
|
172
|
+
if (vendorId) {
|
|
173
|
+
try {
|
|
174
|
+
const rv = new core_1.RunView();
|
|
175
|
+
const vendorResult = await rv.RunView({
|
|
176
|
+
EntityName: 'AI Vendors',
|
|
177
|
+
ExtraFilter: `ID='${vendorId}'`,
|
|
178
|
+
ResultType: 'entity_object'
|
|
179
|
+
});
|
|
180
|
+
if (vendorResult.Results && vendorResult.Results.length > 0) {
|
|
181
|
+
vendorName = vendorResult.Results[0].Name;
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
(0, core_1.LogError)(`Vendor with ID ${vendorId} not found`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
(0, core_1.LogError)(`Error loading vendor ${vendorId}: ${error.message}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (explicitModelId) {
|
|
192
|
+
const model = aiengine_1.AIEngine.Instance.Models.find(m => m.ID === explicitModelId &&
|
|
193
|
+
(!vendorName || m.Vendor === vendorName));
|
|
194
|
+
if (model && model.IsActive) {
|
|
195
|
+
return model;
|
|
196
|
+
}
|
|
197
|
+
(0, core_1.LogError)(`Explicit model ${explicitModelId} not found, inactive, or not from specified vendor, using prompt model selection`);
|
|
198
|
+
}
|
|
199
|
+
const promptModels = aiengine_1.AIEngine.Instance.PromptModels.filter(pm => pm.PromptID === prompt.ID &&
|
|
200
|
+
(pm.Status === 'Active' ||
|
|
201
|
+
pm.Status === 'Preview') &&
|
|
202
|
+
(!configurationId || !pm.ConfigurationID || pm.ConfigurationID === configurationId));
|
|
203
|
+
let candidateModels = [];
|
|
204
|
+
if (promptModels.length > 0) {
|
|
205
|
+
candidateModels = promptModels
|
|
206
|
+
.map(pm => aiengine_1.AIEngine.Instance.Models.find(m => m.ID === pm.ModelID))
|
|
207
|
+
.filter(m => m &&
|
|
208
|
+
m.IsActive &&
|
|
209
|
+
(!vendorName || m.Vendor === vendorName));
|
|
210
|
+
candidateModels.sort((a, b) => {
|
|
211
|
+
const aPriority = promptModels.find(pm => pm.ModelID === a.ID)?.Priority || 0;
|
|
212
|
+
const bPriority = promptModels.find(pm => pm.ModelID === b.ID)?.Priority || 0;
|
|
213
|
+
return bPriority - aPriority;
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
const minPowerRank = prompt.MinPowerRank || 0;
|
|
218
|
+
candidateModels = aiengine_1.AIEngine.Instance.Models.filter(m => m.IsActive &&
|
|
219
|
+
m.PowerRank >= minPowerRank &&
|
|
220
|
+
(!prompt.AIModelTypeID || m.AIModelTypeID === prompt.AIModelTypeID) &&
|
|
221
|
+
(!vendorName || m.Vendor === vendorName));
|
|
222
|
+
switch (prompt.PowerPreference) {
|
|
223
|
+
case 'Highest':
|
|
224
|
+
candidateModels.sort((a, b) => b.PowerRank - a.PowerRank);
|
|
225
|
+
break;
|
|
226
|
+
case 'Lowest':
|
|
227
|
+
candidateModels.sort((a, b) => a.PowerRank - b.PowerRank);
|
|
228
|
+
break;
|
|
229
|
+
case 'Balanced':
|
|
230
|
+
default:
|
|
231
|
+
candidateModels.sort((a, b) => b.PowerRank - a.PowerRank);
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (candidateModels.length === 0) {
|
|
236
|
+
(0, core_1.LogError)(`No suitable models found for prompt ${prompt.Name}`);
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
return candidateModels[0];
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
(0, core_1.LogError)(`Error selecting model for prompt ${prompt.Name}: ${error.message}`);
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async createPromptRun(prompt, model, params, startTime, vendorId) {
|
|
247
|
+
try {
|
|
248
|
+
const promptRun = await this._metadata.GetEntityObject('MJ: AI Prompt Runs', params.contextUser);
|
|
249
|
+
promptRun.NewRecord();
|
|
250
|
+
promptRun.PromptID = prompt.ID;
|
|
251
|
+
promptRun.ModelID = model.ID;
|
|
252
|
+
if (vendorId) {
|
|
253
|
+
promptRun.VendorID = vendorId;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
const promptModels = aiengine_1.AIEngine.Instance.PromptModels.filter(pm => pm.ModelID === model.ID)
|
|
257
|
+
.sort((a, b) => b.Priority - a.Priority);
|
|
258
|
+
if (promptModels.length > 0) {
|
|
259
|
+
const highestPriorityModel = promptModels[0];
|
|
260
|
+
promptRun.VendorID = highestPriorityModel.VendorID;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
promptRun.ConfigurationID = params.configurationId;
|
|
264
|
+
promptRun.RunAt = startTime;
|
|
265
|
+
if (params.data || params.templateData) {
|
|
266
|
+
promptRun.Messages = JSON.stringify({
|
|
267
|
+
data: params.data,
|
|
268
|
+
templateData: params.templateData
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
const saveResult = await promptRun.Save();
|
|
272
|
+
if (!saveResult) {
|
|
273
|
+
const error = `Failed to save AIPromptRun: ${promptRun.LatestResult?.Message || 'Unknown error'}`;
|
|
274
|
+
(0, core_1.LogError)(error);
|
|
275
|
+
throw new Error(error);
|
|
276
|
+
}
|
|
277
|
+
return promptRun;
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
(0, core_1.LogError)(`Error creating prompt run record: ${error.message}`);
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
async renderPromptTemplate(template, data, templateData) {
|
|
285
|
+
try {
|
|
286
|
+
const templateContent = template.GetHighestPriorityContent();
|
|
287
|
+
if (!templateContent) {
|
|
288
|
+
throw new Error(`No content found for template ${template.Name}`);
|
|
289
|
+
}
|
|
290
|
+
const mergedData = { ...data, ...templateData };
|
|
291
|
+
return await this._templateEngine.RenderTemplate(template, templateContent, mergedData);
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
(0, core_1.LogError)(`Error rendering template: ${error.message}`);
|
|
295
|
+
throw error;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
async executeModel(model, renderedPrompt, prompt, _contextUser) {
|
|
299
|
+
try {
|
|
300
|
+
const apiKey = (0, ai_1.GetAIAPIKey)(model.DriverClass);
|
|
301
|
+
const llm = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(ai_1.BaseLLM, model.DriverClass, apiKey);
|
|
302
|
+
const params = new ai_1.ChatParams();
|
|
303
|
+
params.model = model.APIName;
|
|
304
|
+
params.messages = [
|
|
305
|
+
{
|
|
306
|
+
role: ai_1.ChatMessageRole.user,
|
|
307
|
+
content: renderedPrompt
|
|
308
|
+
}
|
|
309
|
+
];
|
|
310
|
+
if (prompt.ResponseFormat && prompt.ResponseFormat !== 'Any') {
|
|
311
|
+
}
|
|
312
|
+
return await llm.ChatCompletion(params);
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
(0, core_1.LogError)(`Error executing model ${model.Name}: ${error.message}`);
|
|
316
|
+
throw error;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
async parseAndValidateResult(modelResult, prompt, skipValidation = false) {
|
|
320
|
+
try {
|
|
321
|
+
if (!modelResult.success) {
|
|
322
|
+
throw new Error(`Model execution failed: ${modelResult.errorMessage}`);
|
|
323
|
+
}
|
|
324
|
+
const rawOutput = modelResult.data?.choices?.[0]?.message?.content;
|
|
325
|
+
if (!rawOutput) {
|
|
326
|
+
throw new Error('No output received from model');
|
|
327
|
+
}
|
|
328
|
+
let parsedResult = rawOutput;
|
|
329
|
+
switch (prompt.OutputType) {
|
|
330
|
+
case 'string':
|
|
331
|
+
parsedResult = rawOutput.toString();
|
|
332
|
+
break;
|
|
333
|
+
case 'number':
|
|
334
|
+
parsedResult = parseFloat(rawOutput);
|
|
335
|
+
if (isNaN(parsedResult)) {
|
|
336
|
+
throw new Error(`Expected number output but got: ${rawOutput}`);
|
|
337
|
+
}
|
|
338
|
+
break;
|
|
339
|
+
case 'boolean':
|
|
340
|
+
const lowerOutput = rawOutput.toLowerCase().trim();
|
|
341
|
+
if (['true', 'yes', '1'].includes(lowerOutput)) {
|
|
342
|
+
parsedResult = true;
|
|
343
|
+
}
|
|
344
|
+
else if (['false', 'no', '0'].includes(lowerOutput)) {
|
|
345
|
+
parsedResult = false;
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
throw new Error(`Expected boolean output but got: ${rawOutput}`);
|
|
349
|
+
}
|
|
350
|
+
break;
|
|
351
|
+
case 'date':
|
|
352
|
+
parsedResult = new Date(rawOutput);
|
|
353
|
+
if (isNaN(parsedResult.getTime())) {
|
|
354
|
+
throw new Error(`Expected date output but got: ${rawOutput}`);
|
|
355
|
+
}
|
|
356
|
+
break;
|
|
357
|
+
case 'object':
|
|
358
|
+
try {
|
|
359
|
+
parsedResult = JSON.parse(rawOutput);
|
|
360
|
+
}
|
|
361
|
+
catch (jsonError) {
|
|
362
|
+
throw new Error(`Expected JSON object but got invalid JSON: ${rawOutput}`);
|
|
363
|
+
}
|
|
364
|
+
break;
|
|
365
|
+
default:
|
|
366
|
+
parsedResult = rawOutput;
|
|
367
|
+
}
|
|
368
|
+
const validationResult = new core_1.ValidationResult();
|
|
369
|
+
validationResult.Success = true;
|
|
370
|
+
if (!skipValidation && prompt.OutputExample && prompt.OutputType === 'object') {
|
|
371
|
+
}
|
|
372
|
+
return { result: parsedResult, validationResult };
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
(0, core_1.LogError)(`Error parsing/validating result: ${error.message}`);
|
|
376
|
+
switch (prompt.ValidationBehavior) {
|
|
377
|
+
case 'Strict':
|
|
378
|
+
throw error;
|
|
379
|
+
case 'Warn':
|
|
380
|
+
(0, core_1.LogError)(`Validation warning for prompt ${prompt.Name}: ${error.message}`);
|
|
381
|
+
return { result: modelResult.data?.choices?.[0]?.message?.content };
|
|
382
|
+
case 'None':
|
|
383
|
+
default:
|
|
384
|
+
return { result: modelResult.data?.choices?.[0]?.message?.content };
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
async updatePromptRun(promptRun, modelResult, parsedResult, endTime, executionTimeMS) {
|
|
389
|
+
try {
|
|
390
|
+
promptRun.CompletedAt = endTime;
|
|
391
|
+
promptRun.ExecutionTimeMS = executionTimeMS;
|
|
392
|
+
promptRun.Result = typeof parsedResult.result === 'string'
|
|
393
|
+
? parsedResult.result
|
|
394
|
+
: JSON.stringify(parsedResult.result);
|
|
395
|
+
if (modelResult.data?.usage) {
|
|
396
|
+
promptRun.TokensUsed = modelResult.data.usage.totalTokens;
|
|
397
|
+
promptRun.TokensPrompt = modelResult.data.usage.promptTokens;
|
|
398
|
+
promptRun.TokensCompletion = modelResult.data.usage.completionTokens;
|
|
399
|
+
}
|
|
400
|
+
const saveResult = await promptRun.Save();
|
|
401
|
+
if (!saveResult) {
|
|
402
|
+
(0, core_1.LogError)(`Failed to update AIPromptRun with results: ${promptRun.LatestResult?.Message || 'Unknown error'}`);
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
catch (error) {
|
|
406
|
+
(0, core_1.LogError)(`Error updating prompt run: ${error.message}`);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
exports.AIPromptRunner = AIPromptRunner;
|
|
411
|
+
function LoadAIPromptRunner() {
|
|
412
|
+
}
|
|
413
|
+
exports.LoadAIPromptRunner = LoadAIPromptRunner;
|
|
414
|
+
//# sourceMappingURL=AIPromptRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIPromptRunner.js","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { UserInfo } from "@memberjunction/core";
|
|
2
|
+
import { AIPromptEntity, AIPromptModelEntity, AIModelEntityExtended } from "@memberjunction/core-entities";
|
|
3
|
+
import { ExecutionTask } from "./ParallelExecution";
|
|
4
|
+
export declare class ExecutionPlanner {
|
|
5
|
+
createExecutionPlan(prompt: AIPromptEntity, promptModels: AIPromptModelEntity[], allModels: AIModelEntityExtended[], renderedPrompt: string, contextUser?: UserInfo, configurationId?: string): ExecutionTask[];
|
|
6
|
+
private createSingleExecutionPlan;
|
|
7
|
+
private createStaticCountPlan;
|
|
8
|
+
private createConfigParamPlan;
|
|
9
|
+
private createModelSpecificPlan;
|
|
10
|
+
private selectBestModel;
|
|
11
|
+
private getAvailableModels;
|
|
12
|
+
private getModelParallelCount;
|
|
13
|
+
private getConfigurationParameter;
|
|
14
|
+
private parseModelParameters;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=ExecutionPlanner.d.ts.map
|
|
@@ -0,0 +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,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3G,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAY7E,qBAAa,gBAAgB;IAgBlB,mBAAmB,CACtB,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,mBAAmB,EAAE,EACnC,SAAS,EAAE,qBAAqB,EAAE,EAClC,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,QAAQ,EACtB,eAAe,CAAC,EAAE,MAAM,GACzB,aAAa,EAAE;IAqClB,OAAO,CAAC,yBAAyB;IA+CjC,OAAO,CAAC,qBAAqB;IA8D7B,OAAO,CAAC,qBAAqB;IAyE7B,OAAO,CAAC,uBAAuB;IA6D/B,OAAO,CAAC,eAAe;IA4DvB,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,yBAAyB;IAkBjC,OAAO,CAAC,oBAAoB;CAY/B"}
|