CLIProxyAPI:统一的 Gemini、Claude 与 Codex API 代理

CLIProxyAPI: 免费、统一的 Gemini、Claude、Codex 及更多代理

OpenAI、Google 的 Gemini、Anthropic 的 Claude 与百度的 Qwen 都自带各自的 API、SDK 和身份验证模式。对于想构建单击式 CLI 或 Web 工具的开发者来说,管理密钥前缀、OAuth 流程以及 JSON 方言往往比“调用一次 API”更像是一个全栈项目。

介绍 CLIProxyAPI——一个轻量级 Go 服务器, 将所有这些 API 封装为一个 OpenAI 兼容端点。它在本地运行,暴露一个标准的 OpenAI 兼容接口,并可选择性地将调用转发至指定提供者。结果?一次 curl 命令、一个 SDK、一次身份验证流程、无硬编码密钥。


CLIProxyAPI 的痛点及解决方案

痛点 CLIProxyAPI 解决方案
多重密钥 – Gemini、Claude、Codex 每个都需要单独的 API 密钥或 OAuth 令牌。 在安全的本地存储(JSON 或 Git 基础)中存储所有令牌,并通过单个请求头切换提供者。
不一致的请求/响应模式 代理将 payload 规范化为 OpenAI v1 结构,并翻译回相应提供者的版本。
每个 CLI 的硬编码提供者逻辑 在代理中集中管理提供者逻辑;CLI 工具保持无差异。
多账号负载均衡 对每个提供者的账号进行轮询;可配置权重或回退链。
OAuth 身份验证 支持 Anthropic 或 Codex 的 OAuth——不必让用户手动管理令牌。
高级使用场景 支持流式、函数调用、多模态输入(文本+图像)以及模型回退等。

快速入门

1. 安装

你可以将 CLIProxyAPI 作为预构建二进制文件或通过 Docker 运行。

从 Homebrew (macOS/Linux)

brew install router-for-me/cli/cli-proxy-api
cli-proxy-api --help

从 Docker

docker pull ghcr.io/router-for-me/cliproxyapi:latest

docker run \
  --rm -it \
  -p 8080:8080 \
  -e CONFIG_PATH=/etc/cliproxyapi/config.yaml \
  -v $(pwd)/config.yaml:/etc/cliproxyapi/config.yaml \
  ghcr.io/router-for-me/cliproxyapi:latest

从源码

go install github.com/router-for-me/CLIProxyAPI/cmd/server@latest
# 或者
go run main.go

提示 – 该仓库附带 Dockerfile 与 Docker‑compose 示例,可用于设置代理和前端客户端。

2. 配置代理

创建 config.yaml(位于仓库示例文件夹)。最小示例:

# config.yaml
# 你想暴露的提供者列表
providers:
  - name: gemini          # Google Gemini
    type: gemini
    key: <YOUR_GEMINI_KEY>
  - name: claude          # Anthropic Claude
    type: claude
    key: <YOUR_CLAUDE_KEY>
  - name: codex           # OpenAI Codex
    type: codex
    key: <YOUR_OPENAI_KEY>
    oauth: true

# 可选:回退路由链
fallback:
  - gemini
  - claude
  - codex

# 可选:HTTPS(自签或通过 cert-manager 或 Let's Encrypt 证书)
# https:
#   cert: /path/to/cert.pem
#   key: /path/to/key.pem

运行代理后,它会暴露以下端点:

GET  /v1/models
POST /v1/chat/completions
GET  /v1/models/<model>/functions

所有请求均以 /v1/* 开头,像 OpenAI 客户端一样。

3. 使用代理

curl -X POST http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -d '{
       "model": "gemini-2.5-pro",
       "messages": [{"role":"user", "content":"Hello"}]
     }'

model 字段可以是任何提供者名称(如 gemini-2.5-proclaude-3-opus-20240229codex-gpt-35-turbo),或代理定义的别名(如 gemini-pro)。服务器负责翻译。

4. SDK 集成

轻量级 Go SDK 位于 sdk/ 文件夹。使用方式如下:

import "github.com/router-for-me/CLIProxyAPI/sdk"

client, err := sdk.NewClient("http://localhost:8080", &sdk.Config{BearerToken: "<TOKEN>"})
if err != nil { log.Fatal(err) }

resp, _ := client.ChatCompletion(context.Background(), &sdk.ChatRequest{
    Model: "gemini-2.5-pro",
    Messages: []sdk.Message{{Role: "user", Content: "Hi!"}},
})
fmt.Println(resp.Choices[0].Message.Content)

SDK 在后台处理 HTTP、流以及函数调用。完整细节见 docs/sdk-usage.md


高级功能

多账号负载均衡

若你拥有多个 Gemini 或 Claude 账号,可在配置中添加全部,使用唯一名称。开启 round_robin 标志启用轮询:

providers:
  - name: gemini-acc1
    type: gemini
    key: <KEY1>
    round_robin: true
  - name: gemini-acc2
    type: gemini
    key: <KEY2>
    round_robin: true

gemini 的请求将交替使用 gemini-acc1gemini-acc2

自动模型回退

若提供者不支持某模型,可在配置中设置回退链。例如,Claude‑Opus 无法使用时回退到 claude-sonnet

fallback:
  - 'claude-sonnet-2'
  - 'claude-3-haiku-20240307'

代理会捕获 404,重试下一模型,直至成功或耗尽。

函数调用与流式传输

所有 OpenAI 样式的函数调用均可直接使用。只需通过代理请求;服务器会在翻译请求中添加必要的 toolstool_choice 字段。

流式通过 /v1/chat/completions 端点与 stream=true 处理。响应以 OpenAI 事件流格式分块并转发给客户端。


社区与生态

CLIProxyAPI 是一个不断成长的工具生态中心: - vibemacro – macOS 菜单栏应用,可将订阅转换为可 CLI 使用的代理。 - ProxyPal – 管理代理的 GUI。 - ProxyPilot – 适用于 Windows 的原生 TUI。 - Claude Proxy VSCode – 可通过代理后端切换模型的扩展。

查看 repo 的 projects 部分获取完整列表,并通过添加自己的贡献。

本仓库鼓励贡献。欢迎针对 bug 或功能请求提交 issue,社区积极维护文档与示例。


常见问题

Q: 我需要为每个目标提供者付费吗?

A: 代理本身免费且 MIT 许可。您只需支付底层提供者的使用费用。免费层中,例如 Gemini 2.5 Pro、GPT‑5、Claude‑sonnet 都可免费使用。

Q: 我能将代理通过 Nginx 等反向代理公开吗?

A: 当然。将 CLIProxyAPI 放在 HTTPS 后面,使用支持 CORS 的反向代理,甚至可自行添加基本 auth。

Q: 还有哪些提供者被支持?

A: 目前支持 Gemini、Claude、Codex(OpenAI)、Qwen、iFlow,及任何兼容 OpenRouter 的 API(通过自定义提供者)。


开始使用

访问官方仓库 https://github.com/router-for-me/CLIProxyAPI 获取代码、示例与社区。

# 克隆并运行
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
make run

现在你已走在统一 AI CLI 体验的道路上。祝编码愉快!


进一步阅读

  • Managing Multiple AI Providers in Go – 详细技术文章,讲解提供者路由。
  • OAuth in CLI Tools – CLIProxyAPI 如何实现安全令牌存储。
  • Function Calling with OpenAI APIs – 快速指南。

如有反馈或功能请求,欢迎打开 issue 或提交 pull request —— 项目在社区参与中茁壮成长。

原创文章: 查看原文

分享本文