VariantConst
1206 字
6 分钟
OneAPI + OpenWebUI 搭建私有 ChatBot 教程(附各大 ChatBot 前端对比)
2024-09-12

这是一个使用 OneAPI 统一各大语言模型 API 接口,并使用 OpenWebUI 这个前端部署的详细教程。在开始之前,先探讨两个问题:

  • Q1:为什么不订阅会员,而是通过 API 调用?

    这一年多时间里,SOTA 的大模型 API 价格已经下降大约一个数量级了,与此同时各类大模型订阅的价格还是坚挺地保持在 20 刀每月。时移势易,现在自己刷 API 已经比官方订阅要合算得多了。按照平均一条聊天消耗 2k token 来算,20 刀大约可以聊 2000 条 GPT-4o,而我一个月消耗的实际条数明显小于这个数目。消耗 API 的另一个好处是可以随心切换模型。这在过去 GPT4 一家独大的时候没什么必要,但现在 OpenAI 已经摆烂很久了,而你肯定不想同时订阅 ChatGPT + Claude + Gemini。

  • Q2:自建 ChatBot 和买 GPT 二道贩子孰优孰劣?

    市面上有很多 GPT 二道贩子,但这些贩子的渠道鱼龙混杂,要么是白嫖各种新用户赠金、逆向网页成 API,稳定性差,要么价格贵得离谱,有自己动手能力完全没必要被多收一道税。

  • Q3:为什么要用 OneAPI 统一各大模型的接口?

    统一接口会极大方便接入各类 ChatBot 前端。大部分 ChatBot 前端开发者没有精力及时维护所有模型的接口格式,而 OneAPI 的更新非常及时。OneAPI 的替代品还有 LiteLLM 等,在此不赘述。

  • Q4:为什么不直接用诸如 OpenRouter 等聚合 API 提供商?

    因为很多 API 渠道可以免费嫖,比如 GCP Cloud 嫖 Gemini 的 API。另外不少 ChatBot 还是不支持 OpenRouter 的 API 格式的,用 OneAPI 统一成 OpenAI API 格式兼容性会很好。

(9.12 更新)o1-preview 新模型在网页版一周只能聊 30 条,API 补全价格更是逆天。这时可以用若干 1 折中转站做代理,OpenRouter 等原价中转做备用,OneAPI 自动提供负载均衡,这样就能以可承担的价格稳定访问 o1-preview 了。


OneAPI 搭建#

这个按照官方教程很容易部署:

sudo docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api

需要注意的一点是 docker 内部需要配置好代理。如果想借用宿主机的代理,以运行在 7890 端口的 clash 为例,可以在 docker 启动命令中添加 -e http_proxy=http://宿主机局域网ip:7890 -e https_proxy=http://宿主机局域网ip:7890 参数。

OpenWebUI 搭建#

用 docker 启动

docker run -d -p 3000:8080 -e OPENAI_API_KEY=your_secret_key -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

因为是外国人开发的项目,如果不配置好代理,容器根本就无法正确启动。解决方案自然是在启动参数中加上之前所述的代理参数。

第一个注册的用户会自动成为管理员。登录后进入管理界面,把外部连接中的 OpenAI API 端点地址和密钥替换成 OneAPI 的网址和 API key。

各大流行 ChatBot 前端项目对比#

为了寻找一个合适的前端,我尝试了很多项目,包括 OpenWebUI, LibreChat, NextChat 以及 LobeChat,最后还是选定了 OpenWebUI 作为我的主要前端。不同前端项目各有优劣,以下作简要对比。

OpenWebUI & LibreChat#

image.png

image.png

这两个之所以放在一起比较,是因为他们都是仿 ChatGPT 官方网站 UI 的。OpenWebUI 非常重量级,包含很多用不着的功能。LibreChat 相对轻量级,但是不如 OpenWebUI 复刻得那般精美。个人最看重的是 OpenWebUI 的多用户管理功能,注册新用户方便,且可以选择普通用户可以访问到的模型范围,非常适合分享给朋友使用。

NextChat#

image.png

很早就在使用的 ChatBot 前端,但现在项目维护者基本已经摆烂了,在各种方面都被其他竞品碾压。不支持文件上传,自定义模型端点麻烦,多端同步难用,如果不是图部署方便,可以直接 pass。

LobeChat#

image.png

国人开发的项目,大而全的典范,最近支持了文件库上传。除了太卡顿之外,可以算是六边形战士。个人不太喜欢这种 UI 风格,总觉得有点塑料味(各大套壳 GPT 站都这个味)。另外每个用户都必须自己输入 API key,不方便分享给朋友使用。

最后用一个表格总结一下。

OpenWebUILibreChatNextChatLobeChat
多端同步
原生模型支持一般
界面 UI美观简单简陋华丽
速度正常正常正常卡顿
文件上传
部署难度
OneAPI + OpenWebUI 搭建私有 ChatBot 教程(附各大 ChatBot 前端对比)
https://blog.variantconst.com/posts/oneapi-openwebui-private-chatbot/
作者
VariantConst
发布于
2024-09-12
许可协议
CC BY-NC-SA 4.0