复制成功
请遵守本站许可
REPORT
Chapter_Post // Field_Report

Post_Ref: RL-OLLAMA使用

2026.03.24

Ollama使用指南

Echo HaoRan
Echo HaoRan
#技术手册
ANALYSIS

概述#

Ollama 是一个开源的大语言模型运行框架,支持在本地运行 Llama、Gemma、Mistral、Qwen 等多种开源模型。它提供了两种主要的使用方式:

  • CLI 命令行:直接在终端中与模型交互
  • REST API:通过 HTTP 接口集成到应用程序中

本文将详细介绍 Ollama 的完整使用方法,帮助您快速上手并充分利用其功能。


安装与验证#

安装 Ollama#

Windows#

PRTCL // POWERSHELL
Terminal window
# 下载安装包
# 访问 https://ollama.ai/download 下载 Windows 版本
# 运行安装程序
# 安装完成后,Ollama 会自动启动服务
# 验证安装
ollama --version

macOS#

PRTCL // BASH
Terminal window
# 使用 Homebrew 安装
brew install ollama
# 验证安装
ollama --version

Linux#

PRTCL // BASH
Terminal window
# 一键安装脚本
curl -fsSL https://ollama.ai/install.sh | sh
# 验证安装
ollama --version

验证服务状态#

PRTCL // BASH
Terminal window
# 检查服务是否运行
curl http://localhost:11434/api/tags
# 或者使用 CLI
ollama list

基础命令#

下载模型#

PRTCL // BASH
Terminal window
# 下载模型
ollama pull llama3.2:3b
# 下载指定版本
ollama pull qwen2.5:7b-instruct
# 下载量化模型(更小更快)
ollama pull mistral:7b-q4_K_M
# 查看可用模型
ollama search llama

运行模型#

PRTCL // BASH
Terminal window
# 交互式对话
ollama run llama3.2:3b
# 单次提示
ollama run llama3.2:3b "你好,请介绍一下自己"
# 指定参数运行
ollama run llama3.2:3b --temperature 0.7 "写一首关于春天的诗"
# 使用 stdin 输入
echo "解释量子力学" | ollama run llama3.2:3b

查看模型列表#

PRTCL // BASH
Terminal window
# 列出已下载的模型
ollama list
# 查看模型详细信息
ollama show llama3.2:3b
# 查看模型参数
ollama show llama3.2:3b --modelfile

删除模型#

PRTCL // BASH
Terminal window
# 删除指定模型
ollama rm llama3.2:3b
# 删除所有模型(谨慎使用)
ollama list | awk '{print $1}' | xargs -I {} ollama rm {}

REST API 使用#

基础 API 端点#

端点方法说明
/api/generatePOST生成文本
/api/chatPOST多轮对话
/api/tagsGET列出模型
/api/showPOST查看模型信息
/api/copyPOST复制模型
/api/deleteDELETE删除模型

生成文本#

PRTCL // BASH
Terminal window
# 非流式输出
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "写一个 Python Hello World 程序",
"stream": false
}'
# 流式输出
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "写一个 Python Hello World 程序",
"stream": true
}'

多轮对话#

PRTCL // BASH
Terminal window
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2:3b",
"messages": [
{
"role": "user",
"content": "你好,请问你能帮我做什么?"
},
{
"role": "assistant",
"content": "我可以帮你写代码、回答问题、翻译文本等。"
},
{
"role": "user",
"content": "那帮我写一个快速排序算法吧"
}
],
"stream": false
}'

列出模型#

PRTCL // BASH
Terminal window
curl http://localhost:11434/api/tags

Python 示例#

PRTCL // PYTHON
import requests
import json
# 生成文本
def generate_text(prompt, model="llama3.2:3b", stream=False):
url = "http://localhost:11434/api/generate"
payload = {
"model": model,
"prompt": prompt,
"stream": stream
}
response = requests.post(url, json=payload)
return response.json()
# 多轮对话
def chat(messages, model="llama3.2:3b", stream=False):
url = "http://localhost:11434/api/chat"
payload = {
"model": model,
"messages": messages,
"stream": stream
}
response = requests.post(url, json=payload)
return response.json()
# 使用示例
if __name__ == "__main__":
# 生成文本
result = generate_text("写一个 Python Hello World 程序")
print(result["response"])
# 多轮对话
messages = [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!有什么我可以帮助你的吗?"},
{"role": "user", "content": "帮我写一个快速排序算法"}
]
result = chat(messages)
print(result["message"]["content"])

