": { "message": "InvokeModelWithResponseStream: operation error Bedrock Runtime:...

2026年05月22日 11:59 28.24 秒 success

错误信息

{ "error": { "message": "InvokeModelWithResponseStream: operation error Bedrock Runtime: InvokeModelWithResponseStream, https response error StatusCode: 400, RequestID: 331e2e56-abea-427c-bfb2-a20cc13e57e0, ValidationException: ***.***.content.1.tool_use.id: String should match pattern '^[a-zA-Z0-9_-]+$' (request id: 202605220359363784865748268d9d6OVmt6pA6) (request id: 202605220359348486257387TfLKQRH)", "type": "rix_api_error", "param": "", "code": null } }

AI 解决方案

🔧 代码报错分析

1. 🌐 错误翻译


原文:ValidationException: ***.***.content.1.tool_use.id: String should match pattern '^[a-zA-Z0-9_-]+$'
译文:验证异常:(某请求体中)第2个content项的tool_use.id字段值应匹配模式'^[a-zA-Z0-9_-]+$'(即只能包含英文字母、数字、下划线和连字符)。

2. 🎯 原因分析


  • 根本原因:您发送给AWS Bedrock Runtime服务的API请求中,tool_use.id字段的值不符合服务端的格式校验规则。

  • 具体位置:错误信息明确指出问题出在请求体的第二个content元素中的tool_use.id字段。

  • 上下文分析^[a-zA-Z0-9_-]+$这个正则表达式表示id字段只能由以下字符组成:

  • - a-z:小写字母
    - A-Z:大写字母
    - 0-9:数字
    - _:下划线
    - -:连字符
    - 且字符串不能为空。您提供的id值很可能包含了空格、标点符号或其他特殊字符。

    3. 💡 解决方案


    检查并修正您构建请求体的代码。找到为tool_use对象设置id字段的地方,并确保其值符合要求。

    错误示例:

    {
      "tool_use": {
        "id": "my tool id 123", // 包含空格,不符合模式
        "name": "...",
        "input": {...}
      }
    }
    

    修复方案(任选其一):

    方案A:清理现有ID
    如果您有现有的id值,需要过滤掉非法字符:

    import re
    
    invalid_id = "my tool id 123"  # 示例
    # 移除所有不符合规则的字符(保留字母、数字、下划线、连字符)
    valid_id = re.sub(r'[^a-zA-Z0-9_-]', '', invalid_id)
    # 如果结果为空或不符合以字母开头的常见惯例,可以添加前缀
    if not valid_id or not valid_id[0].isalpha():
        valid_id = "tool_" + valid_id
    # 最终的有效ID,例如 "mytoolid123"
    

    方案B:生成符合规则的随机ID
    更安全的做法是使用标准化方法生成ID:

    import uuid
    import hashlib
    
    # 方法1:使用UUID(推荐)
    valid_id = str(uuid.uuid4())  # 例如 "550e8400-e29b-41d4-a716-446655440000"
    
    # 方法2:基于内容生成确定性ID
    def generate_tool_id(tool_name, input_data):
        # 生成一个基于内容的SHA256哈希,取前16位
        hash_input = f"{tool_name}:{str(input_data)}"
        hash_id = hashlib.sha256(hash_input.encode()).hexdigest()[:16]
        return f"tool_{hash_id}"
    
    valid_id = generate_tool_id("search", {"query": "test"})
    

    4. 🛡️ 预防措施


  • 数据校验:在发送API请求前,对关键字段(如ID、名称)进行正则表达式校验,确保符合服务端要求。

  • 标准化ID生成:对于需要生成的ID,始终使用编程语言内置的UUID生成库(如Python的uuid模块)或可靠的哈希函数,避免手动拼接字符串。

  • 阅读API文档:仔细查阅所使用AI模型(如Claude with tool use)或AWS Bedrock服务的API文档,明确各字段的格式要求。