@ai-sdk/amazon-bedrock 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +21 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +21 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -180,8 +180,11 @@ var BedrockChatLanguageModel = class {
|
|
|
180
180
|
maxTokens,
|
|
181
181
|
temperature,
|
|
182
182
|
topP,
|
|
183
|
+
topK,
|
|
183
184
|
frequencyPenalty,
|
|
184
185
|
presencePenalty,
|
|
186
|
+
stopSequences,
|
|
187
|
+
responseFormat,
|
|
185
188
|
seed,
|
|
186
189
|
headers
|
|
187
190
|
}) {
|
|
@@ -212,6 +215,19 @@ var BedrockChatLanguageModel = class {
|
|
|
212
215
|
setting: "headers"
|
|
213
216
|
});
|
|
214
217
|
}
|
|
218
|
+
if (topK != null) {
|
|
219
|
+
warnings.push({
|
|
220
|
+
type: "unsupported-setting",
|
|
221
|
+
setting: "topK"
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
if (responseFormat != null && responseFormat.type !== "text") {
|
|
225
|
+
warnings.push({
|
|
226
|
+
type: "unsupported-setting",
|
|
227
|
+
setting: "responseFormat",
|
|
228
|
+
details: "JSON response format is not supported."
|
|
229
|
+
});
|
|
230
|
+
}
|
|
215
231
|
const { system, messages } = await convertToBedrockChatMessages({ prompt });
|
|
216
232
|
const baseArgs = {
|
|
217
233
|
modelId: this.modelId,
|
|
@@ -220,7 +236,8 @@ var BedrockChatLanguageModel = class {
|
|
|
220
236
|
inferenceConfig: {
|
|
221
237
|
maxTokens,
|
|
222
238
|
temperature,
|
|
223
|
-
topP
|
|
239
|
+
topP,
|
|
240
|
+
stopSequences
|
|
224
241
|
},
|
|
225
242
|
messages
|
|
226
243
|
};
|
|
@@ -246,7 +263,9 @@ var BedrockChatLanguageModel = class {
|
|
|
246
263
|
toolSpec: {
|
|
247
264
|
name: mode.tool.name,
|
|
248
265
|
description: mode.tool.description,
|
|
249
|
-
inputSchema: {
|
|
266
|
+
inputSchema: {
|
|
267
|
+
json: mode.tool.parameters
|
|
268
|
+
}
|
|
250
269
|
}
|
|
251
270
|
}
|
|
252
271
|
],
|
|
@@ -254,11 +273,6 @@ var BedrockChatLanguageModel = class {
|
|
|
254
273
|
}
|
|
255
274
|
};
|
|
256
275
|
}
|
|
257
|
-
case "object-grammar": {
|
|
258
|
-
throw new import_provider2.UnsupportedFunctionalityError({
|
|
259
|
-
functionality: "grammar-mode object generation"
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
276
|
default: {
|
|
263
277
|
const _exhaustiveCheck = type;
|
|
264
278
|
throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
|
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 * from './bedrock-provider';\n","import { generateId, loadSetting } 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\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 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\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 },\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\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\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 Tool,\n ToolConfiguration,\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\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 frequencyPenalty,\n presencePenalty,\n seed,\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 const { system, messages } = await 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 },\n messages,\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: { json: JSON.stringify(mode.tool.parameters) },\n },\n },\n ],\n toolChoice: { tool: { name: mode.tool.name } },\n },\n } satisfies ConverseCommandInput;\n }\n\n case 'object-grammar': {\n throw new UnsupportedFunctionalityError({\n functionality: 'grammar-mode object generation',\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 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 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 };\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\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 let toolName = '';\n let toolCallId = '';\n let toolCallArgs = '';\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\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n if (value.contentBlockStart?.start?.toolUse) {\n // store the tool name and id for the next chunk\n const toolUse = value.contentBlockStart.start.toolUse;\n toolName = toolUse.name ?? '';\n toolCallId = toolUse.toolUseId ?? '';\n }\n\n if (value.contentBlockDelta?.delta?.toolUse) {\n // continue to get the chunks of the tool call args\n toolCallArgs += value.contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId,\n toolName,\n argsTextDelta:\n value.contentBlockDelta.delta.toolUse.input ?? '',\n });\n }\n\n // if the content is done and a tool call was made, send it\n if (value.contentBlockStop && toolCallArgs.length > 0) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId,\n toolName,\n args: toolCallArgs,\n });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\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 as any,\n },\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockMessages, BedrockMessagesPrompt } from './bedrock-chat-prompt';\nimport { ContentBlock, ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport { download } from '@ai-sdk/provider-utils';\n\ntype ConvertToBedrockChatMessagesArgs = {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n};\n\nexport async function convertToBedrockChatMessages({\n prompt,\n downloadImplementation = download,\n}: ConvertToBedrockChatMessagesArgs): Promise<BedrockMessagesPrompt> {\n let system: string | undefined = undefined;\n const messages: BedrockMessages = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple system messages',\n });\n }\n\n system = content;\n break;\n }\n\n case 'user': {\n const bedrockMessageContent: ContentBlock[] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n bedrockMessageContent.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n bedrockMessageContent.push({\n image: {\n format: (mimeType ?? part.mimeType)?.split(\n '/',\n )?.[1] as ImageFormat,\n source: {\n bytes: data ?? (part.image as Uint8Array),\n },\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'user',\n content: bedrockMessageContent,\n });\n\n break;\n }\n\n case 'assistant': {\n const toolUse: Array<{\n toolUseId: string;\n name: string;\n input: any;\n }> = [];\n\n let text = '';\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolUse.push({\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: [\n ...(text ? [{ text }] : []),\n ...toolUse.map(toolUse => ({ toolUse: toolUse })),\n ],\n });\n\n break;\n }\n\n case 'tool':\n messages.push({\n role: 'user',\n content: content.map(part => ({\n toolResult: {\n toolUseId: part.toolCallId,\n status: part.isError ? 'error' : 'success',\n content: [{ text: JSON.stringify(part.result) }],\n },\n })),\n });\n break;\n\n default: {\n throw new Error(`Unsupported role: ${role}`);\n }\n }\n }\n\n return { system, messages };\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 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_utils","import_client_bedrock_runtime","import_provider","toolUse","_a","_b","_c","_d","_e","_f"]}
|
|
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 * from './bedrock-provider';\n","import { generateId, loadSetting } 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\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 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\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 },\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\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\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 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\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 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 } = await 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 };\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 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 };\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\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 let toolName = '';\n let toolCallId = '';\n let toolCallArgs = '';\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\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n if (value.contentBlockStart?.start?.toolUse) {\n // store the tool name and id for the next chunk\n const toolUse = value.contentBlockStart.start.toolUse;\n toolName = toolUse.name ?? '';\n toolCallId = toolUse.toolUseId ?? '';\n }\n\n if (value.contentBlockDelta?.delta?.toolUse) {\n // continue to get the chunks of the tool call args\n toolCallArgs += value.contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId,\n toolName,\n argsTextDelta:\n value.contentBlockDelta.delta.toolUse.input ?? '',\n });\n }\n\n // if the content is done and a tool call was made, send it\n if (value.contentBlockStop && toolCallArgs.length > 0) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId,\n toolName,\n args: toolCallArgs,\n });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockMessages, BedrockMessagesPrompt } from './bedrock-chat-prompt';\nimport { ContentBlock, ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport { download } from '@ai-sdk/provider-utils';\n\ntype ConvertToBedrockChatMessagesArgs = {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n};\n\nexport async function convertToBedrockChatMessages({\n prompt,\n downloadImplementation = download,\n}: ConvertToBedrockChatMessagesArgs): Promise<BedrockMessagesPrompt> {\n let system: string | undefined = undefined;\n const messages: BedrockMessages = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple system messages',\n });\n }\n\n system = content;\n break;\n }\n\n case 'user': {\n const bedrockMessageContent: ContentBlock[] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n bedrockMessageContent.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n bedrockMessageContent.push({\n image: {\n format: (mimeType ?? part.mimeType)?.split(\n '/',\n )?.[1] as ImageFormat,\n source: {\n bytes: data ?? (part.image as Uint8Array),\n },\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'user',\n content: bedrockMessageContent,\n });\n\n break;\n }\n\n case 'assistant': {\n const toolUse: Array<{\n toolUseId: string;\n name: string;\n input: any;\n }> = [];\n\n let text = '';\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolUse.push({\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: [\n ...(text ? [{ text }] : []),\n ...toolUse.map(toolUse => ({ toolUse: toolUse })),\n ],\n });\n\n break;\n }\n\n case 'tool':\n messages.push({\n role: 'user',\n content: content.map(part => ({\n toolResult: {\n toolUseId: part.toolCallId,\n status: part.isError ? 'error' : 'success',\n content: [{ text: JSON.stringify(part.result) }],\n },\n })),\n });\n break;\n\n default: {\n throw new Error(`Unsupported role: ${role}`);\n }\n }\n }\n\n return { system, messages };\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 return 'content-filter';\n case 'tool_use':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,yBAAwC;AACxC,IAAAC,iCAGO;;;ACJP,IAAAC,mBAMO;AAEP,oCASO;;;ACjBP,sBAGO;AAGP,4BAAyB;AAOzB,eAAsB,6BAA6B;AAAA,EACjD;AAAA,EACA,yBAAyB;AAC3B,GAAqE;AAhBrE;AAiBE,MAAI,SAA6B;AACjC,QAAM,WAA4B,CAAC;AAEnC,aAAW,EAAE,MAAM,QAAQ,KAAK,QAAQ;AACtC,YAAQ,MAAM;AAAA,MACZ,KAAK,UAAU;AACb,YAAI,UAAU,MAAM;AAClB,gBAAM,IAAI,8CAA8B;AAAA,YACtC,eAAe;AAAA,UACjB,CAAC;AAAA,QACH;AAEA,iBAAS;AACT;AAAA,MACF;AAAA,MAEA,KAAK,QAAQ;AACX,cAAM,wBAAwC,CAAC;AAE/C,mBAAW,QAAQ,SAAS;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,oCAAsB,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC;AAC9C;AAAA,YACF;AAAA,YAEA,KAAK,SAAS;AACZ,kBAAI;AACJ,kBAAI;AAEJ,kBAAI,KAAK,iBAAiB,KAAK;AAC7B,sBAAM,iBAAiB,MAAM,uBAAuB;AAAA,kBAClD,KAAK,KAAK;AAAA,gBACZ,CAAC;AAED,uBAAO,eAAe;AACtB,2BAAW,eAAe;AAAA,cAC5B,OAAO;AACL,uBAAO,KAAK;AACZ,2BAAW,KAAK;AAAA,cAClB;AAEA,oCAAsB,KAAK;AAAA,gBACzB,OAAO;AAAA,kBACL,SAAS,yCAAY,KAAK,aAAjB,mBAA4B;AAAA,oBACnC;AAAA,wBADO,mBAEL;AAAA,kBACJ,QAAQ;AAAA,oBACN,OAAO,sBAAS,KAAK;AAAA,kBACvB;AAAA,gBACF;AAAA,cACF,CAAC;AACD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,QACX,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,cAAM,UAID,CAAC;AAEN,YAAI,OAAO;AACX,mBAAW,QAAQ,SAAS;AAC1B,kBAAQ,KAAK,MAAM;AAAA,YACjB,KAAK,QAAQ;AACX,sBAAQ,KAAK;AACb;AAAA,YACF;AAAA,YACA,KAAK,aAAa;AAChB,sBAAQ,KAAK;AAAA,gBACX,WAAW,KAAK;AAAA,gBAChB,MAAM,KAAK;AAAA,gBACX,OAAO,KAAK;AAAA,cACd,CAAC;AACD;AAAA,YACF;AAAA,YACA,SAAS;AACP,oBAAM,mBAA0B;AAChC,oBAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,YACzD;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,YACP,GAAI,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;AAAA,YACzB,GAAG,QAAQ,IAAI,CAAAC,cAAY,EAAE,SAASA,SAAQ,EAAE;AAAA,UAClD;AAAA,QACF,CAAC;AAED;AAAA,MACF;AAAA,MAEA,KAAK;AACH,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS,QAAQ,IAAI,WAAS;AAAA,YAC5B,YAAY;AAAA,cACV,WAAW,KAAK;AAAA,cAChB,QAAQ,KAAK,UAAU,UAAU;AAAA,cACjC,SAAS,CAAC,EAAE,MAAM,KAAK,UAAU,KAAK,MAAM,EAAE,CAAC;AAAA,YACjD;AAAA,UACF,EAAE;AAAA,QACJ,CAAC;AACD;AAAA,MAEF,SAAS;AACP,cAAM,IAAI,MAAM,qBAAqB,IAAI,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,SAAO,EAAE,QAAQ,SAAS;AAC5B;;;AC3IO,SAAS,uBACd,cAC6B;AAC7B,UAAQ,cAAc;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;AFWO,IAAM,2BAAN,MAA0D;AAAA,EAU/D,YACE,SACA,UACA,QACA;AAbF,SAAS,uBAAuB;AAChC,SAAS,WAAW;AACpB,SAAS,8BAA8B;AAYrC,SAAK,UAAU;AACf,SAAK,WAAW;AAChB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAiD;AA/DnD;AAgEI,UAAM,OAAO,KAAK;AAElB,UAAM,WAAyC,CAAC;AAEhD,QAAI,oBAAoB,MAAM;AAC5B,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,mBAAmB,MAAM;AAC3B,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,WAAW,MAAM;AACnB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,QAAI,kBAAkB,QAAQ,eAAe,SAAS,QAAQ;AAC5D,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM,EAAE,QAAQ,SAAS,IAAI,MAAM,6BAA6B,EAAE,OAAO,CAAC;AAE1E,UAAM,WAAiC;AAAA,MACrC,SAAS,KAAK;AAAA,MACd,QAAQ,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI;AAAA,MACtC,8BAA8B,KAAK,SAAS;AAAA,MAC5C,iBAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEA,YAAQ,MAAM;AAAA,MACZ,KAAK,WAAW;AACd,cAAM,aAAa,0BAA0B,IAAI;AAEjD,eAAO;AAAA,UACL,GAAG;AAAA,UACH,KAAI,gBAAW,UAAX,mBAAkB,UAAS,EAAE,WAAW,IAAI,CAAC;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAClB,cAAM,IAAI,+CAA8B;AAAA,UACtC,eAAe;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,MAEA,KAAK,eAAe;AAClB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,YAAY;AAAA,YACV,OAAO;AAAA,cACL;AAAA,gBACE,UAAU;AAAA,kBACR,MAAM,KAAK,KAAK;AAAA,kBAChB,aAAa,KAAK,KAAK;AAAA,kBACvB,aAAa;AAAA,oBACX,MAAM,KAAK,KAAK;AAAA,kBAClB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,YACA,YAAY,EAAE,MAAM,EAAE,MAAM,KAAK,KAAK,KAAK,EAAE;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,MAEA,SAAS;AACP,cAAM,mBAA0B;AAChC,cAAM,IAAI,MAAM,qBAAqB,gBAAgB,EAAE;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SAC6D;AA3KjE;AA4KI,UAAM,OAAO,MAAM,KAAK,QAAQ,OAAO;AAEvC,UAAM,WAAW,MAAM,KAAK,OAAO,OAAO,KAAK,IAAI,8CAAgB,IAAI,CAAC;AAExE,UAAM,EAAE,UAAU,WAAW,GAAG,YAAY,IAAI;AAEhD,WAAO;AAAA,MACL,OACE,gCAAS,WAAT,mBAAiB,YAAjB,mBAA0B,YAA1B,mBACI,IAAI,UAAK;AArLrB,YAAAC;AAqLwB,gBAAAA,MAAA,KAAK,SAAL,OAAAA,MAAa;AAAA,SAC1B,KAAK,QAFR,YAEe;AAAA,MACjB,YAAW,gCAAS,WAAT,mBAAiB,YAAjB,mBAA0B,YAA1B,mBACP,OAAO,UAAQ,CAAC,CAAC,KAAK,aADf,mBAEP,IAAI,UAAK;AAzLnB,YAAAA,KAAAC,KAAAC,KAAAC,KAAAC,KAAAC;AAyLuB;AAAA,UACb,cAAc;AAAA,UACd,aAAYJ,OAAAD,MAAA,KAAK,YAAL,gBAAAA,IAAc,cAAd,OAAAC,MAA2B,KAAK,OAAO,WAAW;AAAA,UAC9D,WAAUE,OAAAD,MAAA,KAAK,YAAL,gBAAAA,IAAc,SAAd,OAAAC,MAAsB,QAAQ,KAAK,OAAO,WAAW,CAAC;AAAA,UAChE,MAAM,KAAK,WAAUE,OAAAD,MAAA,KAAK,YAAL,gBAAAA,IAAc,UAAd,OAAAC,MAAuB,EAAE;AAAA,QAChD;AAAA;AAAA,MACF,cAAc,uBAAuB,SAAS,UAAU;AAAA,MACxD,OAAO;AAAA,QACL,eAAc,oBAAS,UAAT,mBAAgB,gBAAhB,YAA+B,OAAO;AAAA,QACpD,mBAAkB,oBAAS,UAAT,mBAAgB,iBAAhB,YAAgC,OAAO;AAAA,MAC3D;AAAA,MACA,SAAS,EAAE,WAAW,YAAY;AAAA,MAClC,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,SAC2D;AAC3D,UAAM,OAAO,MAAM,KAAK,QAAQ,OAAO;AAEvC,UAAM,WAAW,MAAM,KAAK,OAAO,OAAO;AAAA,MACxC,IAAI,oDAAsB,EAAE,GAAG,KAAK,CAAC;AAAA,IACvC;AAEA,UAAM,EAAE,UAAU,WAAW,GAAG,YAAY,IAAI;AAEhD,QAAI,eAA4C;AAChD,QAAI,QAA4D;AAAA,MAC9D,cAAc,OAAO;AAAA,MACrB,kBAAkB,OAAO;AAAA,IAC3B;AAEA,QAAI,CAAC,SAAS,QAAQ;AACpB,YAAM,IAAI,MAAM,iBAAiB;AAAA,IACnC;AAEA,UAAM,SAAS,IAAI,eAAoB;AAAA,MACrC,MAAM,MAAM,YAAY;AACtB,yBAAiB,SAAS,SAAS,QAAS;AAC1C,qBAAW,QAAQ,EAAE,SAAS,MAAM,OAAO,MAAM,CAAC;AAAA,QACpD;AACA,mBAAW,MAAM;AAAA,MACnB;AAAA,IACF,CAAC;AAED,QAAI,WAAW;AACf,QAAI,aAAa;AACjB,QAAI,eAAe;AAEnB,WAAO;AAAA,MACL,QAAQ,OAAO;AAAA,QACb,IAAI,gBAGF;AAAA,UACA,UAAU,OAAO,YAAY;AAjPvC;AAkPY,qBAAS,aAAa,OAAc;AAClC,6BAAe;AACf,yBAAW,QAAQ,EAAE,MAAM,SAAS,MAAM,CAAC;AAAA,YAC7C;AAGA,gBAAI,CAAC,MAAM,SAAS;AAClB,2BAAa,MAAM,KAAK;AACxB;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM;AAGpB,gBAAI,MAAM,yBAAyB;AACjC,2BAAa,MAAM,uBAAuB;AAC1C;AAAA,YACF;AACA,gBAAI,MAAM,2BAA2B;AACnC,2BAAa,MAAM,yBAAyB;AAC5C;AAAA,YACF;AACA,gBAAI,MAAM,qBAAqB;AAC7B,2BAAa,MAAM,mBAAmB;AACtC;AAAA,YACF;AACA,gBAAI,MAAM,qBAAqB;AAC7B,2BAAa,MAAM,mBAAmB;AACtC;AAAA,YACF;AAEA,gBAAI,MAAM,aAAa;AACrB,6BAAe;AAAA,gBACb,MAAM,YAAY;AAAA,cACpB;AAAA,YACF;AAEA,gBAAI,MAAM,UAAU;AAClB,sBAAQ;AAAA,gBACN,eAAc,iBAAM,SAAS,UAAf,mBAAsB,gBAAtB,YAAqC,OAAO;AAAA,gBAC1D,mBACE,iBAAM,SAAS,UAAf,mBAAsB,iBAAtB,YAAsC,OAAO;AAAA,cACjD;AAAA,YACF;AAEA,iBAAI,iBAAM,sBAAN,mBAAyB,UAAzB,mBAAgC,MAAM;AACxC,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,WAAW,MAAM,kBAAkB,MAAM;AAAA,cAC3C,CAAC;AAAA,YACH;AAEA,iBAAI,iBAAM,sBAAN,mBAAyB,UAAzB,mBAAgC,SAAS;AAE3C,oBAAM,UAAU,MAAM,kBAAkB,MAAM;AAC9C,0BAAW,aAAQ,SAAR,YAAgB;AAC3B,4BAAa,aAAQ,cAAR,YAAqB;AAAA,YACpC;AAEA,iBAAI,iBAAM,sBAAN,mBAAyB,UAAzB,mBAAgC,SAAS;AAE3C,+BAAgB,WAAM,kBAAkB,MAAM,QAAQ,UAAtC,YAA+C;AAE/D,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,cAAc;AAAA,gBACd;AAAA,gBACA;AAAA,gBACA,gBACE,WAAM,kBAAkB,MAAM,QAAQ,UAAtC,YAA+C;AAAA,cACnD,CAAC;AAAA,YACH;AAGA,gBAAI,MAAM,oBAAoB,aAAa,SAAS,GAAG;AACrD,yBAAW,QAAQ;AAAA,gBACjB,MAAM;AAAA,gBACN,cAAc;AAAA,gBACd;AAAA,gBACA;AAAA,gBACA,MAAM;AAAA,cACR,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UAEA,MAAM,YAAY;AAChB,uBAAW,QAAQ;AAAA,cACjB,MAAM;AAAA,cACN;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MACA,SAAS,EAAE,WAAW,YAAY;AAAA,MAClC,UAAU,CAAC;AAAA,IACb;AAAA,EACF;AACF;AAEA,SAAS,0BACP,MAGmB;AA1VrB;AA4VE,QAAM,UAAQ,UAAK,UAAL,mBAAY,UAAS,KAAK,QAAQ;AAEhD,MAAI,SAAS,MAAM;AACjB,WAAO,EAAE,OAAO,QAAW,YAAY,OAAU;AAAA,EACnD;AAEA,QAAM,cAAsB,MAAM,IAAI,WAAS;AAAA,IAC7C,UAAU;AAAA,MACR,MAAM,KAAK;AAAA,MACX,aAAa,KAAK;AAAA,MAClB,aAAa;AAAA,QACX,MAAM,KAAK;AAAA,MACb;AAAA,IACF;AAAA,EACF,EAAE;AAEF,QAAM,aAAa,KAAK;AAExB,MAAI,cAAc,MAAM;AACtB,WAAO,EAAE,OAAO,aAAa,YAAY,OAAU;AAAA,EACrD;AAEA,QAAM,OAAO,WAAW;AAExB,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,EAAE,OAAO,aAAa,YAAY,EAAE,MAAM,CAAC,EAAE,EAAE;AAAA,IACxD,KAAK;AACH,aAAO,EAAE,OAAO,aAAa,YAAY,EAAE,KAAK,CAAC,EAAE,EAAE;AAAA,IACvD,KAAK;AAEH,aAAO,EAAE,OAAO,QAAW,YAAY,OAAU;AAAA,IACnD,KAAK;AACH,aAAO;AAAA,QACL,OAAO;AAAA,QACP,YAAY,EAAE,MAAM,EAAE,MAAM,WAAW,SAAS,EAAE;AAAA,MACpD;AAAA,IACF,SAAS;AACP,YAAM,mBAA0B;AAChC,YAAM,IAAI,MAAM,iCAAiC,gBAAgB,EAAE;AAAA,IACrE;AAAA,EACF;AACF;;;AD5VO,SAAS,oBACd,UAAyC,CAAC,GACnB;AACvB,QAAM,6BAA6B,MAAG;AA7CxC;AA8CI,eAAI;AAAA,OACF,aAAQ,mBAAR,YAA0B;AAAA,QACxB,YAAQ,oCAAY;AAAA,UAClB,cAAc,QAAQ;AAAA,UACtB,aAAa;AAAA,UACb,yBAAyB;AAAA,UACzB,aAAa;AAAA,QACf,CAAC;AAAA,QACD,aAAa;AAAA,UACX,iBAAa,oCAAY;AAAA,YACvB,cAAc,QAAQ;AAAA,YACtB,aAAa;AAAA,YACb,yBAAyB;AAAA,YACzB,aAAa;AAAA,UACf,CAAC;AAAA,UACD,qBAAiB,oCAAY;AAAA,YAC3B,cAAc,QAAQ;AAAA,YACtB,aAAa;AAAA,YACb,yBAAyB;AAAA,YACzB,aAAa;AAAA,UACf,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA;AAEF,QAAM,kBAAkB,CACtB,SACA,WAAgC,CAAC,MAEjC,IAAI,yBAAyB,SAAS,UAAU;AAAA,IAC9C,QAAQ,2BAA2B;AAAA,IACnC;AAAA,EACF,CAAC;AAEH,QAAM,WAAW,SACf,SACA,UACA;AACA,QAAI,YAAY;AACd,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,gBAAgB,SAAS,QAAQ;AAAA,EAC1C;AAEA,WAAS,gBAAgB;AAEzB,SAAO;AACT;AAKO,IAAM,UAAU,oBAAoB;","names":["import_provider_utils","import_client_bedrock_runtime","import_provider","toolUse","_a","_b","_c","_d","_e","_f"]}
|
package/dist/index.mjs
CHANGED
|
@@ -162,8 +162,11 @@ var BedrockChatLanguageModel = class {
|
|
|
162
162
|
maxTokens,
|
|
163
163
|
temperature,
|
|
164
164
|
topP,
|
|
165
|
+
topK,
|
|
165
166
|
frequencyPenalty,
|
|
166
167
|
presencePenalty,
|
|
168
|
+
stopSequences,
|
|
169
|
+
responseFormat,
|
|
167
170
|
seed,
|
|
168
171
|
headers
|
|
169
172
|
}) {
|
|
@@ -194,6 +197,19 @@ var BedrockChatLanguageModel = class {
|
|
|
194
197
|
setting: "headers"
|
|
195
198
|
});
|
|
196
199
|
}
|
|
200
|
+
if (topK != null) {
|
|
201
|
+
warnings.push({
|
|
202
|
+
type: "unsupported-setting",
|
|
203
|
+
setting: "topK"
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
if (responseFormat != null && responseFormat.type !== "text") {
|
|
207
|
+
warnings.push({
|
|
208
|
+
type: "unsupported-setting",
|
|
209
|
+
setting: "responseFormat",
|
|
210
|
+
details: "JSON response format is not supported."
|
|
211
|
+
});
|
|
212
|
+
}
|
|
197
213
|
const { system, messages } = await convertToBedrockChatMessages({ prompt });
|
|
198
214
|
const baseArgs = {
|
|
199
215
|
modelId: this.modelId,
|
|
@@ -202,7 +218,8 @@ var BedrockChatLanguageModel = class {
|
|
|
202
218
|
inferenceConfig: {
|
|
203
219
|
maxTokens,
|
|
204
220
|
temperature,
|
|
205
|
-
topP
|
|
221
|
+
topP,
|
|
222
|
+
stopSequences
|
|
206
223
|
},
|
|
207
224
|
messages
|
|
208
225
|
};
|
|
@@ -228,7 +245,9 @@ var BedrockChatLanguageModel = class {
|
|
|
228
245
|
toolSpec: {
|
|
229
246
|
name: mode.tool.name,
|
|
230
247
|
description: mode.tool.description,
|
|
231
|
-
inputSchema: {
|
|
248
|
+
inputSchema: {
|
|
249
|
+
json: mode.tool.parameters
|
|
250
|
+
}
|
|
232
251
|
}
|
|
233
252
|
}
|
|
234
253
|
],
|
|
@@ -236,11 +255,6 @@ var BedrockChatLanguageModel = class {
|
|
|
236
255
|
}
|
|
237
256
|
};
|
|
238
257
|
}
|
|
239
|
-
case "object-grammar": {
|
|
240
|
-
throw new UnsupportedFunctionalityError2({
|
|
241
|
-
functionality: "grammar-mode object generation"
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
258
|
default: {
|
|
245
259
|
const _exhaustiveCheck = type;
|
|
246
260
|
throw new Error(`Unsupported type: ${_exhaustiveCheck}`);
|
package/dist/index.mjs.map
CHANGED
|
@@ -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 { generateId, loadSetting } 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\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 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\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 },\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\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\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 Tool,\n ToolConfiguration,\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\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 frequencyPenalty,\n presencePenalty,\n seed,\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 const { system, messages } = await 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 },\n messages,\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: { json: JSON.stringify(mode.tool.parameters) },\n },\n },\n ],\n toolChoice: { tool: { name: mode.tool.name } },\n },\n } satisfies ConverseCommandInput;\n }\n\n case 'object-grammar': {\n throw new UnsupportedFunctionalityError({\n functionality: 'grammar-mode object generation',\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 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 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 };\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\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 let toolName = '';\n let toolCallId = '';\n let toolCallArgs = '';\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\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n if (value.contentBlockStart?.start?.toolUse) {\n // store the tool name and id for the next chunk\n const toolUse = value.contentBlockStart.start.toolUse;\n toolName = toolUse.name ?? '';\n toolCallId = toolUse.toolUseId ?? '';\n }\n\n if (value.contentBlockDelta?.delta?.toolUse) {\n // continue to get the chunks of the tool call args\n toolCallArgs += value.contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId,\n toolName,\n argsTextDelta:\n value.contentBlockDelta.delta.toolUse.input ?? '',\n });\n }\n\n // if the content is done and a tool call was made, send it\n if (value.contentBlockStop && toolCallArgs.length > 0) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId,\n toolName,\n args: toolCallArgs,\n });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\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 as any,\n },\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockMessages, BedrockMessagesPrompt } from './bedrock-chat-prompt';\nimport { ContentBlock, ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport { download } from '@ai-sdk/provider-utils';\n\ntype ConvertToBedrockChatMessagesArgs = {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n};\n\nexport async function convertToBedrockChatMessages({\n prompt,\n downloadImplementation = download,\n}: ConvertToBedrockChatMessagesArgs): Promise<BedrockMessagesPrompt> {\n let system: string | undefined = undefined;\n const messages: BedrockMessages = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple system messages',\n });\n }\n\n system = content;\n break;\n }\n\n case 'user': {\n const bedrockMessageContent: ContentBlock[] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n bedrockMessageContent.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n bedrockMessageContent.push({\n image: {\n format: (mimeType ?? part.mimeType)?.split(\n '/',\n )?.[1] as ImageFormat,\n source: {\n bytes: data ?? (part.image as Uint8Array),\n },\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'user',\n content: bedrockMessageContent,\n });\n\n break;\n }\n\n case 'assistant': {\n const toolUse: Array<{\n toolUseId: string;\n name: string;\n input: any;\n }> = [];\n\n let text = '';\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolUse.push({\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: [\n ...(text ? [{ text }] : []),\n ...toolUse.map(toolUse => ({ toolUse: toolUse })),\n ],\n });\n\n break;\n }\n\n case 'tool':\n messages.push({\n role: 'user',\n content: content.map(part => ({\n toolResult: {\n toolUseId: part.toolCallId,\n status: part.isError ? 'error' : 'success',\n content: [{ text: JSON.stringify(part.result) }],\n },\n })),\n });\n break;\n\n default: {\n throw new Error(`Unsupported role: ${role}`);\n }\n }\n }\n\n return { system, messages };\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 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","toolUse","UnsupportedFunctionalityError","_a","_b","_c","_d","_e","_f","BedrockRuntimeClient"]}
|
|
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 { generateId, loadSetting } 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\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 {\n (\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\n\n languageModel(\n modelId: BedrockChatModelId,\n settings?: BedrockChatSettings,\n ): BedrockChatLanguageModel;\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 },\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\n return provider as AmazonBedrockProvider;\n}\n\n/**\nDefault Bedrock provider instance.\n */\nexport const bedrock = createAmazonBedrock();\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\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 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\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 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 } = await 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 };\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 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 };\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 = 'other';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\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 let toolName = '';\n let toolCallId = '';\n let toolCallArgs = '';\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\n if (value.contentBlockDelta?.delta?.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.contentBlockDelta.delta.text,\n });\n }\n\n if (value.contentBlockStart?.start?.toolUse) {\n // store the tool name and id for the next chunk\n const toolUse = value.contentBlockStart.start.toolUse;\n toolName = toolUse.name ?? '';\n toolCallId = toolUse.toolUseId ?? '';\n }\n\n if (value.contentBlockDelta?.delta?.toolUse) {\n // continue to get the chunks of the tool call args\n toolCallArgs += value.contentBlockDelta.delta.toolUse.input ?? '';\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId,\n toolName,\n argsTextDelta:\n value.contentBlockDelta.delta.toolUse.input ?? '',\n });\n }\n\n // if the content is done and a tool call was made, send it\n if (value.contentBlockStop && toolCallArgs.length > 0) {\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId,\n toolName,\n args: toolCallArgs,\n });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\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 LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { BedrockMessages, BedrockMessagesPrompt } from './bedrock-chat-prompt';\nimport { ContentBlock, ImageFormat } from '@aws-sdk/client-bedrock-runtime';\nimport { download } from '@ai-sdk/provider-utils';\n\ntype ConvertToBedrockChatMessagesArgs = {\n prompt: LanguageModelV1Prompt;\n downloadImplementation?: typeof download;\n};\n\nexport async function convertToBedrockChatMessages({\n prompt,\n downloadImplementation = download,\n}: ConvertToBedrockChatMessagesArgs): Promise<BedrockMessagesPrompt> {\n let system: string | undefined = undefined;\n const messages: BedrockMessages = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Multiple system messages',\n });\n }\n\n system = content;\n break;\n }\n\n case 'user': {\n const bedrockMessageContent: ContentBlock[] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n bedrockMessageContent.push({ text: part.text });\n break;\n }\n\n case 'image': {\n let data: Uint8Array;\n let mimeType: string | undefined;\n\n if (part.image instanceof URL) {\n const downloadResult = await downloadImplementation({\n url: part.image,\n });\n\n data = downloadResult.data;\n mimeType = downloadResult.mimeType;\n } else {\n data = part.image;\n mimeType = part.mimeType;\n }\n\n bedrockMessageContent.push({\n image: {\n format: (mimeType ?? part.mimeType)?.split(\n '/',\n )?.[1] as ImageFormat,\n source: {\n bytes: data ?? (part.image as Uint8Array),\n },\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'user',\n content: bedrockMessageContent,\n });\n\n break;\n }\n\n case 'assistant': {\n const toolUse: Array<{\n toolUseId: string;\n name: string;\n input: any;\n }> = [];\n\n let text = '';\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolUse.push({\n toolUseId: part.toolCallId,\n name: part.toolName,\n input: part.args,\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = part;\n throw new Error(`Unsupported part: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: [\n ...(text ? [{ text }] : []),\n ...toolUse.map(toolUse => ({ toolUse: toolUse })),\n ],\n });\n\n break;\n }\n\n case 'tool':\n messages.push({\n role: 'user',\n content: content.map(part => ({\n toolResult: {\n toolUseId: part.toolCallId,\n status: part.isError ? 'error' : 'success',\n content: [{ text: JSON.stringify(part.result) }],\n },\n })),\n });\n break;\n\n default: {\n throw new Error(`Unsupported role: ${role}`);\n }\n }\n }\n\n return { system, messages };\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 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","toolUse","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.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
}
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@ai-sdk/provider": "0.0.
|
|
22
|
-
"@ai-sdk/provider-utils": "1.0.
|
|
21
|
+
"@ai-sdk/provider": "0.0.13",
|
|
22
|
+
"@ai-sdk/provider-utils": "1.0.3",
|
|
23
23
|
"@aws-sdk/client-bedrock-runtime": "3.602.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|