From 3d440a7ce844422242ff69d9d46449169b04aaca Mon Sep 17 00:00:00 2001 From: nangsontay Date: Sat, 4 Apr 2026 17:09:01 +0700 Subject: [PATCH] feat: update Bedrock's Claude models context window and adjust pricing --- packages/types/src/providers/bedrock.ts | 40 +++++---------------- src/api/providers/__tests__/bedrock.spec.ts | 9 ++--- src/api/providers/bedrock.ts | 4 +-- 3 files changed, 16 insertions(+), 37 deletions(-) diff --git a/packages/types/src/providers/bedrock.ts b/packages/types/src/providers/bedrock.ts index 9ea52bced89..a7af0482f39 100644 --- a/packages/types/src/providers/bedrock.ts +++ b/packages/types/src/providers/bedrock.ts @@ -14,7 +14,7 @@ export const bedrockDefaultPromptRouterModelId: BedrockModelId = "anthropic.clau // feature. export const bedrockModels = { "anthropic.claude-sonnet-4-5-20250929-v1:0": { - maxTokens: 8192, + maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, @@ -28,8 +28,8 @@ export const bedrockModels = { cachableFields: ["system", "messages", "tools"], }, "anthropic.claude-sonnet-4-6": { - maxTokens: 8192, - contextWindow: 200_000, // Default 200K, extendable to 1M with beta flag 'context-1m-2025-08-07' + maxTokens: 64_000, + contextWindow: 1_000_000, // Native 1M context window supportsImages: true, supportsPromptCache: true, supportsReasoningBudget: true, @@ -40,16 +40,6 @@ export const bedrockModels = { minTokensPerCachePoint: 1024, maxCachePoints: 4, cachableFields: ["system", "messages", "tools"], - // Tiered pricing for extended context (requires beta flag 'context-1m-2025-08-07') - tiers: [ - { - contextWindow: 1_000_000, // 1M tokens with beta flag - inputPrice: 6.0, // $6 per million input tokens (>200K context) - outputPrice: 22.5, // $22.50 per million output tokens (>200K context) - cacheWritesPrice: 7.5, // $7.50 per million tokens (>200K context) - cacheReadsPrice: 0.6, // $0.60 per million tokens (>200K context) - }, - ], }, "amazon.nova-pro-v1:0": { maxTokens: 5000, @@ -116,7 +106,7 @@ export const bedrockModels = { cachableFields: ["system"], }, "anthropic.claude-sonnet-4-20250514-v1:0": { - maxTokens: 8192, + maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, @@ -130,7 +120,7 @@ export const bedrockModels = { cachableFields: ["system", "messages", "tools"], }, "anthropic.claude-opus-4-1-20250805-v1:0": { - maxTokens: 8192, + maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, @@ -144,8 +134,8 @@ export const bedrockModels = { cachableFields: ["system", "messages", "tools"], }, "anthropic.claude-opus-4-6-v1": { - maxTokens: 8192, - contextWindow: 200_000, // Default 200K, extendable to 1M with beta flag 'context-1m-2025-08-07' + maxTokens: 128_000, + contextWindow: 1_000_000, // Native 1M context window supportsImages: true, supportsPromptCache: true, supportsReasoningBudget: true, @@ -156,19 +146,9 @@ export const bedrockModels = { minTokensPerCachePoint: 1024, maxCachePoints: 4, cachableFields: ["system", "messages", "tools"], - // Tiered pricing for extended context (requires beta flag 'context-1m-2025-08-07') - tiers: [ - { - contextWindow: 1_000_000, // 1M tokens with beta flag - inputPrice: 10.0, // $10 per million input tokens (>200K context) - outputPrice: 37.5, // $37.50 per million output tokens (>200K context) - cacheWritesPrice: 12.5, // $12.50 per million tokens (>200K context) - cacheReadsPrice: 1.0, // $1.00 per million tokens (>200K context) - }, - ], }, "anthropic.claude-opus-4-5-20251101-v1:0": { - maxTokens: 8192, + maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, @@ -182,7 +162,7 @@ export const bedrockModels = { cachableFields: ["system", "messages", "tools"], }, "anthropic.claude-opus-4-20250514-v1:0": { - maxTokens: 8192, + maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, @@ -523,8 +503,6 @@ export const BEDROCK_REGIONS = [ export const BEDROCK_1M_CONTEXT_MODEL_IDS = [ "anthropic.claude-sonnet-4-20250514-v1:0", "anthropic.claude-sonnet-4-5-20250929-v1:0", - "anthropic.claude-sonnet-4-6", - "anthropic.claude-opus-4-6-v1", ] as const // Amazon Bedrock models that support Global Inference profiles diff --git a/src/api/providers/__tests__/bedrock.spec.ts b/src/api/providers/__tests__/bedrock.spec.ts index 975e38af123..cbd25eaaa53 100644 --- a/src/api/providers/__tests__/bedrock.spec.ts +++ b/src/api/providers/__tests__/bedrock.spec.ts @@ -701,19 +701,20 @@ describe("AwsBedrockHandler", () => { expect(model.info.contextWindow).toBe(1_000_000) }) - it("should apply 1M tier pricing when awsBedrock1MContext is true for Claude Sonnet 4.6", () => { + it("should have native 1M context window for Claude Sonnet 4.6 without needing beta flag", () => { const handler = new AwsBedrockHandler({ apiModelId: "anthropic.claude-sonnet-4-6", awsAccessKey: "test", awsSecretKey: "test", awsRegion: "us-east-1", - awsBedrock1MContext: true, }) const model = handler.getModel() + // Claude Sonnet 4.6 has native 1M context window, no beta flag needed expect(model.info.contextWindow).toBe(1_000_000) - expect(model.info.inputPrice).toBe(6.0) - expect(model.info.outputPrice).toBe(22.5) + // Base pricing (not tier pricing) since 1M is native + expect(model.info.inputPrice).toBe(3.0) + expect(model.info.outputPrice).toBe(15.0) }) it("should use default context window when awsBedrock1MContext is false for Claude Sonnet 4", () => { diff --git a/src/api/providers/bedrock.ts b/src/api/providers/bedrock.ts index 3ceb2510033..d7acd9901a9 100644 --- a/src/api/providers/bedrock.ts +++ b/src/api/providers/bedrock.ts @@ -291,7 +291,7 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH // Define a mapping for model ID patterns and their configurations const modelConfigMap: Record> = { "claude-4": { - maxTokens: 8192, + maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true, @@ -309,7 +309,7 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH supportsPromptCache: true, }, "claude-4-opus": { - maxTokens: 4096, + maxTokens: 64_000, contextWindow: 200_000, supportsImages: true, supportsPromptCache: true,