@ai-sdk/amazon-bedrock 3.0.0-canary.5 → 3.0.0-canary.6

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/dist/index.mjs CHANGED
@@ -7,17 +7,15 @@ import {
7
7
  } from "@ai-sdk/provider-utils";
8
8
 
9
9
  // src/bedrock-chat-language-model.ts
10
- import {
11
- InvalidArgumentError
12
- } from "@ai-sdk/provider";
13
10
  import {
14
11
  combineHeaders,
15
12
  createJsonErrorResponseHandler,
16
13
  createJsonResponseHandler,
17
14
  postJsonToApi,
18
- resolve
15
+ resolve,
16
+ parseProviderOptions
19
17
  } from "@ai-sdk/provider-utils";
20
- import { z as z2 } from "zod";
18
+ import { z as z3 } from "zod";
21
19
 
22
20
  // src/bedrock-api-types.ts
23
21
  var BEDROCK_CACHE_POINT = {
@@ -36,11 +34,26 @@ var BEDROCK_STOP_REASONS = [
36
34
  "tool_use"
37
35
  ];
38
36
 
39
- // src/bedrock-error.ts
37
+ // src/bedrock-chat-options.ts
40
38
  import { z } from "zod";
41
- var BedrockErrorSchema = z.object({
42
- message: z.string(),
43
- type: z.string().nullish()
39
+ var bedrockProviderOptions = z.object({
40
+ /**
41
+ * Additional inference parameters that the model supports,
42
+ * beyond the base set of inference parameters that Converse
43
+ * supports in the inferenceConfig field
44
+ */
45
+ additionalModelRequestFields: z.record(z.any()).optional(),
46
+ reasoningConfig: z.object({
47
+ type: z.union([z.literal("enabled"), z.literal("disabled")]).nullish(),
48
+ budgetTokens: z.number().nullish()
49
+ }).nullish()
50
+ });
51
+
52
+ // src/bedrock-error.ts
53
+ import { z as z2 } from "zod";
54
+ var BedrockErrorSchema = z2.object({
55
+ message: z2.string(),
56
+ type: z2.string().nullish()
44
57
  });
45
58
 
46
59
  // src/bedrock-event-stream-response-handler.ts
@@ -194,7 +207,7 @@ function prepareTools({
194
207
  import {
195
208
  UnsupportedFunctionalityError as UnsupportedFunctionalityError2
196
209
  } from "@ai-sdk/provider";
197
- import { createIdGenerator } from "@ai-sdk/provider-utils";
210
+ import { convertToBase64, createIdGenerator } from "@ai-sdk/provider-utils";
198
211
  var generateFileId = createIdGenerator({ prefix: "file", size: 16 });
199
212
  function getCachePoint(providerMetadata) {
200
213
  var _a;
@@ -250,7 +263,7 @@ function convertToBedrockChatMessages(prompt) {
250
263
  bedrockContent.push({
251
264
  image: {
252
265
  format: bedrockImageFormat,
253
- source: { bytes: part.data }
266
+ source: { bytes: convertToBase64(part.data) }
254
267
  }
255
268
  });
256
269
  } else {
@@ -260,9 +273,7 @@ function convertToBedrockChatMessages(prompt) {
260
273
  "/"
261
274
  )) == null ? void 0 : _d[1],
262
275
  name: generateFileId(),
263
- source: {
264
- bytes: part.data
265
- }
276
+ source: { bytes: convertToBase64(part.data) }
266
277
  }
267
278
  });
268
279
  }
@@ -479,9 +490,8 @@ function mapBedrockFinishReason(finishReason) {
479
490
 
480
491
  // src/bedrock-chat-language-model.ts
481
492
  var BedrockChatLanguageModel = class {
482
- constructor(modelId, settings, config) {
493
+ constructor(modelId, config) {
483
494
  this.modelId = modelId;
484
- this.settings = settings;
485
495
  this.config = config;
486
496
  this.specificationVersion = "v2";
487
497
  this.provider = "amazon-bedrock";
@@ -490,7 +500,7 @@ var BedrockChatLanguageModel = class {
490
500
  }
491
501
  getArgs({
492
502
  prompt,
493
- maxTokens,
503
+ maxOutputTokens,
494
504
  temperature,
495
505
  topP,
496
506
  topK,
@@ -503,7 +513,12 @@ var BedrockChatLanguageModel = class {
503
513
  toolChoice,
504
514
  providerOptions
505
515
  }) {
506
- var _a, _b, _c, _d, _e, _f, _g;
516
+ var _a, _b, _c, _d, _e;
517
+ const bedrockOptions = (_a = parseProviderOptions({
518
+ provider: "bedrock",
519
+ providerOptions,
520
+ schema: bedrockProviderOptions
521
+ })) != null ? _a : {};
507
522
  const warnings = [];
508
523
  if (frequencyPenalty != null) {
509
524
  warnings.push({
@@ -537,34 +552,24 @@ var BedrockChatLanguageModel = class {
537
552
  });
538
553
  }
539
554
  const { system, messages } = convertToBedrockChatMessages(prompt);
540
- const reasoningConfigOptions = BedrockReasoningConfigOptionsSchema.safeParse(
541
- (_a = providerOptions == null ? void 0 : providerOptions.bedrock) == null ? void 0 : _a.reasoning_config
542
- );
543
- if (!reasoningConfigOptions.success) {
544
- throw new InvalidArgumentError({
545
- argument: "providerOptions.bedrock.reasoning_config",
546
- message: "invalid reasoning configuration options",
547
- cause: reasoningConfigOptions.error
548
- });
549
- }
550
- const isThinking = ((_b = reasoningConfigOptions.data) == null ? void 0 : _b.type) === "enabled";
551
- const thinkingBudget = (_e = (_c = reasoningConfigOptions.data) == null ? void 0 : _c.budgetTokens) != null ? _e : (_d = reasoningConfigOptions.data) == null ? void 0 : _d.budget_tokens;
555
+ const isThinking = ((_b = bedrockOptions.reasoningConfig) == null ? void 0 : _b.type) === "enabled";
556
+ const thinkingBudget = (_c = bedrockOptions.reasoningConfig) == null ? void 0 : _c.budgetTokens;
552
557
  const inferenceConfig = {
553
- ...maxTokens != null && { maxTokens },
558
+ ...maxOutputTokens != null && { maxOutputTokens },
554
559
  ...temperature != null && { temperature },
555
560
  ...topP != null && { topP },
556
561
  ...stopSequences != null && { stopSequences }
557
562
  };
558
563
  if (isThinking && thinkingBudget != null) {
559
- if (inferenceConfig.maxTokens != null) {
560
- inferenceConfig.maxTokens += thinkingBudget;
564
+ if (inferenceConfig.maxOutputTokens != null) {
565
+ inferenceConfig.maxOutputTokens += thinkingBudget;
561
566
  } else {
562
- inferenceConfig.maxTokens = thinkingBudget + 4096;
567
+ inferenceConfig.maxOutputTokens = thinkingBudget + 4096;
563
568
  }
564
- this.settings.additionalModelRequestFields = {
565
- ...this.settings.additionalModelRequestFields,
566
- reasoning_config: {
567
- type: (_f = reasoningConfigOptions.data) == null ? void 0 : _f.type,
569
+ bedrockOptions.additionalModelRequestFields = {
570
+ ...bedrockOptions.additionalModelRequestFields,
571
+ reasoningConfig: {
572
+ type: (_d = bedrockOptions.reasoningConfig) == null ? void 0 : _d.type,
568
573
  budget_tokens: thinkingBudget
569
574
  }
570
575
  };
@@ -590,18 +595,18 @@ var BedrockChatLanguageModel = class {
590
595
  command: {
591
596
  system,
592
597
  messages,
593
- additionalModelRequestFields: this.settings.additionalModelRequestFields,
598
+ additionalModelRequestFields: bedrockOptions.additionalModelRequestFields,
594
599
  ...Object.keys(inferenceConfig).length > 0 && {
595
600
  inferenceConfig
596
601
  },
597
602
  ...providerOptions == null ? void 0 : providerOptions.bedrock,
598
- ...((_g = toolConfig.tools) == null ? void 0 : _g.length) ? { toolConfig } : {}
603
+ ...((_e = toolConfig.tools) == null ? void 0 : _e.length) ? { toolConfig } : {}
599
604
  },
600
605
  warnings: [...warnings, ...toolWarnings]
601
606
  };
602
607
  }
603
608
  async doGenerate(options) {
604
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
609
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
605
610
  const { command: args, warnings } = this.getArgs(options);
606
611
  const url = `${this.getUrl(this.modelId)}/converse`;
607
612
  const { value: response, responseHeaders } = await postJsonToApi({
@@ -672,8 +677,8 @@ var BedrockChatLanguageModel = class {
672
677
  response.stopReason
673
678
  ),
674
679
  usage: {
675
- promptTokens: (_n = (_m = response.usage) == null ? void 0 : _m.inputTokens) != null ? _n : Number.NaN,
676
- completionTokens: (_p = (_o = response.usage) == null ? void 0 : _o.outputTokens) != null ? _p : Number.NaN
680
+ inputTokens: (_m = response.usage) == null ? void 0 : _m.inputTokens,
681
+ outputTokens: (_n = response.usage) == null ? void 0 : _n.outputTokens
677
682
  },
678
683
  response: {
679
684
  // TODO add id, timestamp, etc
@@ -703,9 +708,9 @@ var BedrockChatLanguageModel = class {
703
708
  fetch: this.config.fetch
704
709
  });
705
710
  let finishReason = "unknown";
706
- let usage = {
707
- promptTokens: Number.NaN,
708
- completionTokens: Number.NaN
711
+ const usage = {
712
+ inputTokens: void 0,
713
+ outputTokens: void 0
709
714
  };
710
715
  let providerMetadata = void 0;
711
716
  const toolCallContentBlocks = {};
@@ -745,10 +750,8 @@ var BedrockChatLanguageModel = class {
745
750
  );
746
751
  }
747
752
  if (value.metadata) {
748
- usage = {
749
- promptTokens: (_b = (_a = value.metadata.usage) == null ? void 0 : _a.inputTokens) != null ? _b : Number.NaN,
750
- completionTokens: (_d = (_c = value.metadata.usage) == null ? void 0 : _c.outputTokens) != null ? _d : Number.NaN
751
- };
753
+ usage.inputTokens = (_b = (_a = value.metadata.usage) == null ? void 0 : _a.inputTokens) != null ? _b : usage.inputTokens;
754
+ usage.outputTokens = (_d = (_c = value.metadata.usage) == null ? void 0 : _c.outputTokens) != null ? _d : usage.outputTokens;
752
755
  const cacheUsage = ((_e = value.metadata.usage) == null ? void 0 : _e.cacheReadInputTokens) != null || ((_f = value.metadata.usage) == null ? void 0 : _f.cacheWriteInputTokens) != null ? {
753
756
  usage: {
754
757
  cacheReadInputTokens: (_h = (_g = value.metadata.usage) == null ? void 0 : _g.cacheReadInputTokens) != null ? _h : Number.NaN,
@@ -849,105 +852,100 @@ var BedrockChatLanguageModel = class {
849
852
  return `${this.config.baseUrl()}/model/${encodedModelId}`;
850
853
  }
851
854
  };
852
- var BedrockReasoningConfigOptionsSchema = z2.object({
853
- type: z2.union([z2.literal("enabled"), z2.literal("disabled")]).nullish(),
854
- budget_tokens: z2.number().nullish(),
855
- budgetTokens: z2.number().nullish()
856
- }).nullish();
857
- var BedrockStopReasonSchema = z2.union([
858
- z2.enum(BEDROCK_STOP_REASONS),
859
- z2.string()
855
+ var BedrockStopReasonSchema = z3.union([
856
+ z3.enum(BEDROCK_STOP_REASONS),
857
+ z3.string()
860
858
  ]);
861
- var BedrockToolUseSchema = z2.object({
862
- toolUseId: z2.string(),
863
- name: z2.string(),
864
- input: z2.unknown()
859
+ var BedrockToolUseSchema = z3.object({
860
+ toolUseId: z3.string(),
861
+ name: z3.string(),
862
+ input: z3.unknown()
865
863
  });
866
- var BedrockReasoningTextSchema = z2.object({
867
- signature: z2.string().nullish(),
868
- text: z2.string()
864
+ var BedrockReasoningTextSchema = z3.object({
865
+ signature: z3.string().nullish(),
866
+ text: z3.string()
869
867
  });
870
- var BedrockRedactedReasoningSchema = z2.object({
871
- data: z2.string()
868
+ var BedrockRedactedReasoningSchema = z3.object({
869
+ data: z3.string()
872
870
  });
873
- var BedrockResponseSchema = z2.object({
874
- metrics: z2.object({
875
- latencyMs: z2.number()
871
+ var BedrockResponseSchema = z3.object({
872
+ metrics: z3.object({
873
+ latencyMs: z3.number()
876
874
  }).nullish(),
877
- output: z2.object({
878
- message: z2.object({
879
- content: z2.array(
880
- z2.object({
881
- text: z2.string().nullish(),
875
+ output: z3.object({
876
+ message: z3.object({
877
+ content: z3.array(
878
+ z3.object({
879
+ text: z3.string().nullish(),
882
880
  toolUse: BedrockToolUseSchema.nullish(),
883
- reasoningContent: z2.union([
884
- z2.object({
881
+ reasoningContent: z3.union([
882
+ z3.object({
885
883
  reasoningText: BedrockReasoningTextSchema
886
884
  }),
887
- z2.object({
885
+ z3.object({
888
886
  redactedReasoning: BedrockRedactedReasoningSchema
889
887
  })
890
888
  ]).nullish()
891
889
  })
892
890
  ),
893
- role: z2.string()
891
+ role: z3.string()
894
892
  })
895
893
  }),
896
894
  stopReason: BedrockStopReasonSchema,
897
- trace: z2.unknown().nullish(),
898
- usage: z2.object({
899
- inputTokens: z2.number(),
900
- outputTokens: z2.number(),
901
- totalTokens: z2.number(),
902
- cacheReadInputTokens: z2.number().nullish(),
903
- cacheWriteInputTokens: z2.number().nullish()
895
+ trace: z3.unknown().nullish(),
896
+ usage: z3.object({
897
+ inputTokens: z3.number(),
898
+ outputTokens: z3.number(),
899
+ totalTokens: z3.number(),
900
+ cacheReadInputTokens: z3.number().nullish(),
901
+ cacheWriteInputTokens: z3.number().nullish()
904
902
  })
905
903
  });
906
- var BedrockStreamSchema = z2.object({
907
- contentBlockDelta: z2.object({
908
- contentBlockIndex: z2.number(),
909
- delta: z2.union([
910
- z2.object({ text: z2.string() }),
911
- z2.object({ toolUse: z2.object({ input: z2.string() }) }),
912
- z2.object({
913
- reasoningContent: z2.object({ text: z2.string() })
904
+ var BedrockStreamSchema = z3.object({
905
+ contentBlockDelta: z3.object({
906
+ contentBlockIndex: z3.number(),
907
+ delta: z3.union([
908
+ z3.object({ text: z3.string() }),
909
+ z3.object({ toolUse: z3.object({ input: z3.string() }) }),
910
+ z3.object({
911
+ reasoningContent: z3.object({ text: z3.string() })
914
912
  }),
915
- z2.object({
916
- reasoningContent: z2.object({
917
- signature: z2.string()
913
+ z3.object({
914
+ reasoningContent: z3.object({
915
+ signature: z3.string()
918
916
  })
919
917
  }),
920
- z2.object({
921
- reasoningContent: z2.object({ data: z2.string() })
918
+ z3.object({
919
+ reasoningContent: z3.object({ data: z3.string() })
922
920
  })
923
921
  ]).nullish()
924
922
  }).nullish(),
925
- contentBlockStart: z2.object({
926
- contentBlockIndex: z2.number(),
927
- start: z2.object({
923
+ contentBlockStart: z3.object({
924
+ contentBlockIndex: z3.number(),
925
+ start: z3.object({
928
926
  toolUse: BedrockToolUseSchema.nullish()
929
927
  }).nullish()
930
928
  }).nullish(),
931
- contentBlockStop: z2.object({
932
- contentBlockIndex: z2.number()
929
+ contentBlockStop: z3.object({
930
+ contentBlockIndex: z3.number()
933
931
  }).nullish(),
934
- internalServerException: z2.record(z2.unknown()).nullish(),
935
- messageStop: z2.object({
936
- additionalModelResponseFields: z2.record(z2.unknown()).nullish(),
932
+ internalServerException: z3.record(z3.unknown()).nullish(),
933
+ messageStop: z3.object({
934
+ additionalModelResponseFields: z3.record(z3.unknown()).nullish(),
937
935
  stopReason: BedrockStopReasonSchema
938
936
  }).nullish(),
939
- metadata: z2.object({
940
- trace: z2.unknown().nullish(),
941
- usage: z2.object({
942
- cacheReadInputTokens: z2.number().nullish(),
943
- cacheWriteInputTokens: z2.number().nullish(),
944
- inputTokens: z2.number(),
945
- outputTokens: z2.number()
937
+ metadata: z3.object({
938
+ trace: z3.unknown().nullish(),
939
+ usage: z3.object({
940
+ cacheReadInputTokens: z3.number().nullish(),
941
+ cacheWriteInputTokens: z3.number().nullish(),
942
+ inputTokens: z3.number(),
943
+ outputTokens: z3.number()
946
944
  }).nullish()
947
945
  }).nullish(),
948
- modelStreamErrorException: z2.record(z2.unknown()).nullish(),
949
- throttlingException: z2.record(z2.unknown()).nullish(),
950
- validationException: z2.record(z2.unknown()).nullish()
946
+ modelStreamErrorException: z3.record(z3.unknown()).nullish(),
947
+ throttlingException: z3.record(z3.unknown()).nullish(),
948
+ validationException: z3.record(z3.unknown()).nullish()
951
949
  });
952
950
 
953
951
  // src/bedrock-embedding-model.ts
@@ -958,7 +956,7 @@ import {
958
956
  postJsonToApi as postJsonToApi2,
959
957
  resolve as resolve2
960
958
  } from "@ai-sdk/provider-utils";
961
- import { z as z3 } from "zod";
959
+ import { z as z4 } from "zod";
962
960
  var BedrockEmbeddingModel = class {
963
961
  constructor(modelId, settings, config) {
964
962
  this.modelId = modelId;
@@ -1017,9 +1015,9 @@ var BedrockEmbeddingModel = class {
1017
1015
  );
1018
1016
  }
1019
1017
  };
1020
- var BedrockEmbeddingResponseSchema = z3.object({
1021
- embedding: z3.array(z3.number()),
1022
- inputTextTokenCount: z3.number()
1018
+ var BedrockEmbeddingResponseSchema = z4.object({
1019
+ embedding: z4.array(z4.number()),
1020
+ inputTextTokenCount: z4.number()
1023
1021
  });
1024
1022
 
1025
1023
  // src/bedrock-image-model.ts
@@ -1037,7 +1035,7 @@ var modelMaxImagesPerCall = {
1037
1035
  };
1038
1036
 
1039
1037
  // src/bedrock-image-model.ts
1040
- import { z as z4 } from "zod";
1038
+ import { z as z5 } from "zod";
1041
1039
  var BedrockImageModel = class {
1042
1040
  constructor(modelId, settings, config) {
1043
1041
  this.modelId = modelId;
@@ -1119,8 +1117,8 @@ var BedrockImageModel = class {
1119
1117
  };
1120
1118
  }
1121
1119
  };
1122
- var bedrockImageResponseSchema = z4.object({
1123
- images: z4.array(z4.string())
1120
+ var bedrockImageResponseSchema = z5.object({
1121
+ images: z5.array(z5.string())
1124
1122
  });
1125
1123
 
1126
1124
  // src/headers-utils.ts
@@ -1245,22 +1243,22 @@ function createAmazonBedrock(options = {}) {
1245
1243
  })}.amazonaws.com`
1246
1244
  )) != null ? _b : `https://bedrock-runtime.us-east-1.amazonaws.com`;
1247
1245
  };
1248
- const createChatModel = (modelId, settings = {}) => {
1246
+ const createChatModel = (modelId) => {
1249
1247
  var _a;
1250
- return new BedrockChatLanguageModel(modelId, settings, {
1248
+ return new BedrockChatLanguageModel(modelId, {
1251
1249
  baseUrl: getBaseUrl,
1252
1250
  headers: (_a = options.headers) != null ? _a : {},
1253
1251
  fetch: sigv4Fetch,
1254
1252
  generateId
1255
1253
  });
1256
1254
  };
1257
- const provider = function(modelId, settings) {
1255
+ const provider = function(modelId) {
1258
1256
  if (new.target) {
1259
1257
  throw new Error(
1260
1258
  "The Amazon Bedrock model function cannot be called with the new keyword."
1261
1259
  );
1262
1260
  }
1263
- return createChatModel(modelId, settings);
1261
+ return createChatModel(modelId);
1264
1262
  };
1265
1263
  const createEmbeddingModel = (modelId, settings = {}) => {
1266
1264
  var _a;