code: 400 - {'error': {'message': 'Invalid schema for function \'browser_back\':...
🚨 错误信息
🤖 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. 预防措施
字段赋予明确值。即使没有参数,也要使用空对象 {},而不是 null。 字段符合基本的结构要求(至少是一个 object 类型)。`javascript函数 ${tool.function.name} 的 parameters 必须是一个对象。
// 简单的前端/Node.js校验示例
function validateToolSchema(tool) {
if (tool.type === 'function') {
if (typeof tool.function.parameters !== 'object' || tool.function.parameters === null) {
throw new Error();``
}
}
}