Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 0...
🚨 错误信息
InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 08209c8a-3a31-4f5a-bc7c-6092897832df, ValidationException: temperature: range: 0..1 (request id: 20251214233457872178857VCN9QOOf) (request id: 2025121423345282611569frMHR5QY) (request id: 2025121423345271259848ihHcSAES) (request id: 20251214233423803201534jOpbCwd4)
🤖 AI解决方案
Bedrock Runtime 400 错误分析
错误翻译
原文:ValidationException: temperature: range: 0..1
译文:验证异常:temperature(温度)参数值范围应在 0 到 1 之间
原因分析
该错误是 AWS Bedrock 模型的 API 调用参数验证失败导致的。具体原因是:- 参数越界:传递给模型的
temperature参数值超出了允许范围 - 数据验证失败:Bedrock 服务在接收请求时,对参数进行了边界检查
- API 调用被拒绝:由于参数无效,Bedrock 返回了 400 Bad Request 状态码
解决方案
将temperature 参数值调整到 0 到 1 的范围内:
# 修正前(可能导致错误的代码示例)
response = bedrock_runtime.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
body=json.dumps({
"messages": [...],
"temperature": 1.5 # ❌ 错误:超出范围
})
)
# 修正后(正确的代码示例)
response = bedrock_runtime.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
body=json.dumps({
"messages": [...],
"temperature": 0.7 # ✅ 正确:在 0-1 范围内
})
)
️ 预防措施
def validate_temperature(temp):
if not 0 <= temp <= 1:
raise ValueError(f"temperature 必须在 0 到 1 之间,当前值: {temp}")
MODEL_DEFAULTS = {
'temperature': 0.7,
'top_p': 0.9,
'max_tokens': 2000
}
提示:使用 AWS SDK 或相关库时,查阅官方文档了解各模型的具体参数要求,不同的 Bedrock 模型可能有略微不同的参数限制。