Appearance
Ollama
本笔记为Linux系统下Ollama的使用教程, 其他系统近似,但部分命令可能需要调整。
1. Ollama基础使用
1.1安装Ollama
- 访问
https://ollama.com/download/,根据系统下载ollma安装文件,Linux使用命令curl -fsSL https://ollama.com/install.sh | sh进行安装 - 若无法使用
install.sh进行安装,可以到https://github.com/ollama/ollama/releases手动下载,然后根据install.sh中的目录,进行解压,比如对于Linux,解压的目录为/usr/local,命令为sudo tar -xzf ollama-linux-amd64.tgz -C /usr/local - 检查安装,查看版本:
ollama --version
1.2 启动Ollama
- 若没有 ollama 服务运行,使用
ollama serve启动一个 ollama 服务, 打开新的终端,即可使用ollama
1.3 Ollama常用命令
ollama serve:启动一个 ollama 服务,启动后,就可以使用 ollama 命令执行任务,若 ollama 在后台服务中运行,则不需要使用该命令。若需要指定端口:OLLAMA_HOST=0.0.0.0:8000 ollama serve。后台运行:ollama serve &ollama pull:下载模型到本地,可用模型可在https://ollama.com/search查看,比如可以使用ollama pull qwen3:8b下载qwen3的8b版本ollama list:查看已经下载的模型ollama show:显示模型信息,比如ollama show llama2ollama run:运行已经下载的模型,比如已经下载了llama2模型,则可以使用ollama run llama2来运行ollama rm:删除已经下载的模型ollama create -f:从 Modelfile 创建自定义模型,比如ollama create my-model -f ./Modelfileollama push:将模型推送到 Ollama 仓库,比如ollama push my-modelollama ps:列出正在运行的模型ollama stop:停止一个正在运行的模型,若qwen3正在运行,使用ollama stop qwen3即可停止ollama cp:复制一个模型,比如ollama cp llama2 backup
1.4 Ollama 相关配置
模型默认下载位置:
~/.ollama/models/更改模型下载位置:
export OLLAMA_MODELS=/custom/path,然后重新启动 ollama 即可修改 Ollama 端口:设置
OLLAMA_HOST- 比如允许监听所有网络接口,允许外部访问:
export OLLAMA_HOST=0.0.0.0:8080 - 若仅允许本地连接:
export OLLAMA_HOST=127.0.0.1:8080
- 比如允许监听所有网络接口,允许外部访问:
Ollama 安装时会使用
lspci和lshw,若未安装,则可以使用命令安装- bash
# 安装 lspci sudo apt-get update sudo apt-get install -y pciutils - bash
# 安装 lshw sudo apt-get update sudo apt-get install -y lshw
1.5 Ollama 交互式聊天
ollama run qweb3:8b启动交互式对话环境- 交互模式命令:
/set:设置模型的参数和行为- 比如
temperature、top_p、top_k、num_predict、repeat_penalty,使用/set parameter temperature 0进行设置 /set system your-prompt设置提示词
- 比如
/show:显示当前模型的信息和配置/load:加载另一个模型,或者加载之前保存的会话/save:保存历史对话,如/save python/clear:清楚当前会话历史,开始新的对话/bye:退出/?:显示帮助信息
1.6 Ollama 支持的模型
- 可从
https://ollama.com/library查看所有Ollama官方支持的模型,点击模型名称即可进入详情页,在详情页中,会显示模型支持的能力和参数量,Models会显示当前模型的不同版本,点击右侧的View all可以查看该模型所有的版本(包括不同量化版本,比如qwen3-vl:32b-instruct-q4_K_M、qwen3-vl:32b-instruct-bf16) - Ollama还支持从
HuggingFace中下载模型并通过配置Modelfile来使用社区模型
2. Ollama加载自定义模型
Ollama 可以通过配置
Modelfile来加载自定义的模型,常用的模型文件为gguf格式的模型文件
gguf:GPT-Generated Unified Format,是一种存储大型语言模型的文件格式,将模型的所有组件(权重、配置、元数据等)统一打包在一个文件中,支持多种量化级别
2.1 通过 Modelfile 加载 gguf 模型
HuggingFace中有成千上万的官方模型和社区模型,并且往往能够找到全面的量化版本
一些最新的模型也往往及时发布在HuggingFace社区,即使Ollama官方还未收录
步骤如下:
下载需要的 gguf 模型文件,例如:
Qwen3-8B-128K-Q8_0.gguf,可从HuggingFace中找到配置
Modelfile如下:# 指定本地 gguf 文件 FROM /root/dev/ollama/Qwen3-8B-Q8_0.gguf # 设置参数 PARAMETER temperature 0.2 # 设置 prompt SYSTEM """ 你是一个有丰富经验的Rust开发者。 """ # 定义模型的对话格式,不同模型可能会使用不同的消息格式 # 对于Qwen3-8B-Q8_0.gguf,若不定义下方格式,则Ollama不知何时结束模型响应 TEMPLATE """ <|im_start|>system {{ .System }}<|im_end|> <|im_start|>user {{ .Prompt }}<|im_end|> <|im_start|>assistant """
Ollama创建模型:使用命令
ollama create rustqwen -f Modelfile来通过Modelfile创建模型,Ollama会自动加载gguf模型文件创建一个本地模型Ollama启动模型:从本地gguf文件创建好模型后,就可以使用
ollama run rustqwen来启动该模型,此时你可以询问它擅长哪个编程语言,模型应该能够回答擅长 Rust 语言,并且能够在合适的时间点结束对话,而不是无限输出响应。
3. Ollama API
- Ollama API Doc
- Ollama 启动后,会在本地端口提供 Restful API 风格的服务,可以使用多种工具来使用API,以达到交互效果
- 由于 API 服务同 Ollama命令相似,仅仅是通过API调用的形式来使用,故本文不会特别详细的介绍,具体可参阅Ollama文档
- 本文使用 Python
requests库来使用API端口- 在使用 Ollama时,如需要前置服务(如用户认证、消息队列优化等)以及更全面的后端服务,可以通过Fastapi集成的方式来调用Ollama API
TIP
没有模型运行时,Ollama会自动启动对应 name 的模型,并保持5分钟,5分钟内再次请求,不会重新加载模型,若5分钟没有请求,会自动关闭该模型服务
3.1 启动Ollama
Ollama服务时独立运行的,安装后,会自动在后台启动服务,监听在
http://localhost:11434端口,可通过ps aux | grep ollama查看后台是否运行 Ollama服务若没有 Ollama 服务,可以通过
ollama serve来启动,此时就可以通过 11434 端口来使用Ollama APIAPI 端口:基本同Ollama命令功能一致
- 回答补全(文本补全):
POST /api/generate - 对话补全:
POST /api/chat - 创建模型:
POST /api/create - 复制模型:
POST /api/copy - 删除模型:
DELETE /api/delete - 列出运行中的模型:
GET /api/ps - 列出本地模型:
GET /api/tags - 查看模型信息:
POST /api/show - 下载模型:
POST /api/pull - 生成文本嵌入:
POST /api/embed,并不是所有模型都支持该功能
- 回答补全(文本补全):
3.2 Python中使用 Ollama API
在python中使用 requests 来请求Ollama api,较为简单,故本节仅提供部分示例
使用
/api/generate进行文本补全:- python
import requests import json BASE_URL = "http://localhost:11434" ollama_api_url = f"{BASE_URL}/api/generate" # 构造数据 data = { 'model': 'qwen3:8b', # 指定模型名,Ollama会使用该模型进行响应 'prompt': 'UE引擎的蓝图是什么?', 'stream': False, 'options': { 'temperature': 0.2, 'top_p': 0.9, 'max_tokens': 100 } } response = requests.post(ollama_api_url, json=data) result = response.json() print(result["response"])
使用
/api/tags查看本地已下载模型列表:- python
# /api/tags: 获取已下载模型列表 def list_models(): url = f'{BASE_URL}/api/tags' response = requests.get(url) if response.status_code == 200: data = response.json() return data['models'] else: print('Error: list_models---', response.status_code) return [] models = list_models() for model in models: print(model['name'])
使用
/api/chat进行多轮对话:- python
chat_history = [] def chat(): url = f'{BASE_URL}/api/chat' ''' messages (list): 对话历史,格式: [ {"role": "system", "content": "系统提示词"}, {"role": "user", "content": "用户消息"}, {"role": "assistant", "content": "助手回复"} ] 返回响应: { "message": { "role": "assistant", "content": "这里是文本内容", "think": "Think 的内容" }, "done": false } ''' chat_history.append( { 'role': 'user', 'content': 'UE引擎的蓝图是什么?' } ) data = { 'model': 'qwen3:8b', 'messages': chat_history, 'stream': True, 'options': { 'temperature': 0, } } response = requests.post(url, json=data, stream=data['stream']) full_response = '' for line in response.iter_lines(): if line: chunk = json.loads(line) message = chunk.get('message', {}) if message.get('think', ''): print(message.get('think'), end='', flush=True) if message.get('content', ''): full_response += message.get('content') print(message.get('content'), end='', flush=True) if chunk.get('done'): chat_history.append({ 'role': 'assistant', 'content': full_response }) print() break chat()
4. WebUI 中使用 Ollama 服务
OpenWebUI 是由 Rust 语言编写的功能强大的 webui 库,用于连接 LLM,并提供良好的交互体验
4.1 确保 Ollama 服务可用
- 安装 Ollama
- 启动Ollama,通常安装后会自动启动,若未启动,可以使用
ollama serve启动服务 - 下载需要使用的 LLM,比如 Qwen3:8b
- 验证Ollama API可用:可以通过查看本地下载的模型来验证,命令为
curl http://localhost:11434/api/tags
4.2 安装 WebUI
- pip 安装较为简单,推荐使用,安装命令:
pip install open-webui
4.3 启动 WebUI
启动:
open-webui serve默认会连接到 Ollama 服务
启动后,会看到提示信息:
- bash
# 你会看到类似这样的输出: # INFO: Started server process # INFO: Uvicorn running on http://0.0.0.0:8080
此时打开浏览器,访问
http://localhost:8080即可左上角模型选择中,若检测到 Ollama服务,默认会加载 Ollama 服务,可以通过下拉列表来切换不同的模型
4.4 相关配置
- 首次使用,需要填写注册信息,用于创建一个管理员账户,需要提供用户名和邮箱,并设置密码,本地使用,邮箱可以为虚假邮箱,符合格式即可
- 设置端口:WebUI默认端口为 8080,可以通过
open-webui serve --port 3000来指定端口