From e7b5a99e4e604bddde522f1cdd94219da5a3f582 Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Mon, 29 Sep 2025 17:09:17 -0500 Subject: [PATCH 1/3] fix: remove topP parameter from Bedrock inference config Fixes #8377 - Removed topP from BedrockInferenceConfig interface - Removed topP assignment in createMessage() method - Removed topP assignment in completePrompt() method - All 107 Bedrock tests pass including reasoning tests --- src/api/providers/bedrock.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/api/providers/bedrock.ts b/src/api/providers/bedrock.ts index e1f4863ca1a8..fc91dc2cb6dd 100644 --- a/src/api/providers/bedrock.ts +++ b/src/api/providers/bedrock.ts @@ -45,7 +45,6 @@ import type { SingleCompletionHandler, ApiHandlerCreateMessageMetadata } from ". interface BedrockInferenceConfig { maxTokens: number temperature?: number - topP?: number } // Define interface for Bedrock additional model request fields @@ -374,12 +373,8 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH maxTokens: modelConfig.maxTokens || (modelConfig.info.maxTokens as number), temperature: modelConfig.temperature ?? (this.options.modelTemperature as number), } - - if (!thinkingEnabled) { - inferenceConfig.topP = 0.1 - } - - // Check if 1M context is enabled for Claude Sonnet 4 / 4.5 + + // Check if 1M context is enabled for Claude Sonnet 4 // Use parseBaseModelId to handle cross-region inference prefixes const baseModelId = this.parseBaseModelId(modelConfig.id) const is1MContextEnabled = @@ -649,7 +644,6 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH const inferenceConfig: BedrockInferenceConfig = { maxTokens: modelConfig.maxTokens || (modelConfig.info.maxTokens as number), temperature: modelConfig.temperature ?? (this.options.modelTemperature as number), - ...(thinkingEnabled ? {} : { topP: 0.1 }), // Only set topP when thinking is NOT enabled } // For completePrompt, use a unique conversation ID based on the prompt From cdc8452388a9f59d31e679be29a68698728fdcdf Mon Sep 17 00:00:00 2001 From: daniel-lxs Date: Mon, 29 Sep 2025 17:33:40 -0500 Subject: [PATCH 2/3] bedrock: remove topP globally; update tests; revert unrelated OpenRouter model renames --- packages/types/src/providers/openrouter.ts | 6 +++--- src/api/providers/__tests__/bedrock-reasoning.spec.ts | 6 +++--- src/api/providers/fetchers/__tests__/openrouter.spec.ts | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/types/src/providers/openrouter.ts b/packages/types/src/providers/openrouter.ts index dde6730e52e0..b908f08f2dbd 100644 --- a/packages/types/src/providers/openrouter.ts +++ b/packages/types/src/providers/openrouter.ts @@ -38,7 +38,7 @@ export const OPEN_ROUTER_PROMPT_CACHING_MODELS = new Set([ "anthropic/claude-3.7-sonnet:beta", "anthropic/claude-3.7-sonnet:thinking", "anthropic/claude-sonnet-4", - "anthropic/claude-sonnet-4.5", + "anthropic/claude-4.5-sonnet", "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", "google/gemini-2.5-flash-preview", @@ -60,7 +60,7 @@ export const OPEN_ROUTER_COMPUTER_USE_MODELS = new Set([ "anthropic/claude-3.7-sonnet:beta", "anthropic/claude-3.7-sonnet:thinking", "anthropic/claude-sonnet-4", - "anthropic/claude-sonnet-4.5", + "anthropic/claude-4.5-sonnet", "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", ]) @@ -83,7 +83,7 @@ export const OPEN_ROUTER_REASONING_BUDGET_MODELS = new Set([ "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", "anthropic/claude-sonnet-4", - "anthropic/claude-sonnet-4.5", + "anthropic/claude-4.5-sonnet", "google/gemini-2.5-pro-preview", "google/gemini-2.5-pro", "google/gemini-2.5-flash-preview-05-20", diff --git a/src/api/providers/__tests__/bedrock-reasoning.spec.ts b/src/api/providers/__tests__/bedrock-reasoning.spec.ts index f8d9beb0eb7e..abf73ff8e974 100644 --- a/src/api/providers/__tests__/bedrock-reasoning.spec.ts +++ b/src/api/providers/__tests__/bedrock-reasoning.spec.ts @@ -182,7 +182,7 @@ describe("AwsBedrockHandler - Extended Thinking", () => { ) }) - it("should include topP when thinking is disabled", async () => { + it("should not include topP when thinking is disabled (global removal)", async () => { handler = new AwsBedrockHandler({ apiProvider: "bedrock", apiModelId: "anthropic.claude-3-7-sonnet-20250219-v1:0", @@ -216,10 +216,10 @@ describe("AwsBedrockHandler - Extended Thinking", () => { chunks.push(chunk) } - // Verify that topP IS present when thinking is disabled + // Verify that topP is NOT present for any model (removed globally) expect(mockSend).toHaveBeenCalledTimes(1) expect(capturedPayload).toBeDefined() - expect(capturedPayload.inferenceConfig).toHaveProperty("topP", 0.1) + expect(capturedPayload.inferenceConfig).not.toHaveProperty("topP") // Verify that additionalModelRequestFields is not present or empty expect(capturedPayload.additionalModelRequestFields).toBeUndefined() diff --git a/src/api/providers/fetchers/__tests__/openrouter.spec.ts b/src/api/providers/fetchers/__tests__/openrouter.spec.ts index c5380958226d..3517c2be8cef 100644 --- a/src/api/providers/fetchers/__tests__/openrouter.spec.ts +++ b/src/api/providers/fetchers/__tests__/openrouter.spec.ts @@ -34,7 +34,7 @@ describe("OpenRouter API", () => { "google/gemini-2.5-flash", // OpenRouter doesn't report this as supporting prompt caching "google/gemini-2.5-flash-lite-preview-06-17", // OpenRouter doesn't report this as supporting prompt caching "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API - "anthropic/claude-sonnet-4.5", // Not yet available in OpenRouter API + "anthropic/claude-4.5-sonnet", // Not yet available in OpenRouter API ]) const ourCachingModels = Array.from(OPEN_ROUTER_PROMPT_CACHING_MODELS).filter( @@ -53,7 +53,7 @@ describe("OpenRouter API", () => { const excludedComputerUseModels = new Set([ "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API - "anthropic/claude-sonnet-4.5", // Not yet available in OpenRouter API + "anthropic/claude-4.5-sonnet", // Not yet available in OpenRouter API ]) const expectedComputerUseModels = Array.from(OPEN_ROUTER_COMPUTER_USE_MODELS) @@ -136,7 +136,7 @@ describe("OpenRouter API", () => { "google/gemini-2.5-flash-lite-preview-06-17", "google/gemini-2.5-pro", "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API - "anthropic/claude-sonnet-4.5", // Not yet available in OpenRouter API + "anthropic/claude-4.5-sonnet", // Not yet available in OpenRouter API ]) const expectedReasoningBudgetModels = Array.from(OPEN_ROUTER_REASONING_BUDGET_MODELS) From b5e18c646dc100ebd5c12e5c4082cf05bfb68011 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Mon, 29 Sep 2025 19:13:01 -0400 Subject: [PATCH 3/3] Remove unrelated changes --- packages/types/src/providers/openrouter.ts | 6 +++--- src/api/providers/fetchers/__tests__/openrouter.spec.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/types/src/providers/openrouter.ts b/packages/types/src/providers/openrouter.ts index b908f08f2dbd..dde6730e52e0 100644 --- a/packages/types/src/providers/openrouter.ts +++ b/packages/types/src/providers/openrouter.ts @@ -38,7 +38,7 @@ export const OPEN_ROUTER_PROMPT_CACHING_MODELS = new Set([ "anthropic/claude-3.7-sonnet:beta", "anthropic/claude-3.7-sonnet:thinking", "anthropic/claude-sonnet-4", - "anthropic/claude-4.5-sonnet", + "anthropic/claude-sonnet-4.5", "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", "google/gemini-2.5-flash-preview", @@ -60,7 +60,7 @@ export const OPEN_ROUTER_COMPUTER_USE_MODELS = new Set([ "anthropic/claude-3.7-sonnet:beta", "anthropic/claude-3.7-sonnet:thinking", "anthropic/claude-sonnet-4", - "anthropic/claude-4.5-sonnet", + "anthropic/claude-sonnet-4.5", "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", ]) @@ -83,7 +83,7 @@ export const OPEN_ROUTER_REASONING_BUDGET_MODELS = new Set([ "anthropic/claude-opus-4", "anthropic/claude-opus-4.1", "anthropic/claude-sonnet-4", - "anthropic/claude-4.5-sonnet", + "anthropic/claude-sonnet-4.5", "google/gemini-2.5-pro-preview", "google/gemini-2.5-pro", "google/gemini-2.5-flash-preview-05-20", diff --git a/src/api/providers/fetchers/__tests__/openrouter.spec.ts b/src/api/providers/fetchers/__tests__/openrouter.spec.ts index 3517c2be8cef..c5380958226d 100644 --- a/src/api/providers/fetchers/__tests__/openrouter.spec.ts +++ b/src/api/providers/fetchers/__tests__/openrouter.spec.ts @@ -34,7 +34,7 @@ describe("OpenRouter API", () => { "google/gemini-2.5-flash", // OpenRouter doesn't report this as supporting prompt caching "google/gemini-2.5-flash-lite-preview-06-17", // OpenRouter doesn't report this as supporting prompt caching "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API - "anthropic/claude-4.5-sonnet", // Not yet available in OpenRouter API + "anthropic/claude-sonnet-4.5", // Not yet available in OpenRouter API ]) const ourCachingModels = Array.from(OPEN_ROUTER_PROMPT_CACHING_MODELS).filter( @@ -53,7 +53,7 @@ describe("OpenRouter API", () => { const excludedComputerUseModels = new Set([ "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API - "anthropic/claude-4.5-sonnet", // Not yet available in OpenRouter API + "anthropic/claude-sonnet-4.5", // Not yet available in OpenRouter API ]) const expectedComputerUseModels = Array.from(OPEN_ROUTER_COMPUTER_USE_MODELS) @@ -136,7 +136,7 @@ describe("OpenRouter API", () => { "google/gemini-2.5-flash-lite-preview-06-17", "google/gemini-2.5-pro", "anthropic/claude-opus-4.1", // Not yet available in OpenRouter API - "anthropic/claude-4.5-sonnet", // Not yet available in OpenRouter API + "anthropic/claude-sonnet-4.5", // Not yet available in OpenRouter API ]) const expectedReasoningBudgetModels = Array.from(OPEN_ROUTER_REASONING_BUDGET_MODELS)