一、软件介绍

文末提供程序和源码下载

       one-api开源程序是LLM API 管理 & 分发系统,支持 OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360 智脑、腾讯混元等主流模型,统一 API 适配,可用于 key 管理与二次分发。单可执行文件,提供 Docker 镜像,一键部署,开箱即用。

使用 root 用户初次登录系统后,务必修改默认密码 123456!

二、功能

支持多种大模型:
 OpenAI ChatGPT 系列模型(支持 Azure OpenAI API)
OpenAI ChatGPT 系列模型 (支持 Azure OpenAI API)
 Anthropic Claude 系列模型 (支持 AWS Claude)
Anthropic Claude 系列模型 (支持 AWS Claude)
 Google PaLM2/Gemini 系列模型
 Mistral 系列模型
 字节跳动豆包大模型(火山引擎)
 百度文心一言系列模型
 阿里通义千问系列模型
 讯飞星火认知大模型
 智谱 ChatGLM 系列模型
 360 智脑
 腾讯混元大模型
 Moonshot AI  登月人工智能
 百川大模型
 MINIMAX  极大 极小
 Groq  格罗克
 Ollama  奥拉马
 零一万物
 阶跃星辰
 Coze  科兹
 Cohere  凝聚
 DeepSeek  深度 seek
 Cloudflare Workers AI  Cloudflare 工人 AI
 DeepL  深度 L
 together.ai
 novita.ai
 硅基流动 SiliconCloud
 xAI

  1. 支持配置镜像以及众多第三方代理服务。
  2. 支持通过负载均衡的方式访问多个渠道。
  3. 支持 stream 模式,可以通过流式传输实现打字机效果。
  4. 支持多机部署,详见此处。
  5. 支持令牌管理,设置令牌的过期时间、额度、允许的 IP 范围以及允许的模型访问。
  6. 支持兑换码管理,支持批量生成和导出兑换码,可使用兑换码为账户进行充值。
  7. 支持渠道管理,批量创建渠道。
  8. 支持用户分组以及渠道分组,支持为不同分组设置不同的倍率。
  9. 支持渠道设置模型列表。
  10. 支持查看额度明细。
  11. 支持用户邀请奖励。
  12. 支持以美元为单位显示额度。
  13. 支持发布公告,设置充值链接,设置新用户初始额度。
  14. 支持模型映射,重定向用户的请求模型,如无必要请不要设置,设置之后会导致请求体被重新构造而非直接透传,会导致部分还未正式支持的字段无法传递成功。
  15. 支持失败自动重试。
  16. 支持绘图接口。
  17. 支持 Cloudflare AI Gateway,渠道设置的代理部分填写 https://gateway.ai.cloudflare.com/v1/ACCOUNT_TAG/GATEWAY/openai 即可。
  18. 支持丰富的自定义设置,
  19. 支持自定义系统名称,logo 以及页脚。
  20. 支持自定义首页和关于页面,可以选择使用 HTML & Markdown 代码进行自定义,或者使用一个单独的网页通过 iframe 嵌入。
  21. 支持通过系统访问令牌调用管理 API,进而在无需二开的情况下扩展和自定义 One API 的功能,详情请参考此处 API 文档。
  22. 支持 Cloudflare Turnstile 用户校验。
  23. 支持用户管理,支持多种用户登录注册方式:
  24. 邮箱登录注册(支持注册邮箱白名单)以及通过邮箱进行密码重置。
  25. 支持飞书授权登录(这里有 One API 的实现细节阐述供参考)。
  26. 支持 GitHub 授权登录。
  27. 微信公众号授权(需要额外部署 WeChat Server)。
  28. 支持主题切换,设置环境变量 THEME 即可,默认为 default,欢迎 PR 更多主题,具体参考此处。
  29. 配合 Message Pusher 可将报警信息推送到多种 App 上。

三、部署

基于 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 的部署命令,在上面的基础上添加 `-e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"`,请自行修改数据库连接参数,不清楚如何修改请参见下面环境变量一节。
# 例如:
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
其中,-p 3000:3000 中的第一个 3000 是宿主机的端口,可以根据需要进行修改。

数据和日志将会保存在宿主机的 /home/ubuntu/data/one-api 目录,请确保该目录存在且具有写入权限,或者更改为合适的目录。

如果启动失败,请添加 --privileged=true,具体参考 #482 。

如果上面的镜像无法拉取,可以尝试使用 GitHub 的 Docker 镜像,将上面的 justsong/one-api 替换为 ghcr.io/songquanpeng/one-api 即可。

如果你的并发量较大,务必设置 SQL_DSN,详见下面环境变量一节。

更新命令:docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower -cR

Nginx 的参考配置:

