code: 400 - {'error': {'message': 'Invalid schema for function \'browser_back\':...

2026年05月08日 21:01 状态: processing

🚨 错误信息

Error code: 400 - {'error': {'message': 'Invalid schema for function \'browser_back\': null is not of type "array"', 'type': 'invalid_request_error', 'param': '', 'code': 'invalid_request_error'}}

🤖 AI解决方案

错误分析

#### 1. 误翻译


原文:Invalid schema for function ‘browser_back’: null is not of type “array”
译文:函数 ‘browser_back’ 的schema无效:null不是“array”类型

#### 2 原因分析
在调用大语言模型API(如OpenAI、Azure等)时,你定义了一个名为 browser_back 的工具或函数。错误的根源在于,该函数的 parameters(参数)字段的值被设置为 null

根据API的规范,parameters 字段必须是一个 JSON Schema 对象,其核心结构是一个 properties 对象。因此,它的类型必须是 object,而不是 null 或其它类型。系统在验证请求时发现,你传入的 null 不符合 object 类型的要求,因此报错。

错误位置:在你的API请求体中,类似如下的结构定义:
``json
{
"tools": [{
"type": "function",
"function": {
"name": "browser_back",
"parameters": null // ❌ 错误!这里应该是
{}或包含属性定义的对象
}
}]
}
`

#### 3.方案
你需要为
browser_back 函数提供一个正确的 parameters JSON Schema。

方案A:如果该函数不需要任何参数,将其设置为空对象 {}

python

示例:Python中定义工具


tools = [
{
"type": "function",
"function": {
"name": "browser_back",
"description": "让浏览器后退到上一个页面。",
"parameters": {} # ✅ 正确:空对象表示无参数
}
}
]

在调用API时使用这个tools列表


response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": "请后退"}],
tools=tools
)

方案B:如果该函数需要参数,则构建一个包含 type, properties, required 等字段的合法对象。

json
{
"type": "object",
"properties": {
"steps": {
"type": "integer",
"description": "需要后退的页面步数"
}
},
"required": ["steps"]
}

#### 4. 预防措施

  • 明确为无参数函数赋值:始终为函数的 parameters 字段赋予明确值。即使没有参数,也要使用空对象 {},而不是 null

  • 请求前进行验证:在发送API请求前,可以编写简单的校验逻辑或使用JSON Schema验证库,确保 parameters 字段符合基本的结构要求(至少是一个 object 类型)。
  • `javascript
    // 简单的前端/Node.js校验示例
    function validateToolSchema(tool) {
    if (tool.type === 'function') {
    if (typeof tool.function.parameters !== 'object' || tool.function.parameters === null) {
    throw new Error(
    函数 ${tool.function.name} 的 parameters 必须是一个对象。);
    }
    }
    }
    ``