diff --git a/src/services/bedrockRelayService.js b/src/services/bedrockRelayService.js index 49982dbb..fa85a2ff 100644 --- a/src/services/bedrockRelayService.js +++ b/src/services/bedrockRelayService.js @@ -433,8 +433,15 @@ class BedrockRelayService { // 将标准Claude模型名映射为Bedrock格式 _mapToBedrockModel(modelName) { + // Strip [1m] suffix (long context variant) — Bedrock uses the same model ID + // but supports 1M context natively for models that have it + const cleanModelName = modelName.replace(/\[1m\]$/, '') + // 标准Claude模型名到Bedrock模型名的映射表 const modelMapping = { + // Claude Opus 4.6 + 'claude-opus-4-6': 'us.anthropic.claude-opus-4-6-v1', + // Claude 4.5 Opus 'claude-opus-4-5': 'us.anthropic.claude-opus-4-5-20251101-v1:0', 'claude-opus-4-5-20251101': 'us.anthropic.claude-opus-4-5-20251101-v1:0', @@ -479,21 +486,21 @@ class BedrockRelayService { // 如果已经是Bedrock格式,直接返回 // Bedrock模型格式:{region}.anthropic.{model-name} 或 anthropic.{model-name} - if (modelName.includes('.anthropic.') || modelName.startsWith('anthropic.')) { - return modelName + if (cleanModelName.includes('.anthropic.') || cleanModelName.startsWith('anthropic.')) { + return cleanModelName } // 查找映射 - const mappedModel = modelMapping[modelName] + const mappedModel = modelMapping[cleanModelName] if (mappedModel) { return mappedModel } // 如果没有找到映射,返回原始模型名(可能会导致错误,但保持向后兼容) - logger.warn(`⚠️ 未找到模型映射: ${modelName},使用原始模型名`, { + logger.warn(`⚠️ 未找到模型映射: ${cleanModelName},使用原始模型名`, { metadata: { originalModel: modelName } }) - return modelName + return cleanModelName } // 选择使用的区域