[智能体-176]:为了支持工具调用和JSON Schema,大模型需要针对性的进行模型的训练吗?
结论:基础预训练不自带工具调用 / JSON Schema 能力;商用模型(如 GPT-4o)是做过专项训练;开源模型可通过微调补上;推理时还可配合约束解码强保格式。
下面分训练、推理、工程落地三部分讲清楚。
一、预训练:不会天然支持
普通预训练(Next Token Prediction)只学文本续写,不懂工具调用协议,也不懂 JSON Schema 规范。
- 见过 JSON 文本,但没学过 “按 Schema 生成”“用指定格式发起函数调用”
- 没学会 “何时调用工具、选哪个工具、怎么填参数”
- 直接用:会说 “我需要查天气 API”,而不是输出合法
tool_callsJSON
二、商用模型(OpenAI):必须专项训练
GPT-3.5/4/4o 的Tools+JSON Schema 能力是训出来的,分三步:
1. 监督微调 SFT(教格式)
- 数据:大量对话 + 工具定义 + 标准 tool_call JSON + 工具结果 + 最终回答的完整样本
- 目标:学会
- 看懂
tools里的函数名、描述、参数 Schema - 输出严格符合 JSON Schema的
tool_calls(含 id、name、arguments) - 多轮、并行调用格式正确
- 看懂
2. RLHF/RLVR(教决策)
- 解决 SFT 后的 “滥用工具” 问题(如 1+1 也调计算器)
- 奖励信号:
- 格式正确(JSON 合法、Schema 匹配)
- 决策正确(该调用才调用,选对工具)
- 结果有用(工具返回后能生成正确回答)
3. 结构化输出专项(strict: true)
- 针对强 Schema 约束(如嵌套对象、enum、必填字段)做额外训练
- 目标:开启
strict: true后100% 符合 Schema,无幻觉字段、类型错误、缺失必填项
三、开源模型:可训可不训(两条路)
1. 不训练:纯推理约束(弱到中)
- 提示工程:System Prompt 写死工具格式 + Schema + 示例
- 后处理:正则 / JSON 校验,错了重试
- 约束解码(部分框架支持):生成时按 Schema 做 FSM 状态机,只允许合法 token
- 缺点:复杂 Schema / 多轮调用易崩,稳定性差
2. 轻量微调(推荐,强)
- 用1 万~5 万条工具调用样本做 LoRA 微调(成本低,单卡几小时)
- 数据:合成或开源工具调用数据集(如 ShareGPT-FuncCall)
- 效果:接近 GPT-3.5 的工具调用 + JSON Schema 遵循能力
四、推理时的 “双保险”
即使训过,生产环境仍要加:
- 服务端约束解码(OpenAI/Anthropic/ 部分开源框架):
strict: true时,生成阶段强制按 Schema 走,不合法 token 直接屏蔽,100% 合法 - 客户端校验:拿到
arguments后用 JSON Schema 校验,失败则重试或告警
五、一句话总结
- 无训练:只能靠提示 + 后处理,复杂场景不稳
- 商用模型:SFT+RLHF + 结构化专项训练,开箱即用强能力
- 开源模型:LoRA 微调性价比最高;推理配合约束解码更稳
