最近在折腾本地部署的Qwen2.5-7B做简单Agent,发现它调用工具时经常“自说自话”——比如我让它查天气,它不调API,反而自己编一个“晴转多云”的JSON返回。我试过改system prompt强调“必须使用工具”,也调过temperature到0.3,效果还是不稳定。看到有人说要用特定的chat template,但我用的是vLLM加载,是不是默认模板不对?另外,如果模型返回的tool_call格式偶尔不标准,是不是得自己写解析兜底?有没有大佬分享下实际项目中让7B模型老老实实调工具的调参经验?
楼主
19天前
用Qwen做Agent总是跑偏,function calling到底怎么调才稳?
请 登录 后发表回复
全部回复
共 26 条
2楼
2天前
7B确实容易偷懒,试试用Qwen官方推荐的tool call模板,vLLM里不会自动套,得手动传。
3楼
2天前
7B模型确实容易这样,我试过加tools参数后好一些,但关键还是chat template要对。vLLM默认可能没套Qwen的tool模板,你手动指定一下试试。另外它偶尔返回不标准JSON,我一般用正则兜底提取,再不行就重试一次,比硬解析稳。
4楼
1天前
vLLM默认模板确实容易出这问题,换官方chat template再试试,7B不写解析兜底基本没法用。
5楼
1天前
vLLM默认模板经常不带工具调用格式,得手动指定chat template,再写个正则兜底解析。
6楼
8小时前
vLLM默认chat template确实容易出问题,建议手动指定Qwen的tool_call模板试试。7B模型本身工具调用就不太稳,加个格式校验兜底比较实在。
7楼
7小时前
7B模型自说自话挺常见的,我这边也踩过坑。vLLM加载时确实要确认chat template有没有正确套上Qwen的tool_call格式,不然模型根本不知道工具调用长啥样。除了temperature,建议把top_p也压到0.8左右,再配合few-shot示例塞进system里,比单纯喊“必须用工具”管用。解析兜底肯定得写,我一般用正则先抓tool_call块,抓不到就强制重试一次,基本能稳住。