@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
package/dist/index.js ADDED
@@ -0,0 +1,263 @@
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
+ // Provider implementations
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
+ // Factory pattern
14
+ export { LLMProviderFactory, createLLMProviderFactory, createCostOptimizedFactory } from './factory';
15
+ // Local imports for use within this file
16
+ import { LLMProviderFactory } from './factory';
17
+ import { createCostOptimizedFactory } from './factory';
18
+ import { ConfigurationError } from './errors';
19
+ // Error classes
20
+ export { LLMProviderError, RateLimitError, QuotaExceededError, AuthenticationError, InvalidRequestError, ModelNotFoundError, TimeoutError, NetworkError, ServerError, ContentFilterError, TokenLimitError, ConfigurationError, CircuitBreakerOpenError, LLMErrorFactory } from './errors';
21
+ // Utility classes
22
+ export { RetryManager, defaultRetryManager, withRetry, retry } from './utils/retry';
23
+ export { CircuitBreaker, CircuitBreakerManager, defaultCircuitBreakerManager } from './utils/circuit-breaker';
24
+ export { CostTracker, CostOptimizer, defaultCostTracker } from './utils/cost-tracker';
25
+ export { CreditLedger } from './utils/credit-ledger';
26
+ /**
27
+ * Main LLMProviders class for easy usage
28
+ */
29
+ export class LLMProviders {
30
+ factory;
31
+ constructor(config) {
32
+ this.factory = new LLMProviderFactory(config);
33
+ }
34
+ /**
35
+ * Auto-discover providers from a Cloudflare Worker `env` object.
36
+ *
37
+ * Scans for known API-key environment variables and bindings, configures
38
+ * only the providers whose keys are present, and returns a ready-to-use
39
+ * `LLMProviders` instance.
40
+ *
41
+ * @throws ConfigurationError if no providers are detected
42
+ */
43
+ static fromEnv(env, overrides = {}) {
44
+ const config = {};
45
+ if (typeof env.ANTHROPIC_API_KEY === 'string' && env.ANTHROPIC_API_KEY) {
46
+ config.anthropic = { apiKey: env.ANTHROPIC_API_KEY };
47
+ }
48
+ if (typeof env.OPENAI_API_KEY === 'string' && env.OPENAI_API_KEY) {
49
+ config.openai = { apiKey: env.OPENAI_API_KEY };
50
+ }
51
+ if (typeof env.GROQ_API_KEY === 'string' && env.GROQ_API_KEY) {
52
+ config.groq = { apiKey: env.GROQ_API_KEY };
53
+ }
54
+ if (typeof env.CEREBRAS_API_KEY === 'string' && env.CEREBRAS_API_KEY) {
55
+ config.cerebras = { apiKey: env.CEREBRAS_API_KEY };
56
+ }
57
+ if (env.AI != null && typeof env.AI === 'object') {
58
+ config.cloudflare = { ai: env.AI };
59
+ }
60
+ const detected = [
61
+ config.anthropic && 'anthropic',
62
+ config.openai && 'openai',
63
+ config.groq && 'groq',
64
+ config.cerebras && 'cerebras',
65
+ config.cloudflare && 'cloudflare',
66
+ ].filter(Boolean);
67
+ if (detected.length === 0) {
68
+ throw new ConfigurationError('fromEnv', 'No LLM providers detected in env. Expected at least one of: ' +
69
+ 'ANTHROPIC_API_KEY, OPENAI_API_KEY, GROQ_API_KEY, CEREBRAS_API_KEY, or AI binding.');
70
+ }
71
+ if (overrides.defaultProvider !== undefined) {
72
+ config.defaultProvider = overrides.defaultProvider;
73
+ }
74
+ if (overrides.costOptimization !== undefined) {
75
+ config.costOptimization = overrides.costOptimization;
76
+ }
77
+ if (overrides.enableCircuitBreaker !== undefined) {
78
+ config.enableCircuitBreaker = overrides.enableCircuitBreaker;
79
+ }
80
+ if (overrides.enableRetries !== undefined) {
81
+ config.enableRetries = overrides.enableRetries;
82
+ }
83
+ if (overrides.fallbackRules !== undefined) {
84
+ config.fallbackRules = overrides.fallbackRules;
85
+ }
86
+ if (overrides.ledger !== undefined) {
87
+ config.ledger = overrides.ledger;
88
+ }
89
+ return new LLMProviders(config);
90
+ }
91
+ /**
92
+ * Generate response with automatic provider selection and fallback
93
+ */
94
+ async generateResponse(request) {
95
+ return this.factory.generateResponse(request);
96
+ }
97
+ /**
98
+ * Get specific provider instance
99
+ */
100
+ getProvider(name) {
101
+ return this.factory.getProvider(name);
102
+ }
103
+ /**
104
+ * Get all available providers
105
+ */
106
+ getAvailableProviders() {
107
+ return this.factory.getAvailableProviders();
108
+ }
109
+ /**
110
+ * Get provider health status
111
+ */
112
+ async getHealth() {
113
+ return this.factory.getProviderHealth();
114
+ }
115
+ /**
116
+ * Get cost analytics
117
+ */
118
+ getCostAnalytics() {
119
+ return this.factory.getCostAnalytics();
120
+ }
121
+ /**
122
+ * Reset all metrics and circuit breakers
123
+ */
124
+ reset() {
125
+ this.factory.reset();
126
+ }
127
+ /**
128
+ * Update configuration
129
+ */
130
+ updateConfig(config) {
131
+ this.factory.updateConfig(config);
132
+ }
133
+ }
134
+ /**
135
+ * Create LLMProviders instance with cost optimization
136
+ */
137
+ export function createCostOptimizedLLMProviders(config) {
138
+ const factory = createCostOptimizedFactory(config);
139
+ return new LLMProviders(config);
140
+ }
141
+ /**
142
+ * Create LLMProviders instance with basic configuration
143
+ */
144
+ export function createLLMProviders(config) {
145
+ return new LLMProviders(config);
146
+ }
147
+ /**
148
+ * Default export for convenience
149
+ */
150
+ export default LLMProviders;
151
+ /**
152
+ * Version and metadata
153
+ */
154
+ export const VERSION = '0.1.0';
155
+ export const SUPPORTED_PROVIDERS = ['openai', 'anthropic', 'cloudflare', 'cerebras', 'groq'];
156
+ /**
157
+ * Common model mappings for easy reference
158
+ */
159
+ export const MODELS = {
160
+ // OpenAI models
161
+ GPT_4O: 'gpt-4o',
162
+ GPT_4O_MINI: 'gpt-4o-mini',
163
+ GPT_4_TURBO: 'gpt-4-turbo',
164
+ GPT_4: 'gpt-4',
165
+ GPT_3_5_TURBO: 'gpt-3.5-turbo',
166
+ // Anthropic models
167
+ CLAUDE_3_5_SONNET: 'claude-3-5-sonnet-20241022',
168
+ CLAUDE_3_5_HAIKU: 'claude-3-5-haiku-20241022',
169
+ CLAUDE_3_OPUS: 'claude-3-opus-20240229',
170
+ CLAUDE_3_SONNET: 'claude-3-sonnet-20240229',
171
+ CLAUDE_3_HAIKU: 'claude-3-haiku-20240307',
172
+ // Cloudflare models
173
+ LLAMA_3_1_8B: '@cf/meta/llama-3.1-8b-instruct',
174
+ LLAMA_3_1_70B: '@cf/meta/llama-3.1-70b-instruct',
175
+ LLAMA_3_8B: '@cf/meta/llama-3-8b-instruct',
176
+ MISTRAL_7B: '@cf/mistral/mistral-7b-instruct-v0.1',
177
+ TINY_LLAMA: '@cf/tinyllama/tinyllama-1.1b-chat-v1.0',
178
+ // Cerebras models
179
+ CEREBRAS_LLAMA_3_1_8B: 'llama-3.1-8b',
180
+ CEREBRAS_LLAMA_3_3_70B: 'llama-3.3-70b',
181
+ CEREBRAS_ZAI_GLM_4_7: 'zai-glm-4.7',
182
+ CEREBRAS_QWEN_3_235B: 'qwen-3-235b-a22b-instruct-2507',
183
+ // Groq models
184
+ GROQ_LLAMA_3_3_70B_VERSATILE: 'llama-3.3-70b-versatile',
185
+ GROQ_LLAMA_3_1_8B_INSTANT: 'llama-3.1-8b-instant'
186
+ };
187
+ /**
188
+ * Model recommendations by use case
189
+ */
190
+ export const MODEL_RECOMMENDATIONS = {
191
+ // Cost-optimized models
192
+ COST_EFFECTIVE: [
193
+ MODELS.CEREBRAS_LLAMA_3_1_8B,
194
+ MODELS.TINY_LLAMA,
195
+ MODELS.CLAUDE_3_5_HAIKU,
196
+ MODELS.GPT_4O_MINI
197
+ ],
198
+ // High-performance models
199
+ HIGH_PERFORMANCE: [
200
+ MODELS.CEREBRAS_ZAI_GLM_4_7,
201
+ MODELS.GPT_4O,
202
+ MODELS.CLAUDE_3_5_SONNET,
203
+ MODELS.CEREBRAS_QWEN_3_235B,
204
+ MODELS.LLAMA_3_1_70B
205
+ ],
206
+ // Balanced models
207
+ BALANCED: [
208
+ MODELS.GPT_3_5_TURBO,
209
+ MODELS.CLAUDE_3_HAIKU,
210
+ MODELS.LLAMA_3_1_8B
211
+ ],
212
+ // Tool/function calling
213
+ TOOL_CALLING: [
214
+ MODELS.GPT_4O,
215
+ MODELS.CLAUDE_3_5_SONNET,
216
+ MODELS.CEREBRAS_ZAI_GLM_4_7,
217
+ MODELS.CEREBRAS_QWEN_3_235B,
218
+ MODELS.GPT_4_TURBO
219
+ ],
220
+ // Long context tasks
221
+ LONG_CONTEXT: [
222
+ MODELS.CLAUDE_3_5_SONNET,
223
+ MODELS.GPT_4_TURBO,
224
+ MODELS.CLAUDE_3_OPUS
225
+ ]
226
+ };
227
+ /**
228
+ * Utility function to get recommended model for a use case
229
+ */
230
+ export function getRecommendedModel(useCase, availableProviders) {
231
+ const recommendations = MODEL_RECOMMENDATIONS[useCase];
232
+ for (const model of recommendations) {
233
+ // Check if we have the provider for this model
234
+ if (model.startsWith('gpt-') && availableProviders.includes('openai')) {
235
+ return model;
236
+ }
237
+ if (model.includes('claude') && availableProviders.includes('anthropic')) {
238
+ return model;
239
+ }
240
+ if (model.startsWith('@cf/') && availableProviders.includes('cloudflare')) {
241
+ return model;
242
+ }
243
+ if ((model.startsWith('llama-3.1-8b') || model.startsWith('llama-3.3-70b')
244
+ || model.startsWith('zai-glm') || model.startsWith('qwen-3-235b')) && availableProviders.includes('cerebras')) {
245
+ return model;
246
+ }
247
+ if ((model.includes('-versatile') || model.includes('-instant')) && availableProviders.includes('groq')) {
248
+ return model;
249
+ }
250
+ }
251
+ // Fallback to first available provider's default model
252
+ if (availableProviders.includes('cloudflare')) {
253
+ return MODELS.LLAMA_3_1_8B;
254
+ }
255
+ if (availableProviders.includes('anthropic')) {
256
+ return MODELS.CLAUDE_3_HAIKU;
257
+ }
258
+ if (availableProviders.includes('openai')) {
259
+ return MODELS.GPT_3_5_TURBO;
260
+ }
261
+ throw new Error('No available providers configured');
262
+ }
263
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Anthropic Provider
3
+ * Implementation for Claude models with streaming and tools support
4
+ */
5
+ import type { LLMRequest, LLMResponse, AnthropicConfig, ModelCapabilities } from '../types';
6
+ import { BaseProvider } from './base';
7
+ export declare class AnthropicProvider extends BaseProvider {
8
+ name: string;
9
+ models: string[];
10
+ supportsStreaming: boolean;
11
+ supportsTools: boolean;
12
+ supportsBatching: boolean;
13
+ private apiKey;
14
+ private baseUrl;
15
+ private version;
16
+ constructor(config: AnthropicConfig);
17
+ generateResponse(request: LLMRequest): Promise<LLMResponse>;
18
+ validateConfig(): boolean;
19
+ getModels(): string[];
20
+ estimateCost(request: LLMRequest): number;
21
+ healthCheck(): Promise<boolean>;
22
+ protected getModelCapabilities(): Record<string, ModelCapabilities>;
23
+ private makeAnthropicRequest;
24
+ private formatRequest;
25
+ private formatResponse;
26
+ private mapStopReason;
27
+ /**
28
+ * Stream response support
29
+ */
30
+ streamResponse(request: LLMRequest): Promise<ReadableStream<string>>;
31
+ /**
32
+ * Tool usage support
33
+ */
34
+ generateWithTools(request: LLMRequest & {
35
+ tools: any[];
36
+ }): Promise<LLMResponse>;
37
+ }
38
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAoDtC,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,IAAI,SAAe;IACnB,MAAM,WASJ;IACF,iBAAiB,UAAQ;IACzB,aAAa,UAAQ;IACrB,gBAAgB,UAAS;IAEzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,eAAe;IAY7B,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAwCjE,cAAc,IAAI,OAAO;IAIzB,SAAS,IAAI,MAAM,EAAE;IAIrB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAenC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBrC,SAAS,CAAC,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;YA6ErD,oBAAoB;IAuBlC,OAAO,CAAC,aAAa;IAgFrB,OAAO,CAAC,cAAc;IAmDtB,OAAO,CAAC,aAAa;IAarB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IA6D1E;;OAEG;IACG,iBAAiB,CACrB,OAAO,EAAE,UAAU,GAAG;QAAE,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,GACrC,OAAO,CAAC,WAAW,CAAC;CAaxB"}