首页/AI/提示词工程速查/函数调用与参数 Schema
模式与框架50 条

函数调用与参数 Schema

用 JSON Schema 描述函数名、参数与必填项,平台据此约束模型输出结构化调用;比在提示里描述“请输出 JSON”更严格。

提示词工程速查AI更新于 2026-10-13

函数调用与参数 Schema

函数调用是把可用动作按 JSON Schema 描述给模型:函数名、用途说明、参数类型与必填项。模型不再输出一段自然语言让程序去解析,而是按 Schema 生成结构化调用请求,由平台侧校验参数。这比在提示里写「请输出 JSON」更严格,因为类型与枚举由平台约束,参数缺失、取值越界会在调用前被拦下。

Schema 要点

description写清使用场景与参数语义,模型靠它选函数
enum把取值范围收敛成封闭集合,减少同义变体
required标明哪些参数必填,缺失时由平台拒绝
嵌套参数层级不宜过深,深嵌套增加填错概率
与纯提示对比Schema 由平台解析与校验,参数错误率低

典型使用场景

  • 信息查询:查天气、查订单、查库存等只读操作
  • 流程触发:创建工单、发送通知、发起审批
  • 数据写入:把抽取结果按固定参数写入数据库
  • 多工具选择:同时声明多个函数,由模型按问题选合适的那个
  • 参数校验前移:把格式要求交给 Schema,减少提示里的格式描述

函数定义示例

函数定义示例
{
  "name": "get_weather",
  "description": "查询指定城市当前天气",          # 用途说明决定模型何时选它
  "parameters": {
    "type": "object",
    "properties": {
      "city": {"type": "string", "description": "城市名,如 杭州"},
      "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
    },
    "required": ["city"]                        # 必填项由平台校验
  }
}

兜底要处理的三种情况

情况表现处理
不调用模型直接回答,未发起调用提示里写明需要实时数据时必须调用
调错函数选了语义相近的另一个函数完善 description,明确适用与不适用场景
参数缺失或越界缺必填项、枚举值不在集合内平台校验失败后回传错误让模型修正或转人工
模型生成的参数不能直接当命令执行:执行前做类型、范围与权限校验,写操作与不可逆操作需二次确认。

易错点

  • 函数 description 只写功能不写使用条件,模型在不需要时也发起调用
  • 参数不设 enum,取值写法五花八门,下游要写大量映射
  • 只处理成功返回,不处理不调用、调错函数、参数缺失三种失败路径
  • 把写操作与只读操作放在同一批函数里且不加确认环节,一次误调用就造成数据变更
  • 函数数量过多且语义重叠,模型选择困难,调用准确率下降

数据来源与参考

  • OpenAI 文档:Function calling 与 JSON Schema 参数说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