@ai-sdk/amazon-bedrock 0.0.29 → 0.0.32

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/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @ai-sdk/amazon-bedrock
2
2
 
3
+ ## 0.0.32
4
+
5
+ ### Patch Changes
6
+
7
+ - 3b1b69a: feat: provider-defined tools
8
+ - Updated dependencies [aa98cdb]
9
+ - Updated dependencies [1486128]
10
+ - Updated dependencies [7b937c5]
11
+ - Updated dependencies [3b1b69a]
12
+ - Updated dependencies [811a317]
13
+ - @ai-sdk/provider-utils@1.0.22
14
+ - @ai-sdk/provider@0.0.26
15
+
16
+ ## 0.0.31
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [b9b0d7b]
21
+ - @ai-sdk/provider@0.0.25
22
+ - @ai-sdk/provider-utils@1.0.21
23
+
24
+ ## 0.0.30
25
+
26
+ ### Patch Changes
27
+
28
+ - 59d1abf: feat (provider/bedrock): support Bedrock amazon.titan-embed-text-v1 and amazon.titan-embed-text-v2:0 embeddings
29
+
3
30
  ## 0.0.29
4
31
 
5
32
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { ProviderV1, LanguageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV1, LanguageModelV1, EmbeddingModelV1 } from '@ai-sdk/provider';
2
2
  import { BedrockRuntimeClientConfig } from '@aws-sdk/client-bedrock-runtime';
3
3
 
4
4
  type BedrockChatModelId = 'amazon.titan-tg1-large' | 'amazon.titan-text-express-v1' | 'anthropic.claude-v2:1' | 'anthropic.claude-3-sonnet-20240229-v1:0' | 'anthropic.claude-3-5-sonnet-20240620-v1:0' | 'anthropic.claude-3-haiku-20240307-v1:0' | 'anthropic.claude-3-opus-20240229-v1:0' | 'cohere.command-r-v1:0' | 'cohere.command-r-plus-v1:0' | 'meta.llama2-13b-chat-v1' | 'meta.llama2-70b-chat-v1' | 'meta.llama3-8b-instruct-v1:0' | 'meta.llama3-70b-instruct-v1:0' | 'mistral.mistral-7b-instruct-v0:2' | 'mistral.mixtral-8x7b-instruct-v0:1' | 'mistral.mistral-large-2402-v1:0' | 'mistral.mistral-small-2402-v1:0' | (string & {});
@@ -11,6 +11,20 @@ interface BedrockChatSettings {
11
11
  additionalModelRequestFields?: Record<string, any>;
12
12
  }
13
13
 
