429 Invalid JSON payload received. Unknown name "type" at 'tools[0].function_dec...
🚨 错误信息
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":协议字段是不可重复的,不能以列表开始。
原因分析
* 未知字段 "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" 是 `