从零搭建 AI 模型中转网关:部署、渠道、定价、装修全记录

从零搭建 AI 模型中转网关:部署、渠道、定价、装修全记录

本文记录了使用 new-api 搭建 AI 模型 API 聚合网关的完整过程,涵盖 Docker 部署、Cloudflare Tunnel 公网接入、多渠道配置、定价体系、前台装修等技术细节,以及踩过的所有坑。适合想自己搭建 API 中转服务的同学参考。new-api 是 one-api 的分支,相比原版主要多了以下能力:

  • OpenAI + Anthropic 双协议兼容:用户不用改代码,换 base_url 就能用
  • 多渠道负载均衡 + 自动故障转移:同模型多通道,一个挂了自动切
  • 完整计费体系:按 token 计费、分组折扣、充值额度
  • React 前端 :主页/定价/文档/关于全可自定义```yaml
    version: '3'
    services:
    new-api:
    image: calciumion/new-api:latest
    container_name: new-api
    restart: always
    ports:
    • "3000:3000"
      volumes:

    • ./data:/data

    • ./logs:/app/logs
      environment:

    • TZ=Asia/Shanghai

    • INITIAL_ROOT_TOKEN=your_initial_token

      bash 复制代码
      docker compose up -d

启动后访问 http://localhost:3000,默认管理员账号 root / 123456第一时间改密码

2.2 坑:数据库

  • 默认用 SQLite,数据库文件在 /data/one-api.db(不是 new-api.db,后者是空壳)
  • 直接改 SQLite 不生效------有内存缓存,改完必须重启容器或通过 API 操作
  • 量大了可以换 MySQL/PostgreSQL,个人站 SQLite 够用

三、公网接入:Cloudflare Tunnel

3.1 为什么用 Tunnel

  • 不用开放公网端口,安全
  • 自带 HTTPS,不用管证书续期
  • CDN 加速

3.2 部署 cloudflared

bash 复制代码
docker run -d --name cloudflared \
  --restart unless-stopped \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run

3.3 最大的坑:远程配置 vs 本地配置

cloudflared 有两种配置模式:

  1. 本地配置config.yml):简单场景
  2. 远程配置(CF API 管理):cloudflared 从 CF API 拉取

如果 tunnel 开了 allow_remote_config改本地 config.yml 完全不生效!必须通过 CF API 修改:

bash 复制代码
curl -X PUT \
  "https://api.cloudflare.com/client/v4/accounts/{account_id}/cfd_tunnel/{tunnel_id}/configurations" \
  -H "Authorization: Bearer {cf_token}" \
  -H "Content-Type: application/json" \
  -d '{"config":{"ingress":[{"hostname":"api.yourdomain.com","service":"http://localhost:3000"},{"service":"http_status:404"}]}}'

改完看日志,出现 Updated to new configuration 才生效。

3.4 其他 Tunnel 坑

  • 回源必须 HTTP 端口,指 HTTPS 端口会报 400 plain HTTP
  • DNS 加 CNAME:api.yourdomain.com → {tunnel_id}.cfargotunnel.com

四、渠道配置

4.1 渠道是什么

一个渠道 = 一个上游 API 供应商。同一个模型可以配置多个渠道实现冗余。

4.2 添加渠道

字段 说明
类型 OpenAI / Anthropic / 自定义
Base URL 上游 API 地址
密钥 上游 API Key
模型 支持哪些模型(逗号分隔)
分组 对哪些用户组开放

4.3 负载均衡 + 故障转移

同模型多渠道自动轮询。渠道禁用后(余额耗尽、上游报错)自动切到其他渠道,用户无感。

4.4 坑

  • 分组字段是 combobox,JS 模拟 Enter 无效,必须真实输入触发下拉
  • PUT /api/channel/ 传 GET 完整对象有时报「无效的参数」,改用 UI 编辑

4.5 Anthropic 协议

接入 Claude Code 用户需配 Anthropic 协议渠道。端点分类用 OpenAI 兼容Anthropic 兼容------不要写成"OpenAI 兼容"和"Claude Code 接入",前者是协议名后者是工具名。

五、定价体系

5.1 核心参数

参数 含义
ModelRatio 输入 token 倍率(1 = $0.002/1K)
CompletionRatio 输出 ÷ 输入倍率
GroupRatio 用户组折扣(0.5 = 5折)
USDExchangeRate 1 💰 = 多少元
Price 充 1 💰 付多少钱

5.2 定价公式

复制代码
售价 $/M = ModelRatio × 2
ModelRatio = 官方输入价 $/M × 0.5(海外)
ModelRatio = 官方输入价 ¥/M ÷ 14.4(国内)
CompletionRatio = 官方输出价 ÷ 官方输入价

5.3 货币与充值

复制代码
货币符号:💰(不要用 🪙,多数字体不渲染)
1 💰 = 1 USD 额度
充值汇率 0.5(充 1 💰 付 0.5 元)
最低充值 10 💰

关键Price 必须等于 USDExchangeRate,否则充值金额和展示价格对不上。

5.4 分组折扣

json 复制代码
GroupRatio = {"default": 1, "lite": 0.5}
  • default:正常价,新用户默认进这组
  • lite:5 折优惠

5.5 新用户额度

复制代码
QuotaForNewUser = 5000000(= 10 💰)
QuotaForInviter = 5000000(邀请人得 10 💰)
QuotaForInvitee = 5000000(被邀请人得 10 💰)

六、前台装修

6.1 可自定义内容

选项 格式 说明
HomePageContent HTML 主页
About HTML 关于页
Notice 纯文本 顶部公告条
Footer 纯文本 页脚
announcements JSON 公告卡片
faq JSON FAQ
用户协议/隐私政策 Markdown 不能用 HTML

6.2 坑

  • 协议必须用 Markdown,填 HTML 会露出源码
  • 公告 type 只有 success/ongoing/default,没有 info
  • 主页内容区 dangerouslySetInnerHTML 渲染,script 不执行
  • API 返回 snake_case(home_page_content),设置用 camelCase(HomePageContent
  • 不要写死模型版本号------只写厂商名,加减模型不用改主页
  • 不要写"与官方同价"------没有差异化优势

6.3 API 操作

所有配置可通过 API 操作,不用每次登录后台:

python 复制代码
login = api("POST", "/api/user/login", {"username": "admin", "password": "xxx"})
token = login["data"]["access_token"]
r = api("GET", "/api/option/", token=token)
api("PUT", "/api/option/", {"key": "HomePageContent", "value": "<div>HTML</div>"}, token=to## 七、支付方案对比

### 7.1 支付方案选择注意事项

支付接入是搭建 API 中转站的重要环节,不同方案有不同的资质要求和成本结构。以下是几种常见方案的对比:

### 7.2 各方案对比

| 方案名称 | 是否需要营业执照 | 成本构成(开户费+费率) | 自动化程度 | 适用场景 | 优点 | 缺点 |
|--------|----------------|----------------------|----------|---------|------|------|
| 官方直连 | 是 | 无开户费,费率约0.6% | 全自动(实时到账) | 有营业执照,追求低费率与正规化 | 费率低,用户支付体验好,官方支持稳定 | 必须营业执照,申请流程较长 |
| 第三方支付平台 | 是 | 开户费88-118元,另加1-2%平台费+0.6%官方费率 | 全自动 | 有执照但不愿直接对接官方,想快速接入 | 接入简单,支持多通道 | 实际总成本高于直连,且依赖第三方平台 |
| 卡密充值 | 否 | 0元(自行生成卡密,通过支付手动确认) | 手动(需运营人员后台确认充值) | 无营业执照,个人/小团队测试阶段 | 零成本,无资质门槛,灵活 | 完全手动,用户充值体验差,效率低 |
| 办理执照后接入 | 否→是(办理后获得) | 办执照几十元(自己办)或代办几百元;后续可走直连或第三方费率 | 取得执照后方可全自动 | 希望长远正规运营,愿意先花时间办理执照 | 一次性投入,后续可享受正规支付渠道 | 办理周期 1-2 周,有一定时间成本 |2周后全自动 |

## 八、踩坑总结

- **Docker**:绝不改 systemd docker 配置,不擅自 restart docker,拉镜像用国内源
- **Tunnel**:远程配置模式改本地不生效,回源必须 HTTP
- **API**:分页用 `?page=N`,直接改 SQLite 不生效
- **装修**:协议用 Markdown,不写死型号,不

## 常见问题(FAQ)

**Q1:忘记了管理员密码,如何重置?**

如果邮箱/SMTP 配置可用,可通过「忘记密码」流程重置;如果无法收到邮件,需要通过直接操作数据库来重置。对于默认的 SQLite,执行:

```bash
docker exec -it new-api sqlite3 /data/one-api.db

