@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.
Files changed (59) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +261 -0
  3. package/dist/errors.d.ts +79 -0
  4. package/dist/errors.d.ts.map +1 -0
  5. package/dist/errors.js +183 -0
  6. package/dist/errors.js.map +1 -0
  7. package/dist/factory.d.ts +95 -0
  8. package/dist/factory.d.ts.map +1 -0
  9. package/dist/factory.js +418 -0
  10. package/dist/factory.js.map +1 -0
  11. package/dist/index.d.ts +137 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +263 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/providers/anthropic.d.ts +38 -0
  16. package/dist/providers/anthropic.d.ts.map +1 -0
  17. package/dist/providers/anthropic.js +378 -0
  18. package/dist/providers/anthropic.js.map +1 -0
  19. package/dist/providers/base.d.ts +107 -0
  20. package/dist/providers/base.d.ts.map +1 -0
  21. package/dist/providers/base.js +230 -0
  22. package/dist/providers/base.js.map +1 -0
  23. package/dist/providers/cerebras.d.ts +30 -0
  24. package/dist/providers/cerebras.d.ts.map +1 -0
  25. package/dist/providers/cerebras.js +292 -0
  26. package/dist/providers/cerebras.js.map +1 -0
  27. package/dist/providers/cloudflare.d.ts +47 -0
  28. package/dist/providers/cloudflare.d.ts.map +1 -0
  29. package/dist/providers/cloudflare.js +544 -0
  30. package/dist/providers/cloudflare.js.map +1 -0
  31. package/dist/providers/groq.d.ts +30 -0
  32. package/dist/providers/groq.d.ts.map +1 -0
  33. package/dist/providers/groq.js +222 -0
  34. package/dist/providers/groq.js.map +1 -0
  35. package/dist/providers/openai.d.ts +36 -0
  36. package/dist/providers/openai.d.ts.map +1 -0
  37. package/dist/providers/openai.js +331 -0
  38. package/dist/providers/openai.js.map +1 -0
  39. package/dist/types.d.ts +238 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +6 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/utils/circuit-breaker.d.ts +111 -0
  44. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  45. package/dist/utils/circuit-breaker.js +365 -0
  46. package/dist/utils/circuit-breaker.js.map +1 -0
  47. package/dist/utils/cost-tracker.d.ts +130 -0
  48. package/dist/utils/cost-tracker.d.ts.map +1 -0
  49. package/dist/utils/cost-tracker.js +272 -0
  50. package/dist/utils/cost-tracker.js.map +1 -0
  51. package/dist/utils/credit-ledger.d.ts +161 -0
  52. package/dist/utils/credit-ledger.d.ts.map +1 -0
  53. package/dist/utils/credit-ledger.js +463 -0
  54. package/dist/utils/credit-ledger.js.map +1 -0
  55. package/dist/utils/retry.d.ts +46 -0
  56. package/dist/utils/retry.d.ts.map +1 -0
  57. package/dist/utils/retry.js +125 -0
  58. package/dist/utils/retry.js.map +1 -0
  59. package/package.json +57 -0
@@ -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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"}
@@ -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":"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"}