当前位置: 首页 > news >正文

如何使用 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

ollama run qwen3:0.6b

轻量级任务、移动应用和边缘设备

Qwen3-1.7B

ollama run qwen3:1.7b

聊天机器人、助手和低延迟应用

Qwen3-4B

ollama run qwen3:4b

通用任务,性能与资源使用均衡

Qwen3-8B

ollama run qwen3:8b

多语言支持和中等推理能力

Qwen3-14B

ollama run qwen3:14b

高级推理、内容创作和复杂问题解决

Qwen3-32B

ollama run qwen3:32b

需要强大推理能力和广泛上下文处理的高端任务

Qwen3-30B-A3B (MoE)

ollama run qwen3:30b-a3b

高效性能,3B 活跃参数,适合编码任务

Qwen3-235B-A22B (MoE)

ollama run qwen3:235b-a22b

大规模应用、深度推理和企业级解决方案

步骤 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. 一个用于切换思考模式的推理界面。
  2. 一个用于翻译或处理不同语言文本的多语言界面。

步骤 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 构建智能应用
http://www.xdnf.cn/news/1293571.html

相关文章:

  • Git核心机制:工作区、暂存区与版本库
  • PyTorch Tensor完全指南:深度学习数据操作的核心艺术
  • Windows基础概略——第一阶段
  • 锂电池自动化生产线:智能制造重塑能源产业格局
  • 全球AI安全防护迈入新阶段:F5推出全新AI驱动型应用AI安全解决方案
  • C语言——深入理解指针(三)
  • YOLOv11+TensorRT部署实战:从训练到超高速推理的全流程
  • TeamViewer 以数字化之力,赋能零售企业效率与客户体验双提升
  • ROS2实用工具
  • 前端工程师的技术成长路线图:从入门到专家
  • 黑盒测试:用户视角下的软件“体检”
  • 自动驾驶轨迹规划算法——Apollo EM Planner
  • C++QT HTTP与HTTPS的使用方式
  • Pytest项目_day14(参数化、数据驱动)
  • 基于SpringBoot+Vue的智能消费记账系统(AI问答、WebSocket即时通讯、Echarts图形化分析)
  • 挂糊:给食材穿层 “黄金保护衣”
  • 量子安全新纪元:F5发布全新AI驱动的全栈式后量子加密AI安全方案
  • 美团搜索推荐统一Agent之交互协议与多Agent协同
  • 【P21】OpenCV Python——RGB和BGR,HSV和HSL颜色空间,及VScode中报错问题解决
  • 408每日一题笔记 41-50
  • 车载软件架构 --- MCU刷写擦除相关疑问?
  • 前端css学习笔记4:常用样式设置
  • epoll模型解析
  • Socket 套接字的学习--UDP
  • 【H5】禁止IOS、安卓端长按的一些默认操作
  • java中在多线程的情况下安全的修改list
  • Win11和Mac设置环境变量
  • 一键自动化:Kickstart无人值守安装指南
  • [ Mybatis 多表关联查询 ] resultMap
  • 【SpringBoot系列-02】自动配置机制源码剖析