然后更新 users 表中对应用户的密码字段(需使用 bcrypt 哈希后的值)。也可以重新设置环境变量 INITIAL_ROOT_TOKEN 并重启容器,再用该 token 登录后修改密码。

Q2:如何查看详细的请求日志,方便排查上游 API 错误?

默认情况下 new-api 会将请求日志输出到容器标准输出,通过 docker logs new-api 即可查看。如需更详细的请求/响应内容,可以在 docker-compose.yml 中增加环境变量:

yaml 复制代码
- LOGGING_LEVEL=debug

重启后日志将包含完整的请求参数与返回体。此外,在管理后台的「系统设置」中开启「日志记录」功能,也可以在界面上查看历史请求。

Q3:如何在不重启服务的情况下新增模型?

只需要在对应渠道的「模型」字段中添加新的模型标识(与上游 API 返回的模型 ID 完全一致),多个模型用英文逗号分隔。添加后无需重启,new-api 会在下一次请求时自动识别新模型并路由到该渠道。

Q4:从 SQLite 切换到 MySQL/PostgreSQL 需要注意什么?

  1. docker-compose.yml 中引入对应的数据库服务(如 MySQL),并配置环境变量:
    • SQL_DRIVER=mysql
    • SQL_DSN=user:password@tcp(mysql:3306)/newapi?charset=utf8mb4&parseTime=True&loc=Local
  2. 首次启动前需要手动创建数据库并导入 new-api 的表结构(可从项目中获取 SQL 文件)。
  3. 如需迁移现有 SQLite 数据,建议先通过 new-api 的 API 导出关键配置,再导入新库,避免直接拷贝数据库文件。

