快速结论:在 Ollama 的 OpenAI 兼容端点(/v1/chat/completions)中使用 NVIDIA Nemotron 3 模型时,官方推荐的 reasoning-effort 控制字段(chat_template_kwargs.enable_thinking/low_effort、reasoning_budget)会静默失效,因为 Ollama 不支持 extra_body 字段解析。正确的替代方案是使用 OpenAI 标准参数 reasoning_effort(取值 none / medium / high)来控制思考深度。
适用环境:Ollama 0.20.4,模型 nemotron-3-super:120b(nemotron_h_moe 架构,Q4_K_M 量化),已确认可在 OpenAI 兼容路由和原生 /api/chat 路由复现。
最快修复方案:在 OpenAI 兼容端点中,改用 reasoning_effort 参数替代 chat_template_kwargs 和 reasoning_budget。Ollama 维护者实测:reasoning_effort="none" 产生 0 字符思考内容,"medium" 约 1241 字符,"high" 约 1790 字符,控制效果方向正确且可预期。
注意事项:Ollama 原生路由(/api/chat)对 Nemotron 3 的 reasoning 控制字段支持情况在 Issue 中未被验证修复,如果必须使用原生路由,需等待后续版本支持或改用 OpenAI 兼容路由。
问题场景
用户运行 Ollama 0.20.4 并加载 NVIDIA Nemotron 3 120B 模型,先后通过 OpenAI 兼容路由(POST /v1/chat/completions,字段放在 extra_body 中)和原生路由(POST /api/chat,字段提升为顶层键)发送相同的代码审查提示词,期望通过 chat_template_kwargs.enable_thinking、chat_template_kwargs.low_effort 和 reasoning_budget 控制模型的思考深度和推理预算。实测中这些字段对生成的 reasoning 内容量没有产生方向一致的调节效果,且 enable_thinking=false 时生成的 reasoning 反而比无约束基线更多。
报错原文
Nemotron 3 reasoning-effort controls (chat_template_kwargs.enable_thinking/low_effort, reasoning_budget) silently ignored on both /v1/chat/completions and /api/chat
A3 (reasoning explicitly **off**) produced **more** reasoning (19372 chars) than the unconstrained A0 baseline (13224 chars) — reasoning was not suppressed at all.
A2 (smaller budget, 256) produced **more** reasoning than A1 (larger budget, 1024) on both API surfaces (9846 > 7776 compat; 14707 > 7153 native) — budget ordering is inverted, not merely noisy.
原因分析
可能原因:extra_body 并不是 OpenAI API 规范的标准部分(参考 OpenAI Chat Completions API 官方文档字段列表),因此 Ollama 的 OpenAI 兼容端点在解析请求时不会读取 extra_body 下嵌套的 chat_template_kwargs 和 reasoning_budget,这些字段实际上从未到达模型的 chat template 或采样器。用户在 Issue 中观察到的 reasoning 长度波动,本质上是模型默认 temperature=1 下的随机采样噪声,不是字段控制的结果。Ollama 对思维链/推理深度的标准控制方式是通过 OpenAI 兼容端点中的 reasoning_effort 参数实现,它不在 extra_body 中传递,而是作为请求顶层字段。
环境排查
- 确认 Ollama 版本:Issue 报告为 0.20.4,建议升级到最新版后重测 reasoning_effort 支持情况
- 确认模型拉取参数:使用
ollama show --parameters检查模型 blob 上是否设置了 temperature、top_p 等默认值 - 检查调用端代码是否把 reasoning_effort 放在请求顶层(而非 extra_body 内)
- 确认使用的 API 端点:OpenAI 兼容路由为 /v1/chat/completions,原生路由为 /api/chat
解决步骤
- 停止在
extra_body中传chat_template_kwargs和reasoning_budget,该字段不是 OpenAI API 标准部分,Ollama 不会解析。 - 改用 OpenAI 兼容端点,在请求顶层传入
reasoning_effort字段,取值可为"none"、"medium"或"high",分别对应关闭思考、中等思考深度、高思考深度。 - 如需精细控制推理预算(如 NVIDIA RAG 2.5 指南推荐的 low_effort=true + reasoning_budget=256),可优先尝试结合 reasoning_effort=”medium” 与系统提示词中的长度约束来近似实现。
- 如果必须使用原生路由 /api/chat,可优先尝试将
reasoning_effort作为顶层请求键传入;该方案在 Issue 中未被验证,仅作为推测性替代。
验证方法
使用 curl 对同一模型和相同的简单提示词分别发送 reasoning_effort="none"、"medium"、"high" 请求,检查返回的 choices[0].message.reasoning 长度。如果控制生效,应观察到 none 约为 0 字符、medium 适中、high 最长(Ollama 维护者实测参考值:none=0,medium=1241,high=1790)。另外可用一组重复请求(建议 7 次以上)验证字段效果的方向一致性是否稳定,排除温度=1 的采样随机性干扰。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug] Gmail trigger silently stops after 7 days: subscription expires_at is persisted as -1](https://www.chat-gpts.plus/wp-content/uploads/2026/09/41162-d3216684-768x403.jpg)
