":{"message":"Invalid JSON payload received. Unknown name \\"id\\" at \'contents...

2026年05月23日 11:26 21.04 秒 success

错误信息

400 Bad Request. {'message': '{"error":{"message":"Invalid JSON payload received. Unknown name \\"id\\" at \'contents[2].parts[0].function_response\': Cannot find field.\\nInvalid JSON payload received. Unknown name \\"id\\" at \'contents[4].parts[0].function_response\': Cannot find field. (request id: 202605231039361583468937Gfc22x1) (request id: 20260523103935309340705dglvvUVc)","type":"upstream_error","param":"","code":400}}', 'status': 'Bad Request'}

AI 解决方案

🔍 报错分析报告


错误类型:400 Bad Request (请求格式错误)

#### 🌐 错误翻译

原文:Invalid JSON payload received. Unknown name "id" at 'contents[2].parts[0].function_response': Cannot find field.
译文:收到的JSON载荷无效。在“contents[2].parts[0].function_response”路径下发现未知字段名“id”:找不到该字段。

#### 🎯 原因分析
您向AI模型(如Google Gemini)发送的请求体(payload)格式不正确。具体原因在于:

  • 您在构建函数调用响应(function_response) 时,在其对象结构中包含了一个名为 id 的字段。

  • 然而,模型服务端的API规范(schema)中,function_response 对象内并没有定义 id 这个字段,因此无法识别并报错。

  • 错误信息指出了两个具体位置:contents[2].parts[0].function_responsecontents[4].parts[0].function_response,说明您在第3条和第5条消息的 parts 数组中,第一个 function_response 都包含了非法的 id 字段。
  • 根本原因:请求体的结构与模型API预期的结构不匹配。

    #### 💡 解决方案
    请检查您构建请求体的代码,移除 function_response 对象中的 id 字段。正确的 function_response 对象通常应只包含 name(函数名)和 response(函数执行结果)。

    假设您的代码类似如下结构:

    # 错误示例 - 包含了非法的 `id` 字段
    contents = [
        # ... 其他消息 ...
        {
            "role": "function",
            "parts": [{
                "function_response": {
                    "id": "call_abc123",  # ← 问题根源:此字段不被接受
                    "name": "your_function_name",
                    "response": { ... }  # 函数的返回结果
                }
            }]
        },
        # ...
    ]
    

    修复后的代码(以Python字典为例):

    # 正确示例 - 移除 `id` 字段,保留 `name` 和 `response`
    contents = [
        # ... 其他消息 ...
        {
            "role": "function",
            "parts": [{
                "function_response": {
                    # "id": "call_abc123", # 删除此行
                    "name": "your_function_name", # 确保函数名与调用时完全一致
                    "response": { ... } # 函数的实际返回数据
                }
            }]
        },
        # ...
    ]
    

    #### 🛡️ 预防措施

  • 严格遵循文档:在调用任何API前,仔细阅读其官方文档,特别是关于“函数调用(Function Calling)”或“工具使用”的请求体(Request Body)结构定义

  • 使用验证工具:在发送复杂请求前,可以使用JSON模式验证工具(或编写简单的校验函数)来检查您的请求体是否符合目标API的Schema要求。