最近在折腾一个内部知识库的问答Agent,基座用的Qwen2.5-7B,想让模型学会调用我们自研的几个工具API。按照网上教程用LoRA微调,数据集是自己整理的大概3000条工具调用指令,包含多轮对话和工具返回结果。现在的问题是:单轮调用还行,但一旦涉及多工具串行调用,模型经常漏参数或者把tool_call_id搞错。试过加大epoch和调高rank,过拟合了,反而更差。也试过把系统提示词里的工具描述写得更详细,但感觉模型还是没真正理解“意图-工具-参数”的映射关系。有没有做过类似场景的大佬?是数据格式有问题,还是应该考虑全量微调?或者干脆用function calling模板重新洗数据?
楼主
2026-08-06
用LoRA微调Qwen做Agent工具调用,效果一直不理想,求指点
请 登录 后发表回复
全部回复
共 106 条
2楼
27天前
多工具串行确实容易翻车,我后来是用官方function calling模板重洗数据才稳住的,LoRA本身问题不大。
3楼
26天前
数据格式问题更大,多工具串行得把中间结果和id对齐当训练重点,光加rank没用。
4楼
25天前
多工具串行确实难,建议先用官方function calling模板重洗数据,格式对齐比调参管用。
5楼
23天前
多工具串行这个坑我也踩过,光靠加数据量真不一定管用。你检查过训练数据里tool_call_id的生成逻辑没?如果训练时id是随机生成的,模型很难学到稳定的映射关系,建议固定成按顺序编号。另外Qwen2.5本身对function calling模板是有原生支持的,可以试试用官方的chat template重新构造数据,比自定义格式效果好不少。全量微调7B的话除非你有足够多高质量数据,不然过拟合风险更大,先别急着上。
6楼
21天前
多工具串行这个坑我也踩过,大概率不是rank不够,而是数据里tool_call_id的对应关系模型根本没学到。LoRA对这类结构化输出本来就偏弱,尤其你只有3000条,串行样本估计更少。建议先别急着全量,拿Qwen官方的function calling模板把数据重洗一遍,让工具调用格式和基座预训练对齐,再补一批专门练多轮串行的样本试试。
7楼
19天前
多工具串行这个坑我也踩过,大概率是数据里tool_call_id的对应关系没让模型真正学到,LoRA容量有限,这种结构化依赖容易学偏。建议先别急着全量微调,把多轮样本按function calling官方模板重洗一遍,尤其确保每个tool_call和返回结果的id严格配对。另外可以拆成两步:先让模型输出调用计划,再单独生成参数,比端到端硬学稳很多。3000条对串行场景确实偏少,可以拿强模型合成一些难例补进去。