CLIProxyAPI统一AI大模型接口

0 阅读5分钟

小伙伴们大家好,我是小溪,见字如面。今天给大家推荐一个好用的AI大模型代理服务CLIProxyAPI,使用CLIProxyAPI我们可以将 Gemini CLI、ChatGPT Codex、Claude Code 和 iFlow 等命令行工具包装成兼容 OpenAI/Gemini/Claude/Codex 的 API 服务并使用统一的API接口进行访问。CLIProxyAPI服务还可以和Claude Code Router以及CC Switch工具配合使用,大幅度解决平台请求速率制导致的开发中断问题。对Claude Code Router和CC Switch还不了解的小伙伴可以看往期内容:

当前使用版本

CLIProxyAPI Version: 6.8.25

优势

  • 使用统一兼容的API接口进行访问不同的AI提供商服务
  • 提供主流AI提供商登录授权功能
  • 支持多账号管理
  • 自动轮询多账号

限制

  • 如果只有一个账号,可能触发429限制
  • 6.2.X版本移除Gemini Web支持(看到Gemini Web的教程可跳过)

CLIProxyAPI是什么?

CLIProxyAPI是一个为CLI提供 OpenAI/Gemini/Claude/Codex 兼容 API 接口的代理服务器。使我们可以使用本地或多账户的CLI方式,通过任何与 OpenAI(包括Responses)/Gemini/Claude 兼容的客户端和SDK进行访问。

Github仓库地址:github.com/router-for-…

Image

CLIProxyAPI中文文档:help.router-for.me/cn

Image

CLIProxyAPI的特点

CLIProxyAPI功能非常强大,整合了从 授权、账号管理、API协议兼容 到 轮询负载均衡 一整套服务:

  • 通用API兼容:统一兼容了Anthropic和OpenAI协议,无论Claude Code、Codex还是OpenCode,都可以使用统一API接入
  • 主流AI服务的OAuth认证:提供了Claude Code、Codex、Gemini、Qwen、iFlow 及 Antigravity 等主流AI提供商的OAuth认证
  • 多账号管理:提供多账号支持,支持热重载、轮询负载均衡、模型映射功能
  • 灵活的部署方式:支持本地运行和Docker容器化支持

安装与配置

安装方式

MacOS

$ brew install cliproxyapi

Linux

$ 
https:
/raw.githubusercontent.com/brokechubb/cliproxyapi-installer/refs/heads/master/cliproxyapi-installer | bash

Windows

// shell命令
https://github.com/router-for-me/CLIProxyAPI/releases

// 桌面应用
https://github.com/router-for-me/EasyCLI/releases

Docker

$
rm

源码编译

$ git clone https://github.com/router-for-me/CLIProxyAPI.git
$ cd CLIProxyAPI

// Linux, macOS
$ go build -o cli-proxy-api ./cmd/server

// Windows
$ go build -o cli-proxy-api.exe ./cmd/server

配置

温馨提示:配置文件支持热重载,修改配置文件是即时生效的,不需要重启程序

安装完成后在命令行终端执行 cliproxyapi -h 查看命令行参数,通过cofig参数,以macOS为例,我们可以看到配置文件在 /usr/local/etc/cliproxyapi.conf

Image

使用IDE打开配置内容如下:

Image

如果想自定义配置文件可以通过下面命令指定

// macOS
$ brew services start cliproxyapi --config /path/to/your/config.yaml
// Linux、Windows

$ cli-proxy-api --config /path/to/your/config.yaml

CLIProxyAPI中文文档上提供了详细的配置说明,需要的小伙伴可以自行查阅

# 服务器绑定主机/接口,默认空字符串同时绑定 IPv4/IPv6。
# 使用 "127.0.0.1" 或 "localhost" 可限制仅本机访问。
host: ""
# 服务器端口
port: 8317
# TLS 设置:启用后使用提供的证书与私钥监听 HTTPS。
tls:
  enablefalse
  cert: ""
  key: ""
# 管理 API 设置
remote-management:
  # 是否允许远程(非 localhost)访问管理接口。
  # 为 false 时仅允许 localhost,仍需管理密钥。
  allow-remote: false
  # 管理密钥。若填写明文,启动时会自动哈希后生效。
  # 所有管理请求(包括本地)都需要该密钥。
  # 留空则完全禁用管理 API(所有 /v0/management 路由返回 404)。
  secret-key: ""
  # 为 true 时禁用内置管理面板资源下载与路由。
  disable-control-panel: false
  # 管理面板的 GitHub 仓库,可填写仓库 URL 或 releases API URL。
  panel-github-repository: "https://github.com/router-for-me/Cli-Proxy-API-Management-Center"
