@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,544 @@
1
+ /**
2
+ * Cloudflare AI Provider
3
+ * Implementation for Cloudflare Workers AI with cost optimization
4
+ */
5
+ import { BaseProvider } from './base';
6
+ import { ConfigurationError, ModelNotFoundError } from '../errors';
7
+ export class CloudflareProvider extends BaseProvider {
8
+ name = 'cloudflare';
9
+ models = [
10
+ '@cf/meta/llama-3.1-8b-instruct',
11
+ '@cf/meta/llama-3.1-70b-instruct',
12
+ '@cf/meta/llama-3-8b-instruct',
13
+ '@cf/meta/llama-2-7b-chat-int8',
14
+ '@cf/microsoft/phi-2',
15
+ '@cf/mistral/mistral-7b-instruct-v0.1',
16
+ '@cf/openchat/openchat-3.5-0106',
17
+ '@cf/openai/gpt-oss-120b',
18
+ '@cf/tinyllama/tinyllama-1.1b-chat-v1.0',
19
+ '@cf/qwen/qwen1.5-0.5b-chat',
20
+ '@cf/qwen/qwen1.5-1.8b-chat',
21
+ '@cf/qwen/qwen1.5-14b-chat-awq',
22
+ '@cf/qwen/qwen1.5-7b-chat-awq'
23
+ ];
24
+ supportsStreaming = true;
25
+ supportsTools = true;
26
+ supportsBatching = true;
27
+ ai;
28
+ accountId;
29
+ constructor(config) {
30
+ super(config);
31
+ if (!config.ai) {
32
+ throw new ConfigurationError('cloudflare', 'Cloudflare AI binding is required');
33
+ }
34
+ this.ai = config.ai;
35
+ this.accountId = config.accountId;
36
+ }
37
+ async generateResponse(request) {
38
+ this.validateRequest(request);
39
+ const startTime = Date.now();
40
+ try {
41
+ const response = await this.executeWithResiliency(async () => {
42
+ const model = request.model || '@cf/meta/llama-3.1-8b-instruct';
43
+ const cloudflareRequest = this.formatRequest(request, model);
44
+ // Validate model is supported
45
+ if (!this.models.includes(model)) {
46
+ throw new ModelNotFoundError('cloudflare', model);
47
+ }
48
+ const result = await this.ai.run(model, cloudflareRequest);
49
+ return this.formatResponse(result, model, request, Date.now() - startTime);
50
+ });
51
+ this.updateMetrics(response.responseTime, true, response.usage?.cost || 0);
52
+ this.logRequest(request, response);
53
+ return response;
54
+ }
55
+ catch (error) {
56
+ const responseTime = Date.now() - startTime;
57
+ this.updateMetrics(responseTime, false);
58
+ this.logRequest(request, undefined, error);
59
+ throw error;
60
+ }
61
+ }
62
+ validateConfig() {
63
+ return !!(this.ai);
64
+ }
65
+ getModels() {
66
+ return [...this.models];
67
+ }
68
+ estimateCost(request) {
69
+ // Cloudflare AI is essentially "free" as it's included in Workers compute
70
+ // But we can estimate the computational cost
71
+ const model = request.model || '@cf/meta/llama-3.1-8b-instruct';
72
+ const capabilities = this.getModelCapabilities()[model];
73
+ if (!capabilities)
74
+ return 0;
75
+ // Very low cost since it's included in Workers compute
76
+ const inputTokens = request.messages.reduce((sum, msg) => sum + Math.ceil(msg.content.length / 4), 0);
77
+ const outputTokens = request.maxTokens || 1000;
78
+ return this.calculateCost(inputTokens, outputTokens, model);
79
+ }
80
+ async healthCheck() {
81
+ try {
82
+ const testRequest = {
83
+ messages: [{ role: 'user', content: 'Hi' }],
84
+ max_tokens: 1
85
+ };
86
+ await this.ai.run('@cf/meta/llama-3.1-8b-instruct', testRequest);
87
+ return true;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ getModelCapabilities() {
94
+ return {
95
+ '@cf/meta/llama-3.1-8b-instruct': {
96
+ maxContextLength: 8192,
97
+ supportsStreaming: true,
98
+ supportsTools: false,
99
+ supportsBatching: true,
100
+ inputTokenCost: 0.0000001, // Essentially free
101
+ outputTokenCost: 0.0000001,
102
+ description: 'LLaMA 3.1 8B - Fast and efficient'
103
+ },
104
+ '@cf/meta/llama-3.1-70b-instruct': {
105
+ maxContextLength: 8192,
106
+ supportsStreaming: true,
107
+ supportsTools: false,
108
+ supportsBatching: true,
109
+ inputTokenCost: 0.0000005, // Slightly higher compute cost
110
+ outputTokenCost: 0.0000005,
111
+ description: 'LLaMA 3.1 70B - High performance'
112
+ },
113
+ '@cf/meta/llama-3-8b-instruct': {
114
+ maxContextLength: 8192,
115
+ supportsStreaming: true,
116
+ supportsTools: false,
117
+ supportsBatching: true,
118
+ inputTokenCost: 0.0000001,
119
+ outputTokenCost: 0.0000001,
120
+ description: 'LLaMA 3 8B - Reliable performance'
121
+ },
122
+ '@cf/meta/llama-2-7b-chat-int8': {
123
+ maxContextLength: 4096,
124
+ supportsStreaming: true,
125
+ supportsTools: false,
126
+ supportsBatching: true,
127
+ inputTokenCost: 0.00000005,
128
+ outputTokenCost: 0.00000005,
129
+ description: 'LLaMA 2 7B - Quantized for speed'
130
+ },
131
+ '@cf/microsoft/phi-2': {
132
+ maxContextLength: 2048,
133
+ supportsStreaming: true,
134
+ supportsTools: false,
135
+ supportsBatching: true,
136
+ inputTokenCost: 0.00000002,
137
+ outputTokenCost: 0.00000002,
138
+ description: 'Phi-2 - Small but capable'
139
+ },
140
+ '@cf/mistral/mistral-7b-instruct-v0.1': {
141
+ maxContextLength: 8192,
142
+ supportsStreaming: true,
143
+ supportsTools: false,
144
+ supportsBatching: true,
145
+ inputTokenCost: 0.0000001,
146
+ outputTokenCost: 0.0000001,
147
+ description: 'Mistral 7B - Balanced performance'
148
+ },
149
+ '@cf/openchat/openchat-3.5-0106': {
150
+ maxContextLength: 8192,
151
+ supportsStreaming: true,
152
+ supportsTools: false,
153
+ supportsBatching: true,
154
+ inputTokenCost: 0.0000001,
155
+ outputTokenCost: 0.0000001,
156
+ description: 'OpenChat 3.5 - Conversation optimized'
157
+ },
158
+ '@cf/openai/gpt-oss-120b': {
159
+ maxContextLength: 128000,
160
+ supportsStreaming: true,
161
+ supportsTools: true,
162
+ toolCalling: true,
163
+ supportsBatching: true,
164
+ inputTokenCost: 0.0000008,
165
+ outputTokenCost: 0.0000008,
166
+ description: 'GPT-OSS 120B - OpenAI-format tool calling on Workers AI'
167
+ },
168
+ '@cf/tinyllama/tinyllama-1.1b-chat-v1.0': {
169
+ maxContextLength: 2048,
170
+ supportsStreaming: true,
171
+ supportsTools: false,
172
+ supportsBatching: true,
173
+ inputTokenCost: 0.00000001,
174
+ outputTokenCost: 0.00000001,
175
+ description: 'TinyLlama - Ultra fast and lightweight'
176
+ },
177
+ '@cf/qwen/qwen1.5-0.5b-chat': {
178
+ maxContextLength: 2048,
179
+ supportsStreaming: true,
180
+ supportsTools: false,
181
+ supportsBatching: true,
182
+ inputTokenCost: 0.00000001,
183
+ outputTokenCost: 0.00000001,
184
+ description: 'Qwen 1.5 0.5B - Compact and efficient'
185
+ },
186
+ '@cf/qwen/qwen1.5-1.8b-chat': {
187
+ maxContextLength: 4096,
188
+ supportsStreaming: true,
189
+ supportsTools: false,
190
+ supportsBatching: true,
191
+ inputTokenCost: 0.00000002,
192
+ outputTokenCost: 0.00000002,
193
+ description: 'Qwen 1.5 1.8B - Good balance'
194
+ },
195
+ '@cf/qwen/qwen1.5-14b-chat-awq': {
196
+ maxContextLength: 8192,
197
+ supportsStreaming: true,
198
+ supportsTools: false,
199
+ supportsBatching: true,
200
+ inputTokenCost: 0.0000002,
201
+ outputTokenCost: 0.0000002,
202
+ description: 'Qwen 1.5 14B - High capability'
203
+ },
204
+ '@cf/qwen/qwen1.5-7b-chat-awq': {
205
+ maxContextLength: 8192,
206
+ supportsStreaming: true,
207
+ supportsTools: false,
208
+ supportsBatching: true,
209
+ inputTokenCost: 0.0000001,
210
+ outputTokenCost: 0.0000001,
211
+ description: 'Qwen 1.5 7B - Optimized performance'
212
+ }
213
+ };
214
+ }
215
+ formatRequest(request, model) {
216
+ const capabilities = this.getModelCapabilities()[model];
217
+ const usesTools = (request.tools?.length ?? 0) > 0 ||
218
+ request.messages.some(message => (message.toolCalls?.length ?? 0) > 0 || (message.toolResults?.length ?? 0) > 0);
219
+ if (usesTools && !capabilities?.supportsTools) {
220
+ throw new ConfigurationError(this.name, `Model '${model}' does not support tool calling on Cloudflare Workers AI`);
221
+ }
222
+ const messages = [];
223
+ const jsonMode = request.response_format?.type === 'json_object';
224
+ const jsonInstruction = '\n\nYou must respond with valid JSON only. No markdown fences, no commentary, no text outside the JSON.';
225
+ // Add system prompt if provided
226
+ if (request.systemPrompt) {
227
+ messages.push({
228
+ role: 'system',
229
+ content: jsonMode ? request.systemPrompt + jsonInstruction : request.systemPrompt
230
+ });
231
+ }
232
+ else if (jsonMode) {
233
+ messages.push({
234
+ role: 'system',
235
+ content: jsonInstruction.trimStart()
236
+ });
237
+ }
238
+ // Convert messages
239
+ for (const message of request.messages) {
240
+ if (message.role === 'system' && request.systemPrompt) {
241
+ continue;
242
+ }
243
+ const cloudflareMessage = {
244
+ role: message.role,
245
+ content: message.content
246
+ };
247
+ if (message.toolCalls && message.toolCalls.length > 0) {
248
+ cloudflareMessage.tool_calls = message.toolCalls.map(toolCall => ({
249
+ id: toolCall.id,
250
+ type: toolCall.type,
251
+ function: toolCall.function
252
+ }));
253
+ cloudflareMessage.content = null;
254
+ }
255
+ messages.push(cloudflareMessage);
256
+ if (message.toolResults && message.toolResults.length > 0) {
257
+ for (const toolResult of message.toolResults) {
258
+ messages.push({
259
+ role: 'tool',
260
+ content: toolResult.error
261
+ ? JSON.stringify({
262
+ output: toolResult.output,
263
+ error: toolResult.error
264
+ })
265
+ : toolResult.output,
266
+ tool_call_id: toolResult.id
267
+ });
268
+ }
269
+ }
270
+ }
271
+ const cloudflareRequest = {
272
+ messages,
273
+ temperature: request.temperature,
274
+ max_tokens: request.maxTokens,
275
+ stream: request.stream
276
+ };
277
+ if (request.tools && request.tools.length > 0) {
278
+ cloudflareRequest.tools = request.tools.map(tool => ({
279
+ type: tool.type,
280
+ function: tool.function
281
+ }));
282
+ if (request.toolChoice) {
283
+ cloudflareRequest.tool_choice = request.toolChoice;
284
+ }
285
+ }
286
+ return cloudflareRequest;
287
+ }
288
+ formatResponse(result, model, request, responseTime) {
289
+ const payload = this.unwrapResult(result);
290
+ const content = this.extractText(result);
291
+ const toolCalls = this.extractToolCalls(result);
292
+ const usage = this.extractUsage(result, model, request, content);
293
+ const response = {
294
+ id: typeof payload === 'object' && payload !== null ? payload.id : undefined,
295
+ message: content,
296
+ content,
297
+ usage,
298
+ model: payload?.model || model,
299
+ provider: this.name,
300
+ responseTime,
301
+ finishReason: this.extractFinishReason(result, toolCalls),
302
+ metadata: {
303
+ cloudflareAI: true,
304
+ accountId: this.accountId
305
+ }
306
+ };
307
+ if (toolCalls.length > 0) {
308
+ response.toolCalls = toolCalls;
309
+ }
310
+ return response;
311
+ }
312
+ extractText(result) {
313
+ const payload = this.unwrapResult(result);
314
+ if (typeof payload === 'string') {
315
+ return payload;
316
+ }
317
+ if (typeof payload?.response === 'string') {
318
+ return payload.response;
319
+ }
320
+ const chatContent = payload?.choices?.[0]?.message?.content;
321
+ if (typeof chatContent === 'string') {
322
+ return chatContent;
323
+ }
324
+ if (chatContent === null) {
325
+ return '';
326
+ }
327
+ if (Array.isArray(chatContent)) {
328
+ return chatContent
329
+ .map((part) => (typeof part?.text === 'string' ? part.text : ''))
330
+ .join('');
331
+ }
332
+ if (typeof payload?.output_text === 'string') {
333
+ return payload.output_text;
334
+ }
335
+ if (Array.isArray(payload?.output)) {
336
+ return payload.output
337
+ .flatMap((item) => {
338
+ if (item?.type === 'message' && Array.isArray(item.content)) {
339
+ return item.content
340
+ .map((part) => part?.type === 'output_text' || part?.type === 'text' ? part.text ?? '' : '')
341
+ .filter(Boolean);
342
+ }
343
+ if ((item?.type === 'output_text' || item?.type === 'text') && typeof item.text === 'string') {
344
+ return [item.text];
345
+ }
346
+ return [];
347
+ })
348
+ .join('');
349
+ }
350
+ return JSON.stringify(payload ?? '');
351
+ }
352
+ extractToolCalls(result) {
353
+ const payload = this.unwrapResult(result);
354
+ const choiceToolCalls = payload?.choices?.[0]?.message?.tool_calls;
355
+ if (Array.isArray(choiceToolCalls) && choiceToolCalls.length > 0) {
356
+ return choiceToolCalls.map((toolCall, index) => ({
357
+ id: toolCall.id || `call_${index}`,
358
+ type: 'function',
359
+ function: {
360
+ name: toolCall.function?.name || 'unknown',
361
+ arguments: this.stringifyArguments(toolCall.function?.arguments)
362
+ }
363
+ }));
364
+ }
365
+ if (Array.isArray(payload?.output)) {
366
+ return payload.output
367
+ .filter((item) => item?.type === 'function_call' && item.name)
368
+ .map((item, index) => ({
369
+ id: item.call_id || item.id || `call_${index}`,
370
+ type: 'function',
371
+ function: {
372
+ name: item.name,
373
+ arguments: this.stringifyArguments(item.arguments)
374
+ }
375
+ }));
376
+ }
377
+ return [];
378
+ }
379
+ extractUsage(result, model, request, content) {
380
+ const payload = this.unwrapResult(result);
381
+ const usage = payload?.usage;
382
+ const inputTokens = usage?.prompt_tokens ?? usage?.input_tokens;
383
+ const outputTokens = usage?.completion_tokens ?? usage?.output_tokens;
384
+ const totalTokens = usage?.total_tokens;
385
+ if (typeof inputTokens === 'number' ||
386
+ typeof outputTokens === 'number' ||
387
+ typeof totalTokens === 'number') {
388
+ const normalizedInputTokens = typeof inputTokens === 'number'
389
+ ? inputTokens
390
+ : Math.max((totalTokens ?? 0) - (outputTokens ?? 0), 0);
391
+ const normalizedOutputTokens = typeof outputTokens === 'number'
392
+ ? outputTokens
393
+ : Math.max((totalTokens ?? 0) - normalizedInputTokens, 0);
394
+ const normalizedTotalTokens = typeof totalTokens === 'number'
395
+ ? totalTokens
396
+ : normalizedInputTokens + normalizedOutputTokens;
397
+ return {
398
+ inputTokens: normalizedInputTokens,
399
+ outputTokens: normalizedOutputTokens,
400
+ totalTokens: normalizedTotalTokens,
401
+ cost: this.calculateCost(normalizedInputTokens, normalizedOutputTokens, model)
402
+ };
403
+ }
404
+ const estimatedInputTokens = (request.systemPrompt ? Math.ceil(request.systemPrompt.length / 4) : 0) +
405
+ request.messages.reduce((sum, message) => sum + Math.ceil(message.content.length / 4), 0);
406
+ const estimatedOutputTokens = Math.ceil(content.length / 4);
407
+ return {
408
+ inputTokens: estimatedInputTokens,
409
+ outputTokens: estimatedOutputTokens,
410
+ totalTokens: estimatedInputTokens + estimatedOutputTokens,
411
+ cost: this.calculateCost(estimatedInputTokens, estimatedOutputTokens, model)
412
+ };
413
+ }
414
+ extractFinishReason(result, toolCalls) {
415
+ const payload = this.unwrapResult(result);
416
+ const finishReason = payload?.choices?.[0]?.finish_reason;
417
+ if (finishReason === 'stop' ||
418
+ finishReason === 'length' ||
419
+ finishReason === 'tool_calls' ||
420
+ finishReason === 'content_filter') {
421
+ return finishReason;
422
+ }
423
+ if (toolCalls.length > 0) {
424
+ return 'tool_calls';
425
+ }
426
+ return 'stop';
427
+ }
428
+ stringifyArguments(argumentsValue) {
429
+ if (typeof argumentsValue === 'string') {
430
+ return argumentsValue;
431
+ }
432
+ return JSON.stringify(argumentsValue ?? {});
433
+ }
434
+ unwrapResult(result) {
435
+ if (result && typeof result === 'object' && 'result' in result && result.result) {
436
+ return result.result;
437
+ }
438
+ return result;
439
+ }
440
+ /**
441
+ * Stream response support
442
+ */
443
+ async streamResponse(request) {
444
+ this.validateRequest(request);
445
+ const model = request.model || '@cf/meta/llama-3.1-8b-instruct';
446
+ const cloudflareRequest = { ...this.formatRequest(request, model), stream: true };
447
+ return new ReadableStream({
448
+ start: async (controller) => {
449
+ try {
450
+ // Cloudflare AI streaming support
451
+ const stream = await this.ai.run(model, cloudflareRequest);
452
+ if (stream instanceof ReadableStream) {
453
+ const reader = stream.getReader();
454
+ while (true) {
455
+ const { done, value } = await reader.read();
456
+ if (done) {
457
+ controller.close();
458
+ break;
459
+ }
460
+ // Handle different chunk formats
461
+ if (typeof value === 'string') {
462
+ controller.enqueue(value);
463
+ }
464
+ else if (value?.response) {
465
+ controller.enqueue(value.response);
466
+ }
467
+ else if (value?.delta?.content) {
468
+ controller.enqueue(value.delta.content);
469
+ }
470
+ }
471
+ }
472
+ else {
473
+ // Non-streaming response, send all at once
474
+ const content = typeof stream === 'string' ? stream : stream?.response || '';
475
+ controller.enqueue(content);
476
+ controller.close();
477
+ }
478
+ }
479
+ catch (error) {
480
+ controller.error(error);
481
+ }
482
+ }
483
+ });
484
+ }
485
+ /**
486
+ * Batch processing support
487
+ */
488
+ async processBatch(requests) {
489
+ // Process requests concurrently but with rate limiting
490
+ const batchSize = 5; // Process 5 at a time to avoid overwhelming
491
+ const responses = [];
492
+ for (let i = 0; i < requests.length; i += batchSize) {
493
+ const batch = requests.slice(i, i + batchSize);
494
+ const batchPromises = batch.map(async (request) => {
495
+ try {
496
+ return await this.generateResponse(request);
497
+ }
498
+ catch (error) {
499
+ // Return error response for failed requests
500
+ return {
501
+ message: '',
502
+ usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
503
+ model: request.model || '@cf/meta/llama-3.1-8b-instruct',
504
+ provider: this.name,
505
+ responseTime: 0,
506
+ metadata: { error: error.message }
507
+ };
508
+ }
509
+ });
510
+ const batchResults = await Promise.all(batchPromises);
511
+ responses.push(...batchResults);
512
+ }
513
+ return responses;
514
+ }
515
+ /**
516
+ * Get recommended model for cost optimization
517
+ */
518
+ getRecommendedModel(request) {
519
+ const messageLength = request.messages.reduce((sum, msg) => sum + msg.content.length, 0);
520
+ const maxTokens = request.maxTokens || 1000;
521
+ // For short responses, use the fastest/cheapest model
522
+ if (messageLength < 500 && maxTokens < 500) {
523
+ return '@cf/tinyllama/tinyllama-1.1b-chat-v1.0';
524
+ }
525
+ // For medium complexity tasks
526
+ if (messageLength < 2000 && maxTokens < 2000) {
527
+ return '@cf/qwen/qwen1.5-7b-chat-awq';
528
+ }
529
+ // For complex tasks, use the best model
530
+ return '@cf/meta/llama-3.1-8b-instruct';
531
+ }
532
+ /**
533
+ * Cost optimization features
534
+ */
535
+ async generateWithCostOptimization(request) {
536
+ // Automatically select the most cost-effective model
537
+ const optimizedRequest = {
538
+ ...request,
539
+ model: request.model || this.getRecommendedModel(request)
540
+ };
541
+ return this.generateResponse(optimizedRequest);
542
+ }
543
+ }
544
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../../src/providers/cloudflare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Groq Provider
3
+ * Implementation for Groq fast inference models (OpenAI-compatible API)
4
+ */
5
+ import type { LLMRequest, LLMResponse, GroqConfig, ModelCapabilities } from '../types';
6
+ import { BaseProvider } from './base';
7
+ export declare class GroqProvider extends BaseProvider {
8
+ name: string;
9
+ models: string[];
10
+ supportsStreaming: boolean;
11
+ supportsTools: boolean;
12
+ supportsBatching: boolean;
13
+ private apiKey;
14
+ private baseUrl;
15
+ constructor(config: GroqConfig);
16
+ generateResponse(request: LLMRequest): Promise<LLMResponse>;
17
+ validateConfig(): boolean;
18
+ getModels(): string[];
19
+ estimateCost(request: LLMRequest): number;
20
+ healthCheck(): Promise<boolean>;
21
+ protected getModelCapabilities(): Record<string, ModelCapabilities>;
22
+ /**
23
+ * Stream response support (OpenAI-compatible SSE format)
24
+ */
25
+ streamResponse(request: LLMRequest): Promise<ReadableStream<string>>;
26
+ private makeGroqRequest;
27
+ private formatRequest;
28
+ private formatResponse;
29
+ }
30
+ //# sourceMappingURL=groq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAyCtC,qBAAa,YAAa,SAAQ,YAAY;IAC5C,IAAI,SAAU;IACd,MAAM,WAGJ;IACF,iBAAiB,UAAQ;IACzB,aAAa,UAAS;IACtB,gBAAgB,UAAS;IAEzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,UAAU;IAWxB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA8BjE,cAAc,IAAI,OAAO;IAIzB,SAAS,IAAI,MAAM,EAAE;IAIrB,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM;IAcnC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,SAAS,CAAC,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAuBnE;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YA8D5D,eAAe;IAsB7B,OAAO,CAAC,aAAa;IAqCrB,OAAO,CAAC,cAAc;CAoCvB"}