JavaScript 示例#

PRTCL // JAVASCRIPT
// 生成文本
async function generateText(prompt, model = "llama3.2:3b") {
const response = await fetch("http://localhost:11434/api/generate", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
model: model,
prompt: prompt,
stream: false,
}),
});
const data = await response.json();
return data.response;
}
// 多轮对话
async function chat(messages, model = "llama3.2:3b") {
const response = await fetch("http://localhost:11434/api/chat", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
model: model,
messages: messages,
stream: false,
}),
});
const data = await response.json();
return data.message.content;
}
// 使用示例
(async () => {
// 生成文本
const result = await generateText("写一个 Python Hello World 程序");
console.log(result);
// 多轮对话
const messages = [
{ role: "user", content: "你好" },
{ role: "assistant", content: "你好!有什么我可以帮助你的吗?" },
{ role: "user", content: "帮我写一个快速排序算法" },
];
const chatResult = await chat(messages);
console.log(chatResult);
})();

参数配置#

生成参数#

参数类型默认值说明
temperaturefloat0.7控制输出的随机性(0-1)
top_pfloat0.9核采样概率
top_kint40保留前 k 个最高概率的词
num_predictint-1最大生成的 token 数(-1 表示无限制)
num_ctxint2048上下文窗口大小
repeat_penaltyfloat1.1重复惩罚
repeat_last_nint64重复惩罚的上下文范围
seedint0随机种子(0 表示随机)
stoparray[]停止词列表
formatstring""输出格式(json)

参数配置示例#

PRTCL // BASH
Terminal window
# 创意写作(高温度)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "写一个关于 AI 的故事",
"temperature": 0.9,
"top_p": 0.95,
"stream": false
}'
# 代码生成(低温度)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "写一个 Python 快速排序函数",
"temperature": 0.2,
"top_p": 0.95,
"stream": false
}'
# 结构化输出(JSON 格式)
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "生成一个 JSON 格式的用户信息,包含 name、age、email 字段",
"format": "json",
"stream": false
}'
# 自定义停止词
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2:3b",
"prompt": "列出三个编程语言",
"stop": ["\n\n"],
"stream": false
}'

CLI 参数配置#

PRTCL // BASH
Terminal window
# 指定温度
ollama run llama3.2:3b --temperature 0.9 "写一个创意故事"
# 指定最大输出长度
ollama run llama3.2:3b --num_predict 500 "写一篇文章"
# 指定上下文窗口
ollama run llama3.2:3b --num_ctx 4096 "分析这段长文本"
# 组合参数
ollama run llama3.2:3b \
--temperature 0.7 \
--top_p 0.9 \
--top_k 40 \
--num_predict 1000 \
--num_ctx 2048 \
"写一篇技术文章"

高级功能#

自定义模型(Modelfile)#

创建自定义模型配置文件 Modelfile

PRTCL // PLAINTEXT
FROM llama3.2:3b
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
SYSTEM """
你是一个专业的代码助手,擅长回答编程相关的问题。
回答时要简洁明了,必要时提供代码示例。
"""
TEMPLATE """
{{- range .Messages }}
{{- if eq .Role "user" }}User: {{ .Content }}
{{- else if eq .Role "assistant" }}Assistant: {{ .Content }}
{{- end }}
{{- end }}
Assistant:
"""

创建模型:

PRTCL // BASH
Terminal window
# 从 Modelfile 创建模型
ollama create my-model -f Modelfile
# 运行自定义模型
ollama run my-model
# 查看模型信息
ollama show my-model --modelfile

模型微调#

PRTCL // BASH
Terminal window
# 创建基础模型 Modelfile
cat > base-modelfile << EOF
FROM llama3.2:3b
PARAMETER temperature 0.1
EOF
# 创建模型
ollama create my-base-model -f base-modelfile
# 准备训练数据(JSONL 格式)
cat > training-data.jsonl << EOF
{"user": "什么是机器学习?", "assistant": "机器学习是人工智能的一个分支..."}
{"user": "什么是深度学习?", "assistant": "深度学习是机器学习的子集..."}
EOF
# 注意:Ollama 本身不支持微调,需要使用其他工具如 LLaMA-Factory
# 这里只是展示数据格式

