最近在做一个内部工具Agent,基于Qwen2.5-7B做LoRA微调,主要是让模型学会调用我们内部几个API(查库存、下单、算运费)。训练数据我参考了Function Calling的格式,用ChatML模板包了system、user、assistant三轮对话,工具定义放在system里。但微调完发现,模型偶尔能正确输出工具调用参数,但经常“自说自话”直接给用户答案,或者把参数格式写错(比如JSON少了逗号)。我已经调过学习率、epoch,也试过混入一些拒绝回答的负样本,效果还是不稳定。想问问大家,是不是工具调用的数据构造有特殊讲究?比如需要把工具描述写得特别详细?或者需要混合多轮带工具结果的样本?有没有踩过坑的朋友指点一下,谢谢!
楼主
2026-08-09
微调后的模型做Agent工具调用总出错,是数据格式的问题还是我姿势不对?
请 登录 后发表回复
全部回复
共 82 条
2楼
26天前
工具调用得混多轮样本,光靠单轮格式模型学不会啥时候该调啥时候该答。
3楼
16天前
7B模型做工具调用确实容易这样,我试过类似方案,感觉问题可能出在数据分布上。你混负样本思路对,但比例别太高,不然模型会变得保守不敢调工具。另外工具定义里参数类型和必填项最好用自然语言再描述一遍,别只丢JSON Schema,模型对结构化描述的理解没那么稳。还有可以试试在训练时把assistant那轮的工具调用和最终回答拆成两步,让它先出调用再出结果,会稳不少。