ai.matey.backend 0.2.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 (159) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/index.js +60 -0
  3. package/dist/cjs/index.js.map +1 -0
  4. package/dist/cjs/providers/ai21.js +331 -0
  5. package/dist/cjs/providers/ai21.js.map +1 -0
  6. package/dist/cjs/providers/anthropic.js +664 -0
  7. package/dist/cjs/providers/anthropic.js.map +1 -0
  8. package/dist/cjs/providers/anyscale.js +338 -0
  9. package/dist/cjs/providers/anyscale.js.map +1 -0
  10. package/dist/cjs/providers/aws-bedrock.js +374 -0
  11. package/dist/cjs/providers/aws-bedrock.js.map +1 -0
  12. package/dist/cjs/providers/azure-openai.js +406 -0
  13. package/dist/cjs/providers/azure-openai.js.map +1 -0
  14. package/dist/cjs/providers/cerebras.js +356 -0
  15. package/dist/cjs/providers/cerebras.js.map +1 -0
  16. package/dist/cjs/providers/cloudflare.js +359 -0
  17. package/dist/cjs/providers/cloudflare.js.map +1 -0
  18. package/dist/cjs/providers/cohere.js +368 -0
  19. package/dist/cjs/providers/cohere.js.map +1 -0
  20. package/dist/cjs/providers/deepinfra.js +343 -0
  21. package/dist/cjs/providers/deepinfra.js.map +1 -0
  22. package/dist/cjs/providers/deepseek.js +104 -0
  23. package/dist/cjs/providers/deepseek.js.map +1 -0
  24. package/dist/cjs/providers/fireworks.js +363 -0
  25. package/dist/cjs/providers/fireworks.js.map +1 -0
  26. package/dist/cjs/providers/gemini.js +292 -0
  27. package/dist/cjs/providers/gemini.js.map +1 -0
  28. package/dist/cjs/providers/groq.js +143 -0
  29. package/dist/cjs/providers/groq.js.map +1 -0
  30. package/dist/cjs/providers/huggingface.js +392 -0
  31. package/dist/cjs/providers/huggingface.js.map +1 -0
  32. package/dist/cjs/providers/lmstudio.js +144 -0
  33. package/dist/cjs/providers/lmstudio.js.map +1 -0
  34. package/dist/cjs/providers/mistral.js +288 -0
  35. package/dist/cjs/providers/mistral.js.map +1 -0
  36. package/dist/cjs/providers/nvidia.js +167 -0
  37. package/dist/cjs/providers/nvidia.js.map +1 -0
  38. package/dist/cjs/providers/ollama.js +257 -0
  39. package/dist/cjs/providers/ollama.js.map +1 -0
  40. package/dist/cjs/providers/openai.js +640 -0
  41. package/dist/cjs/providers/openai.js.map +1 -0
  42. package/dist/cjs/providers/openrouter.js +379 -0
  43. package/dist/cjs/providers/openrouter.js.map +1 -0
  44. package/dist/cjs/providers/perplexity.js +372 -0
  45. package/dist/cjs/providers/perplexity.js.map +1 -0
  46. package/dist/cjs/providers/replicate.js +340 -0
  47. package/dist/cjs/providers/replicate.js.map +1 -0
  48. package/dist/cjs/providers/together-ai.js +341 -0
  49. package/dist/cjs/providers/together-ai.js.map +1 -0
  50. package/dist/cjs/providers/xai.js +339 -0
  51. package/dist/cjs/providers/xai.js.map +1 -0
  52. package/dist/cjs/shared.js +279 -0
  53. package/dist/cjs/shared.js.map +1 -0
  54. package/dist/esm/index.js +44 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/providers/ai21.js +327 -0
  57. package/dist/esm/providers/ai21.js.map +1 -0
  58. package/dist/esm/providers/anthropic.js +660 -0
  59. package/dist/esm/providers/anthropic.js.map +1 -0
  60. package/dist/esm/providers/anyscale.js +334 -0
  61. package/dist/esm/providers/anyscale.js.map +1 -0
  62. package/dist/esm/providers/aws-bedrock.js +370 -0
  63. package/dist/esm/providers/aws-bedrock.js.map +1 -0
  64. package/dist/esm/providers/azure-openai.js +402 -0
  65. package/dist/esm/providers/azure-openai.js.map +1 -0
  66. package/dist/esm/providers/cerebras.js +352 -0
  67. package/dist/esm/providers/cerebras.js.map +1 -0
  68. package/dist/esm/providers/cloudflare.js +355 -0
  69. package/dist/esm/providers/cloudflare.js.map +1 -0
  70. package/dist/esm/providers/cohere.js +364 -0
  71. package/dist/esm/providers/cohere.js.map +1 -0
  72. package/dist/esm/providers/deepinfra.js +339 -0
  73. package/dist/esm/providers/deepinfra.js.map +1 -0
  74. package/dist/esm/providers/deepseek.js +99 -0
  75. package/dist/esm/providers/deepseek.js.map +1 -0
  76. package/dist/esm/providers/fireworks.js +359 -0
  77. package/dist/esm/providers/fireworks.js.map +1 -0
  78. package/dist/esm/providers/gemini.js +288 -0
  79. package/dist/esm/providers/gemini.js.map +1 -0
  80. package/dist/esm/providers/groq.js +138 -0
  81. package/dist/esm/providers/groq.js.map +1 -0
  82. package/dist/esm/providers/huggingface.js +387 -0
  83. package/dist/esm/providers/huggingface.js.map +1 -0
  84. package/dist/esm/providers/lmstudio.js +139 -0
  85. package/dist/esm/providers/lmstudio.js.map +1 -0
  86. package/dist/esm/providers/mistral.js +284 -0
  87. package/dist/esm/providers/mistral.js.map +1 -0
  88. package/dist/esm/providers/nvidia.js +162 -0
  89. package/dist/esm/providers/nvidia.js.map +1 -0
  90. package/dist/esm/providers/ollama.js +253 -0
  91. package/dist/esm/providers/ollama.js.map +1 -0
  92. package/dist/esm/providers/openai.js +636 -0
  93. package/dist/esm/providers/openai.js.map +1 -0
  94. package/dist/esm/providers/openrouter.js +375 -0
  95. package/dist/esm/providers/openrouter.js.map +1 -0
  96. package/dist/esm/providers/perplexity.js +368 -0
  97. package/dist/esm/providers/perplexity.js.map +1 -0
  98. package/dist/esm/providers/replicate.js +336 -0
  99. package/dist/esm/providers/replicate.js.map +1 -0
  100. package/dist/esm/providers/together-ai.js +337 -0
  101. package/dist/esm/providers/together-ai.js.map +1 -0
  102. package/dist/esm/providers/xai.js +335 -0
  103. package/dist/esm/providers/xai.js.map +1 -0
  104. package/dist/esm/shared.js +272 -0
  105. package/dist/esm/shared.js.map +1 -0
  106. package/dist/types/index.d.ts +38 -0
  107. package/dist/types/index.d.ts.map +1 -0
  108. package/dist/types/providers/ai21.d.ts +106 -0
  109. package/dist/types/providers/ai21.d.ts.map +1 -0
  110. package/dist/types/providers/anthropic.d.ts +194 -0
  111. package/dist/types/providers/anthropic.d.ts.map +1 -0
  112. package/dist/types/providers/anyscale.d.ts +109 -0
  113. package/dist/types/providers/anyscale.d.ts.map +1 -0
  114. package/dist/types/providers/aws-bedrock.d.ts +152 -0
  115. package/dist/types/providers/aws-bedrock.d.ts.map +1 -0
  116. package/dist/types/providers/azure-openai.d.ts +142 -0
  117. package/dist/types/providers/azure-openai.d.ts.map +1 -0
  118. package/dist/types/providers/cerebras.d.ts +130 -0
  119. package/dist/types/providers/cerebras.d.ts.map +1 -0
  120. package/dist/types/providers/cloudflare.d.ts +125 -0
  121. package/dist/types/providers/cloudflare.d.ts.map +1 -0
  122. package/dist/types/providers/cohere.d.ts +114 -0
  123. package/dist/types/providers/cohere.d.ts.map +1 -0
  124. package/dist/types/providers/deepinfra.d.ts +118 -0
  125. package/dist/types/providers/deepinfra.d.ts.map +1 -0
  126. package/dist/types/providers/deepseek.d.ts +68 -0
  127. package/dist/types/providers/deepseek.d.ts.map +1 -0
  128. package/dist/types/providers/fireworks.d.ts +127 -0
  129. package/dist/types/providers/fireworks.d.ts.map +1 -0
  130. package/dist/types/providers/gemini.d.ts +71 -0
  131. package/dist/types/providers/gemini.d.ts.map +1 -0
  132. package/dist/types/providers/groq.d.ts +83 -0
  133. package/dist/types/providers/groq.d.ts.map +1 -0
  134. package/dist/types/providers/huggingface.d.ts +154 -0
  135. package/dist/types/providers/huggingface.d.ts.map +1 -0
  136. package/dist/types/providers/lmstudio.d.ts +88 -0
  137. package/dist/types/providers/lmstudio.d.ts.map +1 -0
  138. package/dist/types/providers/mistral.d.ts +65 -0
  139. package/dist/types/providers/mistral.d.ts.map +1 -0
  140. package/dist/types/providers/nvidia.d.ts +100 -0
  141. package/dist/types/providers/nvidia.d.ts.map +1 -0
  142. package/dist/types/providers/ollama.d.ts +59 -0
  143. package/dist/types/providers/ollama.d.ts.map +1 -0
  144. package/dist/types/providers/openai.d.ts +205 -0
  145. package/dist/types/providers/openai.d.ts.map +1 -0
  146. package/dist/types/providers/openrouter.d.ts +135 -0
  147. package/dist/types/providers/openrouter.d.ts.map +1 -0
  148. package/dist/types/providers/perplexity.d.ts +116 -0
  149. package/dist/types/providers/perplexity.d.ts.map +1 -0
  150. package/dist/types/providers/replicate.d.ts +91 -0
  151. package/dist/types/providers/replicate.d.ts.map +1 -0
  152. package/dist/types/providers/together-ai.d.ts +118 -0
  153. package/dist/types/providers/together-ai.d.ts.map +1 -0
  154. package/dist/types/providers/xai.d.ts +119 -0
  155. package/dist/types/providers/xai.d.ts.map +1 -0
  156. package/dist/types/shared.d.ts +116 -0
  157. package/dist/types/shared.d.ts.map +1 -0
  158. package/package.json +327 -0
  159. package/readme.md +86 -0
