1. One API简介
One API是一个LLM代理系统,支持LLM接口管理和消息分发。使得用户可以通过标准的 OpenAI API 格式访问所有的大模型,开箱即用。
One API 比 openai-forword 更强大,因为 One API 除了作为LLM代理,还可以作为LLM一个中间商系统。
相关文档:
2. One API核心功能
- 支持多种大模型:OpenAI、Claude、Gemini、Mistral、豆包、文心一言、通义千问、腾讯混元、SiliconCloud等等等等。
- 支持 stream 模式,可以通过流式传输实现打字机效果
- 支持绘图接口
- 支持失败自动重试
- 支持多机部署,提高并发
- 支持渠道管理,批量创建渠道,支持渠道设置模型列表,支持通过负载均衡访问多个渠道
- 支持多用户管理,支持用户额度配置,支持充值,支持用户分组以及渠道分组,支持为不同分组设置不同的倍率
- 支持令牌管理,设置令牌的过期时间、额度、允许的 IP 范围以及允许的模型访问
3. 安装配置 One API
3.1. 安装配置 One API 概述
One API 提供了多种安装部署方式,包括Docker部署、裸机编译部署、多机部署、宝塔部署、第三方平台一键部署等。
本文中选择使用Docker部署,数据库选择MySQL,不使用Redis。
3.2. 安装MySQL(可选)
1、安装MySQL8,参考文档好好学MySQL:使用Docker安装配置MySQL
2、创建一个数据库,名称为 oneapi
3.3. 安装 One API
1、下载 one-api 镜像
1 | docker pull justsong/one-api:v0.6.10-alpha.1 |
2、运行 one-api 容器
使用SQLite数据库:
1 | docker run --name one-api -d \ |
备用镜像地址:ghcr.io/songquanpeng/one-api:v0.6.11-alpha.8
使用MySQL数据库:
1 | docker run --name one-api -d \ |
其中,SQL_DSN的值要改成自己的MySQL配置。
3、查看容器状态
1 | docker ps | grep one-api |
3.4. 配置Nginx
参考配置:
1 | server{ |
4. 使用 One API
4.1. 登录 One API
1、使用 IP+端口 或者 域名 访问 One API 首页
2、点击页面右上角 登录,登录进入管理页面
默认用户名为 root ,密码为 123456,登录后请先修改密码
4.2. 系统配置
4.2.1. 配置服务器地址
1、点击设置
2、配置服务器地址
该地址要和配置的域名一致。
4.2.2. 配置用户登录和注册方式
1、点击设置
2、配置登录注册部分,选择登录和注册方式
3、配置邮箱域名白名单
4.3. 配置渠道
1、点击渠道,添加新的渠道
2、填入渠道信息
- 选择类型
- 填入名称
- 选择分组
- 选择模型或者填入模型
- 填入密钥
- 部分类型需要填入 base_url
- 填入模型重定向(可选)
填入的模型,其实是oneapi中的模型名,默认与真实模型名相同。如果oneapi中的模型名,与真实模型名不同,那么可以配置模型重定向。
例如:oneapi中模型名是 gpt3.5-test,真实模型名是 gpt-3.5-turbo-16k ,那么模型重定向配置如下
1 | { |
3、提交,并点击测试
注意:根据个人经验,添加渠道并且测试成功后,并不能立刻通过API调用。
如果立刻调用,会报错:
1 | openai.InternalServerError: Error code: 503 - {'error': {'message': '当前分组 default 下对于模型 xxx 无可用渠道 (request id: xxx)', 'type': 'one_api_error'}} |
需要等待2到3分钟,再进行API调用才会正常,也许是oneapi的什么机制。
4.4. 配置额度
1、点击用户,选择某一个用户,编辑
2、剩余额度填入 token 数,会自动显示等价金额
100000 token,等价金额 0.2 刀
3、提交
4.5. 配置令牌
1、用户登录 One API
2、点击令牌,添加新的令牌
3、填入令牌信息
- 名称
- 模型范围
- IP限制
- 过期时间
- 额度
4、提交
5、复制 token
找到新创建的令牌,点击复制,就可以获取到 token
注意:该 token 对应的 base_url 是我们配置的域名 https://oneapi.voidking.com/v1
6、聊天
找到新创建的令牌,点击聊天,会自动跳转到 NextChat,同时提示自动填入 base_url 和 token,点击确定,就可以使用 One API 代理进行聊天了。
5. 模型价格与倍率
参考文档:
模型倍率和补全倍率算法:
1 | 基准价格:0.002 $ /1k tokens |
假设X模型的价格为 $0.18/M input tokens 和 $0.72/M output tokens,那么它的模型倍率和补全倍率如下:
1 | 模型倍率 = 输入价格 / 基准价格 = (0.18/1000) / 0.002 = 0.09 |
在oneapi代码中,在计算费用时,涉及到变量包括:
- model_name:模型名(针对模型名配置模型倍率和补全倍率)
- base_price:基准价格,
0.002 $ /1k tokens - prompt_tokens:提示词token数
- completion_tokens:返回token数
- model_ratio:模型倍率
- completion_ratio:补全倍率
- group_ratio:分组倍率(针对不同用户类型,控制打折或溢价)
- quota:某个大模型的提示词token数和返回token数,换算成基准价格token数
变量关系如下:
1 | quota = ((prompt_tokens * model_ratio) + (completion_ratio * model_ratio * completion_ratio)) * group_ratio |
最终费用为:
1 | cost = quota * base_price = quota * (0.002/1000) |
6. API 调用 One API
参考文档:
6.1. curl调用测试
1 | curl "https://oneapi.voidking.com/v1/chat/completions" \ |
6.2. python调用测试
1、编写测试脚本 test.py
1 | from openai import OpenAI |
2、运行脚本
1 | python test.py |