pass bedrock unhandled stop reasons to error message (#6598)

fixes #6485
This commit is contained in:
David Brailovsky
2026-07-13 11:39:28 +02:00
committed by GitHub
parent 7303cbac5d
commit f8f75544b6
+11 -7
View File
@@ -260,7 +260,11 @@ export const stream: StreamFunction<"bedrock-converse-stream", BedrockOptions> =
} else if (item.contentBlockStop) { } else if (item.contentBlockStop) {
handleContentBlockStop(item.contentBlockStop, blocks, output, stream); handleContentBlockStop(item.contentBlockStop, blocks, output, stream);
} else if (item.messageStop) { } else if (item.messageStop) {
output.stopReason = mapStopReason(item.messageStop.stopReason); const { stopReason, errorMessage } = mapStopReason(item.messageStop.stopReason);
output.stopReason = stopReason;
if (errorMessage) {
output.errorMessage = errorMessage;
}
} else if (item.metadata) { } else if (item.metadata) {
handleMetadata(item.metadata, model, output); handleMetadata(item.metadata, model, output);
} else if (item.internalServerException) { } else if (item.internalServerException) {
@@ -281,7 +285,7 @@ export const stream: StreamFunction<"bedrock-converse-stream", BedrockOptions> =
} }
if (output.stopReason === "error" || output.stopReason === "aborted") { if (output.stopReason === "error" || output.stopReason === "aborted") {
throw new Error("An unknown error occurred"); throw new Error(output.errorMessage || "An unknown error occurred");
} }
stream.push({ type: "done", reason: output.stopReason, message: output }); stream.push({ type: "done", reason: output.stopReason, message: output });
@@ -932,18 +936,18 @@ function convertToolConfig(
return { tools: bedrockTools, toolChoice: bedrockToolChoice }; return { tools: bedrockTools, toolChoice: bedrockToolChoice };
} }
function mapStopReason(reason: string | undefined): StopReason { function mapStopReason(reason: string | undefined): { stopReason: StopReason; errorMessage?: string } {
switch (reason) { switch (reason) {
case BedrockStopReason.END_TURN: case BedrockStopReason.END_TURN:
case BedrockStopReason.STOP_SEQUENCE: case BedrockStopReason.STOP_SEQUENCE:
return "stop"; return { stopReason: "stop" };
case BedrockStopReason.MAX_TOKENS: case BedrockStopReason.MAX_TOKENS:
case BedrockStopReason.MODEL_CONTEXT_WINDOW_EXCEEDED: case BedrockStopReason.MODEL_CONTEXT_WINDOW_EXCEEDED:
return "length"; return { stopReason: "length" };
case BedrockStopReason.TOOL_USE: case BedrockStopReason.TOOL_USE:
return "toolUse"; return { stopReason: "toolUse" };
default: default:
return "error"; return reason ? { stopReason: "error", errorMessage: reason } : { stopReason: "error" };
} }
} }