fix(bedrock): preserve additionalModelRequestFields in converse payload (fixes #8746) (#8764)

Passes through request.additionalModelRequestFields in openAIToBedrockConverse so reasoning/thinking options passed from Kiro/Bedrock translators are retained in the AWS Converse payload.
This commit is contained in:
Austin Liu
2026-07-28 05:55:59 +09:30
committed by GitHub
parent 2247517697
commit 474a3df998
2 changed files with 17 additions and 0 deletions

View File

@@ -366,6 +366,10 @@ export function openAIToBedrockConverse(model, body) {
const toolConfig = toolConfigFromOpenAI(request.tools, request.tool_choice);
if (toolConfig) payload.toolConfig = toolConfig;
if (request.additionalModelRequestFields !== undefined) {
payload.additionalModelRequestFields = request.additionalModelRequestFields;
}
return payload;
}

View File

@@ -97,6 +97,19 @@ test("openAIToBedrockConverse avoids duplicate Bedrock toolUse ids from mixed to
assert.equal(payload.messages[2].content[0].toolResult.toolUseId, "call_dup");
});
test("openAIToBedrockConverse preserves additionalModelRequestFields", () => {
const payload = openAIToBedrockConverse("anthropic.claude-3-7-sonnet-20250219-v1:0", {
messages: [{ role: "user", content: "Hello" }],
additionalModelRequestFields: {
thinking: { type: "enabled", budget_tokens: 2048 },
},
});
assert.deepStrictEqual(payload.additionalModelRequestFields, {
thinking: { type: "enabled", budget_tokens: 2048 },
});
});
test("openAIToBedrockConverse drops duplicate pending tool call ids", () => {
const payload = openAIToBedrockConverse("anthropic.claude-sonnet-4-6", {
messages: [