Agent 的 SFT 微调
大多数 Agent 开发者从来用不着微调模型。可一旦提示工程碰到天花板—— 工具调用不稳定、输出格式出错、领域特有的失败——SFT(监督微调)就是下一根杠杆。本课从 Agent 开发者的视角讲微调:不是从零训练模型,而是让现有模型把你的特定 Agent 任务做得更好。
SDK 重点tool schemasoutputFormatevaluation harnessstructured output
决策框架
在微调之前,先穷尽更低成本的替代方案。下列 USD 只是小型实验的训练预算量级,不含人力、数据准备、评估和持续推理:
text
级别 1:更好的提示词 训练支出:~$0 时间:数小时
→ 系统提示词、少样本示例、思维链
级别 2:更好的工具 训练支出:~$0 时间:数小时
→ 更清晰的工具描述、更严格的 schema、校验
级别 3:更好的编排 训练支出:~$0 时间:数天
→ 重试逻辑、回退模型、输出解析
级别 4:微调(SFT) 训练支出:~$50-500 时间:数天到数周
→ 针对特定任务的自定义模型权重
级别 5:偏好训练 训练支出:~$500+ 时间:数周
→ 偏好对齐行为(DPO、GRPO、SimPO、KTO、ORPO)何时适合微调
| 信号 | 示例 | 为什么 SFT 有帮助 |
|---|---|---|
| 持续的格式错误 | 模型总是返回 markdown 而不是 JSON | SFT 将输出格式固化到权重中 |
| 工具选择错误 | 模型调用 search 而应该调用 database_query | SFT 学习工具路由模式 |
| 领域词汇缺失 | 医学/法律/金融术语被误解 | SFT 教会模型领域特定语言 |
| 延迟要求 | 需要比少样本提示更快的响应 | 更小的微调模型替代大模型 + 长提示词 |
| 规模化成本 | 每次调用都要为 2000 token 的系统提示词付费 | 微调模型只需最少的提示词 |
何时微调无效
- 新鲜知识缺口——事实需要持续更新时应使用检索
- 能力缺口——SFT 能调整行为,但未必能补足基础模型缺失的能力
- 罕见边缘情况——先测量定向样本是否改变行为,再决定是否扩充
- 快速变化的需求——更新提示词比重新训练更容易
工具调用数据构建
Agent SFT 最难的是攒出高质量训练数据:你需要的是在真实场景里正确使用工具的示例。