Bedrock Runtime: InvokeModelWithResponseStream, https response error StatusCode:...

2025年12月14日 23:41 状态: processing

🚨 错误信息

InvokeModelWithResponseStream: operation error Bedrock Runtime: InvokeModelWithResponseStream, https response error StatusCode: 400, RequestID: fb0a7357-06c6-4419-bb35-dbf7a6d57470, ValidationException: `temperature` and `top_p` cannot both be specified for this model. Please use only one. (request id: 20251214234009962908297dZgs70P3) (request id: 20251214234001204205887uMGO5Ida) (request id: 202512142340011576813578izL94AT) (request id: 20251214233918902681701vaR6bedC)

🤖 AI解决方案

报错分析

1. 错误翻译

原文:`temperature` and `top_p` cannot both be specified for this model. Please use only one.
译文:此模型不能同时指定 `temperature` 和 `top_p` 参数,请仅使用其中一个。

2. 原因分析

根本原因:你在调用 AWS Bedrock 的模型时,同时提供了 temperaturetop_p 这两个文本生成参数。然而,该特定模型的设计限制要求这两个参数只能使用其中一个,不能同时设置。

具体位置:这发生在调用 InvokeModelWithResponseStream 方法时,请求体中的模型调用参数配置部分。

3. 解决方案

根据你使用的模型和API结构,修改你的调用参数。选择方案一或方案二

方案一:使用 temperature(推荐用于更可控、可复现的随机性)

// 请求体示例 (假设使用 Claude 模型)
{
  "modelId": "anthropic.claude-3-haiku-20240307-v1:0",
  "contentType": "application/json",
  "accept": "application/json",
  "body": "{\"anthropic_version\":\"bedrock-2023-05-31\",\"max_tokens\":1024,\"temperature\":0.7,\"messages\":[...]}"
  // 注意:移除了 "top_p" 字段,只保留 "temperature"
}

方案二:使用 top_p(推荐用于更高质量、聚焦的词汇选择)

// 请求体示例 (假设使用 Claude 模型)
{
  "modelId": "anthropic.claude-3-haiku-20240307-v1:0",
  "contentType": "application/json",
  "accept": "application/json",
  "body": "{\"anthropic_version\":\"bedrock-2023-05-31\",\"max_tokens\":1024,\"top_p\":0.9,\"messages\":[...]}"
  // 注意:移除了 "temperature" 字段,只保留 "top_p"
}

4. ️ 预防措施

  • 查阅官方文档:在调用新的 AWS Bedrock 模型前,务必查阅其官方文档或API规范,确认该模型支持的参数及其互斥关系。这是导致此类错误的最常见原因。
  • 使用参数验证工具:在发送请求前,使用AWS SDK的本地验证功能(如果可用),或编写一个简单的参数检查函数,确保没有同时设置互斥的参数对。

---
请检查您的模型调用代码,确保 temperaturetop_p 参数没有同时出现在请求体中。