@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 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 Support
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
- #### Failover Strategies
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
- #### Configuration
46
- ```typescript
47
- const promptWithFailover = {
48
- Name: "Critical Analysis",
49
- FailoverStrategy: "SameModelDifferentVendor",
50
- FailoverMaxAttempts: 3,
51
- FailoverDelaySeconds: 2,
52
- FailoverModelStrategy: "PreferSameModel",
53
- FailoverErrorScope: "All" // or "NetworkOnly", "RateLimitOnly", "ServiceErrorOnly"
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
- **Note**: Prompts with `AIModelTypeID = NULL` can use any available model during failover, while prompts with a specific type ID are restricted to models of that type.
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
 
@@ -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":"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"}
1
+ {"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"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"}