跳至主要內容

Ollama

言午日尧耳总大约 5 分钟AI大模型ollama

Ollama

安装

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调用

# 根据提示词生成
# 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调用

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调用

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)

局域网访问

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

  • 官网:https://chatboxai.app/zhopen in new window
    • 可下载客户端
  • 设置Ollama访问地址即可
    • Ollama都在本机,直接使用 "http://localhost:11434" 访问
    • Ollama在其他主机时,Ollama需要配置局域网设置,然后使用ip访问

OpenWebUI


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
上次编辑于:
贡献者: 许晓聪