字节笔记本字节笔记本

Ollama 使用 Open WebUI 的聊天界面

2024-06-11

本教程指导用户在Ubuntu或Debian服务器上安装Ollama,设置带有Open WebUI的聊天界面,并使用自定义语言模型。

简介

本教程将解释如何在 Ubuntu 或 Debian 服务器上安装 Ollama 来运行语言模型,并展示如何设置一个带有 Open WebUI 的聊天界面,以及如何使用自定义语言模型。

预备知识

  • 一台运行 Ubuntu 或 Debian 的服务器
  • 需要 root 用户或具有 sudo 权限的用户访问
  • 在开始之前,需要完成一些基本配置,包括防火墙设置

可以选择在同一台服务器上安装 Ollama 和 Web UI,也可以在两台单独的服务器上安装。如果选择后者,需要两台运行 Ubuntu 或 Debian 的服务器。

本教程在 Ubuntu 22.04 和 Debian 12 上测试通过。

步骤 1 - 安装 Ollama

以下步骤说明如何手动安装 Ollama。为了快速开始,可以使用安装脚本并继续 "步骤 2 - 安装 Ollama WebUI"。

安装脚本: curl https://ollama.ai/install.sh | sh

手动安装 Ollama

  1. 如果服务器有 Nvidia GPU,确保安装了 CUDA 驱动

    nvidia-smi
    

    如果 CUDA 驱动未安装,请现在安装。在配置器中选择操作系统和安装类型以查看需要运行的命令。

    sudo apt update
    sudo apt install -y nvidia-kernel-open-545
    sudo apt install -y cuda-drivers-545
    
  2. 下载 Ollama 二进制文件并创建 Ollama 用户

    sudo curl -L https://ollama.ai/download/ollama-linux-amd64 -o /usr/bin/ollama
    sudo chmod +x /usr/bin/ollama
    sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama
    
  3. 创建服务文件
    默认情况下,可以通过 127.0.0.1 端口 11434 访问 Ollama API,这意味着 API 仅在本地主机上可用。

    如果需要外部访问 Ollama,可以取消注释 Environment 并设置 IP 地址为 0.0.0.0,这将允许通过服务器的公共 IP 访问 API。确保服务器上的防火墙允许访问端口 11434。

    如果只有一台服务器,不需要修改以下命令。

    sudo bash -c 'cat <<'EOF' >> /etc/systemd/system/ollama.service
    [Unit]
    Description=Ollama Service
    After=network-online.target
    
    [Service]
    ExecStart=/usr/bin/ollama serve
    User=ollama
    Group=ollama
    Restart=always
    RestartSec=3
    #Environment="OLLAMA_HOST=0.0.0.0:11434"
    
    [Install]
    WantedBy=default.target
    
    EOF'
    
  4. 重新加载 systemd 守护进程并启用 Ollama 服务

    sudo systemctl daemon-reload
    sudo systemctl enable ollama
    sudo systemctl start ollama
    

    可以使用 ollama --version 检查安装是否成功。

    使用 systemctl status ollama 检查状态。如果 Ollama 未激活并运行,确保运行 systemctl start ollama

    在终端中,现在可以启动语言模型并提问。例如:

    ollama run llama2
    

    可以使用 ollama rm <model-name> 删除模型。

步骤 2 - 安装 Open WebUI

在 Ollama 的 GitHub 文档中,可以找到不同的 Web 和终端集成列表。以下示例解释如何安装 Open WebUI。

手动安装 Open WebUI

  1. 安装 npm 和 pip,克隆 WebUI 仓库,并创建示例环境文件的副本

    sudo apt update && sudo apt install npm python3-pip git -y
    git clone https://github.com/ollama-webui/ollama-webui.git
    cd ollama-webui
    cp -RPp .env.example .env
    
  2. .env 文件中,默认情况下连接 Ollama API 的地址设置为 localhost:11434。如果 Ollama API 安装在与 Open WebUI 相同的服务器上,可以保持默认设置。如果安装在不同服务器上,编辑 .env 文件并替换默认值为安装 Ollama 的服务器地址。

  3. 安装 package.json 中列出的依赖并运行名为 build 的脚本

    npm i && npm run build
    
  4. 安装所需的 Python 包

    cd backend
    sudo pip install -r requirements.txt -U
    
  5. 使用 ollama-webui/backend/start.sh 启动 Web UI

    sh start.sh
    

    如果 Ollama 安装在不同服务器,确保防火墙允许访问 API 端口,默认端口为 11434。在 start.sh 中,端口设置为 8080,意味着可以通过 http://<ip-address>:8080 访问 Open WebUI。如果有防火墙,需要允许该端口。

