文章目录 前言 Tool Schema 到底是什么?
一、Tool Schema 到底是什么?
二、为什么 Tool Schema 很重要?
三、Tool Schema 和 API 文档有什么区别?
API 文档更偏向开发者 Tool Schema 更偏向模型理解 四、一个简单但准确的定义 五、Tool Schema 一般长什么样?
六、几个更真实一点的案例 案例一:电商客服系统里的“订单查询工具” 业务场景 这个工具真正要做的事 可能的 Tool Schema 案例二:企业内部办公助手里的“请假余额查询工具” 业务场景 工具真正要做的事 可能的 Tool Schema 前言
Tool Schema 到底是什么?
很多人在学习 Function Call 或工具调用时,都会遇到一个绕不开的概念: Tool Schema 但只看这个名字,确实会有点抽象。
它到底是什么?
它和 API 文档有什么区别?
它为什么会直接影响大模型选工具、填参数,甚至影响整个调用效果?
这篇内容,我想把 Tool Schema 彻底讲清楚。
一、Tool Schema 到底是什么?
你可以先把它理解成: 系统写给大模型的一份“工具使用说明书” 这份说明书的目的,不是给人看,而是给模型看。
它主要解决两个问题: 这个工具是干什么的 调用这个工具时,要传什么参数,参数怎么填 所以,Tool Schema 本质上就是: 一份结构化的工具定义 它通常会包含这些内容: 工具名 工具功能描述 参数列表 参数类型 参数含义说明 必填字段 有时还会包括枚举值、格式约束、默认值等 二、为什么 Tool Schema 很重要?
因为大模型不会直接去看你的后端代码,也不会自动理解你的数据库字段。
它真正能“看到”的,通常就是系统提供给它的 Tool Schema。
也就是说: 模型怎么理解一个工具,主要靠的不是代码本身,而是 Tool Schema。
如果 Schema 写得清楚,模型更容易: 选对工具 理解工具边界 把参数填对 稳定生成调用意图 如果 Schema 写得很差,模型就容易: 选错工具 明明有工具却不用 参数乱填 工具调用不稳定 所以 Tool Schema 不只是程序接口定义,它还是: 模型理解工具能力的入口 三、Tool Schema 和 API 文档有什么区别?
很多人会把 Tool Schema 和 API 文档混在一起。
它们确实很像,但关注点并不完全一样。
API 文档更偏向开发者 API 文档通常重点描述: 接口地址 请求方式 状态码 返回字段 鉴权方式 错误码说明 它更偏工程实现。
Tool Schema 更偏向模型理解 Tool Schema 更关注: 这个工具适合解决什么问题 模型什么时候该用它 调用它需要哪些参数 参数应该怎么填 它和别的工具有什么区别 所以可以这样理解: API 文档偏工程实现,Tool Schema 偏模型理解。
四、一个简单但准确的定义 如果让我用一句最简洁的话解释 Tool Schema,我会这样说: Tool Schema,就是系统提供给大模型的结构化工具说明,用来告诉模型“这个工具能做什么,以及该怎么调用它”。
五、Tool Schema 一般长什么样?
最常见的 Tool Schema,大致会长这样:
{
"name": "get_weather",
"description": "查询指定城市在指定日期的天气情况",
"parameters": {
"city": {
"type": "string",
"description": "要查询天气的城市名称,例如成都"
},
"date": {
"type": "string",
"description": "要查询的日期,例如今天、明天或具体日期"
}
},
"required": ["city", "date"]
}
六、几个更真实一点的案例 下面我不再只讲天气 demo,而是给你几个更接近真实业务的场景。
案例一:电商客服系统里的“订单查询工具” 业务场景 用户问: 我上周买的耳机现在到哪了?
如果系统只靠模型自己答,它根本不知道真实订单状态。
所以需要一个工具去查订单系统。
这个工具真正要做的事 不是“查所有订单数据”,而是: 根据订单号查询订单当前状态、物流节点和预计送达时间。
可能的 Tool Schema
{
"name": "query_order_status",
"description": "查询指定订单的当前状态、物流进度和预计送达时间",
"parameters": {
"order_id": {
"type": "string",
"description": "订单编号,例如 A202503180001"
}
},
"required": ["order_id"]
}
案例二:企业内部办公助手里的“请假余额查询工具” 业务场景 用户问: 我今年还有多少年假?
这个问题表面很简单,但模型自己并不知道员工的真实人事数据。
所以必须调用 HR 系统。
工具真正要做的事 去 HR 系统查询: 年假总额 已用天数 剩余天数 可能的 Tool Schema
{
"name": "get_leave_balance",
"description": "查询员工当前可用的年假、调休和病假余额",
"parameters": {
"employee_id": {
"type": "string",
"description": "员工唯一标识,例如工号 E10234"
},
"leave_type": {
"type": "string",
"description": "请假类型,可选值包括 annual_leave、compensatory_leave、sick_leave"
}
},
"required": ["employee_id", "leave_type"]
}
