Ollama OpenAI 兼容 API 关闭思考模式

方法:
添加参数:
{
"reasoning_effort": "none"
}项目原本对接了 DeepSeek API,走的是 OpenAI 兼容接口。最近在公司本地部署了一个 Ollama App,运行 Qwen3.5:9B 模型,想试试看实际效果怎么样。
结果一上来就遇到一个问题:思考模式关不了。
不仅 Spring AI(Java 框架)里原本用于关闭思考的配置不生效,Cherry Studio 里关闭思考模式也一样不生效。
比较奇怪的是,同一套 Spring AI 配置在 DeepSeek 的 OpenAI 兼容接口上是可以正常关闭思考的。
网上查了一圈,很多资料都说:
Ollama 只有原生 API 才能关闭思考模式。
例如这篇:
我也实际测试了一下 Ollama 原生接口,确实可以通过类似:
{
"think": false
}关闭思考。
但问题是,总不能为了接 Ollama,把项目里已经统一使用的 OpenAI 兼容接口改成 Ollama 原生接口吧?
现在项目既要调用 DeepSeek,也要调用 Ollama。如果因为 Ollama 单独改一套调用协议,那原本通过 OpenAI SDK / Spring AI 统一接入不同模型的意义就没了。
继续搜,还看到另一种比较硬核的方案:修改 GGUF 中的 Chat Template,把控制思考模式的模板条件直接固定成 false。
参考:
这个方法看起来挺牛逼,本质上就是从模型模板层面直接把 thinking 关掉。
不过也是真的麻烦。
我试了一下,连模板信息都没正常读出来,可能是我的操作有问题。
折腾到这里已经有点想换 App 了。
ChatGPT 当时还给我推荐了 vLLM,说 OpenAI API 兼容性和参数支持会更完整一些,我都已经开始考虑是不是干脆不用 Ollama 了。
不过它又建议我先排查一下:
到底是 Ollama 不支持,还是客户端根本没有把正确的参数传给 Ollama。
还好我继续试了一下。
最后才发现:
Ollama 的 OpenAI 兼容 API 是支持关闭思考模式的!!!
只需要在 /v1/chat/completions 请求中增加:
{
"reasoning_effort": "none"
}例如:
curl http://127.0.0.1:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model":"qwen3.5:9b", "messages":[ { "role":"user", "content":"你好" } ], "reasoning_effort":"none", "stream":false }'加上以后,Qwen3.5:9B 直接秒回,思考模式正常关闭。
所以实际并不是:
Ollama OpenAI API 不支持关闭思考。
而是:
Ollama OpenAI 兼容接口使用的参数是
reasoning_effort: "none"。
网上很多资料可能是比较早的,或者讨论的是 Ollama 原生 API、Qwen Chat Template、GGUF 等不同层级的问题,混在一起之后就很容易让人误以为 OpenAI 兼容接口根本不支持。
再吐槽一下 Cherry Studio
我排查 Cherry Studio 请求时发现,它在 OpenAI 兼容接口下,关闭思考时默认发送的是:
{
"enable_thinking": false
}我一开始也不知道这是啥。
GPT 说这个更接近 Qwen 自己的 thinking 参数,而 Ollama 的 OpenAI 兼容接口并不认这个参数。
所以 Cherry Studio UI 里虽然已经把“思考模式”关了,但实际请求到了 Ollama 后,模型还是继续思考。
我后来又测试了一下 Cherry Studio 的 Anthropic 接口,关闭思考配置同样没有正常生效。
不过 Cherry Studio 有一个还不错的功能:
Custom Parameters
可以自己往请求里添加额外参数。
于是我直接加:
{
"reasoningEffort": "none"
}然后就正常了。
这里还有一个坑:
Cherry Studio 的 Custom Parameters 输入使用的是 camelCase。
也就是说要写:
reasoningEffort不能直接写:
reasoning_effortCherry Studio 会自动把:
reasoningEffort转换成最终请求里的:
reasoning_effort如果直接在 Custom Parameters 里写 snake_case,我测试下来它会被过滤掉,最终根本不会出现在 HTTP 请求里。
所以最终 Cherry Studio 的配置应该写:
{
"reasoningEffort": "none"
}实际发送给 Ollama 的请求则会变成:
{
"reasoning_effort": "none"
}最终结论
Ollama 的 OpenAI 兼容 API 可以正常关闭 Qwen3.5 的思考模式。
使用:
{
"reasoning_effort": "none"
}即可。
如果你发现设置了“关闭思考”却仍然在 thinking,建议先抓一下实际 HTTP 请求。
重点确认最终发送给:
/v1/chat/completions的请求体里,是否真的包含:
{
"reasoning_effort": "none"
}不要看到客户端 UI 上显示“关闭思考”就默认它一定传对参数了。
这次折腾半天,最后发现 Ollama 本身其实支持。
坑主要在参数没有传对。