429 Invalid JSON payload received. Unknown name "type" at 'tools[0].function_dec...

2026年01月27日 11:08 状态: error

🚨 错误信息

OpenAI completion error: 429 Invalid JSON payload received. Unknown name "type" at 'tools[0].function_declarations[2].***.properties[0].***.***.properties[0].value': Proto field is not repeating, cannot start list.

🤖 AI解决方案

错误翻译


原文:Invalid JSON payload received. Unknown name "type" at 'tools[0].function_declarations[2]..properties[0]..*.properties[0].value': Proto field is not repeating, cannot start list.
译文:收到无效的 JSON 负载。在路径 'tools[0].function_declarations[2]...properties[0]...value' 处存在未知名称 "type":协议字段是不可重复的,不能以列表开始。

原因分析

  • 根本原因:您发送给 OpenAI API(特别是涉及工具/函数调用功能)的 JSON 数据结构不符合其预期的 Protobuf 协议规范。

  • 具体问题

  • * 未知字段 "type":在定义工具函数的参数结构时,您在某个参数的 properties 下的 value 字段中错误地添加了一个名为 "type" 的键,而 API 期望的格式可能是指定一个 "type" 字段来描述参数类型,或者 "value" 字段本身应该是一个特定类型的值,而不是包含 "type" 子字段的对象。
    * 字段类型不匹配Proto field is not repeating 表明某个字段在 API 的协议定义中是单值类型(如 string, number, object),但您传递的 JSON 却将其构建成了一个数组[...]),导致解析失败。

    解决方案

    问题很可能出在您定义 tools 参数的 JSON 结构中。请检查您传递给 API 的 tools 数组,特别是第三个函数声明(索引 2)的参数模式(schema)。

    正确的 tools 参数结构示例:

    json
    {
    "tools": [
    {
    "type": "function",
    "function": {
    "name": "your_function_name",
    "description": "描述函数的功能",
    "parameters": {
    "type": "object", // ✅ 顶层参数类型是 "object"
    "properties": {
    "your_parameter_name": {
    "type": "string", // ✅ 直接使用 "type" 定义参数类型
    "description": "参数描述"
    // ❌ 这里不应该再嵌套一个包含 "value" 和 "type" 的对象
    }
    },
    "required": ["your_parameter_name"]
    }
    }
    }
    ]
    }

    修复步骤:

  • 找到您在代码中构建 tools 数组的地方。

  • 定位到索引为 2 的函数(即数组中的第三个元素)。

  • 检查其 function.parameters.properties 下的定义。确保每个属性的定义是 {"type": "string", "description": "..."} 这样的格式,而不是 {"value": {"type": "..."}}{"value": [...]} 这样的嵌套结构。

  • 确保 parameters 的顶层 "type" 是 `