@stackbilt/llm-providers 1.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/LICENSE +201 -0
- package/README.md +261 -0
- package/dist/errors.d.ts +79 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +183 -0
- package/dist/errors.js.map +1 -0
- package/dist/factory.d.ts +95 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +418 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +137 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +263 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/anthropic.d.ts +38 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +378 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +107 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +230 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/cerebras.d.ts +30 -0
- package/dist/providers/cerebras.d.ts.map +1 -0
- package/dist/providers/cerebras.js +292 -0
- package/dist/providers/cerebras.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +47 -0
- package/dist/providers/cloudflare.d.ts.map +1 -0
- package/dist/providers/cloudflare.js +544 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/groq.d.ts +30 -0
- package/dist/providers/groq.d.ts.map +1 -0
- package/dist/providers/groq.js +222 -0
- package/dist/providers/groq.js.map +1 -0
- package/dist/providers/openai.d.ts +36 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +331 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/types.d.ts +238 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +111 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +365 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/cost-tracker.d.ts +130 -0
- package/dist/utils/cost-tracker.d.ts.map +1 -0
- package/dist/utils/cost-tracker.js +272 -0
- package/dist/utils/cost-tracker.js.map +1 -0
- package/dist/utils/credit-ledger.d.ts +161 -0
- package/dist/utils/credit-ledger.d.ts.map +1 -0
- package/dist/utils/credit-ledger.js +463 -0
- package/dist/utils/credit-ledger.js.map +1 -0
- package/dist/utils/retry.d.ts +46 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +125 -0
- package/dist/utils/retry.js.map +1 -0
- package/package.json +57 -0
package/dist/factory.js
ADDED
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider Factory
|
|
3
|
+
* Creates and manages LLM provider instances with intelligent fallback logic
|
|
4
|
+
*/
|
|
5
|
+
import { OpenAIProvider } from './providers/openai';
|
|
6
|
+
import { AnthropicProvider } from './providers/anthropic';
|
|
7
|
+
import { CloudflareProvider } from './providers/cloudflare';
|
|
8
|
+
import { CerebrasProvider } from './providers/cerebras';
|
|
9
|
+
import { GroqProvider } from './providers/groq';
|
|
10
|
+
import { defaultCostTracker } from './utils/cost-tracker';
|
|
11
|
+
import { defaultCircuitBreakerManager } from './utils/circuit-breaker';
|
|
12
|
+
import { LLMProviderError, ConfigurationError, CircuitBreakerOpenError, AuthenticationError, RateLimitError } from './errors';
|
|
13
|
+
export class LLMProviderFactory {
|
|
14
|
+
providers = new Map();
|
|
15
|
+
config;
|
|
16
|
+
costTracker;
|
|
17
|
+
fallbackRules;
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.costTracker = defaultCostTracker;
|
|
21
|
+
this.fallbackRules = config.fallbackRules || this.getDefaultFallbackRules();
|
|
22
|
+
this.initializeProviders();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize all configured providers
|
|
26
|
+
*/
|
|
27
|
+
initializeProviders() {
|
|
28
|
+
// Initialize OpenAI provider
|
|
29
|
+
if (this.config.openai) {
|
|
30
|
+
try {
|
|
31
|
+
const provider = new OpenAIProvider(this.config.openai);
|
|
32
|
+
if (provider.validateConfig()) {
|
|
33
|
+
this.providers.set('openai', provider);
|
|
34
|
+
console.log('[LLMProviderFactory] OpenAI provider initialized');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.warn('[LLMProviderFactory] Failed to initialize OpenAI provider:', error);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Initialize Anthropic provider
|
|
42
|
+
if (this.config.anthropic) {
|
|
43
|
+
try {
|
|
44
|
+
const provider = new AnthropicProvider(this.config.anthropic);
|
|
45
|
+
if (provider.validateConfig()) {
|
|
46
|
+
this.providers.set('anthropic', provider);
|
|
47
|
+
console.log('[LLMProviderFactory] Anthropic provider initialized');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.warn('[LLMProviderFactory] Failed to initialize Anthropic provider:', error);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Initialize Cloudflare provider
|
|
55
|
+
if (this.config.cloudflare) {
|
|
56
|
+
try {
|
|
57
|
+
const provider = new CloudflareProvider(this.config.cloudflare);
|
|
58
|
+
if (provider.validateConfig()) {
|
|
59
|
+
this.providers.set('cloudflare', provider);
|
|
60
|
+
console.log('[LLMProviderFactory] Cloudflare provider initialized');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.warn('[LLMProviderFactory] Failed to initialize Cloudflare provider:', error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Initialize Cerebras provider
|
|
68
|
+
if (this.config.cerebras) {
|
|
69
|
+
try {
|
|
70
|
+
const provider = new CerebrasProvider(this.config.cerebras);
|
|
71
|
+
if (provider.validateConfig()) {
|
|
72
|
+
this.providers.set('cerebras', provider);
|
|
73
|
+
console.log('[LLMProviderFactory] Cerebras provider initialized');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.warn('[LLMProviderFactory] Failed to initialize Cerebras provider:', error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Initialize Groq provider
|
|
81
|
+
if (this.config.groq) {
|
|
82
|
+
try {
|
|
83
|
+
const provider = new GroqProvider(this.config.groq);
|
|
84
|
+
if (provider.validateConfig()) {
|
|
85
|
+
this.providers.set('groq', provider);
|
|
86
|
+
console.log('[LLMProviderFactory] Groq provider initialized');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.warn('[LLMProviderFactory] Failed to initialize Groq provider:', error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (this.providers.size === 0) {
|
|
94
|
+
throw new ConfigurationError('factory', 'No valid providers configured');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Generate response with intelligent provider selection and fallback
|
|
99
|
+
*/
|
|
100
|
+
async generateResponse(request) {
|
|
101
|
+
const providerChain = this.buildProviderChain(request);
|
|
102
|
+
let lastError = null;
|
|
103
|
+
for (const providerName of providerChain) {
|
|
104
|
+
try {
|
|
105
|
+
const provider = this.providers.get(providerName);
|
|
106
|
+
if (!provider)
|
|
107
|
+
continue;
|
|
108
|
+
// Check circuit breaker
|
|
109
|
+
if (this.config.enableCircuitBreaker) {
|
|
110
|
+
const breaker = defaultCircuitBreakerManager.getBreaker(providerName);
|
|
111
|
+
if (breaker.isOpen()) {
|
|
112
|
+
console.warn(`[LLMProviderFactory] Circuit breaker open for ${providerName}, skipping`);
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
console.log(`[LLMProviderFactory] Trying provider: ${providerName}`);
|
|
117
|
+
const response = await provider.generateResponse(request);
|
|
118
|
+
// Track cost if enabled
|
|
119
|
+
if (this.config.costOptimization) {
|
|
120
|
+
this.costTracker.trackCost(providerName, response);
|
|
121
|
+
}
|
|
122
|
+
console.log(`[LLMProviderFactory] Successfully used provider: ${providerName}`);
|
|
123
|
+
return response;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
lastError = error;
|
|
127
|
+
console.warn(`[LLMProviderFactory] Provider ${providerName} failed:`, error);
|
|
128
|
+
// Check if we should continue trying other providers
|
|
129
|
+
if (!this.shouldFallback(error)) {
|
|
130
|
+
throw error;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// All providers failed
|
|
135
|
+
throw lastError || new LLMProviderError('All providers failed', 'ALL_PROVIDERS_FAILED', 'factory', false);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Build provider chain based on request and configuration
|
|
139
|
+
*/
|
|
140
|
+
buildProviderChain(request) {
|
|
141
|
+
const chain = [];
|
|
142
|
+
// If specific provider requested, try it first
|
|
143
|
+
if (request.model) {
|
|
144
|
+
const providerForModel = this.getProviderForModel(request.model);
|
|
145
|
+
if (providerForModel && this.providers.has(providerForModel)) {
|
|
146
|
+
chain.push(providerForModel);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// Add default provider if different from model provider
|
|
150
|
+
const defaultProvider = this.config.defaultProvider || 'auto';
|
|
151
|
+
if (defaultProvider !== 'auto' && !chain.includes(defaultProvider)) {
|
|
152
|
+
if (this.providers.has(defaultProvider)) {
|
|
153
|
+
chain.push(defaultProvider);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// For 'auto' mode or as fallbacks, add providers by priority
|
|
157
|
+
const prioritizedProviders = this.getPrioritizedProviders(request);
|
|
158
|
+
for (const provider of prioritizedProviders) {
|
|
159
|
+
if (!chain.includes(provider) && this.providers.has(provider)) {
|
|
160
|
+
chain.push(provider);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return chain;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get prioritized list of providers based on cost optimization and capabilities
|
|
167
|
+
*/
|
|
168
|
+
getPrioritizedProviders(request) {
|
|
169
|
+
if (!this.config.costOptimization) {
|
|
170
|
+
// Default priority: Cloudflare (cheapest) -> Anthropic -> OpenAI
|
|
171
|
+
return ['cloudflare', 'anthropic', 'openai'];
|
|
172
|
+
}
|
|
173
|
+
// Cost-optimized routing
|
|
174
|
+
const providers = Array.from(this.providers.keys());
|
|
175
|
+
const sortedProviders = [...providers].sort((a, b) => {
|
|
176
|
+
const providerA = this.providers.get(a);
|
|
177
|
+
const providerB = this.providers.get(b);
|
|
178
|
+
const estimatedCostA = providerA.estimateCost(request);
|
|
179
|
+
const estimatedCostB = providerB.estimateCost(request);
|
|
180
|
+
if (estimatedCostA !== estimatedCostB) {
|
|
181
|
+
return estimatedCostA - estimatedCostB;
|
|
182
|
+
}
|
|
183
|
+
// If estimates tie, prefer the provider with less accumulated spend.
|
|
184
|
+
const trackedCostA = this.costTracker.getProviderCost(a);
|
|
185
|
+
const trackedCostB = this.costTracker.getProviderCost(b);
|
|
186
|
+
return trackedCostA - trackedCostB;
|
|
187
|
+
});
|
|
188
|
+
return sortedProviders;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get appropriate provider for a specific model
|
|
192
|
+
*/
|
|
193
|
+
getProviderForModel(model) {
|
|
194
|
+
// OpenAI models
|
|
195
|
+
if (model.startsWith('gpt-')) {
|
|
196
|
+
return 'openai';
|
|
197
|
+
}
|
|
198
|
+
// Anthropic models
|
|
199
|
+
if (model.includes('claude')) {
|
|
200
|
+
return 'anthropic';
|
|
201
|
+
}
|
|
202
|
+
// Cloudflare models
|
|
203
|
+
if (model.startsWith('@cf/')) {
|
|
204
|
+
return 'cloudflare';
|
|
205
|
+
}
|
|
206
|
+
// Groq models
|
|
207
|
+
if (model.includes('-versatile') || model.includes('-instant')) {
|
|
208
|
+
return 'groq';
|
|
209
|
+
}
|
|
210
|
+
// Cerebras models
|
|
211
|
+
if (model.startsWith('llama-3.1-8b') || model.startsWith('llama-3.3-70b')
|
|
212
|
+
|| model.startsWith('zai-glm') || model.startsWith('qwen-3-235b')) {
|
|
213
|
+
return 'cerebras';
|
|
214
|
+
}
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Check if we should fallback to another provider
|
|
219
|
+
*/
|
|
220
|
+
shouldFallback(error) {
|
|
221
|
+
// Don't fallback for authentication errors
|
|
222
|
+
if (error instanceof AuthenticationError) {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
// Don't fallback for configuration errors
|
|
226
|
+
if (error instanceof ConfigurationError) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
// Fallback for circuit breaker, rate limits, and server errors
|
|
230
|
+
if (error instanceof CircuitBreakerOpenError ||
|
|
231
|
+
error instanceof RateLimitError ||
|
|
232
|
+
error.code === 'SERVER_ERROR' ||
|
|
233
|
+
error.code === 'NETWORK_ERROR' ||
|
|
234
|
+
error.code === 'TIMEOUT') {
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
// Check custom fallback rules
|
|
238
|
+
for (const rule of this.fallbackRules) {
|
|
239
|
+
if (this.evaluateFallbackRule(rule, error)) {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Evaluate a fallback rule against an error
|
|
247
|
+
*/
|
|
248
|
+
evaluateFallbackRule(rule, error) {
|
|
249
|
+
switch (rule.condition) {
|
|
250
|
+
case 'error':
|
|
251
|
+
return true; // Any error triggers fallback
|
|
252
|
+
case 'rate_limit':
|
|
253
|
+
return error instanceof RateLimitError;
|
|
254
|
+
case 'cost':
|
|
255
|
+
// Check if cost threshold exceeded
|
|
256
|
+
if (rule.threshold && this.config.costOptimization) {
|
|
257
|
+
const totalCost = this.costTracker.getTotalCost();
|
|
258
|
+
return totalCost > rule.threshold;
|
|
259
|
+
}
|
|
260
|
+
return false;
|
|
261
|
+
case 'latency':
|
|
262
|
+
// Would need to track latency to implement this
|
|
263
|
+
return false;
|
|
264
|
+
default:
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Get default fallback rules
|
|
270
|
+
*/
|
|
271
|
+
getDefaultFallbackRules() {
|
|
272
|
+
return [
|
|
273
|
+
{
|
|
274
|
+
condition: 'rate_limit',
|
|
275
|
+
fallbackProvider: 'cloudflare' // Fallback to Cloudflare for rate limits
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
condition: 'cost',
|
|
279
|
+
threshold: 10, // $10 threshold
|
|
280
|
+
fallbackProvider: 'cloudflare' // Use cheaper provider when cost is high
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
condition: 'error',
|
|
284
|
+
fallbackProvider: 'anthropic' // General error fallback
|
|
285
|
+
}
|
|
286
|
+
];
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get provider instance by name
|
|
290
|
+
*/
|
|
291
|
+
getProvider(name) {
|
|
292
|
+
return this.providers.get(name);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get all available providers
|
|
296
|
+
*/
|
|
297
|
+
getAvailableProviders() {
|
|
298
|
+
return Array.from(this.providers.keys());
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Get provider health status
|
|
302
|
+
*/
|
|
303
|
+
async getProviderHealth() {
|
|
304
|
+
const health = {};
|
|
305
|
+
for (const [name, provider] of this.providers) {
|
|
306
|
+
try {
|
|
307
|
+
const isHealthy = await provider.healthCheck();
|
|
308
|
+
const metrics = provider.getMetrics();
|
|
309
|
+
const circuitState = this.config.enableCircuitBreaker
|
|
310
|
+
? defaultCircuitBreakerManager.getBreaker(name).getState()
|
|
311
|
+
: null;
|
|
312
|
+
health[name] = {
|
|
313
|
+
healthy: isHealthy,
|
|
314
|
+
metrics,
|
|
315
|
+
circuitBreaker: circuitState,
|
|
316
|
+
models: provider.getModels(),
|
|
317
|
+
capabilities: {
|
|
318
|
+
streaming: provider.supportsStreaming,
|
|
319
|
+
tools: provider.supportsTools,
|
|
320
|
+
batching: provider.supportsBatching
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
health[name] = {
|
|
326
|
+
healthy: false,
|
|
327
|
+
error: error.message
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return health;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Get cost analytics
|
|
335
|
+
*/
|
|
336
|
+
getCostAnalytics() {
|
|
337
|
+
if (!this.config.costOptimization) {
|
|
338
|
+
return { message: 'Cost optimization not enabled' };
|
|
339
|
+
}
|
|
340
|
+
return {
|
|
341
|
+
breakdown: this.costTracker.getCostBreakdown(),
|
|
342
|
+
total: this.costTracker.getTotalCost(),
|
|
343
|
+
recommendations: this.getCostRecommendations()
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Get cost optimization recommendations
|
|
348
|
+
*/
|
|
349
|
+
getCostRecommendations() {
|
|
350
|
+
const breakdown = this.costTracker.getCostBreakdown();
|
|
351
|
+
const recommendations = [];
|
|
352
|
+
// Check for expensive providers
|
|
353
|
+
const totalCost = this.costTracker.getTotalCost();
|
|
354
|
+
for (const [provider, data] of Object.entries(breakdown)) {
|
|
355
|
+
const percentage = (data.cost / totalCost) * 100;
|
|
356
|
+
if (percentage > 60) {
|
|
357
|
+
recommendations.push(`Consider reducing usage of ${provider} (${percentage.toFixed(1)}% of total cost)`);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Recommend Cloudflare for cost savings
|
|
361
|
+
if (!this.providers.has('cloudflare')) {
|
|
362
|
+
recommendations.push('Consider adding Cloudflare AI provider for significant cost savings');
|
|
363
|
+
}
|
|
364
|
+
return recommendations;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Reset all provider metrics and circuit breakers
|
|
368
|
+
*/
|
|
369
|
+
reset() {
|
|
370
|
+
for (const [name, provider] of this.providers) {
|
|
371
|
+
provider.resetMetrics();
|
|
372
|
+
if (this.config.enableCircuitBreaker) {
|
|
373
|
+
defaultCircuitBreakerManager.reset(name);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
if (this.config.costOptimization) {
|
|
377
|
+
this.costTracker.reset();
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Update factory configuration
|
|
382
|
+
*/
|
|
383
|
+
updateConfig(config) {
|
|
384
|
+
this.config = { ...this.config, ...config };
|
|
385
|
+
if (config.fallbackRules) {
|
|
386
|
+
this.fallbackRules = config.fallbackRules;
|
|
387
|
+
}
|
|
388
|
+
// Re-initialize providers if configs changed
|
|
389
|
+
if (config.openai || config.anthropic || config.cloudflare || config.cerebras || config.groq) {
|
|
390
|
+
this.providers.clear();
|
|
391
|
+
this.initializeProviders();
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Create a provider factory with common configurations
|
|
397
|
+
*/
|
|
398
|
+
export function createLLMProviderFactory(config) {
|
|
399
|
+
return new LLMProviderFactory(config);
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Create a cost-optimized provider factory
|
|
403
|
+
*/
|
|
404
|
+
export function createCostOptimizedFactory(config) {
|
|
405
|
+
return new LLMProviderFactory({
|
|
406
|
+
...config,
|
|
407
|
+
defaultProvider: 'auto',
|
|
408
|
+
costOptimization: true,
|
|
409
|
+
enableCircuitBreaker: true,
|
|
410
|
+
enableRetries: true,
|
|
411
|
+
fallbackRules: [
|
|
412
|
+
{ condition: 'cost', threshold: 5, fallbackProvider: 'cloudflare' },
|
|
413
|
+
{ condition: 'rate_limit', fallbackProvider: 'cloudflare' },
|
|
414
|
+
{ condition: 'error', fallbackProvider: 'anthropic' }
|
|
415
|
+
]
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Providers Package
|
|
3
|
+
* Unified interface for OpenAI, Anthropic, and Cloudflare AI providers
|
|
4
|
+
* with intelligent fallback logic and cost optimization
|
|
5
|
+
*/
|
|
6
|
+
export type { LLMProvider, LLMRequest, LLMResponse, LLMMessage, LLMConfig, TokenUsage, Tool, ToolCall, ToolResult, ProviderConfig, OpenAIConfig, AnthropicConfig, CloudflareConfig, CerebrasConfig, GroqConfig, ModelCapabilities, ProviderCapabilities, ProviderMetrics, FallbackRule, CircuitBreakerConfig, CircuitBreakerState, RetryConfig, CostConfig, LLMError, StreamChunk, StreamResponse, BatchRequest, BatchResponse, BatchJob } from './types';
|
|
7
|
+
export { BaseProvider } from './providers/base';
|
|
8
|
+
export { OpenAIProvider } from './providers/openai';
|
|
9
|
+
export { AnthropicProvider } from './providers/anthropic';
|
|
10
|
+
export { CloudflareProvider } from './providers/cloudflare';
|
|
11
|
+
export { CerebrasProvider } from './providers/cerebras';
|
|
12
|
+
export { GroqProvider } from './providers/groq';
|
|
13
|
+
export { LLMProviderFactory, createLLMProviderFactory, createCostOptimizedFactory } from './factory';
|
|
14
|
+
export type { ProviderFactoryConfig } from './factory';
|
|
15
|
+
import type { ProviderFactoryConfig } from './factory';
|
|
16
|
+
import type { LLMProvider, LLMRequest, LLMResponse } from './types';
|
|
17
|
+
export { LLMProviderError, RateLimitError, QuotaExceededError, AuthenticationError, InvalidRequestError, ModelNotFoundError, TimeoutError, NetworkError, ServerError, ContentFilterError, TokenLimitError, ConfigurationError, CircuitBreakerOpenError, LLMErrorFactory } from './errors';
|
|
18
|
+
export { RetryManager, defaultRetryManager, withRetry, retry } from './utils/retry';
|
|
19
|
+
export { CircuitBreaker, CircuitBreakerManager, defaultCircuitBreakerManager } from './utils/circuit-breaker';
|
|
20
|
+
export { CostTracker, CostOptimizer, defaultCostTracker } from './utils/cost-tracker';
|
|
21
|
+
export type { ProviderCostEntry, ProviderCostBreakdownEntry } from './utils/cost-tracker';
|
|
22
|
+
export { CreditLedger } from './utils/credit-ledger';
|
|
23
|
+
export type { CreditLedgerSnapshot, LedgerEvent, ThresholdEvent, DepletionEvent, LedgerListener, BudgetConfig, ThresholdConfig, ThresholdTier, DepletionTier, ProviderAccumulator, ModelAccumulator, RateLimitDimension, RateLimitCheck, SpendEntry, BurnRate, DepletionEstimate, SpendSummary, } from './utils/credit-ledger';
|
|
24
|
+
/**
|
|
25
|
+
* Overrides for `LLMProviders.fromEnv()` auto-discovery.
|
|
26
|
+
*/
|
|
27
|
+
export interface FromEnvOverrides {
|
|
28
|
+
defaultProvider?: ProviderFactoryConfig['defaultProvider'];
|
|
29
|
+
costOptimization?: boolean;
|
|
30
|
+
enableCircuitBreaker?: boolean;
|
|
31
|
+
enableRetries?: boolean;
|
|
32
|
+
fallbackRules?: ProviderFactoryConfig['fallbackRules'];
|
|
33
|
+
ledger?: ProviderFactoryConfig['ledger'];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Main LLMProviders class for easy usage
|
|
37
|
+
*/
|
|
38
|
+
export declare class LLMProviders {
|
|
39
|
+
private factory;
|
|
40
|
+
constructor(config: ProviderFactoryConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Auto-discover providers from a Cloudflare Worker `env` object.
|
|
43
|
+
*
|
|
44
|
+
* Scans for known API-key environment variables and bindings, configures
|
|
45
|
+
* only the providers whose keys are present, and returns a ready-to-use
|
|
46
|
+
* `LLMProviders` instance.
|
|
47
|
+
*
|
|
48
|
+
* @throws ConfigurationError if no providers are detected
|
|
49
|
+
*/
|
|
50
|
+
static fromEnv(env: Record<string, unknown>, overrides?: FromEnvOverrides): LLMProviders;
|
|
51
|
+
/**
|
|
52
|
+
* Generate response with automatic provider selection and fallback
|
|
53
|
+
*/
|
|
54
|
+
generateResponse(request: LLMRequest): Promise<LLMResponse>;
|
|
55
|
+
/**
|
|
56
|
+
* Get specific provider instance
|
|
57
|
+
*/
|
|
58
|
+
getProvider(name: string): LLMProvider | undefined;
|
|
59
|
+
/**
|
|
60
|
+
* Get all available providers
|
|
61
|
+
*/
|
|
62
|
+
getAvailableProviders(): string[];
|
|
63
|
+
/**
|
|
64
|
+
* Get provider health status
|
|
65
|
+
*/
|
|
66
|
+
getHealth(): Promise<Record<string, any>>;
|
|
67
|
+
/**
|
|
68
|
+
* Get cost analytics
|
|
69
|
+
*/
|
|
70
|
+
getCostAnalytics(): any;
|
|
71
|
+
/**
|
|
72
|
+
* Reset all metrics and circuit breakers
|
|
73
|
+
*/
|
|
74
|
+
reset(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Update configuration
|
|
77
|
+
*/
|
|
78
|
+
updateConfig(config: Partial<ProviderFactoryConfig>): void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create LLMProviders instance with cost optimization
|
|
82
|
+
*/
|
|
83
|
+
export declare function createCostOptimizedLLMProviders(config: ProviderFactoryConfig): LLMProviders;
|
|
84
|
+
/**
|
|
85
|
+
* Create LLMProviders instance with basic configuration
|
|
86
|
+
*/
|
|
87
|
+
export declare function createLLMProviders(config: ProviderFactoryConfig): LLMProviders;
|
|
88
|
+
/**
|
|
89
|
+
* Default export for convenience
|
|
90
|
+
*/
|
|
91
|
+
export default LLMProviders;
|
|
92
|
+
/**
|
|
93
|
+
* Version and metadata
|
|
94
|
+
*/
|
|
95
|
+
export declare const VERSION = "0.1.0";
|
|
96
|
+
export declare const SUPPORTED_PROVIDERS: readonly ["openai", "anthropic", "cloudflare", "cerebras", "groq"];
|
|
97
|
+
/**
|
|
98
|
+
* Common model mappings for easy reference
|
|
99
|
+
*/
|
|
100
|
+
export declare const MODELS: {
|
|
101
|
+
readonly GPT_4O: "gpt-4o";
|
|
102
|
+
readonly GPT_4O_MINI: "gpt-4o-mini";
|
|
103
|
+
readonly GPT_4_TURBO: "gpt-4-turbo";
|
|
104
|
+
readonly GPT_4: "gpt-4";
|
|
105
|
+
readonly GPT_3_5_TURBO: "gpt-3.5-turbo";
|
|
106
|
+
readonly CLAUDE_3_5_SONNET: "claude-3-5-sonnet-20241022";
|
|
107
|
+
readonly CLAUDE_3_5_HAIKU: "claude-3-5-haiku-20241022";
|
|
108
|
+
readonly CLAUDE_3_OPUS: "claude-3-opus-20240229";
|
|
109
|
+
readonly CLAUDE_3_SONNET: "claude-3-sonnet-20240229";
|
|
110
|
+
readonly CLAUDE_3_HAIKU: "claude-3-haiku-20240307";
|
|
111
|
+
readonly LLAMA_3_1_8B: "@cf/meta/llama-3.1-8b-instruct";
|
|
112
|
+
readonly LLAMA_3_1_70B: "@cf/meta/llama-3.1-70b-instruct";
|
|
113
|
+
readonly LLAMA_3_8B: "@cf/meta/llama-3-8b-instruct";
|
|
114
|
+
readonly MISTRAL_7B: "@cf/mistral/mistral-7b-instruct-v0.1";
|
|
115
|
+
readonly TINY_LLAMA: "@cf/tinyllama/tinyllama-1.1b-chat-v1.0";
|
|
116
|
+
readonly CEREBRAS_LLAMA_3_1_8B: "llama-3.1-8b";
|
|
117
|
+
readonly CEREBRAS_LLAMA_3_3_70B: "llama-3.3-70b";
|
|
118
|
+
readonly CEREBRAS_ZAI_GLM_4_7: "zai-glm-4.7";
|
|
119
|
+
readonly CEREBRAS_QWEN_3_235B: "qwen-3-235b-a22b-instruct-2507";
|
|
120
|
+
readonly GROQ_LLAMA_3_3_70B_VERSATILE: "llama-3.3-70b-versatile";
|
|
121
|
+
readonly GROQ_LLAMA_3_1_8B_INSTANT: "llama-3.1-8b-instant";
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Model recommendations by use case
|
|
125
|
+
*/
|
|
126
|
+
export declare const MODEL_RECOMMENDATIONS: {
|
|
127
|
+
readonly COST_EFFECTIVE: readonly ["llama-3.1-8b", "@cf/tinyllama/tinyllama-1.1b-chat-v1.0", "claude-3-5-haiku-20241022", "gpt-4o-mini"];
|
|
128
|
+
readonly HIGH_PERFORMANCE: readonly ["zai-glm-4.7", "gpt-4o", "claude-3-5-sonnet-20241022", "qwen-3-235b-a22b-instruct-2507", "@cf/meta/llama-3.1-70b-instruct"];
|
|
129
|
+
readonly BALANCED: readonly ["gpt-3.5-turbo", "claude-3-haiku-20240307", "@cf/meta/llama-3.1-8b-instruct"];
|
|
130
|
+
readonly TOOL_CALLING: readonly ["gpt-4o", "claude-3-5-sonnet-20241022", "zai-glm-4.7", "qwen-3-235b-a22b-instruct-2507", "gpt-4-turbo"];
|
|
131
|
+
readonly LONG_CONTEXT: readonly ["claude-3-5-sonnet-20241022", "gpt-4-turbo", "claude-3-opus-20240229"];
|
|
132
|
+
};
|
|
133
|
+
/**
|
|
134
|
+
* Utility function to get recommended model for a use case
|
|
135
|
+
*/
|
|
136
|
+
export declare function getRecommendedModel(useCase: keyof typeof MODEL_RECOMMENDATIONS, availableProviders: string[]): string;
|
|
137
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,QAAQ,EACT,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAIvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAKpE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,EAAE,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACvD,MAAM,CAAC,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAqB;gBAExB,MAAM,EAAE,qBAAqB;IAIzC;;;;;;;;OAQG;IACH,MAAM,CAAC,OAAO,CACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,SAAS,GAAE,gBAAqB,GAC/B,YAAY;IAyDf;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAIjE;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIlD;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAI/C;;OAEG;IACH,gBAAgB,IAAI,GAAG;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,IAAI;CAG3D;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,qBAAqB,GAC5B,YAAY,CAGd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,YAAY,CAE9E;AAED;;GAEG;AACH,eAAe,YAAY,CAAC;AAE5B;;GAEG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,mBAAmB,oEAAqE,CAAC;AAEtG;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CA+BT,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;CAwCxB,CAAC;AAEX;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,OAAO,qBAAqB,EAC3C,kBAAkB,EAAE,MAAM,EAAE,GAC3B,MAAM,CAmCR"}
|