# 认证目录(支持 ~ 展开为主目录)
auth-dir: "~/.cli-proxy-api"
# 用于请求认证的 API 密钥
api-keys:
  - "your-api-key-1"
  - "your-api-key-2"
  - "your-api-key-3"
# 是否启用调试日志
debug: false
# 为 true 时禁用高开销 HTTP 中间件以降低高并发下的内存占用
commercial-mode: false
# 为 true 时将应用日志写入滚动文件而非 stdout
logging-to-file: false
# 日志目录的最大总大小(MB);超过后会删除最旧的日志。0 表示不限制。
logs-max-total-size-mb: 0
# 为 false 时禁用内存用量统计聚合
usage-statistics-enabled: false
# 代理地址。支持 socks5/http/https,例如 socks5://user:pass@192.168.1.1:1080/
proxy-url: ""
# 为 true 时,无前缀模型请求只会匹配无前缀凭据(除非前缀与模型名相同)。
force-model-prefix: false
# 请求重试次数;当响应码为 403/408/500/502/503/504 时重试。
request-retry: 3
# 冷却中的凭据等待的最长时间(秒),超过则触发重试。
max-retry-interval: 30
# 配额超限时的处理
quota-exceeded:
  switch-project: true # 配额超限时是否自动切换其他项目
  switch-preview-model: true # 配额超限时是否自动切换预览模型
# 多凭据匹配时的路由策略
routing:
  strategy: "round-robin" # 轮询(默认)或 fill-first
# 是否为 WebSocket API (/v1/ws) 启用认证
ws-auth: false
# 当 > 0 时,为非流式响应每隔 N 秒发送空行以防止空闲超时
nonstream-keepalive-interval: 0
# 当为 true 时,为 Codex API 请求启用官方 Codex 指令注入
# 当为 false(默认)时,CodexInstructionsForModel 立即返回而不修改
codex-instructions-enabled: false
# 流式传输行为(SSE keep-alive 与安全启动重试)
streaming:
  keepalive-seconds: 15   # 默认:0(禁用);≤0 关闭 keep-alive。
  bootstrap-retries: 1    # 默认:0(禁用);首字节前的重试次数。
# Gemini API 密钥
gemini-api-key:
  - api-key: "AIzaSy...01"
    prefix: "test" # 可选:需要以 "test/gemini-3-pro-preview" 访问
    base-url: "https://generativelanguage.googleapis.com"
    headers:
      X-Custom-Header: "custom-value"
    proxy-url: "socks5://proxy.example.com:1080"
    models:
      - name: "gemini-2.5-flash" # 上游模型名
        alias"gemini-flash"    # 客户端别名
    excluded-models:
      - "gemini-2.5-pro"     # 精确排除
      - "gemini-2.5-*"       # 前缀通配
      - "*-preview"          # 后缀通配
      - "*flash*"            # 子串通配
  - api-key: "AIzaSy...02"
# Codex API 密钥
codex-api-key:
  - api-key: "sk-atSM..."
    prefix: "test" # 可选:需以 "test/gpt-5-codex" 访问
    base-url: "https://www.example.com" # 自定义 Codex 端点
    headers:
      X-Custom-Header: "custom-value"
    proxy-url: "socks5://proxy.example.com:1080" # 可选:单独代理
    models:
      - name: "gpt-5-codex"   # 上游模型名
        alias"codex-latest" # 客户端别名
    excluded-models:
      - "gpt-5.1"         # 精确排除
      - "gpt-5-*"         # 前缀通配
      - "*-mini"          # 后缀通配
      - "*codex*"         # 子串通配
# Claude API 密钥
claude-api-key:
  - api-key: "sk-atSM..." # 使用官方 Claude API 时无需 base-url
  - api-key: "sk-atSM..."
    prefix: "test" # 可选:需以 "test/claude-sonnet-latest" 访问
    base-url: "https://www.example.com" # 自定义 Claude 端点
    headers:
      X-Custom-Header: "custom-value"
    proxy-url: "socks5://proxy.example.com:1080" # 可选:单独代理
    models:
      - name: "claude-3-5-sonnet-20241022" # 上游模型名
        alias"claude-sonnet-latest"      # 客户端别名
    excluded-models:
      - "claude-opus-4-5-20251101" # 精确排除
      - "claude-3-*"               # 前缀通配
      - "*-thinking"               # 后缀通配
      - "*haiku*"                  # 子串通配
    cloak:                         # 可选:为非 Claude Code 客户端进行请求伪装
      mode: "auto"                 # "auto"(默认):仅当客户端不是 Claude Code 时伪装
                                   # "always":始终应用伪装
                                   # "never":从不应用伪装
      strict-mode: false           # false(默认):将 Claude Code 提示前置到用户系统消息
                                   # true:删除所有用户系统消息,仅保留 Claude Code 提示
      sensitive-words:             # 可选:用零宽字符混淆的词汇
        - "API"
        - "proxy"
