Skip to content
gsiliconkPublic

About

API_relay

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

AI API 中转站

这是一个 OpenAI/Anthropic 兼容 API 中转站。运行态使用 PostgreSQL 做交易数据库,Redis 做 session、限流和并发计数。

1. 安装

npm install

1.1 启动 PostgreSQL 和 Redis

高并发部署建议使用 PostgreSQL 作为主数据库、Redis 作为 session / 限流 / 并发计数存储:

docker compose -f docker-compose.infra.yml up -d
npm run smoke:infra

2. 配置环境变量

复制 .env.example 为 .env,然后填入你的 DeepSeek API Key:

Copy-Item .env.example .env

.env 里至少需要配置:

DATABASE_URL=postgres://api_relay:api_relay@127.0.0.1:5432/api_relay
REDIS_URL=redis://127.0.0.1:6379
DEEPSEEK_API_KEY=sk-your-deepseek-key
ADMIN_SESSION_SECRET=换成一串长随机字符串
KEY_ENCRYPTION_SECRET=再换成另一串长随机字符串
ADMIN_ALLOWED_IPS=留空表示不限制后台 IP
ADMIN_LOGIN_MAX_FAILURES=5
ADMIN_LOGIN_LOCK_MINUTES=10
GLOBAL_CONCURRENCY_LIMIT=200
KEY_CONCURRENCY_LIMIT=20
UPSTREAM_CONCURRENCY_LIMIT=50
CONCURRENCY_LEASE_MS=120000
STUCK_RESERVATION_MINUTES=30

3. 初始化管理员、客户和 Key

npm run cli -- create-admin admin 你的管理员密码
npm run cli -- create-customer 测试客户
npm run cli -- recharge 1 10 测试充值
npm run cli -- create-key 1 CherryStudio

create-key 输出的 Key 只显示一次,请保存好。客户调用中转站时使用这个 Key,不使用 DeepSeek 原始 Key。

4. 启动服务

npm run dev

默认地址:

  • API Base URL:http://localhost:3000/v1
  • 管理后台:http://localhost:3000/admin
  • 模型列表:http://localhost:3000/v1/models

5. Cherry Studio 配置

  • Provider 类型:OpenAI 兼容
  • Base URL:http://localhost:3000/v1
  • API Key:中转站生成的 sk-relay-...
  • 模型名:deepseek-v4-pro

6. 网页端 ai 智能体配置

打开 网页端ai智能体.html 后,在“配置模型”里填写:

  • API 提供商类型:OpenAI 兼容或国产 OpenAI 兼容
  • Base URL:http://localhost:3000/v1
  • API Key:中转站生成的 sk-relay-...
  • 对话模型名:deepseek-v4-pro

第一版不修改这个 HTML 文件。

7. 计费规则

  • 数据库金额用人民币“分”保存。
  • 后台显示人民币金额。
  • 默认模型是 deepseek-v4-pro。
  • 模型售价按三段填写:输入缓存命中、输入缓存未命中、输出,单位都是人民币元 / 百万 token。
  • 后台还可以按三段填写每个模型的上游成本价,用于估算毛利;成本价不影响客户扣费。
  • 如果请求没有传 max_tokens,系统按 2048 预扣。
  • 预扣时输入 token 全部按“缓存未命中输入价”估算,保证余额校验偏严格。
  • 请求完成后按上游返回的真实 usage 结算;如果返回 prompt_cache_hit_tokens 和 prompt_cache_miss_tokens,就按缓存命中/未命中分别计费;如果没有这些字段,则全部输入按缓存未命中价计费。
  • 多扣部分会退回余额。
  • 请求失败会释放预扣金额。
  • 超过 STUCK_RESERVATION_MINUTES 仍未结算的预扣会由后台清理任务自动释放。
  • 余额预扣、结算、释放使用 PostgreSQL 短事务和行级锁。
  • API Key 每分钟限流、全局/API Key/上游并发限制都使用 Redis TTL 计数,超限会返回 429 或 503。

8. 常用命令

npm run cli -- list-customers
npm run cli -- list-keys
npm run cli -- list-models
npm run cli -- list-logs
npm run cli -- list-admins
npm run cli -- reset-admin 1 新账号 新密码
npm run build

9. 管理后台功能

管理后台地址是 http://localhost:3000/admin,当前版本支持:

  • 查看客户数、余额、Key、调用量、收入等运营统计。
  • 复制 Cherry Studio 和网页端的接入信息。
  • 创建客户、充值、发放、禁用和删除 API Key。
  • 查看和复制新生成的完整 API Key。
  • 为每个 API Key 设置每分钟请求上限,0 表示不限速。
  • 为每个 API Key 设置每日、每月和总消费额度,0 表示不限额。
  • 为每个 API Key 设置允许模型白名单,多个模型用英文逗号分隔,留空表示不限。
  • 为每个 API Key 设置单次 max_tokens 输出上限,0 表示不限。
  • 重命名 API Key。
  • 编辑模型名、上游模型名、启用状态和三段人民币 token 售价。
  • 编辑每个模型的三段上游成本价,并查看收入、成本、毛利和毛利率。
  • 查看客户财务报表,按客户汇总调用、Token、收入、成本、毛利和毛利率。
  • 导出客户财务报表 CSV,方便对账。
  • 查看调用日志和余额流水。
  • 查看单个客户详情,包括客户 Key、调用日志、余额流水和累计扣费。
  • 查看模型维度统计。
  • 按客户名称搜索客户。
  • 按日期范围筛选调用日志和余额流水。
  • 导出当前调用日志和余额流水 CSV。
  • 运行态数据在 PostgreSQL;请使用 PostgreSQL 备份方案备份生产数据。
  • 管理员登录失败次数过多会临时锁定。
  • 可选启用后台 IP 白名单。
  • 后台会显示关键安全配置风险提示。
  • 查看管理员操作日志,记录登录、充值、Key 操作、模型保存和备份下载等动作。
  • 在后台修改管理员账号和密码。

注意:旧版本生成的 API Key 只保存了哈希,无法恢复完整明文。配置 KEY_ENCRYPTION_SECRET 后,新生成的 Key 会加密保存,可在后台完整查看和复制。

10. 数据存储

默认 Docker Compose 会创建本地目录:

postgres_data/
redis_data/

这两个目录已被 .gitignore 忽略。生产环境建议使用托管 PostgreSQL/Redis 或独立持久化卷。

About

API_relay

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages