- BiliBili视频
- 官网:https://ollama.com/
- GitHub: https://github.com/ollama/ollama
- 官方文档(GitHub):https://github.com/ollama/ollama/tree/main/docs
- 标签:对话型,客户端,开源大模型
网络
- 部分需要访问GitHub,可以使用Watt Toolkit免费工具访问
- 容器镜像,国内镜像被禁用,下载可查看该文档:https://wkdaily.cpolar.cn/archives/gc
- 其他均可直连访问及下载
安装
Docker
docker run -d -p 11434:11434 -e OLLAMA_HOST=0.0.0.0 --name ollama ollama/ollama # 挂载GPU(--gpus=all) docker run -d -p 11434:11434 -e OLLAMA_HOST=0.0.0.0 --name ollama --gpus=all ollama/ollama
Windows
- 打开官网 > "Download" > Windows图标 > "Download for Windows"
点击安装
Linux
打开官网 > "Download" > Linux图标 > 复制下载命令
curl -fsSL https://ollama.com/install.sh | sh
验证
验证ollama是否安装成功
# 打印Ollama版本 ollama -v # ollama version is 0.3.4 # 请求Ollama服务(Windows直接浏览器访问 http://localhost:11434 效果相同) curl localhost:11434 # Ollama is running
下载模型
- ollama相当于平台,运行需要另外下载模型
- 打开官网 > 右上角"Models" > 列表中选择一个模型
模型详情页中,可以切换模型版本,然后复制代码下载模型
- 大部分模型有多个版本,例如"8b"/"70b"/"405b"
# 查看已下载模型 ollama list # 拉取模型(在Ollama官网的"Models"模块中) ollama pull <模型名称>:<版本> # 示例 ollama pull qwen2 ollama pull qwen2:0.5b # 删除模型 ollama rm <模型名称>:<版本> # 示例 ollama rm qwen2 ollama rm qwen2:0.5b
调用
cli调用
# 开启对话(未加载的会自动下载模型) ollama run <模型名称>:<版本> # 运行模型,进行问答 ollama run qwen2 >>> Send a message (/? for help)
API调用
- 文档:https://github.com/ollama/ollama/blob/main/docs/api.md
- 下方将其中一个接口作为示例,更多接口及详情看文档
也可以参考curl语句使用HTTP客户端调用
# 根据提示词生成 # POST /api/generate curl http://localhost:11434/api/generate -d '{ "model": "llama3", "prompt": "如何调用ollama的api?", "stream": false }' # 识图 curl http://localhost:11434/api/generate -d '{ "model": "llava", "prompt": "这张图片是什么意思(特定模型才有这个功能,如:llava)", "images": ["iVBORw0KGgoAA...(base64编码的图片)"] "stream": false }'
对话
role: 信息的角色,用于上下文信息,如"system","user","assistant"
- system: 场景设定
- user: 用户提问,或用户提供的信息
- assistant: 一般是ollama响应,response里也会有role字段
- content: 内容
- images: 类似generate接口,使用base64编码
# 对话 # POST /api/chat curl http://localhost:11434/api/chat -d '{ "model": "qwen2", "messages": [ { "role": "user", "content": "why is the sky blue?" } ] }' # 包含上下文(对话历史) curl http://localhost:11434/api/chat -d '{ "model": "llama3", "messages": [ { "role": "system", "content": "你是小学老师,解答小学生回答的问题,解释尽量直白,能让小学生听懂"}, { "role": "user", "content": "天空为什么是蓝色的?"}, { "role": "assistant", "content": "阿巴阿巴..."}, { "role": "user", "content": "说的简练一下,然后用英文终结一下"} ] }'
python调用
官方Github: https://github.com/ollama/ollama-python
pip install ollama
- 基础用法
对话
role: 信息的角色,用于上下文信息,如"system","user","assistant"
- system: 场景设定
- user: 用户提问,或用户提供的信息
- assistant: 一般是ollama响应,response里也会有role字段
- content: 内容
- images: 类似generate接口,使用base64编码
import ollama
# 设置host
client = ollama.Client(host='http://localhost:11434')
# 拉取镜像(通义千问2,0.5b)
client.pull("qwen2:0.5b")
# 查看所有模型信息
images = client.list()
print(images)
# 调用generate接口
response = client.generate(model='llama3.1', prompt='python中如何调用ollama?')
print(response)
# chat接口(包含历史上下文)
response = client.chat("qwen2:0.5b", messages=[
{"role": "system", "content": "你是小学老师,解答小学生回答的问题,解释尽量直白,能让小学生听懂"},
{"role": "user", "content": "天空为什么是蓝色的?"},
{"role": "assistant", "content": "阿巴阿巴..."},
{"role": "user", "content": "说的简练一下,然后用英文终结一下"}
])
print(response)
多模态(图片)
- 多模态需要模型支持,如"llava"模型支持图片解析
- 图片读写均使用base64编码
import base64 def read_image_as_base64(file_path): """读取图片,返回base64编码字符""" with open(file_path, 'rb') as f: images_bytes = f.read() base64_encoded = base64.b64encode(images_bytes) base64_str = base64_encoded.decode('utf-8') return base64_str
import ollama from image_helper import read_image_as_base64 client = ollama.Client(host='http://localhost:11434') response = client.generate(model="llava", prompt="描述一下这张图片里有哪些物体", images=[read_image_as_base64("./cat.jpg")]) print(response)
js调用
官方Github: https://github.com/ollama/ollama-js
npm i ollama
import ollama from 'ollama' const response = await ollama.chat({ model: 'llama3.1', messages: [{ role: 'user', content: 'Why is the sky blue?' }], }) console.log(response.message.content)
局域网访问
默认情况下,Ollama服务仅在本地运行,只能本机(localhost/127.0.0.1)访问,不对外提供服务
设置后,局域网中可以使用IP访问
Linux
# 修改Ollama配置 systemctl edit ollama.service # 按下方修改后,重启服务 systemctl daemon-reload systemctl restart ollama
配置增加环境变量
[Service] Environment="OLLAMA_HOST=0.0.0.0" Environment="OLLAMA_ORIGINS=*" # 修改端口号拼接到0.0.0.0后面 # Environment="OLLAMA_HOST=0.0.0.0:11434"
Windows
- 在环境变量里设置OLLAMA_HOST和OLLAMA_ORIGINS
重启Ollama
OLLAMA_HOST=0.0.0.0 OLLAMA_ORIGINS=*
界面
Chatbox
- 可下载客户端
设置Ollama访问地址即可
- Ollama都在本机,直接使用 "http://localhost:11434" 访问
- Ollama在其他主机时,Ollama需要配置局域网设置,然后使用ip访问
OpenWebUI
- 官网:https://docs.openwebui.com/
打开"外部链接"设置界面时很卡,发现是后台在查询openai接口,耐心等待一会儿
docker run -d -p 3000:8080 --gpus=all --name open-webui ghcr.io/open-webui/open-webui:ollama # 单open-webui,然后设置ollama地址 docker run -d -p 3000:8080 --name open-webui ghcr.io/open-webui/open-webui:main # 运行后,进入主页 > 头像 > 管理员面板 > 设置 > 外部连接 > Ollama API > 地址修改为Ollama地址 # ollama与open-webui同一台电脑 docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway --name open-webui ghcr.io/open-webui/open-webui:main
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。