":{"type":"\u003cnil\u003e","message":"InvokeModelWithResponseStream: operation ...
🚨 错误信息
错误: HTTP 500 {"error":{"type":"\u003cnil\u003e","message":"InvokeModelWithResponseStream: operation error Bedrock Runtime: InvokeModelWithResponseStream, https response error StatusCode: 400, RequestID: 2e7bc8b9-2baa-4161-aa6c-458e1c480e2d, ValidationException: Input is too long for requested model. (request id: 20251223160021127023804SKD4lzpX)"},"type":"error"}
🤖 AI解决方案
错误分析报告
1. 错误翻译
原文:ValidationException: Input is too long for requested model.
译文:验证异常:输入内容对于所请求的模型过长。
2. 原因分析
根本原因:请求发送给 Amazon Bedrock AI 模型的内容(prompt + 上下文)超出了该模型的输入令牌限制。
具体分析:
- HTTP 500 内部服务器错误实际上是转发的 Bedrock Runtime API 的 400 错误
- Bedrock 模型的
InvokeModelWithResponseStream操作失败 - 错误类型为
ValidationException,表明输入参数验证失败 - 请求 ID:
2e7bc8b9-2baa-4161-aa6c-458e1c480e2d
3. 解决方案
方案一:缩减输入内容
// 检查并限制输入内容的长度
const MAX_TOKENS = 4000; // 根据具体模型调整
function truncateInput(text, maxTokens) {
// 简单的字符截断(实际应使用分词器计算token)
const estimatedTokens = text.length / 4; // 近似估算
if (estimatedTokens > maxTokens) {
return text.slice(0, maxTokens * 4 * 0.9); // 保留90%空间
}
return text;
}
// 使用示例
const userInput = "您的输入文本...";
const truncatedInput = truncateInput(userInput, MAX_TOKENS);
方案二:分块处理大型输入
# 如果必须处理长文本,考虑分块处理
def chunk_text(text, chunk_size=1000):
"""将长文本分割为多个块"""
words = text.split()
chunks = []
for i in range(0, len(words), chunk_size):
chunk = ' '.join(words[i:i + chunk_size])
chunks.append(chunk)
return chunks
# 逐个处理每个块
text_chunks = chunk_text(long_text)
for chunk in text_chunks:
# 发送每个块到模型
response = invoke_bedrock_model(chunk)
process_response(response)