使用 Docker 安装 Open WebUI

  1. 安装 Docker。如果还没有安装,可以使用本教程安装 Docker。

  2. 在与 Ollama 相同的服务器上安装 Open WebUI

    sudo docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
    
  3. 在与 Ollama 不同的服务器上安装 Open WebUI

    sudo docker run -d -p 3000:8080 -e OLLAMA_API_BASE_URL=http://<ip-address>:11434/api -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
    

    替换 <ip-address>:11434 为安装 Ollama 的服务器地址。

    在上述 Docker 命令中,端口设置为 3000,意味着可以通过 http://<ip-address>:3000 访问 Open WebUI。如果有防火墙,需要允许该端口。

步骤 3 - 允许 Web UI 端口

如果有防火墙,确保允许访问 Open WebUI 端口。如果手动安装,允许 8080 TCP 端口。如果使用 Docker,允许 3000 TCP 端口。

使用 netstat 查看使用的端口。

netstat -tulpn | grep LISTEN

示例输出:

Proto    Recv-Q    Send-Q    Local Address       Foreign Address     State
tcp           0         0    127.0.0.1:11434     0.0.0.0:*           LISTEN
tcp           0         0    0.0.0.0:8080        0.0.0.0:*           LISTEN

端口 11434 用于 Ollama API,端口 8080 用于 Web 界面。

管理 ufw 防火墙规则:

查看当前防火墙设置

sudo ufw status

示例输出:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

允许 8080 或 3000 TCP 端口

sudo ufw allow proto tcp to any port 8080

如果使用 Docker,替换 8080 为 3000。

查看新的防火墙设置

sudo ufw status

步骤 4 - 添加模型

访问 Web UI 后,需要创建第一个用户账号。此用户将拥有管理员权限。要开始聊天,需要选择一个模型。可以在 Ollama 官方网站上浏览模型列表。在本例中,我们将添加 "llama2"。

  1. 在右上角选择设置图标

  2. 转到 "Models",输入一个模型并选择下载按钮

  3. 等待消息弹出:“Model 'llama2' has been successfully downloaded.”
    如果出现错误消息“Server Connection Error”,可能是 Ollama 未激活并运行。在服务器上使用 systemctl status ollama 检查状态并确保运行 sudo systemctl start ollama

  4. 关闭设置返回聊天界面

  5. 在聊天界面顶部选择一个模型并添加

  6. 如果想添加多个模型,可以使用顶部的加号

  7. 添加所需模型后,可以开始提问。如果添加了多个模型,可以在答案之间切换

步骤 5 - 添加自定义模型

可以通过用户界面在 http://<ip-address>:8080/modelfiles/create/ 添加新模型。如果需要,通过终端添加新模型。首先,连接到安装 Ollama 的服务器。使用 ollama list 列出已有模型。

创建模型文件

在 Ollama GitHub 文档中可以找到模型文件的要求。在模型文件的第一行 FROM <model> 指定要使用的模型。在本

例中,我们将修改现有模型 llama2。如果要添加全新模型,需要指定模型文件路径(例如 FROM ./my-model.gguf)。

nano new-model

保存以下内容:

FROM llama2

# 数值越高,回答越有创意
PARAMETER temperature 1

# 设置为 "0" 时,模型在生成回答时不会考虑任何先前的上下文或对话历史。每个输入都是独立的。
# 设置为较高数值(如 "4096")时,模型在生成回答时会考虑先前的上下文或对话历史。"4096" 是将被考虑的 token 数量。
PARAMETER num_ctx 4096

# 设置聊天助手在回答中的 "性格"。可以设置聊天助手以何种身份和风格进行回答。
SYSTEM You are a moody lama that only talks about its own fluffy wool.

从模型文件创建模型

ollama create moody-lama -f ./new-model

替换 moody-lama 为新模型的唯一名称。

检查新模型是否可用

使用 ollama 命令列出所有模型,moody-lama 应在列表中。

ollama list

在 WebUI 中使用你的模型

返回 Web UI,模型应在 "Select a model" 列表中。如果尚未显示,刷新页面。

结论

本教程介绍了如何在自己的服务器上托管 AI 聊天,并如何添加自定义模型。

许可证: MIT