pass bedrock unhandled stop reasons to error message (#6598)
fixes #6485
This commit is contained in:
@@ -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" };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user