这是一个使用 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
这两个之所以放在一起比较,是因为他们都是仿 ChatGPT 官方网站 UI 的。OpenWebUI 非常重量级,包含很多用不着的功能。LibreChat 相对轻量级,但是不如 OpenWebUI 复刻得那般精美。个人最看重的是 OpenWebUI 的多用户管理功能,注册新用户方便,且可以选择普通用户可以访问到的模型范围,非常适合分享给朋友使用。
NextChat
很早就在使用的 ChatBot 前端,但现在项目维护者基本已经摆烂了,在各种方面都被其他竞品碾压。不支持文件上传,自定义模型端点麻烦,多端同步难用,如果不是图部署方便,可以直接 pass。
LobeChat
国人开发的项目,大而全的典范,最近支持了文件库上传。除了太卡顿之外,可以算是六边形战士。个人不太喜欢这种 UI 风格,总觉得有点塑料味(各大套壳 GPT 站都这个味)。另外每个用户都必须自己输入 API key,不方便分享给朋友使用。
最后用一个表格总结一下。
OpenWebUI | LibreChat | NextChat | LobeChat | |
---|---|---|---|---|
多端同步 | 有 | 有 | 无 | 有 |
原生模型支持 | 少 | 少 | 一般 | 多 |
界面 UI | 美观 | 简单 | 简陋 | 华丽 |
速度 | 正常 | 正常 | 正常 | 卡顿 |
文件上传 | 有 | 有 | 无 | 有 |
部署难度 | 中 | 中 | 低 | 中 |