StatusCode 400, RequestlD: c090d4aa-b3ac-481 d-9d75-2ebbb749ca44, validationExce...
🚨 错误信息
InvokelvlodelWithResponseStream: operation eror Bedrock Runtime: IinvokelModelWithResponseStream, htps response error StatusCode
400, RequestlD: c090d4aa-b3ac-481 d-9d75-2ebbb749ca44, validationException: Input is too long for requested model. (request id.
2026020504342443315192830e0t6ig)(request id: 20260205043423950438079muo1ZquU)(request id:
20260205093423804787839FfxmZnzF)
🤖 AI解决方案
代码糕手 - 报错分析报告
1.翻译
原文:validationException: Input is too long for requested model.
译文:验证异常:输入对于请求的模型来说太长了。
2 原因分析
根本原因:您的输入数据(提示词、上下文、消息等)超出了AWS Bedrock模型的令牌限制。
具体分析:
validationException解决方案
方案1:减少输入内容长度
javascript
// 示例:截断过长的文本输入
const MAX_TOKEN_LIMIT = 4000; // 根据具体模型调整
function truncateInput(text, maxLength = MAX_TOKEN_LIMIT) {
if (text.length > maxLength) {
return text.substring(0, maxLength);
}
return text;
}// 使用示例
const yourInput = "您的超长文本内容...";
const truncatedInput = truncateInput(yourInput);
方案2:分批处理或分块发送
python
将长文本分成多个块处理
def chunk_text(text, chunk_size=3000):
chunks = []
for i in range(0, len(text), chunk_size):
chunks.append(text[i:i+chunk_size])
return chunks逐块发送到Bedrock
for chunk in chunk_text(long_text):
response = bedrock_client.invoke_model_with_response_stream(
modelId=model_id,
body=json.dumps({
"prompt": chunk,
# 其他参数...
})
)
方案3:压缩输入内容
javascript
// 移除不必要的空格、换行和冗余信息
function compressInput(text) {
return text
.replace(/\s+/g, ' ') // 合并多个空格
.replace(/\n\s*\n/g, '\n') // 移除空行
.trim();
}
4.措施
###:
- 使用令牌计数工具(如tiktoken、transformers库)在发送前估算输入长度
- 不同模型有不同的令牌限制,查阅AWS Bedrock官方文档了解具体限制
python
def validate_input_length(text, model_max_tokens):
estimated_tokens = len(text.split()) * 1.3 # 粗略估算
if estimated_tokens > model_max_tokens:
raise ValueError(f"输入过长!估算令牌数: {estimated_tokens}, 模型限制: {model_max_tokens}")
###:
###Bedrock模型令牌限制参考:
⚠️ 注意:不同Bedrock模型的令牌限制差异很大,请根据您实际使用的模型调整输入长度策略。