14
+ type BedrockEmbeddingModelId = 'amazon.titan-embed-text-v1' | 'amazon.titan-embed-text-v2:0' | (string & {});
15
+ interface BedrockEmbeddingSettings {
16
+ /**
17
+ The number of dimensions the resulting output embeddings should have (defaults to 1024).
18
+ Only supported in amazon.titan-embed-text-v2:0.
19
+ */
20
+ dimensions?: 1024 | 512 | 256;
21
+ /**
22
+ Flag indicating whether or not to normalize the output embeddings. Defaults to true
23
+ Only supported in amazon.titan-embed-text-v2:0.
24
+ */
25
+ normalize?: boolean;
26
+ }
27
+
14
28
  interface AmazonBedrockProviderSettings {
15
29
  region?: string;
16
30
  accessKeyId?: string;
@@ -27,6 +41,7 @@ interface AmazonBedrockProviderSettings {
27
41
  interface AmazonBedrockProvider extends ProviderV1 {
28
42
  (modelId: BedrockChatModelId, settings?: BedrockChatSettings): LanguageModelV1;
29
43
  languageModel(modelId: BedrockChatModelId, settings?: BedrockChatSettings): LanguageModelV1;
44
+ embedding(modelId: BedrockEmbeddingModelId, settings?: BedrockEmbeddingSettings): EmbeddingModelV1<string>;
30
45
  }
31
46
  /**
32
47
  Create an Amazon Bedrock provider instance.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ProviderV1, LanguageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV1, LanguageModelV1, EmbeddingModelV1 } from '@ai-sdk/provider';
2
2
  import { BedrockRuntimeClientConfig } from '@aws-sdk/client-bedrock-runtime';
3
3
 
4
4
  type BedrockChatModelId = 'amazon.titan-tg1-large' | 'amazon.titan-text-express-v1' | 'anthropic.claude-v2:1' | 'anthropic.claude-3-sonnet-20240229-v1:0' | 'anthropic.claude-3-5-sonnet-20240620-v1:0' | 'anthropic.claude-3-haiku-20240307-v1:0' | 'anthropic.claude-3-opus-20240229-v1:0' | 'cohere.command-r-v1:0' | 'cohere.command-r-plus-v1:0' | 'meta.llama2-13b-chat-v1' | 'meta.llama2-70b-chat-v1' | 'meta.llama3-8b-instruct-v1:0' | 'meta.llama3-70b-instruct-v1:0' | 'mistral.mistral-7b-instruct-v0:2' | 'mistral.mixtral-8x7b-instruct-v0:1' | 'mistral.mistral-large-2402-v1:0' | 'mistral.mistral-small-2402-v1:0' | (string & {});
@@ -11,6 +11,20 @@ interface BedrockChatSettings {
11
11
  additionalModelRequestFields?: Record<string, any>;
12
12
  }
13
13
 
14
+ type BedrockEmbeddingModelId = 'amazon.titan-embed-text-v1' | 'amazon.titan-embed-text-v2:0' | (string & {});
15
+ interface BedrockEmbeddingSettings {
16
+ /**
17
+ The number of dimensions the resulting output embeddings should have (defaults to 1024).
18
+ Only supported in amazon.titan-embed-text-v2:0.
19
+ */
20
+ dimensions?: 1024 | 512 | 256;
21
+ /**
22
+ Flag indicating whether or not to normalize the output embeddings. Defaults to true
23
+ Only supported in amazon.titan-embed-text-v2:0.
24
+ */
25
+ normalize?: boolean;
26
+ }
27
+
14
28
  interface AmazonBedrockProviderSettings {
15
29
  region?: string;
16
30
  accessKeyId?: string;
@@ -27,6 +41,7 @@ interface AmazonBedrockProviderSettings {
27
41
  interface AmazonBedrockProvider extends ProviderV1 {
28
42
  (modelId: BedrockChatModelId, settings?: BedrockChatSettings): LanguageModelV1;
29
43
  languageModel(modelId: BedrockChatModelId, settings?: BedrockChatSettings): LanguageModelV1;
44
+ embedding(modelId: BedrockEmbeddingModelId, settings?: BedrockEmbeddingSettings): EmbeddingModelV1<string>;
30
45
  }
31
46
  /**
32
47
  Create an Amazon Bedrock provider instance.
package/dist/index.js CHANGED
@@ -26,14 +26,79 @@ __export(src_exports, {
26
26
  module.exports = __toCommonJS(src_exports);
27
27
 
28
28
  // src/bedrock-provider.ts
29
- var import_provider3 = require("@ai-sdk/provider");
30
29
  var import_provider_utils = require("@ai-sdk/provider-utils");
31
- var import_client_bedrock_runtime2 = require("@aws-sdk/client-bedrock-runtime");
30
+ var import_client_bedrock_runtime3 = require("@aws-sdk/client-bedrock-runtime");
32
31
 
33
32
  // src/bedrock-chat-language-model.ts
34
33
  var import_provider2 = require("@ai-sdk/provider");
35
34
  var import_client_bedrock_runtime = require("@aws-sdk/client-bedrock-runtime");
36
35
 
36
+ // src/bedrock-prepare-tools.ts
37
+ function prepareTools(mode) {
38
+ var _a;
39
+ const tools = ((_a = mode.tools) == null ? void 0 : _a.length) ? mode.tools : void 0;
40
+ if (tools == null) {
41
+ return {
42
+ toolConfiguration: { tools: void 0, toolChoice: void 0 },
43
+ toolWarnings: []
44
+ };
45
+ }
46
+ const toolWarnings = [];
47
+ const bedrockTools = [];
48
+ for (const tool of tools) {
49
+ if (tool.type === "provider-defined") {
50
+ toolWarnings.push({ type: "unsupported-tool", tool });
51
+ } else {
52
+ bedrockTools.push({
53
+ toolSpec: {
54
+ name: tool.name,
55
+ description: tool.description,
56
+ inputSchema: {
57
+ json: tool.parameters
58
+ }
59
+ }
60
+ });
61
+ }
62
+ }
63
+ const toolChoice = mode.toolChoice;
64
+ if (toolChoice == null) {
65
+ return {
66
+ toolConfiguration: { tools: bedrockTools, toolChoice: void 0 },
67
+ toolWarnings
68
+ };
69
+ }
70
+ const type = toolChoice.type;
71
+ switch (type) {
72
+ case "auto":
73
+ return {
74
+ toolConfiguration: { tools: bedrockTools, toolChoice: { auto: {} } },
75
+ toolWarnings
76
+ };
77
+ case "required":
78
+ return {
79
+ toolConfiguration: { tools: bedrockTools, toolChoice: { any: {} } },
80
+ toolWarnings
81
+ };
82
+ case "none":
83
+ return {
84
+ toolConfiguration: { tools: void 0, toolChoice: void 0 },
85
+ toolWarnings
86
+ };
87
+ case "tool":
88
+ return {
89
+ toolConfiguration: {
90
+ tools: bedrockTools,
91
+ toolChoice: { tool: { name: toolChoice.toolName } }
92
+ },
93
+ toolWarnings
94
+ };
95
+ default: {
96
+ const _exhaustiveCheck = type;
97
+ throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);
98
+ }
99
+ }
100
+ }
101
+
37
102
  // src/convert-to-bedrock-chat-messages.ts
38
103
  var import_provider = require("@ai-sdk/provider");
39
104
  function convertToBedrockChatMessages(prompt) {
@@ -231,7 +296,7 @@ var BedrockChatLanguageModel = class {
231
296
  this.settings = settings;
232
297
  this.config = config;
233
298
  }
234
- async getArgs({
299
+ getArgs({
235
300
  mode,
236
301
  prompt,
237
302
  maxTokens,
@@ -302,10 +367,13 @@ var BedrockChatLanguageModel = class {
302
367
  };
303
368
  switch (type) {
304
369
  case "regular": {
305
- const toolConfig = prepareToolsAndToolChoice(mode);
370
+ const { toolConfiguration, toolWarnings } = prepareTools(mode);
306
371
  return {
307
- ...baseArgs,
308
- ...((_b = toolConfig.tools) == null ? void 0 : _b.length) ? { toolConfig } : {}
372
+ command: {
373
+ ...baseArgs,
374
+ ...((_b = toolConfiguration.tools) == null ? void 0 : _b.length) ? { toolConfiguration } : {}
375
+ },
376
+ warnings: [...warnings, ...toolWarnings]
309
377
  };
310
378
  }
311
379
  case "object-json": {
@@ -315,21 +383,24 @@ var BedrockChatLanguageModel = class {
315
383
  }
316
384
  case "object-tool": {
317
385
  return {
318
- ...baseArgs,
319
- toolConfig: {
320
- tools: [
321
- {
322
- toolSpec: {
323
- name: mode.tool.name,
324
- description: mode.tool.description,
325
- inputSchema: {
326
- json: mode.tool.parameters
386
+ command: {
387
+ ...baseArgs,
388
+ toolConfig: {
389
+ tools: [
390
+ {
391
+ toolSpec: {
392
+ name: mode.tool.name,
393
+ description: mode.tool.description,
394
+ inputSchema: {
395
+ json: mode.tool.parameters
396
+ }
327
397
  }
328
398
  }
329
- }
330
- ],
331
- toolChoice: { tool: { name: mode.tool.name } }
332
- }
399
+ ],
400
+ toolChoice: { tool: { name: mode.tool.name } }
401
+ }
402
+ },
403
+ warnings
333
404
  };
334
405
  }
335
406
  default: {
@@ -340,9 +411,11 @@ var BedrockChatLanguageModel = class {
340
411
  }
341
412
  async doGenerate(options) {
342
413
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
343
- const args = await this.getArgs(options);
344
- const response = await this.config.client.send(new import_client_bedrock_runtime.ConverseCommand(args));
345
- const { messages: rawPrompt, ...rawSettings } = args;
414
+ const { command, warnings } = this.getArgs(options);
415
+ const response = await this.config.client.send(
416
+ new import_client_bedrock_runtime.ConverseCommand(command)
417
+ );
418
+ const { messages: rawPrompt, ...rawSettings } = command;
346
419
  const providerMetadata = response.trace ? { bedrock: { trace: response.trace } } : void 0;
347
420
  return {
348
421
  text: (_d = (_c = (_b = (_a = response.output) == null ? void 0 : _a.message) == null ? void 0 : _b.content) == null ? void 0 : _c.map((part) => {
@@ -364,16 +437,16 @@ var BedrockChatLanguageModel = class {
364
437
  completionTokens: (_l = (_k = response.usage) == null ? void 0 : _k.outputTokens) != null ? _l : Number.NaN
365
438
  },
366
439
  rawCall: { rawPrompt, rawSettings },
367
- warnings: [],
440
+ warnings,
368
441
  providerMetadata
369
442
  };
370
443
  }
371
444
  async doStream(options) {
372
- const args = await this.getArgs(options);
445
+ const { command, warnings } = this.getArgs(options);
373
446
  const response = await this.config.client.send(
374
- new import_client_bedrock_runtime.ConverseStreamCommand({ ...args })
447
+ new import_client_bedrock_runtime.ConverseStreamCommand(command)
375
448
  );
376
- const { messages: rawPrompt, ...rawSettings } = args;
449
+ const { messages: rawPrompt, ...rawSettings } = command;
377
450
  let finishReason = "unknown";
378
451
  let usage = {
379
452
  promptTokens: Number.NaN,
@@ -495,54 +568,59 @@ var BedrockChatLanguageModel = class {
495
568
  })
496
569
  ),
497
570
  rawCall: { rawPrompt, rawSettings },
498
- warnings: []
571
+ warnings
499
572
  };
500
573
  }
501
574
  };
502
- function prepareToolsAndToolChoice(mode) {
503
- var _a;
504
- const tools = ((_a = mode.tools) == null ? void 0 : _a.length) ? mode.tools : void 0;
505
- if (tools == null) {
506
- return { tools: void 0, toolChoice: void 0 };
507
- }
508
- const mappedTools = tools.map((tool) => ({
509
- toolSpec: {
510
- name: tool.name,
511
- description: tool.description,
512
- inputSchema: {
513
- json: tool.parameters
514
- }
515
- }
516
- }));
517
- const toolChoice = mode.toolChoice;
518
- if (toolChoice == null) {
519
- return { tools: mappedTools, toolChoice: void 0 };
575
+
576
+ // src/bedrock-embedding-model.ts
577
+ var import_client_bedrock_runtime2 = require("@aws-sdk/client-bedrock-runtime");
578
+ var BedrockEmbeddingModel = class {
579
+ constructor(modelId, settings, config) {
580
+ this.specificationVersion = "v1";
581
+ this.provider = "amazon-bedrock";
582
+ this.maxEmbeddingsPerCall = void 0;
583
+ this.supportsParallelCalls = true;
584
+ this.modelId = modelId;
585
+ this.config = config;
586
+ this.settings = settings;
520
587
  }
521
- const type = toolChoice.type;
522
- switch (type) {
523
- case "auto":
524
- return { tools: mappedTools, toolChoice: { auto: {} } };
525
- case "required":
526
- return { tools: mappedTools, toolChoice: { any: {} } };
527
- case "none":
528
- return { tools: void 0, toolChoice: void 0 };
529
- case "tool":
530
- return {
531
- tools: mappedTools,
532
- toolChoice: { tool: { name: toolChoice.toolName } }
588
+ async doEmbed({
589
+ values
590
+ }) {
591
+ const fn = async (inputText) => {
592
+ const payload = {
593
+ inputText,
594
+ dimensions: this.settings.dimensions,
595
+ normalize: this.settings.normalize
533
596
  };
534
- default: {
535
- const _exhaustiveCheck = type;
536
- throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);
537
- }
597
+ const command = new import_client_bedrock_runtime2.InvokeModelCommand({
598
+ contentType: "application/json",
599
+ body: JSON.stringify(payload),
600
+ modelId: this.modelId
601
+ });
602
+ const rawResponse = await this.config.client.send(command);
603
+ const parsed = JSON.parse(new TextDecoder().decode(rawResponse.body));
604
+ return parsed;
605
+ };
606
+ const responses = await Promise.all(values.map(fn));
607
+ const response = responses.reduce(
608
+ (acc, r) => {
609
+ acc.embeddings.push(r.embedding);
610
+ acc.usage.tokens += r.inputTextTokenCount;
611
+ return acc;
612
+ },
613
+ { embeddings: [], usage: { tokens: 0 } }
614
+ );
615
+ return response;
538
616
  }
539
- }
617
+ };
540
618
 
541
619
  // src/bedrock-provider.ts
542
620
  function createAmazonBedrock(options = {}) {
543
621
  const createBedrockRuntimeClient = () => {
544
622
  var _a;
545
- return new import_client_bedrock_runtime2.BedrockRuntimeClient(
623
+ return new import_client_bedrock_runtime3.BedrockRuntimeClient(
546
624
  (_a = options.bedrockOptions) != null ? _a : {
547
625
  region: (0, import_provider_utils.loadSetting)({
548
626
  settingValue: options.region,
@@ -583,10 +661,13 @@ function createAmazonBedrock(options = {}) {
583
661
  }
584
662
  return createChatModel(modelId, settings);
585
663
  };
664
+ const createEmbeddingModel = (modelId, settings = {}) => new BedrockEmbeddingModel(modelId, settings, {
665
+ client: createBedrockRuntimeClient()
666
+ });
586
667
  provider.languageModel = createChatModel;
587
- provider.textEmbeddingModel = (modelId) => {
588
- throw new import_provider3.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
589
- };
668
+ provider.embedding = createEmbeddingModel;
669
+ provider.textEmbedding = createEmbeddingModel;
670
+ provider.textEmbeddingModel = createEmbeddingModel;
590
671
  return provider;
591
672
  }
592
673
  var bedrock = createAmazonBedrock();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/bedrock-provider.ts","../src/bedrock-chat-language-model.ts","../src/convert-to-bedrock-chat-messages.ts","../src/map-bedrock-finish-reason.ts"],"sourcesContent":["export { bedrock, createAmazonBedrock } from './bedrock-provider';\nexport type {\n AmazonBedrockProvider,\n AmazonBedrockProviderSettings,\n} from './bedrock-provider';\n","import {\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadOptionalSetting,\n loadSetting,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n BedrockRuntimeClientConfig,\n} from '@aws-sdk/client-bedrock-runtime';\nimport { BedrockChatLanguageModel } from './bedrock-chat-language-model';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\n\nexport interface AmazonBedrockProviderSettings {\n region?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n sessionToken?: string;\n\n /**\n * Complete Bedrock configuration for setting advanced authentication and\n * other options. When this is provided, the region, accessKeyId, and\n * secretAccessKey settings are ignored.\n */\n bedrockOptions?: BedrockRuntimeClientConfig;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV1 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const createBedrockRuntimeClient = () =>\n new BedrockRuntimeClient(\n options.bedrockOptions ?? {\n region: loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n }),\n credentials: {\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n },\n },\n );\n\n const createChatModel = (\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings = {},\n ) =>\n new BedrockChatLanguageModel(modelId, settings, {\n client: createBedrockRuntimeClient(),\n generateId,\n });\n\n const provider = function (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Amazon Bedrock model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ParseResult } from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n ConverseCommand,\n ConverseCommandInput,\n ConverseStreamCommand,\n ConverseStreamOutput,\n GuardrailConfiguration,\n GuardrailStreamConfiguration,\n Tool,\n ToolConfiguration,\n ToolInputSchema,\n} from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\nimport { convertToBedrockChatMessages } from './convert-to-bedrock-chat-messages';\nimport { mapBedrockFinishReason } from './map-bedrock-finish-reason';\n\ntype BedrockChatConfig = {\n client: BedrockRuntimeClient;\n generateId: () => string;\n};\n\nexport class BedrockChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'amazon-bedrock';\n readonly defaultObjectGenerationMode = 'tool';\n readonly supportsImageUrls = false;\n\n readonly modelId: BedrockChatModelId;\n readonly settings: BedrockChatSettings;\n\n private readonly config: BedrockChatConfig;\n\n constructor(\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings,\n config: BedrockChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerMetadata,\n headers,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = convertToBedrockChatMessages(prompt);\n\n const baseArgs: ConverseCommandInput = {\n modelId: this.modelId,\n system: system ? [{ text: system }] : undefined,\n additionalModelRequestFields: this.settings.additionalModelRequestFields,\n inferenceConfig: {\n maxTokens,\n temperature,\n topP,\n stopSequences,\n },\n messages,\n guardrailConfig: providerMetadata?.bedrock?.guardrailConfig as\n | GuardrailConfiguration\n | GuardrailStreamConfiguration\n | undefined,\n };\n\n switch (type) {\n case 'regular': {\n const toolConfig = prepareToolsAndToolChoice(mode);\n\n return {\n ...baseArgs,\n ...(toolConfig.tools?.length ? { toolConfig } : {}),\n } satisfies ConverseCommandInput;\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n return {\n ...baseArgs,\n toolConfig: {\n tools: [\n {\n toolSpec: {\n name: mode.tool.name,\n description: mode.tool.description,\n inputSchema: {\n json: mode.tool.parameters,\n } as ToolInputSchema,\n },\n },\n ],\n toolChoice: { tool: { name: mode.tool.name } },\n },\n } satisfies ConverseCommandInput;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const args = await this.getArgs(options);\n\n const response = await this.config.client.send(new ConverseCommand(args));\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n const providerMetadata = response.trace\n ? { bedrock: { trace: response.trace as JSONObject } }\n : undefined;\n\n return {\n text:\n response.output?.message?.content\n ?.map(part => part.text ?? '')\n .join('') ?? undefined,\n toolCalls: response.output?.message?.content\n ?.filter(part => !!part.toolUse)\n ?.map(part => ({\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n })),\n finishReason: mapBedrockFinishReason(response.stopReason),\n usage: {\n promptTokens: response.usage?.inputTokens ?? Number.NaN,\n completionTokens: response.usage?.outputTokens ?? Number.NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n warnings: [],\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const args = await this.getArgs(options);\n\n const response = await this.config.client.send(\n new ConverseStreamCommand({ ...args }),\n );\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined =\n undefined;\n\n if (!response.stream) {\n throw new Error('No stream found');\n }\n\n const stream = new ReadableStream<any>({\n async start(controller) {\n for await (const chunk of response.stream!) {\n controller.enqueue({ success: true, value: chunk });\n }\n controller.close();\n },\n });\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: stream.pipeThrough(\n new TransformStream<\n ParseResult<ConverseStreamOutput>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n function enqueueError(error: Error) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n enqueueError(chunk.error);\n return;\n }\n\n const value = chunk.value;\n\n // handle errors:\n if (value.internalServerException) {\n enqueueError(value.internalServerException);\n return;\n }\n if (value.modelStreamErrorException) {\n enqueueError(value.modelStreamErrorException);\n return;\n }\n if (value.throttlingException) {\n enqueueError(value.throttlingException);\n return;\n }\n if (value.validationException) {\n enqueueError(value.validationException);\n return;\n }\n\n if (value.messageStop) {\n finishReason = mapBedrockFinishReason(\n value.messageStop.stopReason,\n );\n }\n\n if (value.metadata) {\n usage = {\n promptTokens: value.metadata.usage?.inputTokens ?? Number.NaN,\n completionTokens:\n value.metadata.usage?.outputTokens ?? Number.NaN,\n };\n\n if (value.metadata.trace) {\n providerMetadata = {\n bedrock: {\n trace: value.metadata.trace as JSONObject,\n },\n };\n }\n }\n\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\n };\n }\n\n const contentBlockDelta = value.contentBlockDelta;\n if (contentBlockDelta?.delta?.toolUse) {\n const contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n warnings: [],\n };\n }\n}\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n): ToolConfiguration {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined };\n }\n\n const mappedTools: Tool[] = tools.map(tool => ({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters,\n } as ToolInputSchema,\n },\n }));\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, toolChoice: undefined };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, toolChoice: { auto: {} } };\n case 'required':\n return { tools: mappedTools, toolChoice: { any: {} } };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, toolChoice: undefined };\n case 'tool':\n return {\n tools: mappedTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockAssistantMessage,\n BedrockMessagesPrompt,\n BedrockUserMessage,\n} from './bedrock-chat-prompt';\n\nexport function convertToBedrockChatMessages(\n prompt: LanguageModelV1Prompt,\n): BedrockMessagesPrompt {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: BedrockMessagesPrompt['messages'] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (messages.length > 0) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const bedrockContent: BedrockUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text: part.text,\n });\n break;\n }\n case 'image': {\n if (part.image instanceof URL) {\n // The AI SDK automatically downloads images for user image parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'Image URLs in user messages',\n });\n }\n\n bedrockContent.push({\n image: {\n format: part.mimeType?.split('/')?.[1] as ImageFormat,\n source: {\n bytes: part.image ?? (part.image as Uint8Array),\n },\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n\n bedrockContent.push({\n toolResult: {\n toolUseId: part.toolCallId,\n content: [{ text: JSON.stringify(part.result) }],\n },\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: bedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const bedrockContent: BedrockAssistantMessage['content'] = [];\n\n for (const message of block.messages) {\n const { content } = message;\n\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text:\n // trim the last text part if it's the last message in the block\n // because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n i === blocks.length - 1 && j === block.messages.length - 1\n ? part.text.trim()\n : part.text,\n });\n break;\n }\n\n case 'tool-call': {\n bedrockContent.push({\n toolUse: {\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args as any,\n },\n });\n break;\n }\n }\n }\n }\n\n messages.push({ role: 'assistant', content: bedrockContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { StopReason } from '@aws-sdk/client-bedrock-runtime';\n\nexport function mapBedrockFinishReason(\n finishReason?: StopReason,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'stop_sequence':\n case 'end_turn':\n return 'stop';\n case 'max_tokens':\n return 'length';\n case 'content_filtered':\n case 'guardrail_intervened':\n return 'content-filter';\n case 'tool_use':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n"],"mappings":"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","names":["import_provider","import_client_bedrock_runtime","import_provider","i","_a","_b","_c","_d","_e","_f"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/bedrock-provider.ts","../src/bedrock-chat-language-model.ts","../src/bedrock-prepare-tools.ts","../src/convert-to-bedrock-chat-messages.ts","../src/map-bedrock-finish-reason.ts","../src/bedrock-embedding-model.ts"],"sourcesContent":["export { bedrock, createAmazonBedrock } from './bedrock-provider';\nexport type {\n AmazonBedrockProvider,\n AmazonBedrockProviderSettings,\n} from './bedrock-provider';\n","import {\n EmbeddingModelV1,\n LanguageModelV1,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadOptionalSetting,\n loadSetting,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n BedrockRuntimeClientConfig,\n} from '@aws-sdk/client-bedrock-runtime';\nimport { BedrockChatLanguageModel } from './bedrock-chat-language-model';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\nimport { BedrockEmbeddingModel } from './bedrock-embedding-model';\nimport {\n BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\n\nexport interface AmazonBedrockProviderSettings {\n region?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n sessionToken?: string;\n\n /**\n * Complete Bedrock configuration for setting advanced authentication and\n * other options. When this is provided, the region, accessKeyId, and\n * secretAccessKey settings are ignored.\n */\n bedrockOptions?: BedrockRuntimeClientConfig;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV1 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n\n embedding(\n modelId: BedrockEmbeddingModelId,\n settings?: BedrockEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const createBedrockRuntimeClient = () =>\n new BedrockRuntimeClient(\n options.bedrockOptions ?? {\n region: loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n }),\n credentials: {\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n },\n },\n );\n\n const createChatModel = (\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings = {},\n ) =>\n new BedrockChatLanguageModel(modelId, settings, {\n client: createBedrockRuntimeClient(),\n generateId,\n });\n\n const provider = function (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Amazon Bedrock model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n const createEmbeddingModel = (\n modelId: BedrockEmbeddingModelId,\n settings: BedrockEmbeddingSettings = {},\n ) =>\n new BedrockEmbeddingModel(modelId, settings, {\n client: createBedrockRuntimeClient(),\n });\n\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ParseResult } from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n ConverseCommand,\n ConverseCommandInput,\n ConverseStreamCommand,\n ConverseStreamOutput,\n GuardrailConfiguration,\n GuardrailStreamConfiguration,\n ToolInputSchema,\n} from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\nimport { prepareTools } from './bedrock-prepare-tools';\nimport { convertToBedrockChatMessages } from './convert-to-bedrock-chat-messages';\nimport { mapBedrockFinishReason } from './map-bedrock-finish-reason';\n\ntype BedrockChatConfig = {\n client: BedrockRuntimeClient;\n generateId: () => string;\n};\n\nexport class BedrockChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'amazon-bedrock';\n readonly defaultObjectGenerationMode = 'tool';\n readonly supportsImageUrls = false;\n\n readonly modelId: BedrockChatModelId;\n readonly settings: BedrockChatSettings;\n\n private readonly config: BedrockChatConfig;\n\n constructor(\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings,\n config: BedrockChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerMetadata,\n headers,\n }: Parameters<LanguageModelV1['doGenerate']>[0]): {\n command: ConverseCommandInput;\n warnings: LanguageModelV1CallWarning[];\n } {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = convertToBedrockChatMessages(prompt);\n\n const baseArgs: ConverseCommandInput = {\n modelId: this.modelId,\n system: system ? [{ text: system }] : undefined,\n additionalModelRequestFields: this.settings.additionalModelRequestFields,\n inferenceConfig: {\n maxTokens,\n temperature,\n topP,\n stopSequences,\n },\n messages,\n guardrailConfig: providerMetadata?.bedrock?.guardrailConfig as\n | GuardrailConfiguration\n | GuardrailStreamConfiguration\n | undefined,\n };\n\n switch (type) {\n case 'regular': {\n const { toolConfiguration, toolWarnings } = prepareTools(mode);\n return {\n command: {\n ...baseArgs,\n ...(toolConfiguration.tools?.length ? { toolConfiguration } : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n return {\n command: {\n ...baseArgs,\n toolConfig: {\n tools: [\n {\n toolSpec: {\n name: mode.tool.name,\n description: mode.tool.description,\n inputSchema: {\n json: mode.tool.parameters,\n } as ToolInputSchema,\n },\n },\n ],\n toolChoice: { tool: { name: mode.tool.name } },\n },\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { command, warnings } = this.getArgs(options);\n\n const response = await this.config.client.send(\n new ConverseCommand(command),\n );\n\n const { messages: rawPrompt, ...rawSettings } = command;\n\n const providerMetadata = response.trace\n ? { bedrock: { trace: response.trace as JSONObject } }\n : undefined;\n\n return {\n text:\n response.output?.message?.content\n ?.map(part => part.text ?? '')\n .join('') ?? undefined,\n toolCalls: response.output?.message?.content\n ?.filter(part => !!part.toolUse)\n ?.map(part => ({\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n })),\n finishReason: mapBedrockFinishReason(response.stopReason),\n usage: {\n promptTokens: response.usage?.inputTokens ?? Number.NaN,\n completionTokens: response.usage?.outputTokens ?? Number.NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { command, warnings } = this.getArgs(options);\n\n const response = await this.config.client.send(\n new ConverseStreamCommand(command),\n );\n\n const { messages: rawPrompt, ...rawSettings } = command;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined =\n undefined;\n\n if (!response.stream) {\n throw new Error('No stream found');\n }\n\n const stream = new ReadableStream<any>({\n async start(controller) {\n for await (const chunk of response.stream!) {\n controller.enqueue({ success: true, value: chunk });\n }\n controller.close();\n },\n });\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: stream.pipeThrough(\n new TransformStream<\n ParseResult<ConverseStreamOutput>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n function enqueueError(error: Error) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n enqueueError(chunk.error);\n return;\n }\n\n const value = chunk.value;\n\n // handle errors:\n if (value.internalServerException) {\n enqueueError(value.internalServerException);\n return;\n }\n if (value.modelStreamErrorException) {\n enqueueError(value.modelStreamErrorException);\n return;\n }\n if (value.throttlingException) {\n enqueueError(value.throttlingException);\n return;\n }\n if (value.validationException) {\n enqueueError(value.validationException);\n return;\n }\n\n if (value.messageStop) {\n finishReason = mapBedrockFinishReason(\n value.messageStop.stopReason,\n );\n }\n\n if (value.metadata) {\n usage = {\n promptTokens: value.metadata.usage?.inputTokens ?? Number.NaN,\n completionTokens:\n value.metadata.usage?.outputTokens ?? Number.NaN,\n };\n\n if (value.metadata.trace) {\n providerMetadata = {\n bedrock: {\n trace: value.metadata.trace as JSONObject,\n },\n };\n }\n }\n\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\n };\n }\n\n const contentBlockDelta = value.contentBlockDelta;\n if (contentBlockDelta?.delta?.toolUse) {\n const contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n warnings,\n };\n }\n}\n","import { LanguageModelV1, LanguageModelV1CallWarning } from '@ai-sdk/provider';\nimport {\n Tool,\n ToolConfiguration,\n ToolInputSchema,\n} from '@aws-sdk/client-bedrock-runtime';\n\nexport function prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n): {\n toolConfiguration: ToolConfiguration;\n toolWarnings: LanguageModelV1CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return {\n toolConfiguration: { tools: undefined, toolChoice: undefined },\n toolWarnings: [],\n };\n }\n\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n const bedrockTools: Tool[] = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters,\n } as ToolInputSchema,\n },\n });\n }\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return {\n toolConfiguration: { tools: bedrockTools, toolChoice: undefined },\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n toolConfiguration: { tools: bedrockTools, toolChoice: { auto: {} } },\n toolWarnings,\n };\n case 'required':\n return {\n toolConfiguration: { tools: bedrockTools, toolChoice: { any: {} } },\n toolWarnings,\n };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return {\n toolConfiguration: { tools: undefined, toolChoice: undefined },\n toolWarnings,\n };\n case 'tool':\n return {\n toolConfiguration: {\n tools: bedrockTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockAssistantMessage,\n BedrockMessagesPrompt,\n BedrockUserMessage,\n} from './bedrock-chat-prompt';\n\nexport function convertToBedrockChatMessages(\n prompt: LanguageModelV1Prompt,\n): BedrockMessagesPrompt {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: BedrockMessagesPrompt['messages'] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (messages.length > 0) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const bedrockContent: BedrockUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text: part.text,\n });\n break;\n }\n case 'image': {\n if (part.image instanceof URL) {\n // The AI SDK automatically downloads images for user image parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'Image URLs in user messages',\n });\n }\n\n bedrockContent.push({\n image: {\n format: part.mimeType?.split('/')?.[1] as ImageFormat,\n source: {\n bytes: part.image ?? (part.image as Uint8Array),\n },\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n\n bedrockContent.push({\n toolResult: {\n toolUseId: part.toolCallId,\n content: [{ text: JSON.stringify(part.result) }],\n },\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: bedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const bedrockContent: BedrockAssistantMessage['content'] = [];\n\n for (const message of block.messages) {\n const { content } = message;\n\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text:\n // trim the last text part if it's the last message in the block\n // because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n i === blocks.length - 1 && j === block.messages.length - 1\n ? part.text.trim()\n : part.text,\n });\n break;\n }\n\n case 'tool-call': {\n bedrockContent.push({\n toolUse: {\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args as any,\n },\n });\n break;\n }\n }\n }\n }\n\n messages.push({ role: 'assistant', content: bedrockContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { StopReason } from '@aws-sdk/client-bedrock-runtime';\n\nexport function mapBedrockFinishReason(\n finishReason?: StopReason,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'stop_sequence':\n case 'end_turn':\n return 'stop';\n case 'max_tokens':\n return 'length';\n case 'content_filtered':\n case 'guardrail_intervened':\n return 'content-filter';\n case 'tool_use':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { EmbeddingModelV1 } from '@ai-sdk/provider';\nimport {\n BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\nimport {\n BedrockRuntimeClient,\n InvokeModelCommand,\n} from '@aws-sdk/client-bedrock-runtime';\n\ntype BedrockEmbeddingConfig = {\n client: BedrockRuntimeClient;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV1<string>['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV1<string> {\n readonly specificationVersion = 'v1';\n readonly modelId: BedrockEmbeddingModelId;\n readonly provider = 'amazon-bedrock';\n readonly maxEmbeddingsPerCall = undefined;\n readonly supportsParallelCalls = true;\n private readonly config: BedrockEmbeddingConfig;\n private readonly settings: BedrockEmbeddingSettings;\n\n constructor(\n modelId: BedrockEmbeddingModelId,\n settings: BedrockEmbeddingSettings,\n config: BedrockEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n this.settings = settings;\n }\n\n async doEmbed({\n values,\n }: Parameters<\n EmbeddingModelV1<string>['doEmbed']\n >[0]): Promise<DoEmbedResponse> {\n const fn = async (inputText: string) => {\n const payload = {\n inputText,\n dimensions: this.settings.dimensions,\n normalize: this.settings.normalize,\n };\n\n const command = new InvokeModelCommand({\n contentType: 'application/json',\n body: JSON.stringify(payload),\n modelId: this.modelId,\n });\n const rawResponse = await this.config.client.send(command);\n\n const parsed = JSON.parse(new TextDecoder().decode(rawResponse.body));\n\n return parsed;\n };\n\n const responses = await Promise.all(values.map(fn));\n\n const response = responses.reduce(\n (acc, r) => {\n acc.embeddings.push(r.embedding);\n acc.usage.tokens += r.inputTextTokenCount;\n return acc;\n },\n { embeddings: [], usage: { tokens: 0 } },\n );\n\n return response;\n }\n}\n"],"mappings":"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","names":["import_client_bedrock_runtime","import_provider","i","_a","_b","_c","_d","_e","_f","import_client_bedrock_runtime"]}
package/dist/index.mjs CHANGED
@@ -1,14 +1,11 @@
1
1
  // src/bedrock-provider.ts
2
- import {
3
- NoSuchModelError
4
- } from "@ai-sdk/provider";
5
2
  import {
6
3
  generateId,
7
4
  loadOptionalSetting,
8
5
  loadSetting
9
6
  } from "@ai-sdk/provider-utils";
10
7
  import {
11
- BedrockRuntimeClient as BedrockRuntimeClient2
8
+ BedrockRuntimeClient as BedrockRuntimeClient3
12
9
  } from "@aws-sdk/client-bedrock-runtime";
13
10
 
14
11
  // src/bedrock-chat-language-model.ts
@@ -20,6 +17,72 @@ import {
20
17
  ConverseStreamCommand
21
18
  } from "@aws-sdk/client-bedrock-runtime";
22
19
 
20
+ // src/bedrock-prepare-tools.ts
21
+ function prepareTools(mode) {
22
+ var _a;
23
+ const tools = ((_a = mode.tools) == null ? void 0 : _a.length) ? mode.tools : void 0;
24
+ if (tools == null) {
25
+ return {
26
+ toolConfiguration: { tools: void 0, toolChoice: void 0 },
27
+ toolWarnings: []
28
+ };
29
+ }
30
+ const toolWarnings = [];
31
+ const bedrockTools = [];
32
+ for (const tool of tools) {
33
+ if (tool.type === "provider-defined") {
34
+ toolWarnings.push({ type: "unsupported-tool", tool });
35
+ } else {
36
+ bedrockTools.push({
37
+ toolSpec: {
38
+ name: tool.name,
39
+ description: tool.description,
40
+ inputSchema: {
41
+ json: tool.parameters
42
+ }
43
+ }
44
+ });
45
+ }
46
+ }
47
+ const toolChoice = mode.toolChoice;
48
+ if (toolChoice == null) {
49
+ return {
50
+ toolConfiguration: { tools: bedrockTools, toolChoice: void 0 },
51
+ toolWarnings
52
+ };
53
+ }
54
+ const type = toolChoice.type;
55
+ switch (type) {
56
+ case "auto":
57
+ return {
58
+ toolConfiguration: { tools: bedrockTools, toolChoice: { auto: {} } },
59
+ toolWarnings
60
+ };
61
+ case "required":
62
+ return {
63
+ toolConfiguration: { tools: bedrockTools, toolChoice: { any: {} } },
64
+ toolWarnings
65
+ };
66
+ case "none":
67
+ return {
68
+ toolConfiguration: { tools: void 0, toolChoice: void 0 },
69
+ toolWarnings
70
+ };
71
+ case "tool":
72
+ return {
73
+ toolConfiguration: {
74
+ tools: bedrockTools,
75
+ toolChoice: { tool: { name: toolChoice.toolName } }
76
+ },
77
+ toolWarnings
78
+ };
79
+ default: {
80
+ const _exhaustiveCheck = type;
81
+ throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);
82
+ }
83
+ }
84
+ }
85
+
23
86
  // src/convert-to-bedrock-chat-messages.ts
24
87
  import {
25
88
  UnsupportedFunctionalityError
@@ -219,7 +282,7 @@ var BedrockChatLanguageModel = class {
219
282
  this.settings = settings;
220
283
  this.config = config;
221
284
  }
222
- async getArgs({
285
+ getArgs({
223
286
  mode,
224
287
  prompt,
225
288
  maxTokens,
@@ -290,10 +353,13 @@ var BedrockChatLanguageModel = class {
290
353
  };
291
354
  switch (type) {
292
355
  case "regular": {
293
- const toolConfig = prepareToolsAndToolChoice(mode);
356
+ const { toolConfiguration, toolWarnings } = prepareTools(mode);
294
357
  return {
295
- ...baseArgs,
296
- ...((_b = toolConfig.tools) == null ? void 0 : _b.length) ? { toolConfig } : {}
358
+ command: {
359
+ ...baseArgs,
360
+ ...((_b = toolConfiguration.tools) == null ? void 0 : _b.length) ? { toolConfiguration } : {}
361
+ },
362
+ warnings: [...warnings, ...toolWarnings]
297
363
  };
298
364
  }
299
365
  case "object-json": {
@@ -303,21 +369,24 @@ var BedrockChatLanguageModel = class {
303
369
  }
304
370
  case "object-tool": {
305
371
  return {
306
- ...baseArgs,
307
- toolConfig: {
308
- tools: [
309
- {
310
- toolSpec: {
311
- name: mode.tool.name,
312
- description: mode.tool.description,
313
- inputSchema: {
314
- json: mode.tool.parameters
372
+ command: {
373
+ ...baseArgs,
374
+ toolConfig: {
375
+ tools: [
376
+ {
377
+ toolSpec: {
378
+ name: mode.tool.name,
379
+ description: mode.tool.description,
380
+ inputSchema: {
381
+ json: mode.tool.parameters
382
+ }
315
383
  }
316
384
  }
317
- }
318
- ],
319
- toolChoice: { tool: { name: mode.tool.name } }
320
- }
385
+ ],
386
+ toolChoice: { tool: { name: mode.tool.name } }
387
+ }
388
+ },
389
+ warnings
321
390
  };
322
391
  }
323
392
  default: {
@@ -328,9 +397,11 @@ var BedrockChatLanguageModel = class {
328
397
  }
329
398
  async doGenerate(options) {
330
399
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
331
- const args = await this.getArgs(options);
332
- const response = await this.config.client.send(new ConverseCommand(args));
333
- const { messages: rawPrompt, ...rawSettings } = args;
400
+ const { command, warnings } = this.getArgs(options);
401
+ const response = await this.config.client.send(
402
+ new ConverseCommand(command)
403
+ );
404
+ const { messages: rawPrompt, ...rawSettings } = command;
334
405
  const providerMetadata = response.trace ? { bedrock: { trace: response.trace } } : void 0;
335
406
  return {
336
407
  text: (_d = (_c = (_b = (_a = response.output) == null ? void 0 : _a.message) == null ? void 0 : _b.content) == null ? void 0 : _c.map((part) => {
@@ -352,16 +423,16 @@ var BedrockChatLanguageModel = class {
352
423
  completionTokens: (_l = (_k = response.usage) == null ? void 0 : _k.outputTokens) != null ? _l : Number.NaN
353
424
  },
354
425
  rawCall: { rawPrompt, rawSettings },
355
- warnings: [],
426
+ warnings,
356
427
  providerMetadata
357
428
  };
358
429
  }
359
430
  async doStream(options) {
360
- const args = await this.getArgs(options);
431
+ const { command, warnings } = this.getArgs(options);
361
432
  const response = await this.config.client.send(
362
- new ConverseStreamCommand({ ...args })
433
+ new ConverseStreamCommand(command)
363
434
  );
364
- const { messages: rawPrompt, ...rawSettings } = args;
435
+ const { messages: rawPrompt, ...rawSettings } = command;
365
436
  let finishReason = "unknown";
366
437
  let usage = {
367
438
  promptTokens: Number.NaN,
@@ -483,54 +554,61 @@ var BedrockChatLanguageModel = class {
483
554
  })
484
555
  ),
485
556
  rawCall: { rawPrompt, rawSettings },
486
- warnings: []
557
+ warnings
487
558
  };
488
559
  }
489
560
  };
490
- function prepareToolsAndToolChoice(mode) {
491
- var _a;
492
- const tools = ((_a = mode.tools) == null ? void 0 : _a.length) ? mode.tools : void 0;
493
- if (tools == null) {
494
- return { tools: void 0, toolChoice: void 0 };
495
- }
496
- const mappedTools = tools.map((tool) => ({
497
- toolSpec: {
498
- name: tool.name,
499
- description: tool.description,
500
- inputSchema: {
501
- json: tool.parameters
502
- }
503
- }
504
- }));
505
- const toolChoice = mode.toolChoice;
506
- if (toolChoice == null) {
507
- return { tools: mappedTools, toolChoice: void 0 };
561
+
562
+ // src/bedrock-embedding-model.ts
563
+ import {
564
+ InvokeModelCommand
565
+ } from "@aws-sdk/client-bedrock-runtime";
566
+ var BedrockEmbeddingModel = class {
567
+ constructor(modelId, settings, config) {
568
+ this.specificationVersion = "v1";
569
+ this.provider = "amazon-bedrock";
570
+ this.maxEmbeddingsPerCall = void 0;
571
+ this.supportsParallelCalls = true;
572
+ this.modelId = modelId;
573
+ this.config = config;
574
+ this.settings = settings;
508
575
  }
509
- const type = toolChoice.type;
510
- switch (type) {
511
- case "auto":
512
- return { tools: mappedTools, toolChoice: { auto: {} } };
513
- case "required":
514
- return { tools: mappedTools, toolChoice: { any: {} } };
515
- case "none":
516
- return { tools: void 0, toolChoice: void 0 };
517
- case "tool":
518
- return {
519
- tools: mappedTools,
520
- toolChoice: { tool: { name: toolChoice.toolName } }
576
+ async doEmbed({
577
+ values
578
+ }) {
579
+ const fn = async (inputText) => {
580
+ const payload = {
581
+ inputText,
582
+ dimensions: this.settings.dimensions,
583
+ normalize: this.settings.normalize
521
584
  };
522
- default: {
523
- const _exhaustiveCheck = type;
524
- throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);
525
- }
585
+ const command = new InvokeModelCommand({
586
+ contentType: "application/json",
587
+ body: JSON.stringify(payload),
588
+ modelId: this.modelId
589
+ });
590
+ const rawResponse = await this.config.client.send(command);
591
+ const parsed = JSON.parse(new TextDecoder().decode(rawResponse.body));
592
+ return parsed;
593
+ };
594
+ const responses = await Promise.all(values.map(fn));
595
+ const response = responses.reduce(
596
+ (acc, r) => {
597
+ acc.embeddings.push(r.embedding);
598
+ acc.usage.tokens += r.inputTextTokenCount;
599
+ return acc;
600
+ },
601
+ { embeddings: [], usage: { tokens: 0 } }
602
+ );
603
+ return response;
526
604
  }
527
- }
605
+ };
528
606
 
529
607
  // src/bedrock-provider.ts
530
608
  function createAmazonBedrock(options = {}) {
531
609
  const createBedrockRuntimeClient = () => {
532
610
  var _a;
533
- return new BedrockRuntimeClient2(
611
+ return new BedrockRuntimeClient3(
534
612
  (_a = options.bedrockOptions) != null ? _a : {
535
613
  region: loadSetting({
536
614
  settingValue: options.region,
@@ -571,10 +649,13 @@ function createAmazonBedrock(options = {}) {
571
649
  }
572
650
  return createChatModel(modelId, settings);
573
651
  };
652
+ const createEmbeddingModel = (modelId, settings = {}) => new BedrockEmbeddingModel(modelId, settings, {
653
+ client: createBedrockRuntimeClient()
654
+ });
574
655
  provider.languageModel = createChatModel;
575
- provider.textEmbeddingModel = (modelId) => {
576
- throw new NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
577
- };
656
+ provider.embedding = createEmbeddingModel;
657
+ provider.textEmbedding = createEmbeddingModel;
658
+ provider.textEmbeddingModel = createEmbeddingModel;
578
659
  return provider;
579
660
  }
580
661
  var bedrock = createAmazonBedrock();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bedrock-provider.ts","../src/bedrock-chat-language-model.ts","../src/convert-to-bedrock-chat-messages.ts","../src/map-bedrock-finish-reason.ts"],"sourcesContent":["import {\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadOptionalSetting,\n loadSetting,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n BedrockRuntimeClientConfig,\n} from '@aws-sdk/client-bedrock-runtime';\nimport { BedrockChatLanguageModel } from './bedrock-chat-language-model';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\n\nexport interface AmazonBedrockProviderSettings {\n region?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n sessionToken?: string;\n\n /**\n * Complete Bedrock configuration for setting advanced authentication and\n * other options. When this is provided, the region, accessKeyId, and\n * secretAccessKey settings are ignored.\n */\n bedrockOptions?: BedrockRuntimeClientConfig;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV1 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const createBedrockRuntimeClient = () =>\n new BedrockRuntimeClient(\n options.bedrockOptions ?? {\n region: loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n }),\n credentials: {\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n },\n },\n );\n\n const createChatModel = (\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings = {},\n ) =>\n new BedrockChatLanguageModel(modelId, settings, {\n client: createBedrockRuntimeClient(),\n generateId,\n });\n\n const provider = function (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Amazon Bedrock model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ParseResult } from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n ConverseCommand,\n ConverseCommandInput,\n ConverseStreamCommand,\n ConverseStreamOutput,\n GuardrailConfiguration,\n GuardrailStreamConfiguration,\n Tool,\n ToolConfiguration,\n ToolInputSchema,\n} from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\nimport { convertToBedrockChatMessages } from './convert-to-bedrock-chat-messages';\nimport { mapBedrockFinishReason } from './map-bedrock-finish-reason';\n\ntype BedrockChatConfig = {\n client: BedrockRuntimeClient;\n generateId: () => string;\n};\n\nexport class BedrockChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'amazon-bedrock';\n readonly defaultObjectGenerationMode = 'tool';\n readonly supportsImageUrls = false;\n\n readonly modelId: BedrockChatModelId;\n readonly settings: BedrockChatSettings;\n\n private readonly config: BedrockChatConfig;\n\n constructor(\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings,\n config: BedrockChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerMetadata,\n headers,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = convertToBedrockChatMessages(prompt);\n\n const baseArgs: ConverseCommandInput = {\n modelId: this.modelId,\n system: system ? [{ text: system }] : undefined,\n additionalModelRequestFields: this.settings.additionalModelRequestFields,\n inferenceConfig: {\n maxTokens,\n temperature,\n topP,\n stopSequences,\n },\n messages,\n guardrailConfig: providerMetadata?.bedrock?.guardrailConfig as\n | GuardrailConfiguration\n | GuardrailStreamConfiguration\n | undefined,\n };\n\n switch (type) {\n case 'regular': {\n const toolConfig = prepareToolsAndToolChoice(mode);\n\n return {\n ...baseArgs,\n ...(toolConfig.tools?.length ? { toolConfig } : {}),\n } satisfies ConverseCommandInput;\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n return {\n ...baseArgs,\n toolConfig: {\n tools: [\n {\n toolSpec: {\n name: mode.tool.name,\n description: mode.tool.description,\n inputSchema: {\n json: mode.tool.parameters,\n } as ToolInputSchema,\n },\n },\n ],\n toolChoice: { tool: { name: mode.tool.name } },\n },\n } satisfies ConverseCommandInput;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const args = await this.getArgs(options);\n\n const response = await this.config.client.send(new ConverseCommand(args));\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n const providerMetadata = response.trace\n ? { bedrock: { trace: response.trace as JSONObject } }\n : undefined;\n\n return {\n text:\n response.output?.message?.content\n ?.map(part => part.text ?? '')\n .join('') ?? undefined,\n toolCalls: response.output?.message?.content\n ?.filter(part => !!part.toolUse)\n ?.map(part => ({\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n })),\n finishReason: mapBedrockFinishReason(response.stopReason),\n usage: {\n promptTokens: response.usage?.inputTokens ?? Number.NaN,\n completionTokens: response.usage?.outputTokens ?? Number.NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n warnings: [],\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const args = await this.getArgs(options);\n\n const response = await this.config.client.send(\n new ConverseStreamCommand({ ...args }),\n );\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined =\n undefined;\n\n if (!response.stream) {\n throw new Error('No stream found');\n }\n\n const stream = new ReadableStream<any>({\n async start(controller) {\n for await (const chunk of response.stream!) {\n controller.enqueue({ success: true, value: chunk });\n }\n controller.close();\n },\n });\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: stream.pipeThrough(\n new TransformStream<\n ParseResult<ConverseStreamOutput>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n function enqueueError(error: Error) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n enqueueError(chunk.error);\n return;\n }\n\n const value = chunk.value;\n\n // handle errors:\n if (value.internalServerException) {\n enqueueError(value.internalServerException);\n return;\n }\n if (value.modelStreamErrorException) {\n enqueueError(value.modelStreamErrorException);\n return;\n }\n if (value.throttlingException) {\n enqueueError(value.throttlingException);\n return;\n }\n if (value.validationException) {\n enqueueError(value.validationException);\n return;\n }\n\n if (value.messageStop) {\n finishReason = mapBedrockFinishReason(\n value.messageStop.stopReason,\n );\n }\n\n if (value.metadata) {\n usage = {\n promptTokens: value.metadata.usage?.inputTokens ?? Number.NaN,\n completionTokens:\n value.metadata.usage?.outputTokens ?? Number.NaN,\n };\n\n if (value.metadata.trace) {\n providerMetadata = {\n bedrock: {\n trace: value.metadata.trace as JSONObject,\n },\n };\n }\n }\n\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\n };\n }\n\n const contentBlockDelta = value.contentBlockDelta;\n if (contentBlockDelta?.delta?.toolUse) {\n const contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n warnings: [],\n };\n }\n}\n\nfunction prepareToolsAndToolChoice(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n): ToolConfiguration {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined };\n }\n\n const mappedTools: Tool[] = tools.map(tool => ({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters,\n } as ToolInputSchema,\n },\n }));\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return { tools: mappedTools, toolChoice: undefined };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return { tools: mappedTools, toolChoice: { auto: {} } };\n case 'required':\n return { tools: mappedTools, toolChoice: { any: {} } };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, toolChoice: undefined };\n case 'tool':\n return {\n tools: mappedTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockAssistantMessage,\n BedrockMessagesPrompt,\n BedrockUserMessage,\n} from './bedrock-chat-prompt';\n\nexport function convertToBedrockChatMessages(\n prompt: LanguageModelV1Prompt,\n): BedrockMessagesPrompt {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: BedrockMessagesPrompt['messages'] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (messages.length > 0) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const bedrockContent: BedrockUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text: part.text,\n });\n break;\n }\n case 'image': {\n if (part.image instanceof URL) {\n // The AI SDK automatically downloads images for user image parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'Image URLs in user messages',\n });\n }\n\n bedrockContent.push({\n image: {\n format: part.mimeType?.split('/')?.[1] as ImageFormat,\n source: {\n bytes: part.image ?? (part.image as Uint8Array),\n },\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n\n bedrockContent.push({\n toolResult: {\n toolUseId: part.toolCallId,\n content: [{ text: JSON.stringify(part.result) }],\n },\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: bedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const bedrockContent: BedrockAssistantMessage['content'] = [];\n\n for (const message of block.messages) {\n const { content } = message;\n\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text:\n // trim the last text part if it's the last message in the block\n // because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n i === blocks.length - 1 && j === block.messages.length - 1\n ? part.text.trim()\n : part.text,\n });\n break;\n }\n\n case 'tool-call': {\n bedrockContent.push({\n toolUse: {\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args as any,\n },\n });\n break;\n }\n }\n }\n }\n\n messages.push({ role: 'assistant', content: bedrockContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { StopReason } from '@aws-sdk/client-bedrock-runtime';\n\nexport function mapBedrockFinishReason(\n finishReason?: StopReason,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'stop_sequence':\n case 'end_turn':\n return 'stop';\n case 'max_tokens':\n return 'length';\n case 'content_filtered':\n case 'guardrail_intervened':\n return 'content-filter';\n case 'tool_use':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n"],"mappings":"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","names":["BedrockRuntimeClient","UnsupportedFunctionalityError","i","UnsupportedFunctionalityError","_a","_b","_c","_d","_e","_f","BedrockRuntimeClient"]}
1
+ {"version":3,"sources":["../src/bedrock-provider.ts","../src/bedrock-chat-language-model.ts","../src/bedrock-prepare-tools.ts","../src/convert-to-bedrock-chat-messages.ts","../src/map-bedrock-finish-reason.ts","../src/bedrock-embedding-model.ts"],"sourcesContent":["import {\n EmbeddingModelV1,\n LanguageModelV1,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n generateId,\n loadOptionalSetting,\n loadSetting,\n} from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n BedrockRuntimeClientConfig,\n} from '@aws-sdk/client-bedrock-runtime';\nimport { BedrockChatLanguageModel } from './bedrock-chat-language-model';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\nimport { BedrockEmbeddingModel } from './bedrock-embedding-model';\nimport {\n BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\n\nexport interface AmazonBedrockProviderSettings {\n region?: string;\n accessKeyId?: string;\n secretAccessKey?: string;\n sessionToken?: string;\n\n /**\n * Complete Bedrock configuration for setting advanced authentication and\n * other options. When this is provided, the region, accessKeyId, and\n * secretAccessKey settings are ignored.\n */\n bedrockOptions?: BedrockRuntimeClientConfig;\n\n // for testing\n generateId?: () => string;\n}\n\nexport interface AmazonBedrockProvider extends ProviderV1 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): LanguageModelV1;\n\n embedding(\n modelId: BedrockEmbeddingModelId,\n settings?: BedrockEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n}\n\n/**\nCreate an Amazon Bedrock provider instance.\n */\nexport function createAmazonBedrock(\n options: AmazonBedrockProviderSettings = {},\n): AmazonBedrockProvider {\n const createBedrockRuntimeClient = () =>\n new BedrockRuntimeClient(\n options.bedrockOptions ?? {\n region: loadSetting({\n settingValue: options.region,\n settingName: 'region',\n environmentVariableName: 'AWS_REGION',\n description: 'AWS region',\n }),\n credentials: {\n accessKeyId: loadSetting({\n settingValue: options.accessKeyId,\n settingName: 'accessKeyId',\n environmentVariableName: 'AWS_ACCESS_KEY_ID',\n description: 'AWS access key ID',\n }),\n secretAccessKey: loadSetting({\n settingValue: options.secretAccessKey,\n settingName: 'secretAccessKey',\n environmentVariableName: 'AWS_SECRET_ACCESS_KEY',\n description: 'AWS secret access key',\n }),\n sessionToken: loadOptionalSetting({\n settingValue: options.sessionToken,\n environmentVariableName: 'AWS_SESSION_TOKEN',\n }),\n },\n },\n );\n\n const createChatModel = (\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings = {},\n ) =>\n new BedrockChatLanguageModel(modelId, settings, {\n client: createBedrockRuntimeClient(),\n generateId,\n });\n\n const provider = function (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Amazon Bedrock model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n const createEmbeddingModel = (\n modelId: BedrockEmbeddingModelId,\n settings: BedrockEmbeddingSettings = {},\n ) =>\n new BedrockEmbeddingModel(modelId, settings, {\n client: createBedrockRuntimeClient(),\n });\n\n provider.languageModel = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n JSONObject,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ParseResult } from '@ai-sdk/provider-utils';\nimport {\n BedrockRuntimeClient,\n ConverseCommand,\n ConverseCommandInput,\n ConverseStreamCommand,\n ConverseStreamOutput,\n GuardrailConfiguration,\n GuardrailStreamConfiguration,\n ToolInputSchema,\n} from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockChatModelId,\n BedrockChatSettings,\n} from './bedrock-chat-settings';\nimport { prepareTools } from './bedrock-prepare-tools';\nimport { convertToBedrockChatMessages } from './convert-to-bedrock-chat-messages';\nimport { mapBedrockFinishReason } from './map-bedrock-finish-reason';\n\ntype BedrockChatConfig = {\n client: BedrockRuntimeClient;\n generateId: () => string;\n};\n\nexport class BedrockChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly provider = 'amazon-bedrock';\n readonly defaultObjectGenerationMode = 'tool';\n readonly supportsImageUrls = false;\n\n readonly modelId: BedrockChatModelId;\n readonly settings: BedrockChatSettings;\n\n private readonly config: BedrockChatConfig;\n\n constructor(\n modelId: BedrockChatModelId,\n settings: BedrockChatSettings,\n config: BedrockChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerMetadata,\n headers,\n }: Parameters<LanguageModelV1['doGenerate']>[0]): {\n command: ConverseCommandInput;\n warnings: LanguageModelV1CallWarning[];\n } {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (headers != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'headers',\n });\n }\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { system, messages } = convertToBedrockChatMessages(prompt);\n\n const baseArgs: ConverseCommandInput = {\n modelId: this.modelId,\n system: system ? [{ text: system }] : undefined,\n additionalModelRequestFields: this.settings.additionalModelRequestFields,\n inferenceConfig: {\n maxTokens,\n temperature,\n topP,\n stopSequences,\n },\n messages,\n guardrailConfig: providerMetadata?.bedrock?.guardrailConfig as\n | GuardrailConfiguration\n | GuardrailStreamConfiguration\n | undefined,\n };\n\n switch (type) {\n case 'regular': {\n const { toolConfiguration, toolWarnings } = prepareTools(mode);\n return {\n command: {\n ...baseArgs,\n ...(toolConfiguration.tools?.length ? { toolConfiguration } : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n return {\n command: {\n ...baseArgs,\n toolConfig: {\n tools: [\n {\n toolSpec: {\n name: mode.tool.name,\n description: mode.tool.description,\n inputSchema: {\n json: mode.tool.parameters,\n } as ToolInputSchema,\n },\n },\n ],\n toolChoice: { tool: { name: mode.tool.name } },\n },\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { command, warnings } = this.getArgs(options);\n\n const response = await this.config.client.send(\n new ConverseCommand(command),\n );\n\n const { messages: rawPrompt, ...rawSettings } = command;\n\n const providerMetadata = response.trace\n ? { bedrock: { trace: response.trace as JSONObject } }\n : undefined;\n\n return {\n text:\n response.output?.message?.content\n ?.map(part => part.text ?? '')\n .join('') ?? undefined,\n toolCalls: response.output?.message?.content\n ?.filter(part => !!part.toolUse)\n ?.map(part => ({\n toolCallType: 'function',\n toolCallId: part.toolUse?.toolUseId ?? this.config.generateId(),\n toolName: part.toolUse?.name ?? `tool-${this.config.generateId()}`,\n args: JSON.stringify(part.toolUse?.input ?? ''),\n })),\n finishReason: mapBedrockFinishReason(response.stopReason),\n usage: {\n promptTokens: response.usage?.inputTokens ?? Number.NaN,\n completionTokens: response.usage?.outputTokens ?? Number.NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { command, warnings } = this.getArgs(options);\n\n const response = await this.config.client.send(\n new ConverseStreamCommand(command),\n );\n\n const { messages: rawPrompt, ...rawSettings } = command;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined =\n undefined;\n\n if (!response.stream) {\n throw new Error('No stream found');\n }\n\n const stream = new ReadableStream<any>({\n async start(controller) {\n for await (const chunk of response.stream!) {\n controller.enqueue({ success: true, value: chunk });\n }\n controller.close();\n },\n });\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n return {\n stream: stream.pipeThrough(\n new TransformStream<\n ParseResult<ConverseStreamOutput>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n function enqueueError(error: Error) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n enqueueError(chunk.error);\n return;\n }\n\n const value = chunk.value;\n\n // handle errors:\n if (value.internalServerException) {\n enqueueError(value.internalServerException);\n return;\n }\n if (value.modelStreamErrorException) {\n enqueueError(value.modelStreamErrorException);\n return;\n }\n if (value.throttlingException) {\n enqueueError(value.throttlingException);\n return;\n }\n if (value.validationException) {\n enqueueError(value.validationException);\n return;\n }\n\n if (value.messageStop) {\n finishReason = mapBedrockFinishReason(\n value.messageStop.stopReason,\n );\n }\n\n if (value.metadata) {\n usage = {\n promptTokens: value.metadata.usage?.inputTokens ?? Number.NaN,\n completionTokens:\n value.metadata.usage?.outputTokens ?? Number.NaN,\n };\n\n if (value.metadata.trace) {\n providerMetadata = {\n bedrock: {\n trace: value.metadata.trace as JSONObject,\n },\n };\n }\n }\n\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n const contentBlockStart = value.contentBlockStart;\n if (contentBlockStart?.start?.toolUse != null) {\n const toolUse = contentBlockStart.start.toolUse;\n toolCallContentBlocks[contentBlockStart.contentBlockIndex!] = {\n toolCallId: toolUse.toolUseId!,\n toolName: toolUse.name!,\n jsonText: '',\n };\n }\n\n const contentBlockDelta = value.contentBlockDelta;\n if (contentBlockDelta?.delta?.toolUse) {\n const contentBlock =\n toolCallContentBlocks[contentBlockDelta.contentBlockIndex!];\n const delta = contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: delta,\n });\n\n contentBlock.jsonText += delta;\n }\n\n const contentBlockStop = value.contentBlockStop;\n if (contentBlockStop != null) {\n const index = contentBlockStop.contentBlockIndex!;\n const contentBlock = toolCallContentBlocks[index];\n\n // when finishing a tool call block, send the full tool call:\n if (contentBlock != null) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[index];\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n warnings,\n };\n }\n}\n","import { LanguageModelV1, LanguageModelV1CallWarning } from '@ai-sdk/provider';\nimport {\n Tool,\n ToolConfiguration,\n ToolInputSchema,\n} from '@aws-sdk/client-bedrock-runtime';\n\nexport function prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n): {\n toolConfiguration: ToolConfiguration;\n toolWarnings: LanguageModelV1CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n if (tools == null) {\n return {\n toolConfiguration: { tools: undefined, toolChoice: undefined },\n toolWarnings: [],\n };\n }\n\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n const bedrockTools: Tool[] = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n bedrockTools.push({\n toolSpec: {\n name: tool.name,\n description: tool.description,\n inputSchema: {\n json: tool.parameters,\n } as ToolInputSchema,\n },\n });\n }\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return {\n toolConfiguration: { tools: bedrockTools, toolChoice: undefined },\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n toolConfiguration: { tools: bedrockTools, toolChoice: { auto: {} } },\n toolWarnings,\n };\n case 'required':\n return {\n toolConfiguration: { tools: bedrockTools, toolChoice: { any: {} } },\n toolWarnings,\n };\n case 'none':\n // Bedrock does not support 'none' tool choice, so we remove the tools:\n return {\n toolConfiguration: { tools: undefined, toolChoice: undefined },\n toolWarnings,\n };\n case 'tool':\n return {\n toolConfiguration: {\n tools: bedrockTools,\n toolChoice: { tool: { name: toolChoice.toolName } },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported tool choice type: ${_exhaustiveCheck}`);\n }\n }\n}\n","import {\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport {\n BedrockAssistantMessage,\n BedrockMessagesPrompt,\n BedrockUserMessage,\n} from './bedrock-chat-prompt';\n\nexport function convertToBedrockChatMessages(\n prompt: LanguageModelV1Prompt,\n): BedrockMessagesPrompt {\n const blocks = groupIntoBlocks(prompt);\n\n let system: string | undefined = undefined;\n const messages: BedrockMessagesPrompt['messages'] = [];\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (messages.length > 0) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content }) => content).join('\\n');\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const bedrockContent: BedrockUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text: part.text,\n });\n break;\n }\n case 'image': {\n if (part.image instanceof URL) {\n // The AI SDK automatically downloads images for user image parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'Image URLs in user messages',\n });\n }\n\n bedrockContent.push({\n image: {\n format: part.mimeType?.split('/')?.[1] as ImageFormat,\n source: {\n bytes: part.image ?? (part.image as Uint8Array),\n },\n },\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n\n bedrockContent.push({\n toolResult: {\n toolUseId: part.toolCallId,\n content: [{ text: JSON.stringify(part.result) }],\n },\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: bedrockContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const bedrockContent: BedrockAssistantMessage['content'] = [];\n\n for (const message of block.messages) {\n const { content } = message;\n\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n switch (part.type) {\n case 'text': {\n bedrockContent.push({\n text:\n // trim the last text part if it's the last message in the block\n // because Bedrock does not allow trailing whitespace\n // in pre-filled assistant responses\n i === blocks.length - 1 && j === block.messages.length - 1\n ? part.text.trim()\n : part.text,\n });\n break;\n }\n\n case 'tool-call': {\n bedrockContent.push({\n toolUse: {\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args as any,\n },\n });\n break;\n }\n }\n }\n }\n\n messages.push({ role: 'assistant', content: bedrockContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n system,\n messages,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\nimport { StopReason } from '@aws-sdk/client-bedrock-runtime';\n\nexport function mapBedrockFinishReason(\n finishReason?: StopReason,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'stop_sequence':\n case 'end_turn':\n return 'stop';\n case 'max_tokens':\n return 'length';\n case 'content_filtered':\n case 'guardrail_intervened':\n return 'content-filter';\n case 'tool_use':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { EmbeddingModelV1 } from '@ai-sdk/provider';\nimport {\n BedrockEmbeddingModelId,\n BedrockEmbeddingSettings,\n} from './bedrock-embedding-settings';\nimport {\n BedrockRuntimeClient,\n InvokeModelCommand,\n} from '@aws-sdk/client-bedrock-runtime';\n\ntype BedrockEmbeddingConfig = {\n client: BedrockRuntimeClient;\n};\n\ntype DoEmbedResponse = Awaited<ReturnType<EmbeddingModelV1<string>['doEmbed']>>;\n\nexport class BedrockEmbeddingModel implements EmbeddingModelV1<string> {\n readonly specificationVersion = 'v1';\n readonly modelId: BedrockEmbeddingModelId;\n readonly provider = 'amazon-bedrock';\n readonly maxEmbeddingsPerCall = undefined;\n readonly supportsParallelCalls = true;\n private readonly config: BedrockEmbeddingConfig;\n private readonly settings: BedrockEmbeddingSettings;\n\n constructor(\n modelId: BedrockEmbeddingModelId,\n settings: BedrockEmbeddingSettings,\n config: BedrockEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n this.settings = settings;\n }\n\n async doEmbed({\n values,\n }: Parameters<\n EmbeddingModelV1<string>['doEmbed']\n >[0]): Promise<DoEmbedResponse> {\n const fn = async (inputText: string) => {\n const payload = {\n inputText,\n dimensions: this.settings.dimensions,\n normalize: this.settings.normalize,\n };\n\n const command = new InvokeModelCommand({\n contentType: 'application/json',\n body: JSON.stringify(payload),\n modelId: this.modelId,\n });\n const rawResponse = await this.config.client.send(command);\n\n const parsed = JSON.parse(new TextDecoder().decode(rawResponse.body));\n\n return parsed;\n };\n\n const responses = await Promise.all(values.map(fn));\n\n const response = responses.reduce(\n (acc, r) => {\n acc.embeddings.push(r.embedding);\n acc.usage.tokens += r.inputTextTokenCount;\n return acc;\n },\n { embeddings: [], usage: { tokens: 0 } },\n );\n\n return response;\n }\n}\n"],"mappings":"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","names":["BedrockRuntimeClient","UnsupportedFunctionalityError","i","UnsupportedFunctionalityError","_a","_b","_c","_d","_e","_f","BedrockRuntimeClient"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/amazon-bedrock",
3
- "version": "0.0.29",
3
+ "version": "0.0.32",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -19,8 +19,8 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@ai-sdk/provider": "0.0.24",
23
- "@ai-sdk/provider-utils": "1.0.20",
22
+ "@ai-sdk/provider": "0.0.26",
23
+ "@ai-sdk/provider-utils": "1.0.22",
24
24
  "@aws-sdk/client-bedrock-runtime": "^3.663.0"
25
25
  },
26
26
  "devDependencies": {