# OpenAI 兼容提供商
openai-compatibility:
  - name: "openrouter" # 提供商名称,用于 UA 等
    prefix: "test" # 可选:需以 "test/kimi-k2" 访问
    base-url: "https://openrouter.ai/api/v1" # 提供商基础 URL
    headers:
      X-Custom-Header: "custom-value"
    api-key-entries:
      - api-key: "sk-or-v1-...b780"
        proxy-url: "socks5://proxy.example.com:1080" # 可选:单独代理
      - api-key: "sk-or-v1-...b781" # 无代理
    models: # 提供商支持的模型
      - name: "moonshotai/kimi-k2:free" # 上游模型名
        alias"kimi-k2" # 客户端别名
# Vertex API 密钥(Vertex 兼容端点,使用 API key + base URL)
vertex-api-key:
  - api-key: "vk-123..."                        # x-goog-api-key 头
    prefix: "test"                              # 可选前缀
    base-url: "https://example.com/api"         # 例如 https://zenmux.ai/api
    proxy-url: "socks5://proxy.example.com:1080" # 可选单独代理
    headers:
      X-Custom-Header: "custom-value"
    models:                                     # 可选:别名到上游模型
      - name: "gemini-2.5-flash"                # 上游模型名
        alias"vertex-flash"                   # 客户端别名
      - name: "gemini-2.5-pro"
        alias"vertex-pro"
# Amp 集成
ampcode:
  # Amp CLI OAuth 与管理功能的上游地址
  upstream-url: "https://ampcode.com"
  # 可选:覆盖 Amp 上游 API Key(否则使用环境变量或文件)
  upstream-api-key: ""
  # 按客户端的上游 API Key 映射
  # 将顶层 api-keys 中的客户端密钥映射到不同的 Amp 上游密钥。
  # 若未匹配到则回退到 upstream-api-key。
  upstream-api-keys:
    - upstream-api-key: "amp_key_for_team_a"    # 供这些客户端使用的上游密钥
      api-keys:                                 # 使用该上游密钥的客户端密钥
        - "your-api-key-1"
        - "your-api-key-2"
    - upstream-api-key: "amp_key_for_team_b"
      api-keys:
        - "your-api-key-3"
  # 是否将 Amp 管理路由 (/api/auth, /api/user 等) 仅限 localhost(默认 false)
  restrict-management-to-localhost: false
  # 是否在检查本地 API 密钥前强制执行模型映射(默认 false)
  force-model-mappings: false
  # Amp 模型映射:当请求的模型不可用时路由到本地可用模型
  # 适用于 Amp CLI 请求不可用模型(如 Claude Opus 4.5)但本地有相似模型的情况
  model-mappings:
    - from: "claude-opus-4-5-20251101"          # Amp 请求的模型
      to: "gemini-claude-opus-4-5-thinking"     # 路由到的可用模型
    - from: "claude-sonnet-4-5-20250929"
      to: "gemini-claude-sonnet-4-5-thinking"
    - from: "claude-haiku-4-5-20251001"
      to: "gemini-2.5-flash"
# 全局 OAuth 模型名称别名(按渠道)
# 这些别名同时用于模型列表和请求路由的模型 ID 重命名。
# 支持的渠道:gemini-cli、vertex、aistudio、antigravity、claude、codex、qwen、iflow。
# 注意:别名不适用于 gemini-api-key、codex-api-key、claude-api-key、openai-compatibility、vertex-api-key 或 ampcode。
# 您可以使用不同的别名重复相同的名称,以暴露多个客户端模型名称。
oauth-model-alias:
  antigravity:
    - name: "rev19-uic3-1p"
      alias"gemini-2.5-computer-use-preview-10-2025"
    - name: "gemini-3-pro-image"
      alias"gemini-3-pro-image-preview"
    - name: "gemini-3-pro-high"
      alias"gemini-3-pro-preview"
    - name: "gemini-3-flash"
      alias"gemini-3-flash-preview"
    - name: "claude-sonnet-4-5"
      alias"gemini-claude-sonnet-4-5"
    - name: "claude-sonnet-4-5-thinking"
      alias"gemini-claude-sonnet-4-5-thinking"
    - name: "claude-opus-4-5-thinking"
      alias"gemini-claude-opus-4-5-thinking"
