Ollama 是一个强大的本地大模型部署工具,它通过简洁的命令行和丰富的 API,让开发者能在个人电脑上轻松运行和管理前沿的开源模型。本文将带你全面了解 Ollama 的核心用法,从基础的客户端命令、对话指令,到进阶的 API 集成与性能优化。
Ollama 完全指南:从命令行到API的本地大模型部署实战
Ollama 简介
Ollama 是一个开源的本地大模型部署工具,旨在简化大型语言模型(LLM)的运行和管理。通过简单命令,用户可以在消费级设备上快速启动和运行开源模型(如 Llama、DeepSeek 等),无需复杂配置。它提供 OpenAI 兼容的 API,支持 GPU 加速,并允许自定义模型开发。
核心命令行操作
模型管理高频命令
运行 ollama help 可查看所有命令,以下是高频命令总结:
| 命令 | 作用描述 |
|---|---|
ollama serve | 启动 Ollama 服务(后台运行) |
ollama create | 通过 Modelfile 创建自定义模型 |
ollama run <模型名> | 运行指定模型(如 ollama run llama3 --gpu) |
ollama list | 列出所有已下载模型 |
ollama ps | 查看正在运行的模型 |
ollama rm <模型名> | 删除指定模型 |
ollama pull <模型名> | 从注册表拉取模型(如 ollama pull deepseek-r1:70b) |
ollama stop <模型名> | 停止正在运行的模型 |
ollama show <模型名> | 显示模型详细信息 |
ollama cp <源> <目标> | 复制模型创建别名 |
模型下载与运行
下载并运行模型非常简单,一条命令即可完成:
ollama run llama3.2运行命令后会自动下载模型文件(体积较大,请耐心等待,取决于网络速度和模型大小)。下载完成后,终端会显示输入提示,即可直接与模型进行对话。
其他常见模型运行命令:
- DeepSeek-R1:
ollama run deepseek-r1 - Llama 3.2 Vision:
ollama run llama3.2-vision - Phi 4:
ollama run phi4 - Mistral:
ollama run mistral - Code Llama:
ollama run codellama
对话交互技巧
基础对话
在终端直接和模型互动,例如输入:
你是谁?模型会即时响应。每次对话结束,可通过 Ctrl+D 退出,或直接关闭窗口。
多行输入
使用 """ 包装文本输入多行内容:
>>> """你好,
... 帮我写一段Python求和代码
... """多模态模型使用
如果需要让模型分析图片(多模态模型),直接在命令里带上图片路径:
ollama run gemma3 "这张图片里有什么?/Users/xxx/Desktop/test.png"API 调用详解
Ollama 内置 HTTP RESTful API,默认监听在 localhost:11434。你可以通过 Apifox 等工具或直接用代码访问。
核心 API 端点
| API 端点 | 方法 | 功能描述 |
|---|---|---|
/api/generate | POST | 生成文本响应 |
/api/chat | POST | 生成聊天对话中的下一条消息 |
/api/create | POST | 创建模型 |
/api/tags | GET | 列出本地可用的模型 |
/api/show | POST | 显示模型的详细信息 |
/api/copy | POST | 复制模型 |
/api/delete | DELETE | 删除模型 |
/api/pull | POST | 从Ollama库下载模型 |
/api/push | POST | 将模型上传到Ollama库 |
/api/embed | POST | 生成文本的嵌入向量 |
/api/ps | GET | 列出当前加载到内存中的模型 |
/api/version | GET | 获取Ollama版本信息 |
生成文本响应
使用 /api/generate 端点根据给定的提示生成文本响应:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt": "Why is the sky blue?",
"stream": false
}'请求参数说明:
model: 需调用的已下载模型名prompt: 输入的提示文本,即你想问的问题stream: 是否流式输出(true或false)
响应示例:
{
"model": "llama3.2",
"response": "The sky is blue because...",
"done": true
}聊天对话
使用 /api/chat 端点生成聊天对话中的下一条消息,支持对话历史:
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2",
"messages": [
{ "role": "user", "content": "why is the sky blue?" }
]
}'响应示例:
{
"message": {
"role": "assistant",
"content": "Hello! How are you today?"
}
}模型管理 API
列出本地模型
curl http://localhost:11434/api/tags响应示例:
{
"models": [
{
"name": "llama3:latest",
"size": 3825819519
}
]
}创建模型
curl http://localhost:11434/api/create -d '{
"model": "mario",
"from": "llama3.2",
"system": "You are Mario"
}'使用 Python 调用 API
Ollama 提供了原生的 Python 客户端库,方便集成:
import ollama
response = ollama.chat(
model='llama3.2',
messages=[
{'role': 'user', 'content': 'Explain Python decorators in simple terms.'}
]
)
print(response['message']['content'])安装 Python 库[citation-5]:
pip install ollama使用 JavaScript 调用 API
Ollama 也提供了 JavaScript 库:
import ollama from "ollama";
const response = await ollama.chat({
model: "llama3.2",
messages: [{ role: "user", content: "Why is the sky blue?" }],
});
console.log(response.message.content);安装 JavaScript 库:
npm install ollama高级特性
自定义模型创建
通过 Modelfile 可以创建自定义模型,就像 Dockerfile 一样定义模型行为。
Modelfile 示例:
FROM mistral
SYSTEM "You are Dev_assistant, a witty assistant who always replies with puns but is also extremely helpful."
PARAMETER temperature 0.8Modelfile 指令说明:
| 指令 | 描述 | 示例 |
|---|---|---|
FROM | 基础模型 | FROM mistral |
SYSTEM | 系统提示词 | You are a helpful assistant |
PARAMETER | 修改模型参数 | PARAMETER temperature 0.8 |
ADD | 添加文件 | ADD config.json /app/config.json |
创建和运行自定义模型:
# 创建模型
ollama create Dev_assistant -f Modelfile
# 运行自定义模型
ollama run Dev_assistant上下文长度调优
Context Length(上下文长度)是模型能"记住"的对话/文本内容上限,单位是 token。Ollama 默认是 4096 个 token,但可以根据需要调整。
设置方法:
OLLAMA_CONTEXT_LENGTH=64000 ollama serve验证设置是否生效:执行 ollama ps,查看输出中的 CONTEXT 列,数值就是当前生效的上下文长度。
⚠️ 注意:调大上下文长度会消耗更多显存,需根据硬件配置合理设置。
模型量化
如果显卡显存不够,可通过"量化"牺牲一点点精度,换更快的运行速度:
# 把FP16格式的gemma3模型量化成q4_K_M(平衡速度和精度)
ollama create --quantize q4_K_M my-quant-model -f Modelfile常用量化级别:
q8_0:8位,精度高q4_K_M:4位,速度快q4_K_S:4位,超轻量化
实用技巧与最佳实践
模型存储路径优化
默认路径可能占用系统盘空间,可以通过环境变量修改:
Windows:新建系统变量 OLLAMA_MODELS,路径设为 D:\ollama\models
Linux/macOS:
echo 'export OLLAMA_MODELS=/path/to/your/models' >> ~/.bashrc
source ~/.bashrc性能监控
使用 --verbose 参数监控资源消耗:
ollama run deepseek-r1:70b --verbose输出示例:
total duration: 12m1.056s # 总耗时
load duration: 1.810s # 模型加载时间
eval rate: 2.09 tokens/s # 生成速度常见问题处理
模型下载卡在 99%
Ctrl+C 取消下载 → 再次运行 `ollama pull <模型名>`
# 进度保留,后续速度可能恢复正常删除无用模型释放空间
ollama rm 模型名 # 删除指定模型
ollama prune # 清理未引用的文件安全加固
默认风险:Ollama 默认监听 0.0.0.0:11434,可能暴露公网。
解决方案:
# 仅允许本地访问
export OLLAMA_HOST=127.0.0.1:11434
# 或通过环境变量设置
OLLAMA_HOST=127.0.0.1:11434 ollama serve云模型与 Web 搜索
云模型
Ollama 支持云模型,可以在本地运行更大的模型:
ollama run qwen3-coder:480b-cloud可用的云模型:
qwen3-coder:480b-cloudgpt-oss:120b-clouddeepseek-v3.1:671b-cloud
Web 搜索 API
Ollama 提供了 Web 搜索 API,可以增强模型的最新信息获取能力。
cURL 示例:
curl https://ollama.com/api/web_search \
--header "Authorization: Bearer $OLLAMA_API_KEY" \
-d '{"query": "what is ollama?"}'Python 示例:
import ollama
response = ollama.web_search("What is Ollama?")
print(response)集成 Open WebUI
可以通过 Docker Compose 部署 Open WebUI,获得图形化界面:
version: '3.8'
services:
webui:
image: ghcr.io/open-webui/open-webui:main
container_name: ollama-webui
ports:
- "3000:8080"
volumes:
- ./webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://127.0.0.1:11434
restart: unless-stopped访问地址:http://IP:3000
总结
Ollama 为本地大模型部署提供了简洁而强大的解决方案。通过本文介绍的客户端命令、对话指令和 API 调用方法,你可以快速上手并深入使用 Ollama。无论是基础模型运行、自定义模型创建,还是通过 API 集成到应用中,Ollama 都能满足你的需求。
硬件建议:
- 7B 模型需至少 8GB 内存
- 13B 模型需 16GB 内存
- 33B 模型需 32GB 内存
安全第一:避免将 Ollama 端口暴露公网,定期更新版本。
模型选择:根据需求选择,DeepSeek 适合代码生成,Qwen 适合多语言任务。