使用Ollama和Open WebUI 部署AI聊天机器人

介绍

本教程介绍如何安装在Ubuntu或Debian的服务器上安装Ollama以及运行语言模型。它还展示了如何使用OpenWebUI设置聊天界面和如何使用自定义语言模型。

先决条件

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

如果你将它们安装在不同的服务器上,你将需要两个带有Ubuntu/Debian的服务器。

该教程在Ubuntu22.04和Debian12上进行了测试。

步骤1-安装Ollama

以下步骤说明如何手动安装Ollama。为了快速入门,您可以使用安装脚本并继续执行“步骤2-安装Ollama WebUI”。

安装脚本:

curl https://ollama.ai/install.sh | sh

要自己安装Ollama,请执行以下步骤:

  • 如果您的服务器有Nvidia GPU,请确保安装了CUDA驱动程序
nvidia-smi

如果未安装CUDA驱动程序,请立即执行此操作。在这个配置程序中,您可以选择您的操作系统并选择安装程序类型来查看您需要在安装程序中运行的命令。

sudo apt update
sudo apt install -y nvidia-kernel-open-545
sudo apt install -y cuda-drivers-545
  • 下载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
  • 创建一个服务文件。

默认情况下,您可以通过127.0.0.1的11434端口访问Ollama API。这意味着API仅在本地主机上可用。

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

如果您只有一台服务器,则不需要修改下面的命令。

复制并粘贴下面代码块的全部内容。将创建新文件/etc/systemd/system/ollama.service,并将EOF之间的内容添加到新文件中。

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'
  • 重新加载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<模型名称>来删除模型。


下一步介绍如何安装web UI,以便您可以通过web浏览器在用户界面中提问。

步骤2-安装Open WebUI

在GitHub上的Ollama文档中,您可以找到不同web和终端集成的列表。此示例说明如何安装Open WebUI

您可以选择在与Ollama相同的服务器上安装Open WebUI,也可以在两个独立的服务器上分别安装Ollama和Open WebUI。如果在单独的服务器上安装Open WebUI,请确保Ollama API已暴露在网络中。若要进行双重检查,请在安装了Ollama的服务器上查看/etc/systemd/system/Ollama.service,并验证Ollama_HOST的值。

以下步骤解释了如何安装用户界面:

  • 手动安装
  • 使用Docker
手动安装Open WebUI

安装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

.env中,连接到Ollama API的地址默认设置为localhost:11434。如果将Ollama API安装在与Open WebUI相同的服务器上,则可以保持此设置不变。如果将Open WebUI安装在Ollama API以外的其他服务器上,请编辑.env并将默认值替换为安装了Ollama的服务器的地址。

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

npm i && npm run build

如果出现“与您的版本不兼容”之类的错误,请运行以下命令以使用最新版本:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
source ~/.bashrc
nvm install node && nvm use node
npm install -g npm@latest

尝试再次运行npm i && npm run build

安装所需的python包:

cd backend
sudo pip install -r requirements.txt -U

如果出现错误,可以考虑使用--break-system-packages,如下所示:

sudo pip install -r requirements.txt -U --break-system-packages

使用ollama webui/backend/Start.sh启动web UI。

sh start.sh

如果您在其他服务器上安装了Ollama,请确保在启动web UI之前,Ollama服务器上的防火墙允许访问API的端口。API的默认端口为11434

start.sh中,端口设置为8080。这意味着,您可以访问位于http://<ip-address>:8080的OpenWebUI。如果您的服务器上有活动防火墙,则需要放行该端口,然后才能访问聊天UI。为此,您现在可以转到“步骤3-允许端口到web UI”。如果你没有防火墙,你现在可以跳到“步骤4-添加模型”。

使用Docker安装Open WebUI

对于这一步,您需要安装Docker。如果你还没有安装Docker,现在可以使用本教程来完成(或者百度搜索)。

快速安装Docker

sudo apt update && sudo apt install docker.io apparmor -y

如上所述,您可以选择在与Ollama相同的服务器上安装Open WebUI,也可以在两个独立的服务器上分别安装Ollama和Open WebUI。

  • 在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
  • 在与Ollama不同的服务器上安装Open WebUI

