2026年3月6日
Qwen3.5 在Ollama API中关闭思考模式!
Qwen3.5的开源模型各方面表现都还不错,但是思考时间特别长,有时候我们并不希望他想这么久。

只要关闭思考能力,速度可以提升一个数量级。
而且我发现不少人和我有一样的想法,所以今天就专门说一下这个问题。
在之前的一篇文章《Qwen3.5和GLM4.7Flash疯狂提速,Ollama关闭思考的两种方式!》我其实已经分享过了两种方式。
但是这两种方式都是基于命令的。
今天来分享一种基于API的方式。
先来说一种错误的方式!
如果你去问AI,目前大部分AI可能会建议你采用openai兼容模式的代码。
比如这样:
def stream_chat(client, messages, model=MODEL, enable_think=DEFAULT_ENABLE_THINK):
"""
流式调用 Ollama OpenAI 兼容 API
Args:
client: OpenAI 客户端
messages: 对话消息列表
model: 模型名称
enable_think: 是否启用思考功能(默认 False)
Yields:
流式返回的内容片段
"""
try:
response = client.chat.completions.create(
model=model,
messages=messages,
stream=True,
extra_body={
"chat_template_kwargs": {
"enable_thinking": enable_think
}
}
)
for chunk in response:
if chunk.choices and chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
except Exception as e:
print(f"错误:请求失败 - {e}", file=sys.stderr)
sys.exit(1)
比如这样:
def stream_chat(client, messages, model=MODEL, think=DEFAULT_THINK):
"""
流式调用 Ollama OpenAI 兼容 API
Args:
client: OpenAI 客户端
messages: 对话消息列表
model: 模型名称
think: 是否启用思考功能(默认 False)
Yields:
流式返回的内容片段
"""
try:
response = client.chat.completions.create(
model=model,
messages=messages,
stream=True,
extra_body={
"think": think # Ollama 原生协议:控制思考模式
}
)
for chunk in response:
if chunk.choices and chunk.choices[0].delta.content:
yield chunk.choices[0].delta.content
except Exception as e:
print(f"错误:请求失败 - {e}", file=sys.stderr)
sys.exit(1)
虽然说得头头是道,有理有据,但是这两种方法都不管用!
真正管用的是,下面这段代码:
def stream_chat(messages, model=MODEL, enable_think=True):
"""
流式调用 Ollama API
Args:
messages: 对话消息列表,格式为 [{"role": "user|assistant", "content": "消息内容"}]
model: 模型名称
enable_think: 是否启用模型的 think 功能
Yields:
流式返回的内容片段
"""
payload = {
"model": model,
"messages": messages,
"stream": True, # 启用流式输出
"think": enable_think # Ollama 原生协议:控制模型是否进行思考
}
try:
response = requests.post(OLLAMA_API, json=payload, stream=True)
response.raise_for_status()
# 逐行读取流式响应
for line in response.iter_lines():
if line:
data = json.loads(line.decode('utf-8'))
# 处理 think 字段(思考过程)
if 'think' in data and data['think']:
think_content = data['think']
yield f"\033[90m[思考] {think_content}\033[0m\n"
# 处理 message 字段(正式回复)
if 'message' in data and 'content' in data['message']:
content = data['message']['content']
yield content
except requests.exceptions.ConnectionError:
print("错误:无法连接到 Ollama 服务,请确保 Ollama 正在运行 (ollama serve)", file=sys.stderr)
sys.exit(1)
except requests.exceptions.RequestException as e:
print(f"错误:请求失败 - {e}", file=sys.stderr)
sys.exit(1)
except json.JSONDecodeError as e:
print(f"错误:JSON 解析失败 - {e}", file=sys.stderr)
sys.exit(1)
我已经实测过9B的模型,可以正常关闭。输出速度直接起飞!
这个问题的关键是,目前只有Ollama的原生协议支持关闭思考。
所以有两个关键点。
一个是 API地址:
OLLAMA_API = "http://localhost:11434/api/chat"
这个地址必须是原生接口!不能用OpenAI的兼容接口!
另一个是参数格式:
payload = {
"model": model,
"messages": messages,
"stream": True, # 启用流式输出
"think": enable_think # Ollama 原生协议:控制模型是否进行思考
}
必须是think,后面可以跟True或者False!
通过这种方式调用Qwen3.5系列模型,就可以自由控制思考模式了,这种方式不仅仅适用于Qwen3.5,也应该同样适用于GLM4.7Flash这一类开源模型!