@memberjunction/ai-prompts 2.117.0 → 2.119.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 +125 -17
- package/dist/AIPromptRunner.d.ts +17 -0
- package/dist/AIPromptRunner.d.ts.map +1 -1
- package/dist/AIPromptRunner.js +296 -222
- package/dist/AIPromptRunner.js.map +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -34,27 +34,135 @@ params.effortLevel = 85; // High effort for thorough analysis
|
|
|
34
34
|
const result = await AIPromptRunner.RunPrompt(params);
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
### 🛡️ Intelligent Failover
|
|
38
|
-
Automatic failover when AI providers experience outages, rate limits, or service degradation. The system intelligently switches between models and vendors to ensure reliable prompt execution.
|
|
37
|
+
### 🛡️ Model Selection & Intelligent Failover
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
- **SameModelDifferentVendor**: Try the same model from different providers
|
|
42
|
-
- **NextBestModel**: Switch to alternative models based on power rankings
|
|
43
|
-
- **PowerRank**: Use the global model power ranking for selection
|
|
39
|
+
The AI Prompts system provides sophisticated model selection with instant failover across models and vendors. Configure explicit model/vendor priorities using `AIPromptModel` records, and the system automatically tries all candidates in order when errors occur.
|
|
44
40
|
|
|
45
|
-
####
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
#### Selection Strategies
|
|
42
|
+
|
|
43
|
+
**`SelectionStrategy='Specific'`** (Recommended for production)
|
|
44
|
+
- Use explicit `AIPromptModel` configuration for complete control
|
|
45
|
+
- Configuration-specific models tried before universal fallbacks
|
|
46
|
+
- Priority determines order (higher number = tried first)
|
|
47
|
+
- Instant failover to next candidate on any error
|
|
48
|
+
|
|
49
|
+
**`SelectionStrategy='ByPower'`**
|
|
50
|
+
- Automatically selects models based on `PowerRank`
|
|
51
|
+
- Use `PowerPreference`: `Highest`, `Lowest`, or `Balanced`
|
|
52
|
+
|
|
53
|
+
**`SelectionStrategy='Default'`**
|
|
54
|
+
- Uses model type filtering and power ranking
|
|
55
|
+
|
|
56
|
+
#### Model Ranking Algorithm (Specific Strategy)
|
|
57
|
+
|
|
58
|
+
When using `SelectionStrategy='Specific'`, candidates are prioritized using clear, predictable rules:
|
|
59
|
+
|
|
60
|
+
```mermaid
|
|
61
|
+
sequenceDiagram
|
|
62
|
+
participant User as User Request
|
|
63
|
+
participant Engine as AIPromptRunner
|
|
64
|
+
participant DB as AIPromptModel Table
|
|
65
|
+
participant Exec as Execution
|
|
66
|
+
|
|
67
|
+
User->>Engine: Execute Prompt with ConfigurationID
|
|
68
|
+
Engine->>DB: Get AIPromptModel records
|
|
69
|
+
DB-->>Engine: Return all records for prompt
|
|
70
|
+
|
|
71
|
+
Note over Engine: Filter Phase
|
|
72
|
+
Engine->>Engine: Keep: ConfigurationID match OR NULL
|
|
73
|
+
Engine->>Engine: Exclude: Different ConfigurationID
|
|
74
|
+
|
|
75
|
+
Note over Engine: Sort Phase (2-level)
|
|
76
|
+
Engine->>Engine: 1. Config-match before Universal
|
|
77
|
+
Engine->>Engine: 2. Priority DESC within group
|
|
78
|
+
|
|
79
|
+
Note over Engine: Expand Phase
|
|
80
|
+
loop For each AIPromptModel
|
|
81
|
+
alt VendorID specified
|
|
82
|
+
Engine->>Engine: Create 1 candidate (Model+Vendor)
|
|
83
|
+
else VendorID is NULL
|
|
84
|
+
Engine->>Engine: Create N candidates (all vendors)
|
|
85
|
+
Engine->>Engine: Sort by AIModelVendor.Priority DESC
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
Engine->>Exec: Try candidates in order
|
|
90
|
+
|
|
91
|
+
loop Instant Failover
|
|
92
|
+
Exec->>Exec: Try Candidate N
|
|
93
|
+
alt Success
|
|
94
|
+
Exec-->>User: Return result
|
|
95
|
+
else Recoverable Error
|
|
96
|
+
Exec->>Exec: Try Candidate N+1 (instant)
|
|
97
|
+
else Fatal Error
|
|
98
|
+
Exec-->>User: Fail immediately
|
|
99
|
+
end
|
|
100
|
+
end
|
|
55
101
|
```
|
|
56
102
|
|
|
57
|
-
|
|
103
|
+
#### Configuration Rules
|
|
104
|
+
|
|
105
|
+
**Priority Precedence:**
|
|
106
|
+
1. **Configuration-specific** models (matching `ConfigurationID`) - Always tried first
|
|
107
|
+
2. **Universal** models (`ConfigurationID = NULL`) - Fallback options
|
|
108
|
+
3. Within each group: **Higher Priority number** tried first
|
|
109
|
+
|
|
110
|
+
**Configuration Filtering:**
|
|
111
|
+
- If `ConfigurationID` provided: Use matching config + universal (NULL) models
|
|
112
|
+
- If NO `ConfigurationID`: Use ONLY universal (NULL) models
|
|
113
|
+
- Models with DIFFERENT `ConfigurationID` are EXCLUDED
|
|
114
|
+
|
|
115
|
+
**Vendor Expansion:**
|
|
116
|
+
- `AIPromptModel.VendorID` specified → Single candidate (exact model+vendor)
|
|
117
|
+
- `AIPromptModel.VendorID = NULL` → Multiple candidates (all vendors for that model, sorted by `AIModelVendor.Priority DESC`)
|
|
118
|
+
|
|
119
|
+
#### Example Configuration
|
|
120
|
+
|
|
121
|
+
```sql
|
|
122
|
+
-- Example: Production prompt with config-specific and universal fallbacks
|
|
123
|
+
INSERT INTO AIPromptModel (PromptID, ModelID, VendorID, ConfigurationID, Priority, Status) VALUES
|
|
124
|
+
-- Config-specific models (tried first, regardless of priority number)
|
|
125
|
+
(@promptId, @gpt4Id, @openaiId, @prodConfigId, 5, 'Active'),
|
|
126
|
+
(@promptId, @gpt4Id, @azureId, @prodConfigId, 3, 'Active'),
|
|
127
|
+
|
|
128
|
+
-- Universal fallbacks (tried after config-specific, despite higher priority numbers)
|
|
129
|
+
(@promptId, @claudeId, @anthropicId, NULL, 10, 'Active'),
|
|
130
|
+
(@promptId, @geminiId, @googleId, NULL, 8, 'Active');
|
|
131
|
+
|
|
132
|
+
-- Example: Multi-vendor support for same model
|
|
133
|
+
INSERT INTO AIPromptModel (PromptID, ModelID, VendorID, ConfigurationID, Priority, Status) VALUES
|
|
134
|
+
(@promptId, @gpt4Id, NULL, @prodConfigId, 10, 'Active');
|
|
135
|
+
-- VendorID=NULL expands to all vendors (OpenAI, Azure, Groq)
|
|
136
|
+
-- Vendors sorted by AIModelVendor.Priority
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Execution order for above config with ConfigurationID=@prodConfigId:**
|
|
140
|
+
1. GPT-4/OpenAI (Config match, Priority 5)
|
|
141
|
+
2. GPT-4/Azure (Config match, Priority 3)
|
|
142
|
+
3. GPT-4/OpenAI (From VendorID=NULL expansion, highest AIModelVendor.Priority)
|
|
143
|
+
4. GPT-4/Azure (From VendorID=NULL expansion)
|
|
144
|
+
5. GPT-4/Groq (From VendorID=NULL expansion, lowest AIModelVendor.Priority)
|
|
145
|
+
6. Claude/Anthropic (Universal fallback, Priority 10)
|
|
146
|
+
7. Gemini/Google (Universal fallback, Priority 8)
|
|
147
|
+
|
|
148
|
+
#### Failover Behavior
|
|
149
|
+
|
|
150
|
+
**Instant Failover** - No delays between candidates
|
|
151
|
+
- Authentication errors → Filters out all candidates from failed vendor
|
|
152
|
+
- Fatal errors → Stops immediately
|
|
153
|
+
- Recoverable errors → Tries next candidate instantly
|
|
154
|
+
|
|
155
|
+
**Validation Retry** - After all candidates exhausted
|
|
156
|
+
- If all candidates fail, retries entire list with delays
|
|
157
|
+
- Uses `AIPrompt.MaxRetries` and `RetryDelayMode` (Fixed/Linear/Exponential)
|
|
158
|
+
|
|
159
|
+
**Error Handling:**
|
|
160
|
+
```typescript
|
|
161
|
+
// SelectionStrategy='Specific' with no candidates throws error
|
|
162
|
+
if (strategy === 'Specific' && candidates.length === 0) {
|
|
163
|
+
throw new Error('Please configure AIPromptModel records for this prompt');
|
|
164
|
+
}
|
|
165
|
+
```
|
|
58
166
|
|
|
59
167
|
### 🎯 Dynamic Hierarchical Template Composition
|
|
60
168
|
|
package/dist/AIPromptRunner.d.ts
CHANGED
|
@@ -56,6 +56,22 @@ export declare class AIPromptRunner {
|
|
|
56
56
|
private renderPromptWithChildTemplates;
|
|
57
57
|
private selectModel;
|
|
58
58
|
private buildModelVendorCandidates;
|
|
59
|
+
private buildCandidatesForExplicitModel;
|
|
60
|
+
private buildCandidatesForSpecificStrategy;
|
|
61
|
+
private buildCandidatesForGeneralSelection;
|
|
62
|
+
private filterPromptModelsByConfiguration;
|
|
63
|
+
private sortPromptModelsForSpecificStrategy;
|
|
64
|
+
private buildCandidatesFromPromptModels;
|
|
65
|
+
private createCandidateForSpecificVendor;
|
|
66
|
+
private createCandidatesForAllVendors;
|
|
67
|
+
private getPromptModelsForConfiguration;
|
|
68
|
+
private addPromptSpecificCandidates;
|
|
69
|
+
private addConfigurationFallbackCandidates;
|
|
70
|
+
private addStrategyBasedCandidates;
|
|
71
|
+
private getModelPoolForStrategy;
|
|
72
|
+
private sortModelPoolByStrategy;
|
|
73
|
+
private sortByPowerPreference;
|
|
74
|
+
private createCandidatesForModel;
|
|
59
75
|
private createSelectionInfo;
|
|
60
76
|
private buildCandidatesFromSelectionInfo;
|
|
61
77
|
private selectModelWithAPIKeyTracked;
|
|
@@ -91,6 +107,7 @@ export declare class AIPromptRunner {
|
|
|
91
107
|
private updatePromptRun;
|
|
92
108
|
protected getFailoverConfiguration(prompt: AIPromptEntityExtended): FailoverConfiguration;
|
|
93
109
|
protected shouldAttemptFailover(error: Error, config: FailoverConfiguration, attemptNumber: number): boolean;
|
|
110
|
+
private errorMatchesScope;
|
|
94
111
|
protected calculateFailoverDelay(attemptNumber: number, baseDelaySeconds: number): number;
|
|
95
112
|
protected selectFailoverCandidates(currentModel: AIModelEntityExtended, currentVendorId: string | undefined, strategy: FailoverConfiguration['strategy'], modelStrategy: FailoverConfiguration['modelStrategy'], allCandidates: ModelVendorCandidate[], attemptHistory: FailoverAttempt[]): ModelVendorCandidate[];
|
|
96
113
|
protected logFailoverAttempt(promptId: string, attempt: FailoverAttempt, willRetry: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":";AAAA,OAAO,EAAuB,UAAU,EAAmB,WAAW,EAA2C,MAAM,oBAAoB,CAAC;AAC5I,OAAO,EAAqB,iBAAiB,EAAwB,MAAM,8BAA8B,CAAC;AAG1G,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,yBAAyB,EAA2G,MAAM,+BAA+B,CAAC;AAQlO,OAAO,EACH,mBAAmB,EAEnB,cAAc,EACjB,MAAM,8BAA8B,CAAC;AAkEtC,UAAU,oBAAoB;IAC5B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;CACnE;AAMD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,0BAA0B,GAAG,eAAe,GAAG,WAAW,GAAG,MAAM,CAAC;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,iBAAiB,GAAG,sBAAsB,GAAG,kBAAkB,CAAC;IAChF,UAAU,CAAC,EAAE,KAAK,GAAG,aAAa,GAAG,eAAe,GAAG,kBAAkB,CAAC;CAC3E;AAKD,UAAU,eAAe;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,cAAc,CAAgB;;IActC,OAAO,CAAC,aAAa;IAgBrB,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,GAAE,OAAe,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI;IAejG,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE;QAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,CAAC,EAAE,sBAAsB,CAAC;QAChC,KAAK,CAAC,EAAE,qBAAqB,CAAC;QAC9B,QAAQ,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;QAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,IAAI;IAwCR,OAAO,CAAC,mBAAmB;IA2Cd,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YA2MhF,mBAAmB;YA2HnB,uBAAuB;YA8QvB,YAAY;YA0BZ,0BAA0B;YAsJ1B,8BAA8B;YAwE9B,WAAW;IAkMzB,OAAO,CAAC,0BAA0B;
|
|
1
|
+
{"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"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"}
|