大模型一键封装成OpenAI协议解决方案(一)
引言:本质上是统一为openai协议
参考文章:
- OneAPI-接口管理和分发神器:所有大模型一键封装成OpenAI协议 - AI码上来的文章 - 知乎
https://zhuanlan.zhihu.com/p/707769192
目前有两种选择,一是开源可商用的OneAPI,另一种则是国内的接口聚合管理平台小豆包,一个个来介绍
OneAPI
简介:OneAPI 是一个 LLM API 管理与分发系统,支持多种主流模型,如 OpenAI、Azure、Anthropic Claude、Google Gemini 等,提供统一 API 适配,可用于 key 管理与二次分发。它是一个单可执行文件,提供 Docker 镜像,支持一键部署和开箱即用。这里用的是基于Docker Compose部署的方式
原理简介图

我们一步步解析
准备docker-compose.yml文件
mkdir oneapi
cd oneapi
touch docker-compose.yml
复制以下内容到docker-compose.yml文件中
version: '3.3'
services:
mysql:
# image: mysql:8.0.36
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云
container_name: mysql
restart: always
ports:
- 3306:3306
command: --default-authentication-plugin=mysql_native_password
environment:
# 默认root密码,仅首次运行有效
MYSQL_ROOT_PASSWORD: oneapimmysql
MYSQL_DATABASE: oneapi
volumes:
- ./mysql:/var/lib/mysql
oneapi:
container_name: oneapi
# image: ghcr.io/songquanpeng/one-api:latest
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云
ports:
- 3001:3000
depends_on:
- mysql
restart: always
environment:
- SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi
- SESSION_SECRET=oneapikey
- MEMORY_CACHE_ENABLED=true
- BATCH_UPDATE_ENABLED=true
- BATCH_UPDATE_INTERVAL=10
# 初始化的默认令牌
- INITIAL_ROOT_TOKEN=fastgpt
volumes:
- ./oneapi:/data
服务启动
docker-compose.yml文件准备好后,就运行以下命令启动容器
[root@iZwz9j0c6gfg3q7pp1ep6cZ oneapi] docker-compose up -d # sudo 可加可不加
稍微等待以下,有以下内容即为成功
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6
Creating mysql ... done
Creating oneapi ... done
可以用命令查看一下容器是否正常运行
[root@iZwz9j0c6gfg3q7pp1ep6cZ oneapi]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
82761e849914 registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 "/one-api" 22 minutes ago Up 22 minutes 0.0.0.0:3001->3000/tcp, :::3001->3000/tcp oneapi
4f165b6b4d33 registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 "docker-entrypoint.s…" 22 minutes ago Up 22 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
目前一切正常
打开防火墙
我用的是移动云轻型服务器,只需要放开3001/3306这两个端口就可以了
接下来就可以成功访问部署的服务了,使用公网IP:Port即可
默认是root/123456,登陆后需要强制修改密码
管理渠道
渠道,也就是支持的可调用的大模型
点击添加新渠道后,选择支持的模型,再填写自己的key
确认信息无误后,点击提交即可
提交完成后,可以点击测试,看是否有响应
管理令牌
接下来,添加对应的令牌
可以选择该令牌可使用的模型范围以及可用额度
接下来就可以复制OneAPI对应的令牌密钥进行调用了,参考代码如下
from openai import OpenAI
model_dict = {
'coze': {
'api_key': '你的密钥',
'base_url': 'http://IP:Port/v1',
'model_name': '模型名称'
},
'kimi': {
'api_key': '你的密钥',
'base_url': 'http://IP:Port/v1',
'model_name': '模型名称'
},
}
class LLM_API:
def __init__(self, api_key, base_url, model):
self.client = OpenAI(
api_key=api_key,
base_url=base_url,
)
self.model = model
def __call__(self, messages, temperature=0.7):
completion = self.client.chat.completions.create(
model=self.model,
messages=messages,
temperature=temperature,
)
print(completion)
return completion.choices[-1].message.content
if __name__ == '__main__':
model = 'kimi'
llm = LLM_API(model_dict[model]['api_key'], model_dict[model]['base_url'], model_dict[model]['model_name'])
user_question = "你是谁"
messages = [{"role": "user", "content": user_question},]
print(llm(messages))
响应如下即为成功
管理兑换码
而兑换码,是可以给用户兑换余额的,由管理员创建,供其他用户使用
在充值页面填写刚才复制的兑换码,就可以兑换管理员设定的相应的额度
管理用户
这部分的话,就可以由管理员来创建用户,供其他人可以使用你部署的服务
管理日志
这部分没什么,就是记录用户行为、api使用情况
管理设置
最后,设置这方面的话,更多是运营相关