快速结论:该报错出现在 llama.cpp 多轮工具调用对话中使用 Bailing V3(Ling 3.0)系列模型时。模型在推理通道里提前输出 <tool_call> 却没有闭合 </think>,导致整轮内容被归入 reasoning_content,content 为空。优先排查模型使用的聊天模板解析器是否把 <tool_call> 视为推理终止符。
适用环境:Issue 已确认:Linux x86_64;llama.cpp 0.1.2-dev(build 10540,commit 07822bddf),GNU 16.1.1 编译;GGML HIP 后端;AMD Strix Halo(Ryzen AI Max+ 395)。另有评论在 Vulkan 后端(Framework desktop)上复现。模型涉及 Ling-3.0-flash-Q5_K_M、Ling-3.0-flash-Q3_K_XL、Ling-3.0-flash-AD-IQ3_M、Ling 3.0 tiny Q4_K_M。
最快修复方案:升级到包含 PR #28682 的 llama.cpp 版本。Issue 中多名用户确认该 PR 修复了此问题,并改善了工具调用表现。
注意事项:Issue 早期评论中提到的 Nathanw1014 分支补丁(commit 9b9ac3e)也被报告有效,但属于第三方分支,不是上游合并版本。合并到上游后,应以 PR #28682 为准。该 Issue 带有 bug-unconfirmed 标签,且已关闭为 stale,因此修复效果最终以当前版本的实际测试为准。
问题场景
在 llama.cpp 中加载 Ling 3.0(Bailing V3)系列 GGUF 模型,通过 OpenAI 兼容的 chat completions 接口进行多轮、带工具的 agentic 对话。模型有时会在推理内容中直接输出 <tool_call>...</tool_call>,但没有先输出 </think>,随后结束生成。此时接口返回的 message.content 为空,整段工具调用文本落在 message.reasoning_content 里,客户端拿不到可执行的工具调用。
报错原文
Eval bug: Bailing V3 (Ling 3.0) autoparser lacks a reasoning terminator but emits these often mid-reasoning
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "",
"reasoning_content": "<tool_call>get_forecast\n<arg_key>location</arg_key>\n<arg_value>Berlin</arg_value><arg_key>day</arg_key>\n<arg_value>2026-08-22</arg_value>\n</tool_call>"
}
}
]
}
原因分析
Bailing V3 在 common/chat.cpp 中没有专用解析器,会走通用 autoparser。该 autoparser 只把 </think> 作为推理终止符,没有把 <tool_call> 作为备选终止条件。因此,当模型在推理阶段提前发起工具调用时,推理通道不会被关闭,输出被错误路由到 reasoning_content。
Issue 作者指出,同类“推理中调用工具”的行为已在 Qwen3-Coder、DeepSeek V3.2 和 Kimi K2 的解析器中处理,做法是把工具调用起始标记加入 thinking_end_tags。因此可能原因是:Bailing V3 缺少与 Kimi K2 类似的推理终止符配置。
环境排查
- 确认 llama.cpp 版本与提交号,判断是否已包含 PR #28682。
- 确认模型文件属于 Ling 3.0 / Bailing V3 系列,并记录量化版本与来源(如 Q5_K_M、Q3_K_XL、AD-IQ3_M、tiny Q4_K_M)。
- 确认使用的后端(HIP、Vulkan 等),以及是否通过 chat completions 接口启用工具调用。
- 确认客户端是否读取
tool_calls字段;当前故障下该字段为空,内容被放入reasoning_content。
解决步骤
- 先记录当前 llama.cpp 的版本和提交号,便于回退对比。
- 可优先尝试升级到包含 PR #28682 的 llama.cpp 版本,重新编译并加载原模型。
- 若暂时无法升级,可参考 Issue 中已验证有效的第三方补丁 commit 9b9ac3e;注意该补丁来自个人分支,需自行评估合并风险。
- 使用 Issue 提供的复现脚本或多轮工具调用对话重新测试,观察是否仍有工具调用落入
reasoning_content。
验证方法
在相同的多轮工具调用场景下重复测试。正常表现应为:返回结果中出现 tool_calls,content 不再为空,reasoning_content 中不再残留完整的 <tool_call>...</tool_call> 文本;连续多次 agentic 轮次能正确执行工具并给出最终回答。Issue 评论中已用多工具调用场景截图确认修复后的效果。
参考来源
Nathanw1014/llama.cpp commit 9b9ac3e
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


