":{"type":"\u003cnil\u003e","message":"InvokeModelWithResponseStream: operation ...

2025年12月23日 16:24 状态: error

🚨 错误信息

错误: 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)

4. ️ 预防措施