如何使用 Ollama 在本地设置并运行 Qwen3
了解如何使用 Ollama 在本地安装、设置并运行 Qwen3,并构建一个基于 Gradio 的简单应用程序。
更多阅读:在本地电脑中部署阿里 Qwen3 大模型及连接到 Elasticsearch。在这篇文章中,你可以使用 LM Studio 来部署 Qwen3。
Qwen3 是阿里巴巴最新一代的开源大语言模型。它支持 100 多种语言,并在推理、编码和翻译任务中表现出色,可与当今许多顶尖模型竞争,包括 DeepSeek-R1、o3-mini 和 Gemini 2.5。
在本教程中,我将逐步讲解如何使用 Ollama 在本地运行 Qwen3。
我们还将使用 Qwen3 构建一个本地轻量级应用程序。该应用允许你在 Qwen3 的推理模式之间切换,并在不同语言之间进行翻译。
为什么要在本地运行 Qwen3?
在本地运行 Qwen3 有几个关键优势:
-
隐私:你的数据永远不会离开你的机器。
-
延迟:本地推理更快,无需 API 往返。
-
成本效率:没有 token 费用或云端账单。
-
可控性:你可以调整提示词、选择模型并配置思维模式。
-
离线访问:下载模型后,即使没有网络也能工作。
Qwen3 针对深度推理(思维模式)和快速响应(非思维模式)都进行了优化,并支持 100 多种语言。让我们在本地开始设置吧。
使用 Ollama 在本地设置 Qwen3
Ollama 是一个工具,可以让你通过简单的命令行界面在本地运行 Llama 或 Qwen 等语言模型。
步骤 1:安装 Ollama
从 Download Ollama on macOS 下载适用于 macOS、Windows 或 Linux 的 Ollama。
按照安装程序的指引完成安装,安装完成后,在终端运行以下命令进行验证:
ollama --version
$ ollama --version
ollama version is 0.11.4
步骤 2:下载并运行 Qwen3
Ollama 提供多种 Qwen3 模型,适配从轻量级笔记本到高端服务器的不同硬件配置。
ollama run qwen3
首先,我们创建一个目录:
$ mkdir ollama_qwen3
$ cd ollama_qwen3/
$ pwd
/Users/liuxg/ollama_qwen3
我们在这个目录里运行上面的命令:
$ pwd
/Users/liuxg/ollama_qwen3
$ ollama run qwen3
pulling manifest
pulling a3de86cd1c13: 100% ▕██████████████████████████████████████████████▏ 5.2 GB
pulling ae370d884f10: 100% ▕██████████████████████████████████████████████▏ 1.7 KB
pulling d18a5cc71b84: 100% ▕██████████████████████████████████████████████▏ 11 KB
pulling cff3f395ef37: 100% ▕██████████████████████████████████████████████▏ 120 B
pulling 05a61d37b084: 100% ▕██████████████████████████████████████████████▏ 487 B
verifying sha256 digest
writing manifest
success
>>> Send a message (/? for help)
运行上述命令将会在 Ollama 中启动默认的 Qwen3 模型,目前默认是 qwen3:8b。如果你的资源有限或想要更快的启动时间,可以显式运行较小的版本,例如 4B 模型:
ollama run qwen3:4b
我们可以尝试打入一个问题:
Qwen3 目前提供多个版本,从最小的 0.6b(523MB)到最大的 235b(142GB)参数模型。这些较小的版本在推理、翻译和代码生成方面表现出色,尤其是在思维模式下使用时。
MoE 模型(30b-a3b、235b-a22b)特别有趣,因为它们在每次推理步骤中只激活部分专家,从而在保持运行成本高效的同时实现超大总参数量。
一般来说,使用你的硬件能支持的最大模型,对于消费者级机器上的本地实验,可以选择 8B 或 4B 模型以获得响应速度。
以下是你可以运行的所有 Qwen3 模型快速概览:
Model | Ollama Command | 最佳适用场景 |
Qwen3-0.6B |
| 轻量级任务、移动应用和边缘设备 |
Qwen3-1.7B |
| 聊天机器人、助手和低延迟应用 |
Qwen3-4B |
| 通用任务,性能与资源使用均衡 |
Qwen3-8B |
| 多语言支持和中等推理能力 |
Qwen3-14B |
| 高级推理、内容创作和复杂问题解决 |
Qwen3-32B |
| 需要强大推理能力和广泛上下文处理的高端任务 |
Qwen3-30B-A3B (MoE) |
| 高效性能,3B 活跃参数,适合编码任务 |
Qwen3-235B-A22B (MoE) |
| 大规模应用、深度推理和企业级解决方案 |
步骤 3:在后台运行 Qwen3(可选)
要通过 API 提供模型服务,在终端运行以下命令:
ollama serve
这样模型就可以通过 http://localhost:11434 与其他应用集成。
在本地使用 Qwen3
在本节中,我将带你了解几种在本地使用 Qwen3 的方法,从基本的命令行交互到将模型与 Python 集成。
选项 1:通过 CLI 运行推理
模型下载完成后,你可以直接在终端与 Qwen3 交互。在终端运行以下命令:
echo "世界上最高的山峰是哪个? /think" | ollama run qwen3:8b
这对于快速测试或无需编写代码的轻量交互非常有用。提示末尾的 /think 标签指示模型进行更深层次的逐步推理。你可以将其替换为 /no_think 以获得更快、更浅显的响应,或者完全省略它以使用模型的默认推理模式。
echo "世界上最高的山峰是哪个? /no_think" | ollama run qwen3:8b
选项 2:通过 API 访问 Qwen3
一旦 ollama serve 在后台运行,你就可以使用 HTTP API 编程方式与 Qwen3 交互,这非常适合后端集成、自动化或测试 REST 客户端。
curl http://localhost:11434/api/chat -d '{"model": "qwen3:8b","messages": [{ "role": "user", "content": "中国的母亲河是哪个? /think" }],"stream": false
}'
工作原理如下:
-
curl 向运行在 localhost:11434 的本地 Ollama 服务器发送 POST 请求(即调用 API)。
-
请求的 payload 是一个 JSON 对象,包括:
-
"model"
:指定使用的模型(这里是 qwen3:8b)。 -
"messages"
:包含角色和内容的聊天消息列表。 -
"stream": false
:确保一次性返回响应,而不是按 token 逐步返回。
-
选项 3:通过 Python 访问 Qwen3
如果你在 Python 环境中工作(如 Jupyter、VSCode 或脚本),与 Qwen3 交互的最简单方式是使用 Ollama Python SDK。首先安装 ollama:
pip install ollama
然后,使用这个脚本运行你的 Qwen3 模型(这里我们使用 qwen3:8b):
qwen3.py
import ollama
response = ollama.chat(model="qwen3:8b",messages=[{"role": "user", "content": "Summarize the theory of evolution. /think"}]
)
print(response["message"]["content"])
在上面的代码中:
- ollama.chat(...) 向本地 Ollama 服务器发送聊天形式的请求。
- 你指定模型(qwen3:8b)和一个与 OpenAI 的 API 类似格式的消息列表。
- /think 标签告诉模型逐步推理。
- 最后,响应以字典形式返回,你可以通过 ["message"]["content"] 获取模型的回答。
这种方法非常适合本地实验、原型开发或构建基于 LLM 的应用,而无需依赖云 API。
使用 Qwen3 构建本地推理应用
Qwen3 支持使用 /think(深度推理)和 /no_think(快速响应)标签的混合推理行为。
在本节中,我们将使用 Gradio 创建一个带有两个独立标签页的交互式本地 Web 应用:
- 一个用于切换思考模式的推理界面。
- 一个用于翻译或处理不同语言文本的多语言界面。
步骤 1:混合推理演示
在这一步中,我们使用 /think 和 /no_think 标签构建混合推理标签页。
pip install gradio
hybrid_reasoning_demo.py
import gradio as gr
import subprocessdef reasoning_qwen3(prompt, mode):prompt_with_mode = f"{prompt} /{mode}"result = subprocess.run(["ollama", "run", "qwen3:8b"],input=prompt_with_mode.encode(),stdout=subprocess.PIPE)return result.stdout.decode()reasoning_ui = gr.Interface(fn=reasoning_qwen3,inputs=[gr.Textbox(label="Enter your prompt"),gr.Radio(["think", "no_think"], label="Reasoning Mode", value="think")],outputs="text",title="Qwen3 Reasoning Mode Demo",description="Switch between /think and /no_think to control response depth."
)if __name__ == "__main__":reasoning_ui.launch()
我们使用如下的代码来运行:
python3 hybrid_reasoning_demo.py
$ python3 hybrid_reasoning_demo.py
* Running on local URL: http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.
我们打开上面所示的的页面 http://127.0.0.1:7860:
在上面的代码中:
- 函数 reasoning_qwen3() 接收用户提示和推理模式("think" 或 "no_think")。
- 它将选定的模式作为后缀附加到提示中。
- 然后,subprocess.run() 方法运行命令 ollama run qwen3:8b,将提示作为标准输入传入。
- 最后,输出(来自 Qwen3 的响应)被捕获并返回为解码后的字符串。
一旦定义了生成输出的函数,gr.Interface() 函数通过指定输入组件 —— 一个用于提示的 Textbox 和一个用于选择推理模式的 Radio 按钮——并将它们映射到函数的输入,从而将其封装为交互式 Web 界面。
步骤 2:多语言应用演示
现在,让我们设置多语言应用标签页。
multilingual_app_demo.py
import gradio as gr
import subprocessdef multilingual_qwen3(prompt, lang):if lang != "English":prompt = f"Translate to {lang}: {prompt}"result = subprocess.run(["ollama", "run", "qwen3:8b"],input=prompt.encode(),stdout=subprocess.PIPE)return result.stdout.decode()multilingual_ui = gr.Interface(fn=multilingual_qwen3,inputs=[gr.Textbox(label="Enter your prompt"),gr.Dropdown(["English", "French", "Hindi", "Chinese"], label="Target Language", value="English")],outputs="text",title="Qwen3 Multilingual Translator",description="Use Qwen3 locally to translate prompts to different languages."
)if __name__ == "__main__":multilingual_ui.launch()
$ python3 multilingual_app_demo.py
* Running on local URL: http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.
与上一步类似,这段代码的工作方式如下:
- 函数 multilingual_qwen3() 接收一个提示和目标语言。
- 如果目标语言不是 English,它会在前面加上指令 “Translate to {lang}:” 来引导模型。
- 同样,模型通过 subprocess 使用 Ollama 在本地运行。
- 结果以纯文本形式返回。
步骤 3:在 Gradio 中启动两个标签页
让我们在 Gradio 应用中将两个标签页组合在一起。
both.py
import gradio as gr
import subprocessdef multilingual_qwen3(prompt, lang):if lang != "English":prompt = f"Translate to {lang}: {prompt}"result = subprocess.run(["ollama", "run", "qwen3:8b"],input=prompt.encode(),stdout=subprocess.PIPE)return result.stdout.decode()multilingual_ui = gr.Interface(fn=multilingual_qwen3,inputs=[gr.Textbox(label="Enter your prompt"),gr.Dropdown(["English", "French", "Hindi", "Chinese"], label="Target Language", value="English")],outputs="text",title="Qwen3 Multilingual Translator",description="Use Qwen3 locally to translate prompts to different languages."
)def reasoning_qwen3(prompt, mode):prompt_with_mode = f"{prompt} /{mode}"result = subprocess.run(["ollama", "run", "qwen3:8b"],input=prompt_with_mode.encode(),stdout=subprocess.PIPE)return result.stdout.decode()reasoning_ui = gr.Interface(fn=reasoning_qwen3,inputs=[gr.Textbox(label="Enter your prompt"),gr.Radio(["think", "no_think"], label="Reasoning Mode", value="think")],outputs="text",title="Qwen3 Reasoning Mode Demo",description="Switch between /think and /no_think to control response depth."
)demo = gr.TabbedInterface([reasoning_ui, multilingual_ui],tab_names=["Reasoning Mode", "Multilingual"]
)if __name__ == "__main__":demo.launch(debug = True)
$ python3 both.py
* Running on local URL: http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.
结论
Qwen3 通过 Ollama 为你的本地机器带来了高级推理、快速解码和多语言支持。
通过最小的设置,你可以:
- 在本地运行 LLM 推理,无需依赖云
- 在快速响应和深度思考之间切换
- 使用 API 或 Python 构建智能应用