@@ -0,0 +1,374 @@
1
+ "use strict";
2
+ /**
3
+ * AWS Bedrock Backend Adapter
4
+ *
5
+ * Adapts Universal IR to AWS Bedrock Converse API.
6
+ * AWS Bedrock provides unified access to multiple foundation models with AWS SigV4 authentication.
7
+ *
8
+ * @module
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.AWSBedrockBackendAdapter = void 0;
12
+ const ai_matey_errors_1 = require("ai.matey.errors");
13
+ const ai_matey_utils_1 = require("ai.matey.utils");
14
+ const ai_matey_utils_2 = require("ai.matey.utils");
15
+ // ============================================================================
16
+ // AWS Bedrock Backend Adapter
17
+ // ============================================================================
18
+ /**
19
+ * Backend adapter for AWS Bedrock Converse API.
20
+ *
21
+ * Features:
22
+ * - Unified API for multiple foundation models
23
+ * - AWS SigV4 authentication
24
+ * - Vision support (select models)
25
+ * - No function calling in Converse API
26
+ * - Enterprise features (VPC, encryption, compliance)
27
+ * - Pay-per-use pricing
28
+ *
29
+ * Note: This adapter requires AWS credentials. Authentication can be provided via:
30
+ * 1. Config (awsAccessKeyId, awsSecretAccessKey, awsSessionToken)
31
+ * 2. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
32
+ * 3. IAM roles (when running on AWS infrastructure)
33
+ */
34
+ class AWSBedrockBackendAdapter {
35
+ metadata;
36
+ config;
37
+ region;
38
+ baseURL;
39
+ constructor(config) {
40
+ this.config = config;
41
+ this.region = config.region || process.env.AWS_REGION || 'us-east-1';
42
+ // Construct base URL from region
43
+ this.baseURL = config.baseURL || `https://bedrock-runtime.${this.region}.amazonaws.com`;
44
+ this.metadata = {
45
+ name: 'aws-bedrock-backend',
46
+ version: '1.0.0',
47
+ provider: 'AWS Bedrock',
48
+ capabilities: {
49
+ streaming: true, // Note: Not supported in all regions/models
50
+ multiModal: true, // Vision supported in some models
51
+ tools: false, // Converse API doesn't support function calling
52
+ maxContextTokens: 200000, // Claude 3 models support 200K
53
+ systemMessageStrategy: 'separate-parameter', // Uses system field
54
+ supportsMultipleSystemMessages: true,
55
+ supportsTemperature: true,
56
+ supportsTopP: true,
57
+ supportsTopK: false,
58
+ supportsSeed: false,
59
+ supportsFrequencyPenalty: false,
60
+ supportsPresencePenalty: false,
61
+ maxStopSequences: 4,
62
+ },
63
+ config: {
64
+ baseURL: this.baseURL,
65
+ region: this.region,
66
+ },
67
+ };
68
+ }
69
+ /**
70
+ * Convert IR to Bedrock format.
71
+ */
72
+ fromIR(request) {
73
+ const { messages, systemParameter } = (0, ai_matey_utils_1.normalizeSystemMessages)(request.messages, this.metadata.capabilities.systemMessageStrategy, this.metadata.capabilities.supportsMultipleSystemMessages);
74
+ const bedrockMessages = messages.map((msg) => {
75
+ const role = msg.role === 'assistant' ? 'assistant' : 'user';
76
+ const content = typeof msg.content === 'string'
77
+ ? [{ text: msg.content }]
78
+ : msg.content.map((block) => {
79
+ if (block.type === 'text') {
80
+ return { text: block.text };
81
+ }
82
+ else if (block.type === 'image') {
83
+ // Convert base64 data or URL to bytes
84
+ const bytes = block.source.type === 'base64' ? block.source.data : ''; // Simplified: should decode base64
85
+ return {
86
+ image: {
87
+ format: 'png', // Simplified: should detect format
88
+ source: { bytes },
89
+ },
90
+ };
91
+ }
92
+ return { text: JSON.stringify(block) };
93
+ });
94
+ return { role, content };
95
+ });
96
+ const bedrockRequest = {
97
+ modelId: request.parameters?.model ||
98
+ this.config.defaultModel ||
99
+ 'anthropic.claude-3-haiku-20240307-v1:0',
100
+ messages: bedrockMessages,
101
+ inferenceConfig: {
102
+ temperature: request.parameters?.temperature,
103
+ maxTokens: request.parameters?.maxTokens,
104
+ topP: request.parameters?.topP,
105
+ stopSequences: request.parameters?.stopSequences
106
+ ? [...request.parameters.stopSequences]
107
+ : undefined,
108
+ },
109
+ };
110
+ // Add system messages
111
+ if (systemParameter) {
112
+ if (typeof systemParameter === 'string') {
113
+ bedrockRequest.system = [{ text: systemParameter }];
114
+ }
115
+ else {
116
+ bedrockRequest.system = systemParameter.map((msg) => ({
117
+ text: typeof msg === 'string' ? msg : msg.text || JSON.stringify(msg),
118
+ }));
119
+ }
120
+ }
121
+ return bedrockRequest;
122
+ }
123
+ /**
124
+ * Convert Bedrock response to IR.
125
+ */
126
+ toIR(response, originalRequest, latencyMs) {
127
+ const message = {
128
+ role: 'assistant',
129
+ content: response.output.message.content.map((c) => c.text).join(''),
130
+ };
131
+ const finishReasonMap = {
132
+ end_turn: 'stop',
133
+ max_tokens: 'length',
134
+ stop_sequence: 'stop',
135
+ content_filtered: 'stop',
136
+ };
137
+ return {
138
+ message,
139
+ finishReason: finishReasonMap[response.stopReason] || 'stop',
140
+ usage: {
141
+ promptTokens: response.usage.inputTokens,
142
+ completionTokens: response.usage.outputTokens,
143
+ totalTokens: response.usage.totalTokens,
144
+ },
145
+ metadata: {
146
+ ...originalRequest.metadata,
147
+ providerResponseId: '', // Bedrock doesn't provide a unique ID in Converse API
148
+ provenance: {
149
+ ...originalRequest.metadata.provenance,
150
+ backend: this.metadata.name,
151
+ },
152
+ custom: {
153
+ ...originalRequest.metadata.custom,
154
+ latencyMs: response.metrics?.latencyMs || latencyMs,
155
+ },
156
+ },
157
+ raw: response,
158
+ };
159
+ }
160
+ /**
161
+ * Execute non-streaming request.
162
+ */
163
+ async execute(request, signal) {
164
+ try {
165
+ const bedrockRequest = this.fromIR(request);
166
+ const startTime = Date.now();
167
+ const response = await fetch(`${this.baseURL}/model/${bedrockRequest.modelId}/converse`, {
168
+ method: 'POST',
169
+ headers: await this.getHeaders('POST', `/model/${bedrockRequest.modelId}/converse`, JSON.stringify(bedrockRequest)),
170
+ body: JSON.stringify(bedrockRequest),
171
+ signal,
172
+ });
173
+ if (!response.ok) {
174
+ throw (0, ai_matey_errors_1.createErrorFromHttpResponse)(response.status, response.statusText, await response.text(), { backend: this.metadata.name });
175
+ }
176
+ const data = (await response.json());
177
+ return this.toIR(data, request, Date.now() - startTime);
178
+ }
179
+ catch (error) {
180
+ if (error instanceof ai_matey_errors_1.NetworkError || error instanceof ai_matey_errors_1.ProviderError) {
181
+ throw error;
182
+ }
183
+ throw new ai_matey_errors_1.ProviderError({
184
+ code: ai_matey_errors_1.ErrorCode.PROVIDER_ERROR,
185
+ message: `AWS Bedrock request failed: ${error instanceof Error ? error.message : String(error)}`,
186
+ isRetryable: true,
187
+ provenance: { backend: this.metadata.name },
188
+ cause: error instanceof Error ? error : undefined,
189
+ });
190
+ }
191
+ }
192
+ /**
193
+ * Execute streaming request.
194
+ * Note: Streaming support varies by model and region.
195
+ */
196
+ async *executeStream(request, signal) {
197
+ try {
198
+ const bedrockRequest = this.fromIR(request);
199
+ const streamingConfig = (0, ai_matey_utils_2.mergeStreamingConfig)(this.config.streaming);
200
+ const effectiveMode = (0, ai_matey_utils_2.getEffectiveStreamMode)(request.streamMode, undefined, streamingConfig);
201
+ const includeBoth = streamingConfig.includeBoth || effectiveMode === 'accumulated';
202
+ const response = await fetch(`${this.baseURL}/model/${bedrockRequest.modelId}/converse-stream`, {
203
+ method: 'POST',
204
+ headers: await this.getHeaders('POST', `/model/${bedrockRequest.modelId}/converse-stream`, JSON.stringify(bedrockRequest)),
205
+ body: JSON.stringify(bedrockRequest),
206
+ signal,
207
+ });
208
+ if (!response.ok) {
209
+ throw (0, ai_matey_errors_1.createErrorFromHttpResponse)(response.status, response.statusText, await response.text(), { backend: this.metadata.name });
210
+ }
211
+ if (!response.body) {
212
+ throw new ai_matey_errors_1.StreamError({
213
+ code: ai_matey_errors_1.ErrorCode.STREAM_ERROR,
214
+ message: 'No response body',
215
+ provenance: { backend: this.metadata.name },
216
+ });
217
+ }
218
+ let sequence = 0;
219
+ let contentBuffer = '';
220
+ yield {
221
+ type: 'start',
222
+ sequence: sequence++,
223
+ metadata: {
224
+ ...request.metadata,
225
+ provenance: {
226
+ ...request.metadata.provenance,
227
+ backend: this.metadata.name,
228
+ },
229
+ },
230
+ };
231
+ const reader = response.body.getReader();
232
+ const decoder = new TextDecoder();
233
+ let buffer = '';
234
+ try {
235
+ while (true) {
236
+ const { done, value } = await reader.read();
237
+ if (done) {
238
+ break;
239
+ }
240
+ buffer += decoder.decode(value, { stream: true });
241
+ // AWS event stream format is binary, but for simplicity we'll parse as JSON lines
242
+ const lines = buffer.split('\n');
243
+ buffer = lines.pop() || '';
244
+ for (const line of lines) {
245
+ if (!line.trim()) {
246
+ continue;
247
+ }
248
+ try {
249
+ const chunk = JSON.parse(line);
250
+ if (chunk.contentBlockDelta?.delta?.text) {
251
+ const delta = chunk.contentBlockDelta.delta.text;
252
+ contentBuffer += delta;
253
+ const contentChunk = {
254
+ type: 'content',
255
+ sequence: sequence++,
256
+ delta: delta,
257
+ role: 'assistant',
258
+ };
259
+ if (includeBoth) {
260
+ contentChunk.accumulated = contentBuffer;
261
+ }
262
+ yield contentChunk;
263
+ }
264
+ if (chunk.messageStop) {
265
+ const finishReasonMap = {
266
+ end_turn: 'stop',
267
+ max_tokens: 'length',
268
+ stop_sequence: 'stop',
269
+ content_filtered: 'stop',
270
+ };
271
+ const doneChunk = {
272
+ type: 'done',
273
+ sequence: sequence++,
274
+ finishReason: finishReasonMap[chunk.messageStop.stopReason] || 'stop',
275
+ message: { role: 'assistant', content: contentBuffer },
276
+ };
277
+ // Include usage if present
278
+ if (chunk.metadata?.usage) {
279
+ doneChunk.usage = {
280
+ promptTokens: chunk.metadata.usage.inputTokens,
281
+ completionTokens: chunk.metadata.usage.outputTokens,
282
+ totalTokens: chunk.metadata.usage.totalTokens,
283
+ };
284
+ }
285
+ yield doneChunk;
286
+ }
287
+ }
288
+ catch (parseError) {
289
+ console.warn('Failed to parse Bedrock stream chunk:', line, parseError);
290
+ }
291
+ }
292
+ }
293
+ }
294
+ finally {
295
+ reader.releaseLock();
296
+ }
297
+ }
298
+ catch (error) {
299
+ yield {
300
+ type: 'error',
301
+ sequence: 0,
302
+ error: {
303
+ code: error instanceof Error ? error.name : 'UNKNOWN_ERROR',
304
+ message: error instanceof Error ? error.message : String(error),
305
+ },
306
+ };
307
+ }
308
+ }
309
+ /**
310
+ * Get HTTP headers with AWS SigV4 signing.
311
+ *
312
+ * SIMPLIFIED VERSION: This implementation assumes AWS credentials are handled
313
+ * externally or uses basic headers. For production, use AWS SDK or aws4fetch
314
+ * for proper SigV4 signing.
315
+ */
316
+ getHeaders(_method, _path, _body) {
317
+ const headers = {
318
+ 'Content-Type': 'application/json',
319
+ Accept: 'application/json',
320
+ };
321
+ // If AWS credentials are provided in config, add Authorization header
322
+ // Note: In production, this should use proper AWS SigV4 signing
323
+ if (this.config.awsAccessKeyId && this.config.awsSecretAccessKey) {
324
+ // Simplified: In production, use AWS SDK or aws4fetch for proper SigV4 signing
325
+ headers['Authorization'] = `AWS4-HMAC-SHA256 Credential=${this.config.awsAccessKeyId}/...`;
326
+ headers['X-Amz-Date'] = new Date().toISOString().replace(/[:-]|\.\d{3}/g, '');
327
+ if (this.config.awsSessionToken) {
328
+ headers['X-Amz-Security-Token'] = this.config.awsSessionToken;
329
+ }
330
+ }
331
+ return Promise.resolve({ ...headers, ...this.config.headers });
332
+ }
333
+ /**
334
+ * Health check.
335
+ */
336
+ healthCheck() {
337
+ try {
338
+ // Bedrock doesn't have a dedicated health endpoint
339
+ // We'll attempt a minimal request
340
+ return Promise.resolve(true); // Simplified: should actually test connectivity
341
+ }
342
+ catch {
343
+ return Promise.resolve(false);
344
+ }
345
+ }
346
+ /**
347
+ * Estimate cost.
348
+ * AWS Bedrock pricing varies by model and region.
349
+ */
350
+ estimateCost(request) {
351
+ const pricing = {
352
+ 'anthropic.claude-3-haiku-20240307-v1:0': { input: 0.25, output: 1.25 },
353
+ 'anthropic.claude-3-sonnet-20240229-v1:0': { input: 3.0, output: 15.0 },
354
+ 'anthropic.claude-3-opus-20240229-v1:0': { input: 15.0, output: 75.0 },
355
+ 'meta.llama3-1-8b-instruct-v1:0': { input: 0.3, output: 0.6 },
356
+ 'meta.llama3-1-70b-instruct-v1:0': { input: 1.0, output: 2.0 },
357
+ };
358
+ const model = request.parameters?.model || this.config.defaultModel || '';
359
+ const modelPricing = pricing[model];
360
+ if (!modelPricing) {
361
+ return Promise.resolve(null);
362
+ }
363
+ const inputTokens = request.messages.reduce((sum, msg) => {
364
+ const content = typeof msg.content === 'string' ? msg.content : '';
365
+ return sum + Math.ceil(content.length / 4);
366
+ }, 0);
367
+ const outputTokens = request.parameters?.maxTokens || 1024;
368
+ const inputCost = (inputTokens / 1_000_000) * modelPricing.input;
369
+ const outputCost = (outputTokens / 1_000_000) * modelPricing.output;
370
+ return Promise.resolve(inputCost + outputCost);
371
+ }
372
+ }
373
+ exports.AWSBedrockBackendAdapter = AWSBedrockBackendAdapter;
374
+ //# sourceMappingURL=aws-bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-bedrock.js","sourceRoot":"","sources":["../../../src/providers/aws-bedrock.ts"],"names":[],"mappings":"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"}