模型复制与共享#

PRTCL // BASH
Terminal window
# 复制模型
ollama copy llama3.2:3b my-llama3.2:3b
# 导出模型
ollama export my-llama3.2:3b > my-model.gguf
# 导入模型
ollama import my-model.gguf

并发请求#

PRTCL // PYTHON
import requests
import asyncio
import aiohttp
async def generate_text_async(session, prompt, model="llama3.2:3b"):
url = "http://localhost:11434/api/generate"
payload = {
"model": model,
"prompt": prompt,
"stream": False
}
async with session.post(url, json=payload) as response:
return await response.json()
async def main():
prompts = [
"写一个 Python Hello World 程序",
"解释什么是机器学习",
"写一个快速排序算法"
]
async with aiohttp.ClientSession() as session:
tasks = [generate_text_async(session, prompt) for prompt in prompts]
results = await asyncio.gather(*tasks)
for result in results:
print(result["response"])
if __name__ == "__main__":
asyncio.run(main())

性能优化#

量化模型#

PRTCL // BASH
Terminal window
# 下载量化模型
ollama pull llama3.2:3b-q4_K_M
# 量化等级对比
# q4_K_M: 4-bit 量化,平衡精度和速度
# q4_K_S: 4-bit 量化,更小更快
# q5_K_M: 5-bit 量化,精度更高
# q8_0: 8-bit 量化,精度最高
# 查看模型大小
ollama list

批量处理#

PRTCL // PYTHON
import requests
def batch_generate(prompts, model="llama3.2:3b"):
results = []
for prompt in prompts:
payload = {
"model": model,
"prompt": prompt,
"stream": False
}
response = requests.post(
"http://localhost:11434/api/generate",
json=payload
)
results.append(response.json()["response"])
return results
# 使用示例
prompts = ["问题 1", "问题 2", "问题 3"]
results = batch_generate(prompts)
for i, result in enumerate(results):
print(f"问题 {i+1}: {result}")

缓存优化#

PRTCL // BASH
Terminal window
# 设置模型保活时间(避免重复加载)
export OLLAMA_KEEP_ALIVE=30m
# 或在 Modelfile 中设置
PARAMETER keep_alive 30m

GPU 加速#

PRTCL // BASH
Terminal window
# 检查 GPU 是否可用
nvidia-smi
# 启用 GPU 加速
# Ollama 会自动检测并使用 GPU
# 如果 GPU 不可用,检查 NVIDIA 驱动
sudo apt install nvidia-driver-525
sudo systemctl restart ollama

常见使用场景#

文本生成#

PRTCL // BASH
Terminal window
# 创意写作
ollama run llama3.2:3b "写一个关于未来的科幻短篇故事"
# 生成标题
ollama run llama3.2:3b "为这篇关于 AI 的文章生成 5 个吸引人的标题"
# 生成摘要
ollama run llama3.2:3b "为以下文本生成摘要:[长文本内容]"

代码生成#

PRTCL // BASH
Terminal window
# 生成代码
ollama run codellama:7b "写一个 Python 快速排序函数"
# 代码解释
ollama run codellama:7b "解释以下代码的作用:[代码]"
# 代码调试
ollama run codellama:7b "找出以下代码中的 bug 并修复:[有 bug 的代码]"

文本处理#

PRTCL // BASH
Terminal window
# 翻译
ollama run llama3.2:3b "将以下中文翻译成英文:你好,世界"
# 摘要
ollama run llama3.2:3b "为以下文章生成摘要:[文章内容]"
# 关键词提取
ollama run llama3.2:3b "从以下文本中提取关键词:[文本内容]"
# 情感分析
ollama run llama3.2:3b "分析以下评论的情感倾向:[评论内容]"

问答系统#

PRTCL // BASH
Terminal window
# 知识问答
ollama run llama3.2:3b "什么是机器学习?"
# 数学计算
ollama run llama3.2:3b "计算 123 × 456"
# 逻辑推理
ollama run llama3.2:3b "如果所有的猫都喜欢鱼,而小白是一只猫,那么小白喜欢鱼吗?"

