One API - LLM API管理与分发系统
项目概述
One API是一个开源的LLM API管理与分发系统,支持OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、ChatGLM等主流模型,统一API适配,可用于key管理与二次分发。该项目提供单可执行文件,支持Docker镜像,实现一键部署,开箱即用。
核心特性
📋 多模型支持
项目支持众多主流大语言模型提供商:
- OpenAI系列:ChatGPT系列模型(支持Azure OpenAI API)
- Anthropic:Claude系列模型(支持AWS Claude)
- Google:PaLM2/Gemini系列模型
- other:其它系列模型
🔧 核心功能
API管理与分发
- 支持配置镜像以及众多第三方代理服务
- 支持通过负载均衡的方式访问多个渠道
- 支持stream模式,可以通过流式传输实现打字机效果
- 支持多机部署
- 支持失败自动重试
- 支持绘图接口
用户与权限管理
- 令牌管理:设置令牌的过期时间、额度、允许的IP范围以及允许的模型访问
- 兑换码管理:支持批量生成和导出兑换码,可使用兑换码为账户进行充值
- 用户分组:支持用户分组以及渠道分组,支持为不同分组设置不同的倍率
- 渠道管理:批量创建渠道,支持渠道设置模型列表
监控与统计
- 支持查看额度明细
- 支持用户邀请奖励
- 支持以美元为单位显示额度
- 配合Message Pusher可将报警信息推送到多种App上
自定义功能
- 支持发布公告,设置充值链接,设置新用户初始额度
- 支持模型映射,重定向用户的请求模型
- 支持自定义系统名称、logo以及页脚
- 支持自定义首页和关于页面
- 支持通过系统访问令牌调用管理API
🔐 安全与认证
多种登录方式
- 邮箱登录注册(支持注册邮箱白名单)以及通过邮箱进行密码重置
- 飞书授权登录
- GitHub授权登录
- 微信公众号授权(需要额外部署WeChat Server)
安全特性
- 支持Cloudflare Turnstile用户校验
- 支持主题切换
- 支持Cloudflare AI Gateway
部署方式
Docker部署(推荐)
使用SQLite
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
使用MySQL
docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api
Docker Compose部署
# 目前支持MySQL启动,数据存储在./data/mysql文件夹内
docker-compose up -d
# 查看部署状态
docker-compose ps
手动部署
- 从GitHub Releases下载可执行文件或从源码编译:
git clone https://github.com/songquanpeng/one-api.git
# 构建前端
cd one-api/web/default
npm install
npm run build
# 构建后端
cd ../..
go mod download
go build -ldflags "-s -w" -o one-api
- 运行:
chmod u+x one-api
./one-api --port 3000 --log-dir ./logs
云平台部署
Zeabur部署
- Fork代码仓库
- 在Zeabur创建Project,添加MySQL服务
- 配置环境变量
PORT=3000和SQL_DSN - 部署并配置域名
Render部署
- 直接部署Docker镜像
- 无需Fork仓库
配置说明
环境变量配置
数据库配置
SQL_DSN:数据库连接字符串(推荐使用MySQL或PostgreSQL)LOG_SQL_DSN:日志表独立数据库连接
缓存配置
REDIS_CONN_STRING:Redis连接字符串,用于缓存MEMORY_CACHE_ENABLED:启用内存缓存SYNC_FREQUENCY:数据库同步频率(秒)
集群配置
SESSION_SECRET:固定会话密钥NODE_TYPE:节点类型(master/slave)FRONTEND_BASE_URL:前端重定向地址
安全配置
GLOBAL_API_RATE_LIMIT:API速率限制GLOBAL_WEB_RATE_LIMIT:Web速率限制RELAY_TIMEOUT:中继超时设置
命令行参数
--port <port_number>:指定端口号(默认3000)--log-dir <log_dir>:指定日志文件夹--version:打印版本号--help:查看帮助
使用方法
- 初始登录:使用默认账号
root,密码123456 - 渠道配置:在渠道页面添加API Key
- 令牌创建:在令牌页面创建访问令牌
- 客户端配置:将API Base设置为One API部署地址,API Key设置为生成的令牌
API使用示例
# OpenAI官方库配置
OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"
渠道指定
可以通过在令牌后添加渠道ID来指定使用特定渠道:
Authorization: Bearer ONE_API_KEY-CHANNEL_ID
架构设计
用户 → One API → OpenAI/Azure/Claude/Gemini等多个提供商
One API作为中间层,统一不同提供商的API格式,提供:
- 负载均衡
- 请求中继和格式转换
- 用户管理和权限控制
- 使用量统计和计费
集成案例
ChatGPT Next Web
docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web
在页面设置接口地址和API Key即可。
ChatGPT Web
docker run --name chatgpt-web -d -p 3002:3002 -e OPENAI_API_BASE_URL=https://openai.justsong.cn -e OPENAI_API_KEY=sk-xxx chenzhaoyu94/chatgpt-web
许可证
本项目使用MIT协议开源,要求在页面底部保留署名以及指向本项目的链接。
项目地址
- GitHub:https://github.com/songquanpeng/one-api
- 在线演示:https://openai.justsong.cn
- Docker Hub:justsong/one-api