在AI时代,大语言模型(LLM)如OpenAI的GPT系列、Anthropic的Claude、Google的Gemini等已成为开发者必备工具。然而,管理多个模型提供商的API Key、统一接口适配以及二次分发往往成为痛点。One API——一个开源的LLM API管理与分发系统。它支持多种主流模型,通过标准的OpenAI API格式访问所有大模型,开箱即用。本文将从One API的定义、功能特点、部署方法、配置、使用指南以及常见问题等方面进行有序介绍,帮助你快速上手。

什么是One API?

One API是一个开源的LLM API管理和分发系统,由GitHub用户songquanpeng开发,项目地址为GitHub - songquanpeng/one-api。它旨在统一管理多个LLM提供商的API,支持OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360智脑、腾讯混元等主流模型。通过One API,可以将这些模型的API统一适配为OpenAI格式,实现Key管理和二次分发。

核心优势在于:

  • 统一API接口:所有模型通过标准的OpenAI API格式访问,无需为每个提供商编写自定义代码。
  • 开箱即用:单可执行文件,提供Docker镜像,一键部署。
  • 多语言支持:界面支持中文、英文和日文。
  • 开源免费:基于MIT许可,但使用时需遵守OpenAI使用条款和法律法规,不得用于非法用途。根据中国《生成式人工智能服务管理暂行办法》,请勿向中国公众提供未经备案的AI服务。

One API适用于个人开发者、团队或企业,用于API Key分发、负载均衡、额度管理和监控。它不是一个AI模型本身,而是模型API的“中间件”,帮助你高效整合多源LLM资源。

One API的功能特点

One API提供了丰富的功能,覆盖API管理、用户控制和扩展性。以下是主要特点:

  1. 模型支持:兼容多种大模型和第三方代理服务,支持负载均衡访问多个渠道。
  2. Stream模式:支持流式传输,实现打字机效果。
  3. 多机部署:支持主从架构,适合高并发场景。
  4. 令牌管理:设置令牌过期时间、额度、IP限制和模型访问权限。
  5. 兑换码管理:批量生成和导出兑换码,用于账户充值。
  6. 渠道管理:批量创建渠道,支持分组和模型列表设置。
  7. 用户分组与渠道分组:为不同分组设置倍率,实现差异化定价。
  8. 额度明细查看:支持美元单位显示额度,并提供用户邀请奖励。
  9. 公告与自定义:发布公告、设置充值链接和新用户初始额度。
  10. 模型映射:重定向请求模型,但需谨慎使用以避免字段丢失。
  11. 失败重试与绘图:支持自动重试和绘图接口。
  12. Cloudflare AI Gateway集成:简化代理配置。
  13. 自定义设置:自定义系统名称、Logo、页脚、首页和关于页面(支持HTML/Markdown或iframe嵌入)。
  14. API扩展:通过系统访问令牌调用管理API,实现自定义扩展。
  15. 用户校验与登录:支持Cloudflare Turnstile校验,多种登录方式(如邮箱、GitHub、微信等)。
  16. 主题切换:支持多种主题,默认“default”。
  17. 报警推送:配合Message Pusher推送报警信息到App。
  18. 其他:绘图支持、渠道测试、批量更新等。

这些功能使One API成为一个全面的API管理平台,适用于从个人到企业的各种规模。

如何部署One API?

One API部署简单,支持多种方式。默认初始账号为root,密码为123456(登录后务必修改)。以下按步骤详解。

1. Docker部署(推荐)

使用Docker是最简单的部署方式,支持SQLite或MySQL数据库。

  • 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
    
    • 修改SQL_DSN为你的数据库连接(需预建数据库oneapi)。
    • 数据保存在宿主机/home/ubuntu/data/one-api目录,确保写入权限。
    • 如果失败,添加--privileged=true
    • 镜像备用:ghcr.io/songquanpeng/one-api

访问http://localhost:3000/登录。

更新镜像: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;  # 调整超时
    }
}

使用certbot配置HTTPS:sudo certbot --nginx