#   gemini-cli:
#     - name: "gemini-2.5-pro"          # 该渠道下的原始模型名
#       alias: "g2.5p"                  # 客户端可见别名
#       fork: true                      # 为 true 时保留原名并同时增加别名作为额外模型(默认:false)
#   vertex:
#     - name: "gemini-2.5-pro"
#       alias: "g2.5p"
#   aistudio:
#     - name: "gemini-2.5-pro"
#       alias: "g2.5p"
#   claude:
#     - name: "claude-sonnet-4-5-20250929"
#       alias: "cs4.5"
#   codex:
#     - name: "gpt-5"
#       alias: "g5"
#   qwen:
#     - name: "qwen3-coder-plus"
#       alias: "qwen-plus"
#   iflow:
#     - name: "glm-4.7"
#       alias: "glm-god"
# OAuth 提供商的模型排除列表
oauth-excluded-models:
  gemini-cli:
    - "gemini-2.5-pro"     # 精确排除
    - "gemini-2.5-*"       # 前缀通配
    - "*-preview"          # 后缀通配
    - "*flash*"            # 子串通配
  vertex:
    - "gemini-3-pro-preview"
  aistudio:
    - "gemini-3-pro-preview"
  antigravity:
    - "gemini-3-pro-preview"
  claude:
    - "claude-3-5-haiku-20241022"
  codex:
    - "gpt-5-codex-mini"
  qwen:
    - "vision-model"
  iflow:
    - "tstars2.0"
# 可选的 payload 配置
payload:
  default: # 默认规则仅在 payload 中缺少参数时设置
    - models:
        - name: "gemini-2.5-pro" # 支持通配符(如 "gemini-*")
          protocol: "gemini" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
      params: # JSON 路径(gjson/sjson 语法)-> 值
        "generationConfig.thinkingConfig.thinkingBudget": 32768
  default-raw: # 默认原始规则在缺少时使用原始 JSON 设置参数(必须是有效的 JSON)
    - models:
        - name: "gemini-2.5-pro" # 支持通配符(如 "gemini-*")
          protocol: "gemini" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
      params: # JSON 路径(gjson/sjson 语法)-> 原始 JSON 值(字符串按原样使用,必须是有效的 JSON)
        "generationConfig.responseJsonSchema""{\"type\":\"object\",\"properties\":{\"answer\":{\"type\":\"string\"}}}"
  override: # 覆盖规则总是设置参数,覆盖任何现有值
    - models:
        - name: "gpt-*" # 支持通配符(如 "gpt-*")
          protocol: "codex" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
      params: # JSON 路径(gjson/sjson 语法)-> 值
        "reasoning.effort""high"
  override-raw: # 覆盖原始规则总是使用原始 JSON 设置参数(必须是有效的 JSON)
    - models:
        - name: "gpt-*" # 支持通配符(如 "gpt-*")
          protocol: "codex" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
      params: # JSON 路径(gjson/sjson 语法)-> 原始 JSON 值(字符串按原样使用,必须是有效的 JSON)
        "response_format""{\"type\":\"json_schema\",\"json_schema\":{\"name\":\"answer\",\"schema\":{\"type\":\"object\"}}}"
  filter: # 过滤规则从 payload 中删除指定的参数
    - models:
        - name: "gemini-2.5-pro" # 支持通配符(如 "gemini-*")
          protocol: "gemini" # 将规则限制为特定协议,选项:openai、gemini、claude、codex、antigravity
      params: # 要从 payload 中删除的 JSON 路径(gjson/sjson 语法)
        - "generationConfig.thinkingConfig.thinkingBudget"
        - "generationConfig.responseJsonSchema"

快速开始

启动服务

配置完成后就可以启动服务了,这里以macOS为例

// 启动服务
$ brew services start cliproxyapi

// 关闭服务
$ brew services stop cliproxyapi

启动成功后可以看到如下提示:

Image

获取模型列表

ChatWise等客户端提供了获取模型列表的功能,我们可以直接通过代理拉取到不同提供商到模型列表,对于不支持模型列表拉取客户端或者CLI工具,我们就需要手动获取模型列表信息。CLIProxyAPI提供了获取模型列表信息的接口,我们只需要在命令行终端执行如下命令即可:

curl http://localhost:8317/v1/models \
  -H "Authorization: Bearer your-api-key-1"