在启动Open WebUI之前,请确保Ollama服务器上的防火墙允许访问API的端口。API的默认端口为11434

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

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

在上面的Docker命令中,端口设置为3000。这意味着,您可以访问位于http://<ip-address>:3000的OpenWebUI。如果您的服务器上有活动防火墙,则需要允许该端口,然后才能访问聊天UI。这将在下一步中进行解释。

步骤3-允许端口到web UI

如果您有防火墙,请确保它允许访问Open WebUI端口。如果您手动安装,则需要允许端口8080 。如果你用Docker安装它,你需要允许端口3000

要进行双重检查,可以使用netstat并查看使用了哪些端口。

holu@<your-server>:~$ 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界面。

有几种不同的防火墙工具。本教程介绍Ubuntu ufw的默认防火墙配置工具。如果您使用的是不同的防火墙,请确保它允许8080或3000 TCP端口的传入流量。

管理ufw防火墙规则:

  • 查看当前防火墙设置

要检查ufw防火墙是否处于活动状态,以及您是否已经有任何规则,可以使用:

sudo ufw status

输出示例:

holu@remote-server:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
  • 允许端口8080或3000

如果防火墙处于活动状态,请运行此命令以允许传入流量到端口8080或3000:

sudo ufw allow proto tcp to any port 8080

如果您使用Docker,请将8080替换为3000

  • 查看新的防火墙设置

现在应该添加新规则。要进行检查,请使用:

sudo ufw status

如果您需要删除某些规则,可以使用以下命令:

sudo ufw status numbered   # List all rules with numbers
sudo ufw delete <number>   # Delete a rule by specifying the number

步骤4-添加模型

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

  • 在右上角,选择设置图标

  • 转到“模型”,输入一个模型名称并点击下载按钮。

在CMD窗口等待此消息显示:

Model 'llama2' has been successfully downloaded.

如果您收到诸如Ollama WebUI:Server Connection error之类的错误,则可能意味着Ollama未处于活动状态且正在运行。在服务器上,使用systemctl-status ollama检查状态,并确保已运行sudo systemctl-start ollama

  • 关闭设置返回聊天窗口。
  • 在聊天中,点击顶部的“选择模型”,然后添加您的模型。
  • 如果要添加多个模型,可以使用顶部的+号。

  • 添加了要使用的模型后,就可以开始提问了。如果添加了几个模型,则可以在答案之间切换。

步骤5-添加您自己的模型

如果您想通过用户界面添加新模型,可以通过http://<ip-adress>:8080/modelfiles/create/进行添加。如果需要,用3000替换8080。

下面将重点介绍如何通过终端添加新型号。首先,您需要连接到安装了ollama的服务器。使用ollama列表列出到目前为止可用的型号。

  • 创建模型文件

您可以在GitHub上的Ollama文档中找到模型文件的要求。在模型文件FROM<model>的第一行中,可以指定要使用的模型。在这个例子中,我们将修改现有的模型llama2。如果要添加一个全新的模型,则需要指定模型文件的路径(例如FROM./my-model.gguf)。

nano new-model

保存此内容:

FROM llama2

# The higher the number, the more creative are the answers
PARAMETER temperature 1

# If set to "0", the model will not consider any previous context or conversation history when generating responses. Each input is treated independently.
# If you set a high number such as "4096", the model will consider previous context or conversation history when generating responses. "4096" is the number of tokens that will be considered.
PARAMETER num_ctx 4096

# Set what "personality" the chat assistant should have in the responses. You can set "who" the chat assistant should respond as and in which style.
SYSTEM You are a moody lama that only talks about its own fluffy wool.

GitHub上提供了可用参数的列表。

  • 从模型文件创建模型
ollama create moody-lama -f ./new-model

moodylama替换为新模型的唯一名称。

  • 检查新建的模型是否可用

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

ollama list
  • 在WebUI中使用您的模型

当您返回到web UI时,该模型现在也应该在“选择模型”的列表中。如果它还没有显示,你可能需要刷新一下。

结束语
在本教程中,您学习了如何在自己的服务器上部署人工智能聊天,以及如何添加自己的模型。

原文:Hosting an AI chatbot with Ollama and Open WebUI | Hetzner Community

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值