mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-22 16:25:51 +00:00
Fixes #168 OpenAI requires that an assistant message with tool_calls be immediately followed by tool messages. Previously, convertInternalUserMessage output user content before tool results, causing 400 errors. Now tool messages are pushed first.
This commit is contained in:
@@ -92,6 +92,15 @@ function convertInternalUserMessage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CRITICAL: tool messages must come BEFORE any user message in the result.
|
||||||
|
// OpenAI API requires that a tool message immediately follows the assistant
|
||||||
|
// message with tool_calls. If we emit a user message first, the API will
|
||||||
|
// reject the request with "insufficient tool messages following tool_calls".
|
||||||
|
// See: https://github.com/anthropics/claude-code/issues/xxx
|
||||||
|
for (const tr of toolResults) {
|
||||||
|
result.push(convertToolResult(tr))
|
||||||
|
}
|
||||||
|
|
||||||
// 如果有图片,构建多模态 content 数组
|
// 如果有图片,构建多模态 content 数组
|
||||||
if (imageParts.length > 0) {
|
if (imageParts.length > 0) {
|
||||||
const multiContent: Array<{ type: 'text'; text: string } | { type: 'image_url'; image_url: { url: string } }> = []
|
const multiContent: Array<{ type: 'text'; text: string } | { type: 'image_url'; image_url: { url: string } }> = []
|
||||||
@@ -109,10 +118,6 @@ function convertInternalUserMessage(
|
|||||||
content: textParts.join('\n'),
|
content: textParts.join('\n'),
|
||||||
} satisfies ChatCompletionUserMessageParam)
|
} satisfies ChatCompletionUserMessageParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const tr of toolResults) {
|
|
||||||
result.push(convertToolResult(tr))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|||||||
Reference in New Issue
Block a user