Ollama 工具使用教程:本地部署大模型、模型推荐、与 OpenAI/Claude 混用、模型库位置自定义
1. Ollama 是什么?适合谁用
Ollama 是一个用于**在本地拉取、运行和管理大语言模型(LLM)**的工具。它把模型下载、量化文件管理、推理服务(HTTP API)、命令行交互整合到一个工作流里。
适合:
-
需要离线/内网使用模型(隐私数据、本地知识库、代码仓库等)
-
想要低成本多模型切换、做对比评测
-
想在本地给 IDE、脚本、自动化工具提供一个可用的 LLM 服务
不适合/需要注意:
-
Ollama 主要聚焦 LLM / 多模态理解模型(如看图问答)。
-
图片生成(扩散模型)、**语音生成(TTS)**通常不直接由 Ollama 承载;更常见做法是“LLM 负责写提示词/脚本 + 专用生成工具负责出图/出声”。本文会给出组合方案。
2. 安装与基本命令
2.1 安装
-
macOS:官网下载或用 Homebrew(以官方文档为准)
-
Linux:官网下载或用官方安装脚本(以官方文档为准)
-
Windows:官网下载 MSI 安装
安装后确认版本:
ollama -v
2.2 拉取与运行
拉取模型:
ollama pull llama3.1
运行(交互式对话):
ollama run llama3.1
一次性提问:
ollama run llama3.1 "用三句话解释什么是所有权(Rust)"
查看本地已有模型:
ollama list
查看某个模型详情:
ollama show llama3.1
停止/查看运行中的模型(不同版本命令可能略有差异,以 ollama help 输出为准):
ollama ps
2.3 场景用例:用 Ollama 导入 Hugging Face 上的模型(GGUF)
很多人会在 Hugging Face(HF)上找到 GGUF 量化模型文件,希望“下载到本地并用 Ollama 跑起来”。这里需要先澄清一个关键点:
-
Ollama 的
ollama pull xxx主要拉取的是 Ollama 模型库中的模型。 -
HF 上的模型形态很多(Transformers 权重、safetensors、GGUF 等)。Ollama 更适合直接导入 GGUF(即 llama.cpp 生态的量化文件)。
下面给出一个通用、可复现的流程。
第 1 步:在 Hugging Face 找到“提供 GGUF 文件”的仓库
判断方式:仓库文件列表里能看到诸如:
-
*Q4_K_M.gguf、*Q5_K_M.gguf、*Q8_0.gguf等
一般来说:
-
Q4:更省资源、质量略降
-
Q5/Q6:更均衡
-
Q8:质量更好、占用更大
第 2 步:下载 GGUF 文件到本地
方式 A:使用 huggingface-cli(推荐)
# 需要先安装:pip install -U huggingface_hub
# 并登录(如需):huggingface-cli login
huggingface-cli download <ORG>/<REPO> \
--local-dir ./hf-models/<REPO> \
--local-dir-use-symlinks False \
--include "*.gguf"
方式 B:直接用浏览器/wget 下载(适合单文件)
wget -O ./model.gguf "https://huggingface.co/<ORG>/<REPO>/resolve/main/<FILE>.gguf"
提示:如果你在国内网络环境访问 HF 较慢,很多工具支持通过环境变量设置镜像站点(例如设置 HF_ENDPOINT)。是否可用取决于你使用的镜像服务与网络策略。
第 3 步:用 Modelfile 把 GGUF 导入为 Ollama 模型
在任意目录创建一个 Modelfile(名字就叫 Modelfile,无扩展名):
FROM ./model.gguf
# 可选:固化你的系统提示词
SYSTEM 你是一个中文编程助手,回答要给出可运行的代码与解释。
然后创建模型(这里把新模型命名为 hf-qwen-coder,你也可以换成自己的名字):
ollama create hf-qwen-coder -f Modelfile
第 4 步:运行验证
ollama run hf-qwen-coder
你也可以用一次性提问验证代码能力:
ollama run hf-qwen-coder "用 Rust 写一个并发安全的计数器示例(Arc + Mutex)。"
常见坑与排查
-
下载的不是 GGUF:如果仓库只有
*.safetensors,那通常不能直接被 Ollama 导入,需要先经过转换/量化到 GGUF(这属于另一个流程)。 -
GGUF 架构不匹配:某些 GGUF 对应特定架构/Tokenizer/上下文设置,导入后效果不佳或报错时,优先换同仓库的其他 GGUF 版本或确认模型说明。
-
磁盘空间不足:GGUF 文件往往很大,建议结合本文第 7 节把模型库迁移到大盘,并把下载目录也放到大盘。
3. HTTP API:把 Ollama 当作本地 LLM 服务
Ollama 默认会提供本地 HTTP 服务(通常是 http://127.0.0.1:11434)。你可以用它接入:
-
自己写的脚本(Python/Node/Go)
-
代理层(如 LiteLLM)
-
Web UI(如 Open WebUI 等)
3.1 生成式接口(示例:curl)
curl http://127.0.0.1:11434/api/generate \
-H 'Content-Type: application/json' \
-d '{
"model": "llama3.1",
"prompt": "写一个 Python 函数,输入列表返回去重后的列表(保持原顺序)"
}'
3.2 Chat 接口(示例:curl)
curl http://127.0.0.1:11434/api/chat \
-H 'Content-Type: application/json' \
-d '{
"model": "llama3.1",
"messages": [
{"role": "system", "content": "你是一个严谨的资深软件工程师。"},
{"role": "user", "content": "用 TypeScript 写一个 LRU Cache(只要核心实现)。"}
]
}'
3.3 Python 调用示例
import requests
url = "http://127.0.0.1:11434/api/chat"
payload = {
"model": "llama3.1",
"messages": [
{"role": "system", "content": "你是一个中文技术写作助手。"},
{"role": "user", "content": "写一段面向小学生的说明:什么是‘算法’?"}
]
}
r = requests.post(url, json=payload, timeout=300)
r.raise_for_status()
print(r.json()["message"]["content"])
4. 经典模型推荐(按用途)
说明:Ollama 的模型来源以其模型库/社区为主,不同平台、不同版本可用模型名可能略有差异。下面给的是“常见、好用、覆盖面广”的方向,并给出选型思路。
4.1 通用对话/知识问答
-
Llama 3.1(
llama3.1):通用能力强,英文较好,中文尚可。 -
Qwen 2.5(
qwen2.5/qwen2.5:xxb):中文与代码场景都很均衡,很多人本地首选。 -
Mistral(
mistral):轻量、速度快,适合资源有限机器。 -
Gemma 2(
gemma2):中小尺寸表现不错,适合做本地助手。 -
Phi-3(
phi3):体积小、速度快,适合边缘设备或快速原型。
选型要点:
-
机器资源少:优先中小模型 + 低量化(例如 Q4)
-
更稳的中文:优先 Qwen 系
-
更强通用:优先 Llama 3.x 系
4.2 写代码(Coding)
-
Qwen2.5-Coder(
qwen2.5-coder):代码能力强,中文注释/解释也不错。 -
DeepSeek-Coder(常见名如
deepseek-coder):代码补全与重构能力突出。 -
CodeLlama(
codellama):经典代码模型,生态成熟。 -
StarCoder2(
starcoder2):适合多语言代码生成与补全。
建议实践:
-
先用一个“主力代码模型”(如 Qwen2.5-Coder)
-
再配一个“快速小模型”(如 Phi-3 / Mistral 小尺寸)用于简单脚本、快速问答
4.3 写作文/写小说/面向小学生讲解(通俗表达)
这里分两类:
-
通用写作(结构化、长文、润色):Qwen2.5、Llama3.1
-
通俗解释(低龄化表达、类比):中等参数的通用模型往往就足够,关键是提示词
提示词模板(面向小学生):
请用小学三年级能听懂的方式解释:{概念}
要求:
- 不要使用专业术语(如果必须出现,要先解释)
- 给一个生活中的比喻
- 最后用 3 个要点总结
4.4 看图/读图(多模态“理解”,不是出图)
-
LLaVA 系(常见名如
llava):适合图片问答、OCR 辅助、图表解释(效果因版本而异)。
使用思路:
-
LLM 做“理解与描述”
-
需要“生成图片”时,用扩散模型工具(见下一节)
4.5 画图/画书(图片生成)与 Ollama 的关系
Ollama 的主场是 LLM,不是扩散模型推理框架。实际工程里更常见的组合是:
-
Ollama 上跑的 LLM 负责:
-
把你的想法整理成高质量绘图提示词(prompt)
-
生成分镜脚本、角色设定、风格约束
-
专用出图工具负责生成:
-
Stable Diffusion / SDXL(AUTOMATIC1111、ComfyUI 等)
-
FLUX.1(常见在其他推理框架/产品中使用)
示例:让 LLM 生成“绘本分镜提示词”:
你是儿童绘本导演。
请为主题《勇敢的小树苗》设计 8 页分镜。
每页输出:画面描述、角色表情动作、场景风格、色彩、镜头、以及适用于 Stable Diffusion 的英文提示词(含负面提示词)。
4.6 生成声音(TTS/语音克隆)与 Ollama 的关系
同样地,语音生成通常用专门的 TTS 引擎/模型:
-
Piper:轻量、本地部署方便
-
Coqui XTTS / XTTS-v2:跨语言/声音克隆能力强(具体以项目版本为准)
-
Bark:更偏“生成式语音/音色风格”探索
推荐组合:
-
Ollama:生成台词、分角色对白、情绪/语速标注
-
TTS:按脚本生成音频
脚本格式示例:
[旁白][温柔][中速] 今天,小树苗第一次迎来了大风……
[小树苗][紧张][稍快] 我会不会被吹倒?
[大树][沉稳][慢速] 抓紧泥土,深呼吸。
5. 与 OpenAI / Claude 的对比与混用
5.1 什么时候用 Ollama(本地)
-
数据不出内网:代码库、客户资料、机密文档
-
成本敏感:大量调用、批处理
-
可控性强:模型版本固定、可离线
5.2 什么时候用 OpenAI / Claude(云端)
-
追求更强的综合能力、工具调用生态
-
需要“更强的长上下文/更稳定的多模态能力”(取决于具体产品)
-
不想维护本地推理环境
5.3 一个实用的“混用”策略
-
日常:Ollama 本地模型(快、便宜)
-
遇到难题:切到云端(OpenAI/Claude)做最终审稿/复杂推理
工程上建议做一个统一的“Provider 抽象层”:
-
provider=ollama | openai | claude -
统一输入
messages,统一输出content -
失败自动 fallback(例如本地超时则走云端)
5.4 安全建议
-
API Key 放环境变量,不要写进仓库
-
记录脱敏日志(必要时对敏感字段打码)
6. 关于 OpenClaw 与 Claude:如何接入 Ollama
你提到的 OpenClaw 我无法确认你具体指的是哪一个项目(不同社区可能重名)。但大多数“多模型客户端/Agent 框架”的接入方式都类似:
-
它们通常支持:
-
“OpenAI 风格接口(chat/completions)”
-
或者“自定义 HTTP Provider”
-
你可以用两种方式接入 Ollama:
-
方式 A:直接按 Ollama 原生接口对接(
/api/chat、/api/generate) -
方式 B:用代理层把 Ollama 适配成 OpenAI 风格(推荐:LiteLLM)
如果 OpenClaw 支持配置一个“OpenAI 兼容 base_url”,常见做法是:
-
让 OpenClaw 指向 LiteLLM 的地址
-
LiteLLM 再指向 Ollama
这样你可以在同一套配置里同时用:
-
Ollama(本地)
-
OpenAI(云端)
-
Claude(云端)
Claude 的调用则通常需要:
-
在框架里配置
ANTHROPIC_API_KEY -
选择对应模型(如 Claude 3.x 系)
具体字段名、配置文件位置,请以 OpenClaw/框架的官方文档为准。
7. 模型库位置(Model Store)自定义:迁移到大硬盘/数据盘
很多人最关心的是:模型默认会占用大量磁盘空间,怎么把模型库挪到更大的盘。
7.1 默认模型目录(常见情况)
-
Linux/macOS:通常在
~/.ollama/models -
Windows:通常在用户目录下的
.ollama\\models
(以你的实际安装与版本为准。)
7.2 通过环境变量自定义模型目录(推荐)
Ollama 通常支持用环境变量指定模型目录:
export OLLAMA_MODELS=/data/ollama/models
然后重新启动 Ollama 服务,再拉取模型,模型文件就会落到新目录。
7.3 systemd 服务(Linux)里永久生效
如果你是 systemd 服务方式运行 Ollama,可以创建覆盖配置(示例路径):
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf >/dev/null <<'EOF'
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
EOF
sudo systemctl daemon-reload
sudo systemctl restart ollama
7.4 Docker 部署时的目录映射
如果你在 Docker 里跑 Ollama,一般用 volume 把模型目录映射到宿主机大盘:
docker run -d --name ollama \
-p 11434:11434 \
-e OLLAMA_MODELS=/models \
-v /data/ollama/models:/models \
ollama/ollama
8. 常用进阶技巧
8.1 自定义模型(Modelfile)
当你想把:
-
系统提示词(system prompt)
-
采样参数
-
模板
固化成一个“你自己的模型名”时,可以用 Modelfile(示意):
FROM llama3.1
SYSTEM 你是一个中文技术写作助手,输出结构化 markdown,严谨、可复现。
创建:
ollama create my-writer -f Modelfile
运行:
ollama run my-writer
8.2 在局域网提供服务(谨慎)
如果你要让同局域网的其他机器访问 Ollama,需要让服务监听非本地地址,并在网络层做访问控制(防火墙、反向代理、鉴权)。
注意:不要把 11434 直接暴露到公网。
9. 常见问题(FAQ)
Q1:为什么我感觉模型回答“变笨了”?
-
量化等级更低(更小的 Q 值)会更省资源,但质量可能下降
-
上下文过长、提示词过于发散也会影响质量
-
建议:固定一个基准提示词做对比测试,逐步换模型/换量化
Q2:本地跑不动大模型怎么办?
-
换更小参数的模型(7B/8B -> 3B/1.5B)
-
选择更轻量的量化
-
优先用“本地小模型 + 云端大模型兜底”的混用策略
10. 小结
-
Ollama 适合把 LLM 能力“本地化、服务化”。
-
写代码优先选代码模型(如 Qwen2.5-Coder / DeepSeek-Coder / CodeLlama)。
-
写作文/写小说/面向小学生讲解,通用模型也能胜任,关键在提示词与结构化输出。
-
画图与语音生成通常用专用工具,Ollama 更适合作为“脚本与提示词生成器”。
-
通过
OLLAMA_MODELS可以把模型库迁移到大盘,减少系统盘压力。