2. Docker Compose部署

使用MySQL,数据存储在./data/mysql

docker-compose up -d

查看状态:docker-compose ps

3. 宝塔面板一键部署

  • 安装宝塔面板9.2.0+。
  • 进入“Docker”菜单安装服务。
  • 在应用商店搜索“One-API”,安装并配置域名。

4. 手动部署

  • 下载可执行文件或从源码编译:
    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
    

5. 多机部署

  • 所有服务器设置相同SESSION_SECRET
  • 使用MySQL(SQL_DSN),所有节点连接同一数据库。
  • 从服务器设置NODE_TYPE=slave
  • 设置SYNC_FREQUENCY(秒)同步配置,推荐启用Redis(REDIS_CONN_STRING)。
  • 从服务器可选设置FRONTEND_BASE_URL重定向页面。

6. 部署到第三方平台

  • Sealos:一键部署(国外服务器,支持高并发)。
  • Zeabur:Fork仓库,添加项目,配置MySQL和变量(如PORT=3000SQL_DSN)。
  • Render:直接部署Docker镜像。

One API的配置

One API支持环境变量(.env文件)和命令行参数配置。

环境变量示例

  • REDIS_CONN_STRING=redis://default:redispw@localhost:49153:启用Redis缓存。
  • SESSION_SECRET=random_string:固定会话密钥。
  • SQL_DSN=root:123456@tcp(localhost:3306)/oneapi:使用MySQL。
  • SYNC_FREQUENCY=60:同步频率(秒)。
  • CHANNEL_UPDATE_FREQUENCY=1440:渠道余额更新(分钟)。
  • GLOBAL_API_RATE_LIMIT=180:API速率限制。
  • 更多:参考项目文档,如RELAY_TIMEOUT(超时)、THEME=default(主题)。

命令行参数

  • --port 3000:端口。
  • --log-dir ./logs:日志目录。
  • --version:查看版本。
  • --help:帮助。

登录后,在后台界面进一步配置,如自定义Logo、公告等。

如何使用One API?

部署后,使用步骤如下:

  1. 添加渠道:在“渠道”页面添加API Key(如OpenAI Key)。
  2. 创建令牌:在“令牌”页面新增访问令牌,设置额度、权限。
  3. 访问API:使用OpenAI格式。
    • API Base:https://your-domain/v1(如https://openai.justsong.cn/v1)。
    • API Key:你的令牌。
    • 示例(OpenAI库):
      OPENAI_API_KEY="sk-xxxxxx"
      OPENAI_API_BASE="https://your-domain/v1"
      
  4. 指定渠道(管理员令牌):Authorization: Bearer ONE_API_KEY-CHANNEL_ID
  5. 集成第三方
    • ChatGPT Next Web:Docker运行,设置Base URL和Key。
    • ChatGPT Web:类似配置。
    • QChatGPT(QQ机器人):修改配置文件设置Base URL和Key。
  6. 额度计算:额度 = 分组倍率 × 模型倍率 × (提示Tokens + 补全Tokens × 补全倍率)。GPT-3.5补全倍率为1.33,GPT-4为2。
  7. 监控与管理:查看额度明细、测试渠道、发布公告。

常见问题解答

  1. 额度计算问题:公式如上,非流模式官方返回总Tokens,但需注意倍率差异。
  2. 额度不足提示:检查令牌额度(非账户额度)。
  3. 无可用渠道:检查分组和模型设置。
  4. JSON错误:可能是IP被Cloudflare封禁。
  5. ChatGPT Next Web Failed to fetch:勿设BASE_URL,确保HTTPS和Key正确。
  6. 负载饱和:上游429错误,重试。
  7. 数据丢失:使用MySQL或持久化SQLite。
  8. 数据库一致性破坏:清理无效渠道记录。

结语

One API是一个强大且灵活的工具,帮助你轻松管理多源LLM API。如果遇到问题,可以查看GitHub Issues或在线演示(https://openai.justsong.cn)。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