@ai-sdk/amazon-bedrock 3.0.0-canary.4 → 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({
@@ -624,7 +629,6 @@ var BedrockChatLanguageModel = class {
624
629
  abortSignal: options.abortSignal,
625
630
  fetch: this.config.fetch
626
631
  });
627
- const { messages: rawPrompt, ...rawSettings } = args;
628
632
  const providerMetadata = response.trace || response.usage ? {
629
633
  bedrock: {
630
634
  ...response.trace && typeof response.trace === "object" ? { trace: response.trace } : {},
@@ -673,10 +677,9 @@ var BedrockChatLanguageModel = class {
673
677
  response.stopReason
674
678
  ),
675
679
  usage: {
676
- promptTokens: (_n = (_m = response.usage) == null ? void 0 : _m.inputTokens) != null ? _n : Number.NaN,
677
- 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
678
682
  },
679
- rawCall: { rawPrompt, rawSettings },
680
683
  response: {
681
684
  // TODO add id, timestamp, etc
682
685
  headers: responseHeaders
@@ -704,11 +707,10 @@ var BedrockChatLanguageModel = class {
704
707
  abortSignal: options.abortSignal,
705
708
  fetch: this.config.fetch
706
709
  });
707
- const { messages: rawPrompt, ...rawSettings } = args;
708
710
  let finishReason = "unknown";
709
- let usage = {
710
- promptTokens: Number.NaN,
711
- completionTokens: Number.NaN
711
+ const usage = {
712
+ inputTokens: void 0,
713
+ outputTokens: void 0
712
714
  };
713
715
  let providerMetadata = void 0;
714
716
  const toolCallContentBlocks = {};
@@ -748,10 +750,8 @@ var BedrockChatLanguageModel = class {
748
750
  );
749
751
  }
750
752
  if (value.metadata) {
751
- usage = {
752
- promptTokens: (_b = (_a = value.metadata.usage) == null ? void 0 : _a.inputTokens) != null ? _b : Number.NaN,
753
- completionTokens: (_d = (_c = value.metadata.usage) == null ? void 0 : _c.outputTokens) != null ? _d : Number.NaN
754
- };
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;
755
755
  const cacheUsage = ((_e = value.metadata.usage) == null ? void 0 : _e.cacheReadInputTokens) != null || ((_f = value.metadata.usage) == null ? void 0 : _f.cacheWriteInputTokens) != null ? {
756
756
  usage: {
757
757
  cacheReadInputTokens: (_h = (_g = value.metadata.usage) == null ? void 0 : _g.cacheReadInputTokens) != null ? _h : Number.NaN,
@@ -843,7 +843,6 @@ var BedrockChatLanguageModel = class {
843
843
  }
844
844
  })
845
845
  ),
846
- rawCall: { rawPrompt, rawSettings },
847
846
  response: { headers: responseHeaders },
848
847
  warnings
849
848
  };
@@ -853,105 +852,100 @@ var BedrockChatLanguageModel = class {
853
852
  return `${this.config.baseUrl()}/model/${encodedModelId}`;
854
853
  }
855
854
  };
856
- var BedrockReasoningConfigOptionsSchema = z2.object({
857
- type: z2.union([z2.literal("enabled"), z2.literal("disabled")]).nullish(),
858
- budget_tokens: z2.number().nullish(),
859
- budgetTokens: z2.number().nullish()
860
- }).nullish();
861
- var BedrockStopReasonSchema = z2.union([
862
- z2.enum(BEDROCK_STOP_REASONS),
863
- z2.string()
855
+ var BedrockStopReasonSchema = z3.union([
856
+ z3.enum(BEDROCK_STOP_REASONS),
857
+ z3.string()
864
858
  ]);
865
- var BedrockToolUseSchema = z2.object({
866
- toolUseId: z2.string(),
867
- name: z2.string(),
868
- input: z2.unknown()
859
+ var BedrockToolUseSchema = z3.object({
860
+ toolUseId: z3.string(),
861
+ name: z3.string(),
862
+ input: z3.unknown()
869
863
  });
870
- var BedrockReasoningTextSchema = z2.object({
871
- signature: z2.string().nullish(),
872
- text: z2.string()
864
+ var BedrockReasoningTextSchema = z3.object({
865
+ signature: z3.string().nullish(),
866
+ text: z3.string()
873
867
  });
874
- var BedrockRedactedReasoningSchema = z2.object({
875
- data: z2.string()
868
+ var BedrockRedactedReasoningSchema = z3.object({
869
+ data: z3.string()
876
870
  });
877
- var BedrockResponseSchema = z2.object({
878
- metrics: z2.object({
879
- latencyMs: z2.number()
871
+ var BedrockResponseSchema = z3.object({
872
+ metrics: z3.object({
873
+ latencyMs: z3.number()
880
874
  }).nullish(),
881
- output: z2.object({
882
- message: z2.object({
883
- content: z2.array(
884
- z2.object({
885
- text: z2.string().nullish(),
875
+ output: z3.object({
876
+ message: z3.object({
877
+ content: z3.array(
878
+ z3.object({
879
+ text: z3.string().nullish(),
886
880
  toolUse: BedrockToolUseSchema.nullish(),
887
- reasoningContent: z2.union([
888
- z2.object({
881
+ reasoningContent: z3.union([
882
+ z3.object({
889
883
  reasoningText: BedrockReasoningTextSchema
890
884
  }),
891
- z2.object({
885
+ z3.object({
892
886
  redactedReasoning: BedrockRedactedReasoningSchema
893
887
  })
894
888
  ]).nullish()
895
889
  })
896
890
  ),
897
- role: z2.string()
891
+ role: z3.string()
898
892
  })
899
893
  }),
900
894
  stopReason: BedrockStopReasonSchema,
901
- trace: z2.unknown().nullish(),
902
- usage: z2.object({
903
- inputTokens: z2.number(),
904
- outputTokens: z2.number(),
905
- totalTokens: z2.number(),
906
- cacheReadInputTokens: z2.number().nullish(),
907
- 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()
908
902
  })
909
903
  });
910
- var BedrockStreamSchema = z2.object({
911
- contentBlockDelta: z2.object({
912
- contentBlockIndex: z2.number(),
913
- delta: z2.union([
914
- z2.object({ text: z2.string() }),
915
- z2.object({ toolUse: z2.object({ input: z2.string() }) }),
916
- z2.object({
917
- 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() })
918
912
  }),
919
- z2.object({
920
- reasoningContent: z2.object({
921
- signature: z2.string()
913
+ z3.object({
914
+ reasoningContent: z3.object({
915
+ signature: z3.string()
922
916
  })
923
917
  }),
924
- z2.object({
925
- reasoningContent: z2.object({ data: z2.string() })
918
+ z3.object({
919
+ reasoningContent: z3.object({ data: z3.string() })
926
920
  })
927
921
  ]).nullish()
928
922
  }).nullish(),
929
- contentBlockStart: z2.object({
930
- contentBlockIndex: z2.number(),
931
- start: z2.object({
923
+ contentBlockStart: z3.object({
924
+ contentBlockIndex: z3.number(),
925
+ start: z3.object({
932
926
  toolUse: BedrockToolUseSchema.nullish()
933
927
  }).nullish()
934
928
  }).nullish(),
935
- contentBlockStop: z2.object({
936
- contentBlockIndex: z2.number()
929
+ contentBlockStop: z3.object({
930
+ contentBlockIndex: z3.number()
937
931
  }).nullish(),
938
- internalServerException: z2.record(z2.unknown()).nullish(),
939
- messageStop: z2.object({
940
- additionalModelResponseFields: z2.record(z2.unknown()).nullish(),
932
+ internalServerException: z3.record(z3.unknown()).nullish(),
933
+ messageStop: z3.object({
934
+ additionalModelResponseFields: z3.record(z3.unknown()).nullish(),
941
935
  stopReason: BedrockStopReasonSchema
942
936
  }).nullish(),
943
- metadata: z2.object({
944
- trace: z2.unknown().nullish(),
945
- usage: z2.object({
946
- cacheReadInputTokens: z2.number().nullish(),
947
- cacheWriteInputTokens: z2.number().nullish(),
948
- inputTokens: z2.number(),
949
- 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()
950
944
  }).nullish()
951
945
  }).nullish(),
952
- modelStreamErrorException: z2.record(z2.unknown()).nullish(),
953
- throttlingException: z2.record(z2.unknown()).nullish(),
954
- 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()
955
949
  });
956
950
 
957
951
  // src/bedrock-embedding-model.ts
@@ -962,7 +956,7 @@ import {
962
956
  postJsonToApi as postJsonToApi2,
963
957
  resolve as resolve2
964
958
  } from "@ai-sdk/provider-utils";
965
- import { z as z3 } from "zod";
959
+ import { z as z4 } from "zod";
966
960
  var BedrockEmbeddingModel = class {
967
961
  constructor(modelId, settings, config) {
968
962
  this.modelId = modelId;
@@ -1021,9 +1015,9 @@ var BedrockEmbeddingModel = class {
1021
1015
  );
1022
1016
  }
1023
1017
  };
1024
- var BedrockEmbeddingResponseSchema = z3.object({
1025
- embedding: z3.array(z3.number()),
1026
- inputTextTokenCount: z3.number()
1018
+ var BedrockEmbeddingResponseSchema = z4.object({
1019
+ embedding: z4.array(z4.number()),
1020
+ inputTextTokenCount: z4.number()
1027
1021
  });
1028
1022
 
1029
1023
  // src/bedrock-image-model.ts
@@ -1041,7 +1035,7 @@ var modelMaxImagesPerCall = {
1041
1035
  };
1042
1036
 
1043
1037
  // src/bedrock-image-model.ts
1044
- import { z as z4 } from "zod";
1038
+ import { z as z5 } from "zod";
1045
1039
  var BedrockImageModel = class {
1046
1040
  constructor(modelId, settings, config) {
1047
1041
  this.modelId = modelId;
@@ -1123,8 +1117,8 @@ var BedrockImageModel = class {
1123
1117
  };
1124
1118
  }
1125
1119
  };
1126
- var bedrockImageResponseSchema = z4.object({
1127
- images: z4.array(z4.string())
1120
+ var bedrockImageResponseSchema = z5.object({
1121
+ images: z5.array(z5.string())
1128
1122
  });
1129
1123
 
1130
1124
  // src/headers-utils.ts
@@ -1249,22 +1243,22 @@ function createAmazonBedrock(options = {}) {
1249
1243
  })}.amazonaws.com`
1250
1244
  )) != null ? _b : `https://bedrock-runtime.us-east-1.amazonaws.com`;
1251
1245
  };
1252
- const createChatModel = (modelId, settings = {}) => {
1246
+ const createChatModel = (modelId) => {
1253
1247
  var _a;
1254
- return new BedrockChatLanguageModel(modelId, settings, {
1248
+ return new BedrockChatLanguageModel(modelId, {
1255
1249
  baseUrl: getBaseUrl,
1256
1250
  headers: (_a = options.headers) != null ? _a : {},
1257
1251
  fetch: sigv4Fetch,
1258
1252
  generateId
1259
1253
  });
1260
1254
  };
1261
- const provider = function(modelId, settings) {
1255
+ const provider = function(modelId) {
1262
1256
  if (new.target) {
1263
1257
  throw new Error(
1264
1258
  "The Amazon Bedrock model function cannot be called with the new keyword."
1265
1259
  );
1266
1260
  }
1267
- return createChatModel(modelId, settings);
1261
+ return createChatModel(modelId);
1268
1262
  };
1269
1263
  const createEmbeddingModel = (modelId, settings = {}) => {
1270
1264
  var _a;