之前同事在部署大模型的时候,一直想怎么解决不同大模型部署之后,怎么提供统一的Api而苦恼。
我也在做大模型项目的时候,遇到这个问题。在之前一直是利用不同家的大模型自己去封装协议。非常麻烦!!!
别急,今天介绍的这个 GitHub 开源项目满足你我所有幻想:OneAPI,一款接口管理和分发神器,将所有大模型一键封装成OpenAI协议。
传送门:https://github.com/songquanpeng/one-api
话不多说,上实操!
1. 服务部署
作者了提供了源码部署和 Docker 部署两种方式,其中源码部署需要分别构建前端和后端,相对麻烦一点。
接下来,就把 OneAPI 部署在这台云服务器上,如果你用本地 Linux 虚拟机当然也没问题。
因为本项目还依赖数据库的服务,所以我们采用 docker-compose 的方式来进行部署,简单几步就能搞定,极大降低小白的部署门槛。
1.1 创建 docker-compose 文件
打开一个终端:
mkdir oneapi
cd oneapi/
touch docker-compose.yml
把下述脚本复制到 docker-compose.yml 中:
version: '3.8'
services:
oneapi:
container_name: oneapi
image: justsong/one-api:latest
restart: unless-stopped
network_mode: bridge
ports:
- 13000:3000
volumes:
- ./data:/data
environment:
- TZ=Asia/Shanghai
简单介绍下上面几个参数:
- version: 指定了Compose文件格式的版本,用于确保配置文件与Docker Compose的版本兼容,最新版docker-compose已不需要这个字段;
- services: 定义了应用程序中的服务,每个服务运行在独立的容器中;
- image:镜像地址,国内服务器用阿里云的镜像会非常快,海外服务器不建议用阿里云的镜像;
- ports: 3001:3000 意味着容器内部的3000端口映射到宿主机的3001端口,用于防止宿主机端口冲突;
- volumes: ./mysql:/var/lib/mysql 意味着将本地的./mysql目录挂载到容器的/var/lib/mysql目录,用于数据持久化。
1.2 服务启动
配置好 docker-compose.yml 文件后,采取如下命令一键启动:
sudo docker-compose up -d
等待拉取镜像,终端出现如下提示,说明成功启动:
[+] Running 3/3
✔ Network oneapi_default Created
✔ Container mysql Started
✔ Container oneapi Started
2. OneAPI 登录
还记得 OneAPI 的端口号不?3001!
因此,浏览器中的访问地址应该是:http://IP:Port,例如:http://129.150.63.xxx:3001
但这时,上述地址是打不开的,还需要到服务器中把 3001/3306 端口的防火墙打开。防火墙打开后,上述地址就可以访问了:
图片
首先需要登录,初始账号名 root,密码 123456,登录后立即修改密码。
图片
登录成功后,你会发现 Tab 页多了几个选项,这些只有超级管理员能看到:
图片
接下来,我们一一了解下系统的几个模块。
2.1 用户
首先我们看下用户管理模块,左下角可以新增用户。
图片
点击右侧编辑,可以发现用户分组有三个。分组有什么用?假如你在这个系统中代理 10 种大模型并商业化,可以设定 VIP 可以使用其中的 2 种模型,而 SVIP 可以使用全部。如果自己玩,那随意。
图片
2.2 渠道
渠道用来管理和添加各个大模型厂商的 LLM。只有超级管理员才能设置。
在渠道管理中,左下角点击添加新的渠道:
图片
2.2.1 渠道添加
图片
提交后,点击右侧测试,看看是否能够调用成功。
图片
再次,比如我们还要用Ollama部署的模型,添加则更加简单根据配置就好了:
图片
但是,要特别注意代理的地址:如果是Ollama记得用http://host.docker.internal:11434
2.2.2 渠道列表
其他厂商基本和上述一致,最后,给大家看下我的渠道列表:
图片
2.3 令牌
这个模块用于创建令牌,供客户端或调用方使用,其作用跟 LLM的令牌(或密钥)的作用是一样的。点击复制后,会显示在上方搜索框。
图片
当然也可以选择添加新的令牌,如果仅仅是自用,可以设为无限额度,永不过期;如果是外发给其他人使用的,你可以给他设置一个限量:
图片
有了令牌,就可以采用 OpenAI 协议的 API 调用了。
2.4 兑换 和 充值
这两个模块是为了商业化准备的。
兑换模块,用于管理兑换码,类似话费充值卡。
图片
充值模块,用于给账户充值,与兑换配合使用。输入一个有效兑换码,就相当于给当前账户充值对应的额度,用于供令牌调用消耗。
图片
2.5 日志 和 设置
日志模块,用于展示用户充值和额度消耗记录。
图片
设置模板,包括个人设置、运营设置、系统设置和其他设置,整个系统的商业化功能还是挺完备的。
图片
3. 总结
OneAPI 是一个开源项目,旨在帮助用户将不同的大模型封装成统一的 OpenAI 协议接口。它支持源码部署和 Docker 部署,其中 Docker 部署更为简便。
通过 docker-compose.yml 文件,可以快速启动服务,包括数据库和 OneAPI 本身。部署后,用户可以通过设定的端口访问 OneAPI 的 Web 界面,进行用户管理、渠道管理、令牌创建等操作。OneAPI 还提供了商业化功能,如兑换码管理和充值模块,以及日志和设置模块,以满足不同用户的需求。
通过 OneAPI,用户可以轻松管理和调用多个大模型,无需为每个模型单独封装协议。