Q5:上游 API 经常触发限流或超时怎么办?

为同一模型配置多个渠道(例如不同供应商的 key 或多个同供应商的子账号)即可。new-api 会自动在同模型的多个渠道间轮询,当一个渠道因限流被禁用后,流量会自动转移到其他可用渠道,用户端无感知。此外,可以在渠道设置中适当调整「超时时间」和「重试次数」## 七、支付方案对比

7.1 支付方案选择注意事项

支付接入是搭建 API 中转站的重要环节,不同方案有不同的资质要求和成本结构。以下是几种常见方案的对比:

7.2 各方案对比

方案名称 是否需要营业执照 成本构成(开户费+费率) 自动化程度 适用场景 优点 缺点
官方直连 无开户费,费率约0.6% 全自动(实时到账) 有营业执照,追求低费率与正规化 费率低,用户支付体验好,官方支持稳定 必须营业执照,申请流程较长
第三方支付平台 开户费88-118元,另加1-2%平台费+0.6%官方费率 全自动 有执照但不愿直接对接官方,想快速接入 接入简单,支持多通道 实际总成本高于直连,且依赖第三方平台
卡密充值 0元(自行生成卡密,通过支付手动确认) 手动(需运营人员后台确认充值) 无营业执照,个人/小团队测试阶段 零成本,无资质门槛,灵活 完全手动,用户充值体验差,效率低
办理执照后接入 否→是(办理后获得) 办执照几十元(自己办)或代办几百元;后续可走直连或第三方费率 取得执照后方可全自动 希望长远正规运营,愿意先花时间办理执照 一次性投入,后续可享受正规支付渠道 办理周期 1-2 周,有一定时间成本
相关推荐
我命由我1234544 分钟前
Kotlin 面向对象 - Kotlin 类变量与类方法
java·服务器·后端·java-ee·kotlin·android jetpack·android runtime
gnsnswa1 小时前
解读6大AI人工智能认证证书
人工智能·信息可视化·职场和发展·数据分析·aigc·学习方法·信息与通信
明如正午1 小时前
codebuddy-ignore-详解
人工智能·codebuddy
Canace1 小时前
GPT-5.6 到底怎么选?一文搞懂 Sol、Terra、Luna 和 Ultra
前端·人工智能·chatgpt
信鸽爱好者1 小时前
一人多台电脑办公模式:windows 电脑A远程桌面操作ubuntu电脑B
linux·运维·ubuntu
anxiao_m1 小时前
2026教学AI云桌面横向测评!五大主流品牌实景能力对比
大数据·人工智能·机器学习
朗宇芯工控1 小时前
立柱码垛机:智能制造末端的轻量化“搬运专家“
机器人·自动化·制造·工业·运动控制系统
IT_陈寒1 小时前
小心!Java里的这个空指针问题绝对坑过你
前端·人工智能·后端
小白学大数据1 小时前
基于Python的抖音网页版视频点赞数增长趋势追踪系统设计与实现
开发语言·爬虫·python·搜索引擎·音视频