Bedrock Runtime: InvokeModelWithResponseStream, https response error StatusCode:...
🚨 错误信息
InvokeModelWithResponseStream: operation error Bedrock Runtime: InvokeModelWithResponseStream, https response error StatusCode: 400, RequestID: cd45f949-7414-4115-b633-bfbf683405bd, ValidationException: Input is too long for requested model. (request id: 20251229001309341615375W9sEsm8V) (request id: 202512290013087524221756lJBa0gw) (request id: 20251229001258996767021WSRA4Kd9)
🤖 AI解决方案
代码糕手 - 专业报错分析报告
1. 错误翻译
原文:ValidationException: Input is too long for requested model.
译文:验证异常:对于请求的模型来说输入内容过长。
2. 原因分析
根本原因:向AWS Bedrock模型发送的输入数据超出了所选模型的最大输入长度限制。
上下文分析:
InvokeModelWithResponseStream)3. 解决方案
方案一:缩减输入长度(推荐)
python
假设这是您的输入处理代码
def truncate_input_for_model(text, max_length=4000):
"""截断文本以适应模型输入限制"""
# 4000是一个示例值,具体限制取决于您使用的模型
# 您需要查阅所选Bedrock模型的官方文档获取准确限制
if len(text) > max_length:
return text[:max_length] + "...[内容已截断]"
return text在调用Bedrock API前使用
processed_input = truncate_input_for_model(your_input_text)
方案二:分块处理长文本
python
def split_and_process_long_text(text, chunk_size=4000):
"""将长文本分块处理"""
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
results = []
for chunk in chunks:
# 对每个分块调用Bedrock API
# response = bedrock_client.invoke_model(...)
results.append(process_response(chunk))
return combine_results(results)
方案三:检查并优化系统提示
python
确保系统提示不会过长
system_prompt = """
保持提示简洁:
明确任务
避免冗长描述
删除不必要的背景信息
"""如果使用了上下文,考虑缩减上下文长度
max_context_length = 2000 # 根据模型调整
truncated_context = context[-max_context_length:] if len(context) > max_context_length else context
4. ️ 预防措施
最佳实践建议
- 在调用Bedrock API前,始终检查输入长度
- 不同模型有不同的限制(如Claude系列通常有100K-200K tokens限制,但具体API调用可能更低)
- 参考AWS Bedrock模型卡片获取准确的限制信息
python
def validate_bedrock_input(text, model_name):
"""根据模型验证输入长度"""
model_limits = {
"anthropic.claude-3-sonnet": 200000, # 200K tokens
"anthropic.claude-3-haiku": 200000,
"amazon.titan-text": 8000, # 示例值
"meta.llama": 4096 # 示例值
}
max_length = model_limits.get(model_name, 4000)
if len(text) > max_length:
raise ValueError(f"输入过长。模型 {model_name} 的最大长度为 {max_length} 字符")
return True
推荐工具
tiktoken(OpenAI)或sentencepiece这样的库来准确计算tokens数量---
关键提醒:不同Bedrock模型的输入限制差异很大。请务必查阅您正在使用的特定模型的AWS官方文档,获取准确的最大输入长度信息。