mirror of
https://github.com/DayuanJiang/next-ai-draw-io.git
synced 2026-01-02 22:32:27 +08:00
fix: filter out messages with empty content arrays for Bedrock API (#31)
* fix: filter out messages with empty content arrays for Bedrock API The convertToModelMessages function from AI SDK can produce messages with empty content arrays when assistant messages have only tool call parts or when tool results aren't properly converted. Bedrock API rejects these with 400 errors. This fix filters out invalid messages before sending to the API. * fix: add diagnostic logging for empty message content Added logging to capture the original UI message structure when empty content is detected after conversion. This helps debug the root cause while the filter provides a safety net for Bedrock API compatibility.
This commit is contained in:
@@ -90,7 +90,30 @@ ${lastMessageText}
|
|||||||
|
|
||||||
// Convert UIMessages to ModelMessages and add system message
|
// Convert UIMessages to ModelMessages and add system message
|
||||||
const modelMessages = convertToModelMessages(messages);
|
const modelMessages = convertToModelMessages(messages);
|
||||||
let enhancedMessages = [...modelMessages];
|
|
||||||
|
// Log messages with empty content for debugging (helps identify root cause)
|
||||||
|
const emptyMessages = modelMessages.filter((msg: any) =>
|
||||||
|
!msg.content || !Array.isArray(msg.content) || msg.content.length === 0
|
||||||
|
);
|
||||||
|
if (emptyMessages.length > 0) {
|
||||||
|
console.warn('[Chat API] Messages with empty content detected:',
|
||||||
|
JSON.stringify(emptyMessages.map((m: any) => ({ role: m.role, contentLength: m.content?.length })))
|
||||||
|
);
|
||||||
|
console.warn('[Chat API] Original UI messages structure:',
|
||||||
|
JSON.stringify(messages.map((m: any) => ({
|
||||||
|
id: m.id,
|
||||||
|
role: m.role,
|
||||||
|
partsCount: m.parts?.length,
|
||||||
|
partTypes: m.parts?.map((p: any) => p.type)
|
||||||
|
})))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter out messages with empty content arrays (Bedrock API rejects these)
|
||||||
|
// This is a safety measure - ideally convertToModelMessages should handle all cases
|
||||||
|
let enhancedMessages = modelMessages.filter((msg: any) =>
|
||||||
|
msg.content && Array.isArray(msg.content) && msg.content.length > 0
|
||||||
|
);
|
||||||
|
|
||||||
// Update the last message with formatted content if it's a user message
|
// Update the last message with formatted content if it's a user message
|
||||||
if (enhancedMessages.length >= 1) {
|
if (enhancedMessages.length >= 1) {
|
||||||
|
|||||||
Reference in New Issue
Block a user