使用Ollama和Open WebUI创建一个免费的“ChatGPT-like”聊天机器人

ChatGPT 的强大功能已经让您开始探索大型语言模型(LLMs),并且想要构建一个类似 ChatGPT 的聊天机器人吗?您想要创建一个带有个人特色的聊天机器人吗?或者您也许想要为您的团队部署一个聊天机器人工具,以帮助处理日常任务?本文将指导您如何构建一个免费聊天机器人(假设您已经有 GPU 🤭),从而使研究工作更加轻松,同时还提供类似于 ChatGPT 的功能(取决于您所拥有的硬件资源 🫢)。让我们开始吧!

使用Ollama运行LLMs

在本地服务器上运行大型语言模型(LLMs)可以非常有益,如果您拥有必要的计算资源的话,无论您是想探索LLMs还是用它们构建更强大的应用程序。然而,由于许多优化问题,配置工作环境并在您的计算机上运行LLMs并不容易。使用Ollama,您可以轻松运行Llama 3.1模型(q4_0量化),配备约8GB VRAM的GPU。

那么如何快速在本地服务器上运行LLMs呢?让我们看看Ollama,这是一个通过开源大型语言模型简化本地开发的平台。使用Ollama,您只需运行LLM的模型权重,所有配置都打包到一个单个的模型文件中。想象一下Docker是如何运作在LLMs上的。在本部分中,我们将探讨如何开始使用Ollama在本地服务器上运行大型语言模型。这个指南是在Ubuntu上完成的。对于Windows或Mac,您可以查看Ollama和Open WebUI文档-它们非常容易遵循。

安装Ollama

第一步是将Ollama下载到您的设备上。 Ollama支持所有主要平台:macOS,Windows和Linux。

要下载 Ollama,您可以访问 GitHub 代码库并按照说明操作。或者访问官方 Ollama 网站进行安装。在 Ubuntu 上,我使用以下命令进行安装:

curl -fsSL https://ollama.com/install.sh | sh

安装过程通常需要几分钟时间。在安装过程中,NVIDIA/AMD GPU驱动程序将被自动检测到(请确保您已安装驱动程序)。如果模型所需的GPU不可用,Ollama也可以只使用CPU(但是谁会想要一个聊天机器人花几分钟来回复一个简单的句子呢,对吧?🙃)。

下载模型并运行它

接下来,您可以访问Ollama的模型库,查看所有当前支持的模型系列列表(在撰写本文时,Ollama支持最多Llama 3.21B和3B,但视觉模型11B和90B尚未受支持)。默认下载的模型是标记为“latest”的模型(现在感觉有点像Docker,对吧?🤗)。在每个模型的页面上,您可以找到额外的信息,如大小和使用的量化方法。

简单来说,量化会减少每个参数的小数位数以节省内存,但是会牺牲准确度。(由于本文篇幅有限,我不会深入探讨这个话题。)小数的默认精度为32位(FP32)。然而,根据我的个人经验,Ollama的默认模型通常量化为4位,仍然对于常见任务如编码或阅读理解表现良好。

在Ollama的图书馆里,您可以查看模型的变种和它们所具有的参数数量,从而让您选择一个适合您需求的模型。

您可以使用ollama run命令运行模型,直接下载并开始与模型进行交互。但是,您也可以先拉取模型,然后稍后再运行它。这类似于您使用Docker镜像的方式。

例如,要下载羊驼3.1模型,请运行以下终端命令:

ollama pull llama3.1

ollama run llama3.1

如果模型尚不可用,Ollama会自动拉取它。运行后,您可以直接在终端中与Ollama聊天(要退出,您可以输入/bye或按Ctrl+D)。

自定义模型

就像Docker一样,您可以通过编写Modelfile来自定义模型。例如,要添加一个系统提示,您可以参考以下模板:

FROM llama3.1:latest

SYSTEM """
You are a virtual assistant developed by the AI Team of TonAI Company
Your name is 'TonAI Lạc Đà' (Llama is Lạc đà in Vietnamese) because your base model is Llama 3.1 8B
"""

此外,您可以修改模型的参数,如温度、num_ctx等。有关如何编写Modelfile的详细说明,您可以参考此链接或在Ollama Hub上搜索,那里有人分享他们的模型。要创建一个新模型,请运行以下命令:

ollama create TonAI:chatbot_mini -f ./Modelfile

在这里,TonAI:chatbot_mini是我的模型的名称(如果在冒号后面没有指定任何内容,它将自动设置为"latest",就像Docker一样)。使用-f [Model文件的路径]。创建模型后,您可以运行它进行测试。

ollama run TonAI:chatbot_mini

这里是结果:

>>> Hi
Xin chào! (Hello!) How can I assist you today? Is there something specific on your mind, or would you like to have a chat?

>>> Who are you
I am TonAI Lạc Đà, a virtual assistant developed by the AI Team of TonAI Company. My base model is based on Llama 3.1 8B, which allows me to understand and respond to a wide
range of questions and topics.

I'm here to help answer your questions, provide information, offer suggestions, and even just have a friendly conversation if you'd like!

>>> Send a message (/? for help)

使用Python编写Ollama

此外,您还可以使用Python库与Ollama一起使用。通过使用pip安装Ollama:

$ pip install ollama

这是翻译:

import ollama

while True:
message = input("User: ")
response = ollama.chat(model='TonAI:chatbot_mini', messages=[
{
'role': 'user',
'content': message,
},
])
print(f"Ollama: {response['message']['content']}")

打开 WebUI

安装Ollama后,您需要一个接口以便更容易地使用。在这篇文章中,我将使用Open WebUI来创建一个类似于ChatGPT的web界面。

Open WebUI 是一个可扩展的、功能丰富的、用户友好的自托管 WebUI,旨在完全离线运行。它支持各种 LLM 运行器,包括 Ollama 和兼容 OpenAI 的 API。

您可以使用Docker、PyPi安装Open WebUI,也可以从此处拉取源代码。

安装

使用Docker:

如果使用GPU,运行以下命令:

$ docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

对于仅使用CPU的人:

$ docker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

安装完成后,您可以在 http://localhost:3000 地址访问Open WebUI。

使用Python pip:

运行以下命令以安装Open WebUI:

$ pip install open-webui

运行以下命令来启动 Open WebUI:

$ open-webui serve

安装完成后,您可以通过地址http://localhost:8080访问Open WebUI。

使用源代码:

这种方法非常有用,如果您想要根据自己的喜好定制界面。首先,将源代码克隆到您的计算机上:

$ git clone https://github.com/open-webui/open-webui.git

在后端文件夹中,有一个名为start.sh的脚本文件。您可以运行它(可以自定义端口和主机名)。

$ cd open-webui/backend
$ bash start.sh

为了避免在关闭终端时应用程序停止运行的情况,您可以参考如何使用Tmux来持续运行该应用程序。

让我们来体验吧!😎

安装完成后,您将会有这样的用户界面:

根据您的喜好定制模型以响应。

奥拉玛可以访问链接和文档进行阅读。通过一些视觉模型,它可以识别输入图像。Open WebUI接口具有许多功能,例如管理模型、管理用户(如果您是管理员)、管理数据库等等。它还包括连接到图像生成器的高级功能,如使用ComfyUI或A1111。

本文提供了一个简短的指南,说明如何快速设置一个聊天机器人,以实验大型语言模型。希望对您的项目有所帮助。未来我会努力研究并发表更深入的文章,涉及生成式人工智能领域。 😊

2024-10-04 04:13:55 AI中文站翻译自原文