用 Ollama 本地运行 Qwen 系列模型:从一条命令拉取到自定义 GGUF 与工具调用
【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5
Ollama 让你只需寥寥数条命令即可在本地运行大语言模型,支持 macOS、Linux 与 Windows 三大平台。本篇指南以本仓库的 Ollama 官方文档 为主线,结合 README.md 中 Qwen3 的最新用法,完整讲解如何用一条命令运行 Qwen2.5/Qwen3 系列模型、如何通过Modelfile加载你自己的 GGUF 量化模型,以及如何启用工具调用(Tool Use),读完即可在本地搭建一套开箱即用的 Qwen 推理环境。
Ollama 是什么:为何适合本地运行 Qwen
Ollama 是一套面向本地推理的模型运行工具,把“下载模型、解析 GGUF、执行推理、提供服务”等繁琐环节封装成极简命令。正如 llama.cpp 运行指南 中提到的,Ollama 本身就是基于 llama.cpp 生态构建的应用之一,底层复用 llama.cpp 的 C++ 推理引擎与 GGUF 模型格式,因此它天然具备 llama.cpp 生态的特性:轻量、多平台、支持 CPU 与 GPU 混合推理、支持多种量化方案。
注意:当前仓库中的 Ollama 文档 头部标注了 “To be updated for Qwen3”(待为 Qwen3 更新),其正文以 Qwen2.5 为主线;而仓库根目录 README.md 已补充了 Qwen3 在 Ollama 上的最新用法。本文两部分都会覆盖,请按你所使用的模型代次选择对应章节。
Quickstart:一条命令运行 Qwen2.5
首先访问 Ollama 官方网站并点击下载,在你的设备上安装 Ollama(支持 macOS、Linux、Windows)。你还可以在官网模型库中搜索模型,找到 Qwen 系列。
安装完成后,Qwen2.5 已正式上线 Ollama,只需一条命令即可运行默认模型:
ollama run qwen2.5除了默认规格外,你可以通过给模型名追加:尺寸后缀,选择运行不同大小的 Qwen2.5-Instruct 模型:
ollama run qwen2.5:0.5bollama run qwen2.5:1.5bollama run qwen2.5:3bollama run qwen2.5:7bollama run qwen2.5:14bollama run qwen2.5:32bollama run qwen2.5:72b
::: note Ollama 不托管基座模型(base models)。即使模型标签没有instruct后缀,它们实际上都是 instruct(指令微调)模型。 :::
运行 Qwen3:服务、参数与思考模式开关
根据仓库 README.md 的说明,Qwen3 同样已正式纳入 Ollama。安装 Ollama 后(建议使用 Ollama v0.9.0 或更高版本),首先需要启动 Ollama 服务,且使用期间需保持该服务运行:
ollama serve然后在另一个终端中拉取并运行模型。可以通过在qwen3后追加:尺寸后缀来指定模型规格,例如:8b或:30b-a3b:
ollama run qwen3:8b在交互式对话中,还可以通过斜杠命令调整运行参数与思考模式:
- 设置上下文长度与最大生成长度:输入
/set parameter num_ctx 40960与/set parameter num_predict 32768(Qwen3 模型建议配置较长上下文,详见下文“上下文管理”部分); - 退出对话:输入
/bye并回车; - 思考模式开关(Qwen3-2504 系列模型):
/set think—— 启用思考(thinking)模式,这是默认行为;/set nothink—— 关闭思考模式。
通过 OpenAI 兼容 API 访问
Ollama 服务默认提供 OpenAI 兼容接口,地址为http://localhost:11434/v1/。使用该 API 前需要保证两点:一是ollama serve一直保持运行,二是先执行过ollama run qwen3:8b以确保模型检查点已就绪。
两个重要的注意事项
- 命名可能与 Qwen 官方不一致:Ollama 的命名并不总是与 Qwen 官方命名一致。例如,截至 2025 年 8 月,Ollama 中的
qwen3:30b-a3b实际指向qwen3:30b-a3b-thinking-2507-q4_K_M。使用前请到 Ollama 模型库的qwen3标签页核对实际指向。 - 旋转上下文管理带来的隐患:Ollama 与 llama.cpp 一样采用“旋转式上下文管理”(rotating context management),但其默认参数为
num_ctx2048、num_predict-1,意味着在 2048 token 的上下文下无限生成,这对 Qwen3 模型可能引发问题。因此建议合理设置num_ctx与num_predict(如上面/set parameter示例所示)。
用 Ollama 运行你自己的 GGUF 文件
有时你并不想从 Ollama 拉取模型,而是希望直接使用自己的 GGUF 文件。GGUF 是 llama.cpp 生态的模型存储格式,封装了模型权重、超参数、默认生成配置与分词器等完整信息(详见 GGUF 量化指南)。假设你已经有一个 Qwen2.5 的 GGUF 文件qwen2.5-7b-instruct-q5_0.gguf,步骤如下。
第一步:编写 Modelfile
在本地创建一个名为Modelfile的文件(放在 GGUF 文件所在目录),内容如下:
FROM qwen2.5-7b-instruct-q5_0.gguf # set the temperature to 1 [higher is more creative, lower is more coherent] PARAMETER temperature 0.7 PARAMETER top_p 0.8 PARAMETER repeat_penalty 1.05 PARAMETER top_k 20 TEMPLATE """{{ if .Messages }} {{- if or .System .Tools }}<|im_start|>system {{ .System }} {{- if .Tools }} # Tools You are provided with function signatures within <tools></tools> XML tags: <tools>{{- range .Tools }} {"type": "function", "function": {{ .Function }}}{{- end }} </tools> For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags: <tool_call> {"name": <function-name>, "arguments": <args-json-object>} </tool_call> {{- end }}<|im_end|> {{ end }} {{- range $i, $_ := .Messages }} {{- $last := eq (len (slice $.Messages $i)) 1 -}} {{- if eq .Role "user" }}<|im_start|>user {{ .Content }}<|im_end|> {{ else if eq .Role "assistant" }}<|im_start|>assistant {{ if .Content }}{{ .Content }} {{- else if .ToolCalls }}<tool_call> {{ range .ToolCalls }}{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}} {{ end }}</tool_call> {{- end }}{{ if not $last }}<|im_end|> {{ end }} {{- else if eq .Role "tool" }}<|im_start|>user <tool_response> {{ .Content }} </tool_response><|im_end|> {{ end }} {{- if and (ne .Role "assistant") $last }}<|im_start|>assistant {{ end }} {{- end }} {{- else }} {{- if .System }}<|im_start|>system {{ .System }}<|im_end|> {{ end }}{{ if .Prompt }}<|im_start|>user {{ .Prompt }}<|im_end|> {{ end }}<|im_start|>assistant {{ end }}{{ .Response }}{{ if .Response }}<|im_end|>{{ end }}""" # set the system message SYSTEM """You are Qwen, created by Alibaba Cloud. You are a helpful assistant."""该Modelfile的核心要素:
| 指令 | 作用 | 示例取值 |
|---|---|---|
FROM | 指定基础 GGUF 文件路径 | qwen2.5-7b-instruct-q5_0.gguf |
PARAMETER temperature | 采样温度,越高越有创造性,越低越连贯 | 0.7 |
PARAMETER top_p | 核采样概率阈值 | 0.8 |
PARAMETER repeat_penalty | 重复惩罚系数 | 1.05 |
PARAMETER top_k | 采样时保留的最高概率 token 数量 | 20 |
TEMPLATE | 对话模板(Jinja/Go template),定义 system、user、assistant、tool 消息如何拼装 | 见上文完整模板 |
SYSTEM | 默认系统提示词 | You are Qwen, created by Alibaba Cloud. You are a helpful assistant. |
注意其中的TEMPLATE采用 Qwen 的 ChatML 风格(<|im_start|>/<|im_end|>),并内嵌了工具调用的 XML 规范(<tools>、<tool_call>、<tool_response>标签),这是 Qwen 系列支持 function calling 的关键约定,与 函数调用指南 中描述的 Hermes 风格工具使用规范一致。模板中还预留了{{ .System }}与{{ .Prompt }}分支,以兼容无多轮消息的简易调用场景。
第二步:创建模型
基于Modelfile创建 Ollama 模型:
ollama create qwen2.5_7b -f Modelfile-f指定 Modelfile 路径,qwen2.5_7b是你为该模型起的本地名称,之后统一通过这个名字引用它。
第三步:运行模型
创建完成后即可运行:
ollama run qwen2.5_7b获取与制作 GGUF 文件的补充说明
如果你还没有 GGUF 文件,仓库文档提供了两条路径(详见 llama.cpp 运行指南 与 GGUF 量化指南):
- 直接下载官方量化 GGUF:通过
huggingface-cli拉取,例如:huggingface-cli download Qwen/Qwen3-8B-GGUF qwen3-8b-q4_k_m.gguf --local-dir . - 自行转换并量化:使用 llama.cpp 的
convert-hf-to-gguf.py将 Hugging Face 模型转换为 GGUF,再用llama-quantize按Q8_0、Q5_K_M、Q4_K_M等预设压缩位宽,必要时可借助 AWQ scale 或 importance matrix 提升低比特量化质量。
另外,若需要强制关闭思考模式,llama.cpp 指南中提到可以传入本仓库提供的 qwen3_nonthinking.jinja 自定义聊天模板(等价于始终enable_thinking=False);在 Ollama 的Modelfile中,你也可以用自定义TEMPLATE达到类似目的。
工具调用(Tool Use)
Ollama 现已支持工具调用(Tool Use),你可以直接在其上运行支持该能力的 Qwen 模型。工具调用(又称函数调用)本质上是一种基于提示词工程(prompt engineering)或模型内置模板的协议:应用向模型提供一组函数及其说明,模型决定是否调用以及如何传参,应用执行函数并把结果回传给模型完成后续交互。上文Modelfile中TEMPLATE内嵌的<tools>/<tool_call>/<tool_response>约定正是这一协议的具体载体。
更完整的工具调用实践——包括工具描述如何用 JSON Schema 编写、如何通过 Qwen-Agent 或 vLLM 完成多轮 tool call 闭环、以及 thinking/no_think 两种模式下函数调用结果的结构差异——请参阅本仓库的 函数调用指南。特别提醒:对于 Qwen3 这类具备推理能力的模型,不建议使用基于 stopword 的 ReAct 式工具调用模板,因为模型可能在思考段输出停用词,从而干扰工具调用行为。
小结
在 Ollama 上运行 Qwen 系列模型有三条渐进路径:
- 零配置拉取:
ollama run qwen2.5或ollama run qwen3:8b,一条命令体验官方提供的各尺寸指令模型; - 自定义 GGUF:编写
Modelfile(FROM+PARAMETER+TEMPLATE+SYSTEM),通过ollama create打包成自己的模型并ollama run,适合离线环境或需要精细控制采样参数与对话模板的场景; - 工具调用:借助 Ollama 的工具调用支持与 Qwen 的
<tools>模板约定,将模型接入外部函数与 Agent 应用,并可通过http://localhost:11434/v1/的 OpenAI 兼容 API 接入现有代码。
结合 README.md 的实践建议,运行 Qwen3 时务必注意核对 Ollama 标签指向,并通过/set parameter num_ctx与num_predict合理配置上下文,避免默认 2048 token 旋转上下文带来的生成质量问题。
【免费下载链接】Qwen1.5Qwen3 is the large language model series developed by Qwen team, Alibaba Cloud.项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen1.5
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考