Skip to main content
Ollama最新版本引入了思考(Thinking)功能,让用户能够看到AI模型的推理过程,这为AI应用开发带来了全新的体验。本文将详细介绍如何使用这一强大功能。

什么是思考功能?

思考功能允许AI模型在给出最终答案之前,先展示其内部的推理过程。这就像是让AI”开口思考”,用户可以看到模型是如何一步步分析问题并得出结论的。

支持思考功能的模型

ollama 目前支持思考功能的模型包括:
  • DeepSeek R1 - 推理能力强大的开源模型
  • Qwen 3 - 阿里巴巴推出的多语言大模型
  • 更多模型正在陆续支持中

CLI命令行使用方法

基础控制命令

启用思考功能:
# 使用参数启用
ollama run deepseek-r1 --think "9.9和9.11哪个更大?"

# 交互模式中启用
/set think
禁用思考功能:
# 使用参数禁用
ollama run deepseek-r1 --think=false "快速计算10+23"

# 交互模式中禁用
/set nothink

脚本化使用

如果您想在脚本中使用思考模型但只看结果,可以使用 --hidethinking 参数:
ollama run deepseek-r1:8b --hidethinking "草莓这个词里有几个r?"

API调用示例

REST API调用

Ollama的API完全支持思考功能,通过 think 参数控制:
curl http://localhost:11434/api/chat -d '{
  "model": "deepseek-r1",
  "messages": [
    {
      "role": "user", 
      "content": "解释一下量子纠缠的原理"
    }
  ],
  "think": true,
  "stream": false
}'
响应格式:
{
  "model": "deepseek-r1",
  "message": {
    "role": "assistant",
    "content": "量子纠缠是指两个或多个粒子...",
    "thinking": "用户询问量子纠缠原理,我需要从基础概念开始解释...",
    "done_reason": "stop"
  }
}

Java集成库支持情况

需要特别注意的是,目前主流的Java AI集成库对Ollama 0.9的思考功能支持还不完善:
  • Spring AI - 暂未支持 think 属性
  • LangChain4j - 暂未支持 think 属性
如果您在Java项目中需要使用思考功能,建议直接使用HTTP客户端调用Ollama的REST API:

Modelfile高级配置

Qwen3模型的无缝思维链控制

笔者在之前的分享中发现,Qwen3模型有一个独特的能力:可以通过在提示词中携带 /nothink 关键字来控制是否进行深度推理。我们可以巧妙地利用Modelfile的TEMPLATE功能,在不修改后端代码的情况下,自动为用户提交的prompt添加控制指令。

创建默认禁用思考的Qwen3模型

FROM qwen3:latest
TEMPLATE """

...

{{- if eq .Role "user" }}
<|im_start|>user
/nothink {{ .Content }}<|im_end|> # change this line
{{ else if eq .Role "assistant" }}<|im_start|>assistant

...

"""
创建并使用模型:
ollama create qwen3-fast -f ./Modelfile
ollama run qwen3-fast "解释一下机器学习的基本概念"
这样创建的模型会自动在每个用户输入前添加 /nothink,实现默认快速响应模式。 更多Ollama使用技巧和最新功能,请关注我们的技术分享。

参考资源