与 OpenClaw 集成#

配置 OpenClaw 使用 Ollama#

PRTCL // YAML
~/.openclaw/config/models.yaml
providers:
- name: "ollama"
type: "local"
baseUrl: "http://localhost:11434"
api: "openai-completions"
models:
- id: "ollama/llama3.2:3b"
name: "Llama 3.2 3B"
capabilities:
- "text"
- "code"
- id: "ollama/qwen2.5:7b"
name: "通义千问 7B"
capabilities:
- "text"
- "code"
- "tool"
defaultModel: "ollama/qwen2.5:7b"

测试连接#

PRTCL // BASH
Terminal window
# 测试 Ollama 服务
curl http://localhost:11434/api/tags
# 测试 OpenClaw 连接
openclaw model test ollama/qwen2.5:7b

监控与调试#

查看日志#

PRTCL // BASH
Terminal window
# 查看 Ollama 服务日志
# macOS/Linux
tail -f ~/.ollama/logs/server.log
# Windows
type %USERPROFILE%\.ollama\logs\server.log
# Docker 部署
docker logs -f ollama

性能监控#

PRTCL // BASH
Terminal window
# 查看资源使用
# CPU
top
# 内存
free -h
# GPU
nvidia-smi
# 磁盘
df -h

调试模式#

PRTCL // BASH
Terminal window
# 启用调试日志
export OLLAMA_DEBUG=1
# 重新启动服务
ollama serve
# 查看详细日志

最佳实践#

  • 选择合适的模型:根据任务复杂度选择模型大小
  • 使用量化模型:在精度和性能之间找到平衡
  • 调整参数:根据任务类型调整 temperature、top_p 等参数
  • 启用流式输出:提升用户体验
  • 使用缓存:避免重复加载模型
  • 监控资源:及时发现问题
  • 备份数据:定期备份模型数据
  • 更新版本:获取最新功能和修复
  • 安全配置:生产环境使用 HTTPS 和认证
  • 日志管理:配置日志轮转,避免磁盘占满

故障排查#

模型加载慢#

症状:首次运行模型时加载时间很长

解决方案

PRTCL // BASH
Terminal window
# 使用量化模型
ollama pull llama3.2:3b-q4_K_M
# 增加 GPU 内存
# 在 Docker 中配置
--gpus all
# 减少模型大小
ollama pull llama3.2:3b

响应慢#

症状:生成文本速度慢

解决方案

PRTCL // BASH
Terminal window
# 启用 GPU 加速
nvidia-smi
# 使用量化模型
ollama pull llama3.2:3b-q4_K_M
# 减少上下文长度
--num_ctx 1024
# 减少输出长度
--num_predict 500

内存不足#

症状:程序崩溃或 OOM 错误

解决方案

PRTCL // BASH
Terminal window
# 减少并发数
export OLLAMA_NUM_PARALLEL=1
# 减少模型大小
ollama pull llama3.2:3b
# 减少上下文长度
--num_ctx 1024
# 释放未使用的模型
ollama rm unused-model

API 调用失败#

症状:HTTP 请求失败

解决方案

PRTCL // BASH
Terminal window
# 检查服务状态
curl http://localhost:11434/api/tags
# 检查防火墙
sudo ufw allow 11434
# 检查端口占用
sudo netstat -tlnp | grep 11434

相关资源#


最后更新: 2026-03-24 作者: EchoHaoRan

关于我#

项目内容
编辑echowang
来源echospace
邮箱echohaoran@gmail.com
简介AI 爱好者,专注于大语言模型应用与智能体开发,分享技术与实践心得
社交欢迎交流讨论,共同成长
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.03.24
// END OF POST

订阅

通过 RSS 订阅本站,新文章发布时第一时间收到通知。

Follow
Classified
Chapter_06
Protocol_Ref: CC-BY-NC-SA-4.0

Ollama使用指南

Author: CHONGXIReleased: 2026.03.24

Licensed under CC BY-NC-SA 4.0

评论

© 2025-2026 EchoSpace
Powered by Astro & echohaoran Non-Collaborative_Entity // Protocol_V.4.21