Image

将JSON进行格式化后,我们可以得到完整的模型和模型提供商信息

Image

认证授权

网页版认证

CLIProxyAPI提供了主流AI提供商的网页授权认证,在命令行终端输入如下指令即可打开授权

// macOS
$ cliproxyapi --qwen-login

其他平台网页授权命令:

  • --antigravity-login:Antigravity Google账号认证

  • --claude-login:Claude账号认证

  • --codex-login:ChatGPT账号认证

  • --iflow-cookie:iflow Cookie认证

  • --iflow-login:iflow账号认证

  • --kimi-login:Kimi账号认证

  • --login:Google账号认证

  • --project_id:Google Project ID认证

授权命令执行后会浏览器中弹出认证窗口,按照认证引导登录账号认证即可

Image

授权成功后,千问这里需要设置一个别名用于标识,随便输入一个即可,CLIProxyAPI会将授权信息保存到 ~/.cli-proxy-api 目录下

Image

授权认证完成后,就可以在客户端配置使用了。和其他AI提供商一样,使用CLIProxyAPI代理的API也需要提供 API Base URL、API Key 和模型名称。从上面的CLIProxyAPI配置文件中我们可以获取到 服务端口(默认8317) 和 API Key

Image

  • API Key:填写 cliproxyapi.conf 中自己设置的 Key,例如 your-api-key-1、your-api-key-2

  • API Base URL:填写本地服务地址和 cliproxyapi.conf中配置的端口,完整请求地址为:http://127.0.0.1:8317

这里以ChatWise为例,配置如下,对ChatWise还不了解的小伙伴可以看往期内容:高性能轻量级AI聊天助手ChatWise

Image

点击【获取模型列表】从千问获取模型列表,勾选需要的模型点击【确认】

Image

选择需要使用的模型就可以正常进行对话了

Image

API Key授权

CLIProxyAPI API Key授权方式和Claude Code Router的配置方式很像,直接修改 /usr/local/etc/cliproxyapi.conf,添加配置如下:

Image

注意这里的api-key不能为空,即使不需要也不能为空

claude-api-key:
  - api-key: "your-api-key"
    base-url: "https://sym-tenant-24992923-a800code-ingress-cn-xibei1.eks.ebcloud.com:60443" # use the custom claude API endpoint
    models:
      - name: "GLM"  # 上游模型名,api提供商模型名称
        alias"glm" # 上游模型名,为调用方提供的模型名称

以CC-Switch为例,配置如下,对CC-Switch还不了解的小伙伴可以看往期内容:一键切换Cluade、Codex供应商配置,CC Switch你值得一试

  • API Key:填写 cliproxyapi.conf 中自己设置的 Key,例如 your-api-key-1、your-api-key-2

  • API Base URL:填写本地服务地址和 cliproxyapi.conf中配置的端口,完整请求地址为:http://127.0.0.1:8317

Image

以Claude Code CLI为例,配置完成后,重启Claude Code CLI就可以进行对话了

Image

可视化管理

上面是CLIProxyAPI提供的命令行功能,认证授权需要通过命令行命令执行,修改配置需要手动修改配置文件,对于基础不好的小伙伴还是有难度的。为了降低CLIProxyAPI的使用成本,官方还提供了 Web UI 和 桌面客户端 可视化管理方式。

Web UI(推荐)

Github仓库地址:github.com/router-for-…

Image

想要使用Web UI,首先需要在配置文件 cliproxyapi.conf中开启远程权限

# Management API settings
remote-management:
  allow-remote: true
  secret-key: "123456"

Image

配置完成后,在浏览器中打开地址:http://localhost:8317/management.html,在【Management Key】中输入我们在配置文件中配置的【secret-key】,点击【Login】进行登录

Image

登录成功后,界面如下:

Image

CLIProxyAPI Web UI提供了 配置面板、AI 提供商、认证文件、OAuth 登录功能,用于可视化查看和配置CLIProxyAPI

Image

Image

CLIProxyAPI Web UI还提供了 配额管理 和 使用统计 用于管理和查看账号额度使用情况

Image

桌面客户端

Github仓库地址:github.com/router-for-…

Image

下载地址:github.com/router-for-…

从下载地址下载自己系统对应的安装包安装

Image

安装完成后界面如下

Image

点击【Connect】进行连接,登录成功后界面如下,当前版本桌面端功能还比较单一,感兴趣的小伙伴可以自行了解。

Image

Image

友情提示

见原文:CLIProxyAPI统一AI大模型接口

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。友情提示友情提示