server{
   server_name openai.justsong.cn;  # 请根据实际情况修改你的域名

   location / {
          client_max_body_size  64m;
          proxy_http_version 1.1;
          proxy_pass http://localhost:3000;  # 请根据实际情况修改你的端口
          proxy_set_header Host $host;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_cache_bypass $http_upgrade;
          proxy_set_header Accept-Encoding gzip;
          proxy_read_timeout 300s;  # GPT-4 需要较长的超时时间,请自行调整
   }
}
之后使用 Let's Encrypt 的 certbot 配置 HTTPS:

# Ubuntu 安装 certbot:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# 生成证书 & 修改 Nginx 配置
sudo certbot --nginx
# 根据指示进行操作
# 重启 Nginx
sudo service nginx restart
初始账号用户名为 root,密码为 123456。

通过宝塔面板进行一键部署
安装宝塔面板9.2.0及以上版本,前往 宝塔面板 官网,选择正式版的脚本下载安装;
安装后登录宝塔面板,在左侧菜单栏中点击 Docker,首次进入会提示安装 Docker 服务,点击立即安装,按提示完成安装;
安装完成后在应用商店中搜索 One-API,点击安装,配置域名等基本信息即可完成安装;
基于 Docker Compose 进行部署
仅启动方式不同,参数设置不变,请参考基于 Docker 部署部分

# 目前支持 MySQL 启动,数据存储在 ./data/mysql 文件夹内
docker-compose up -d

# 查看部署状态
docker-compose ps

手动部署

  • 文末下载可执行文件
  • # 构建前端
  • 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
  • 访问 http://localhost:3000/ 并登录。初始账号用户名为 root,密码为 123456。

多机部署

  • 所有服务器 SESSION_SECRET 设置一样的值。
  • 必须设置 SQL_DSN,使用 MySQL 数据库而非 SQLite,所有服务器连接同一个数据库。
  • 所有从服务器必须设置 NODE_TYPE 为 slave,不设置则默认为主服务器。
  • 设置 SYNC_FREQUENCY 后服务器将定期从数据库同步配置,在使用远程数据库的情况下,推荐设置该项并启用 Redis,无论主从。
  • 从服务器可以选择设置 FRONTEND_BASE_URL,以重定向页面请求到主服务器。
  • 从服务器上分别装好 Redis,设置好 REDIS_CONN_STRING,这样可以做到在缓存未过期的情况下数据库零访问,可以减少延迟(Redis 集群或者哨兵模式的支持请参考环境变量说明)。
  • 如果主服务器访问数据库延迟也比较高,则也需要启用 Redis,并设置 SYNC_FREQUENCY,以定期从数据库同步配置。

部署第三方服务配合 One API 使用
欢迎 PR 添加更多示例。

ChatGPT Next Web  ChatGPT 下一个网页
项目主页:https://github.com/Yidadaa/ChatGPT-Next-Web

docker run --name chat-next-web -d -p 3001:3000 yidadaa/chatgpt-next-web
注意修改端口号,之后在页面上设置接口地址(例如:https://openai.justsong.cn/ )和 API Key 即可。

ChatGPT Web
项目主页:https://github.com/Chanzhaoyu/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
注意修改端口号、OPENAI_API_BASE_URL 和 OPENAI_API_KEY。

QChatGPT - QQ机器人  QChatGPT - QQ 机器人
项目主页:https://github.com/RockChinQ/QChatGPT

根据文档完成部署后,在 data/provider.json设置requester.openai-chat-completions.base-url为 One API 实例地址,并填写 API Key 到 keys.openai 组中,设置 model 为要使用的模型名称。

运行期间可以通过!model命令查看、切换可用模型。

配置


系统本身开箱即用。

你可以通过设置环境变量或者命令行参数进行配置。

等到系统启动后,使用 root 用户登录系统并做进一步的配置。

Note:如果你不知道某个配置项的含义,可以临时删掉值以看到进一步的提示文字。

使用方法


在渠道页面中添加你的 API Key,之后在令牌页面中新增访问令牌。

之后就可以使用你的令牌访问 One API 了,使用方式与 OpenAI API 一致。

你需要在各种用到 OpenAI API 的地方设置 API Base 为你的 One API 的部署地址,例如:https://openai.justsong.cn,API Key 则为你在 One API 中生成的令牌。

注意,具体的 API Base 的格式取决于你所使用的客户端。

例如对于 OpenAI 的官方库:

OPENAI_API_KEY="sk-xxxxxx"
OPENAI_API_BASE="https://<HOST>:<PORT>/v1"

软件下载

夸克网盘分享

本文信息来源于GitHub作者地址:https://github.com/songquanpeng/one-api

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