fix(bedrock): disable temperature for Claude Opus 4.7

Claude Opus 4.7 does not support the temperature parameter (deprecated).
Previously, temperature was always sent in inferenceConfig which caused
a 400 error: 'temperature is deprecated for this model'.

Changes:
- Add supportsTemperature: false to anthropic.claude-opus-4-7 model def
- Skip sending temperature in inferenceConfig when supportsTemperature
  is false (both createMessage and completePrompt paths)
- The UI already conditionally hides the Custom Temperature setting
  based on supportsTemperature !== false
This commit is contained in:
Andy Lemin 2026-05-12 14:45:27 +10:00
parent 36ac4d3e06
commit a682355230
2 changed files with 9 additions and 2 deletions

View file

@ -173,6 +173,7 @@ export const bedrockModels = {
supportsImages: true,
supportsPromptCache: true,
supportsReasoningBudget: true,
supportsTemperature: false, // Temperature is deprecated for this model
inputPrice: 5.0, // $5 per million input tokens (≤200K context)
outputPrice: 25.0, // $25 per million output tokens (≤200K context)
cacheWritesPrice: 6.25, // $6.25 per million tokens

View file

@ -435,7 +435,10 @@ 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),
// Only include temperature if the model supports it (Opus 4.7 deprecated temperature)
...(modelConfig.info.supportsTemperature !== false && {
temperature: modelConfig.temperature ?? (this.options.modelTemperature as number),
}),
}
// Check if 1M context is enabled for supported Claude 4 models
@ -775,7 +778,10 @@ 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),
// Only include temperature if the model supports it (Opus 4.7 deprecated temperature)
...(modelConfig.info.supportsTemperature !== false && {
temperature: modelConfig.temperature ?? (this.options.modelTemperature as number),
}),
}
// For completePrompt, use a unique conversation ID based on the prompt