Skip to content

ccq18/airouter

Repository files navigation

介绍

  • 实现了openai codex 接口转发,支持多账号额度调度,5小时额度低于3%会自动切换新账号
  • 并且实现了messages api和responses api的翻译,可以让claude code 使用gpt-5.4
  • 极简依赖,只需要nodejs即可运行。

配置

git clone git@github.com:ccq18/airouter.git
cd airouter
npm install
npm start

说明:

  • 首次执行 npm start 时,如果 openai.json 不存在,会自动读取 openai.json.example 进入创建配置文件引导
  • 引导会依次询问是否启用本地代理端口(默认开启)、代理端口号(默认 7890,可修改)、是否启用入口 apikey
  • 若启用入口 apikey,会自动生成一个 sk-airouter-... 并写入配置文件
  • 非交互终端不会进入引导;这种场景下请先手工创建 openai.json

配置账号

启动后访问启动日志里打印的管理地址,例如 http://127.0.0.1:3009/admin/configs?auth_token=... config_account.png 管理页里可以新增随机 apikey,配置了apikey则会校验,若所有apikey为空则不校验 管理页还提供了一个“测试请求”按钮,点击按钮请求测试即可,有正常内容返回,就表示airouter已经成功配置

注意: chatgpt 不要退出登录,退出登录后 token 会失效,建议在无痕窗口登录 GPT 后获取登录态

configs 里可以同时放 ChatGPT Codex token 账号和第三方 API。未写 type 的配置项默认是 token;第三方 API 配置项写 type: "apikey"apikey 默认支持 OpenAI 兼容 /v1/* 链路,也就是 support: ["gpt"];需要原样转发 Claude Messages API 时,在同一个 apikey 配置项里加 support: ["claude"],也可以写成 ["gpt", "claude"] 同时支持两条链路:

[
  {
    "access_token": "chatgpt-access-token",
    "account_id": "account-id",
    "description": "codex token account"
  },
  {
    "type": "apikey",
    "base_url": "https://api.example.com/v1",
    "apikey": "sk-xxx",
    "description": "third-party provider"
  },
  {
    "type": "apikey",
    "base_url": "https://claude.example.com/v1",
    "apikey": "sk-xxx",
    "support": ["claude"],
    "description": "claude messages provider"
  }
]

base_url 不要求是 Codex 或 ChatGPT 地址。support 包含 gptapikey 用于 OpenAI 兼容的 /v1/* 链路;support 包含 claudeapikey 用于 /v1/messages 链路,并且请求体会原样转发,不做模型转换。/v1/responses 不会使用只支持 claudeapikey 配置项。调度优先级固定为 token 高于 apikey:每分钟会轮询所有 token 账号;只在所有 token 都不可用时才会使用 apikey;一旦有 token 恢复可用,会优先切回 token。Messages 链路会优先使用 support 包含 claudeapikey,没有可用 Claude apikey 时再使用 token 兼容转换。

无api_key
curl http://127.0.0.1:3009/v1/responses \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.4","input":[{"type":"message","role":"user","content":[{"type":"input_text","text":"hello"}]}]}'


带api_key
curl http://127.0.0.1:3009/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <api key>" \
-d '{"model":"gpt-5.4","input":[{"type":"message","role":"user","content":[{"type":"input_text","text":"hello"}]}]}'

ccs配置

建议使用 https://github.com/farion1231/cc-switch 管理本地的配置

使用 ccs 配置转发到对应地址即可;如果 airouter 配置了入口 apikeys,这里填其中任意一个值,否则可以留空或随便写 ccs_codex.png ccs_claude.png

其他命令

说明:

  • npm start:启动服务;首次启动且缺少 openai.json 时,会先进入创建配置文件引导,然后继续启动
  • npm run restart:重启当前服务进程
  • npm run stop:停止当前服务进程
  • npm run logs:查看服务运行日志,排查启动问题时优先看这里

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors