fix(experimental llm pkg): forward topK to Converse via additionalModelRequestFields (#33030)

This commit is contained in:
Lucas Kim 2026-06-21 04:35:05 +09:00 committed by GitHub
parent babe5070e2
commit 2d993cd0d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 23 additions and 0 deletions

View File

@ -412,6 +412,9 @@ const fromRequest = Effect.fn("BedrockConverse.fromRequest")(function* (request:
stopSequences: generation?.stop,
},
toolConfig,
// Converse's base inferenceConfig has no topK; Anthropic/Nova accept it
// as a model-specific field, so it goes through additionalModelRequestFields.
additionalModelRequestFields: generation?.topK === undefined ? undefined : { top_k: generation.topK },
}
})

View File

@ -83,6 +83,26 @@ describe("Bedrock Converse route", () => {
}),
)
it.effect("passes topK through additionalModelRequestFields as top_k", () =>
Effect.gen(function* () {
const prepared = yield* LLMClient.prepare<BedrockConverse.BedrockConverseBody>(
LLM.updateRequest(baseRequest, { generation: { maxTokens: 64, temperature: 0, topK: 40 } }),
)
// Converse's inferenceConfig has no topK; Anthropic/Nova read it from
// additionalModelRequestFields as top_k.
expect(prepared.body.inferenceConfig).toEqual({ maxTokens: 64, temperature: 0 })
expect(prepared.body.additionalModelRequestFields).toEqual({ top_k: 40 })
}),
)
it.effect("omits additionalModelRequestFields when topK is unset", () =>
Effect.gen(function* () {
const prepared = yield* LLMClient.prepare<BedrockConverse.BedrockConverseBody>(baseRequest)
expect(prepared.body.additionalModelRequestFields).toBeUndefined()
}),
)
it.effect("lowers chronological system updates to wrapped user text in order", () =>
Effect.gen(function* () {
const prepared = yield* LLMClient.prepare<BedrockConverse.BedrockConverseBody>(