最近在试着用Qwen2.5-7B-Instruct配Ollama搭一个能查天气、搜网页的AI Agent,跑在4090上。流程是LLM输出JSON格式的function call,然后我解析后调用工具。但实际跑起来经常翻车:要么模型不按格式输出,在外面套一堆解释文字;要么参数缺字段,解析直接报错。试过在prompt里加few-shot示例,好一些但还是不稳定。想问下各位,本地小模型做Agent是不是必须上vLLM加guided decoding?还是说7B这个尺寸就是不太够用,得换14B以上?有没有低成本一点的方案,感谢!
楼主
24天前
想用本地大模型搭个Agent,但7B模型tool call老是格式出错怎么办?
请 登录 后发表回复
全部回复
共 3 条
2楼
19天前
7B确实容易飘,先试试vLLM的guided decoding吧,约束输出格式比换模型省事多了。
3楼
16天前
7B做tool call确实容易飘,我之前用Qwen2.5-7B也遇到过类似问题,后来换了14B明显稳很多,但代价是显存和速度。其实不一定非要上vLLM,Ollama本身可以用grammar约束输出格式,你搜一下structured outputs的用法,能强制它按JSON schema走,成本几乎为零。另外prompt里把工具描述写得更明确一点也有帮助,比如直接告诉它“只输出JSON,不要任何解释”。如果还不行,可以考虑用outlines或者llama.cpp的GBNF语法,4090跑7B加约束完全够用。
4楼
14天前
7B做tool call确实容易飘,我之前用Qwen2在Ollama上也这样,后来换了llama.cpp的GBNF语法约束输出,格式立马稳了,成本几乎为零。其实不用非上vLLM,Ollama本身也能挂grammar,只是文档藏得深。另外建议把工具描述写死一点,参数别给模型太多自由度,7B能扛住的。