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-pro、claude-3-opus-20240229、codex-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-acc1 与 gemini-acc2。
自动模型回退
若提供者不支持某模型,可在配置中设置回退链。例如,Claude‑Opus 无法使用时回退到 claude-sonnet:
fallback:
- 'claude-sonnet-2'
- 'claude-3-haiku-20240307'
代理会捕获 404,重试下一模型,直至成功或耗尽。
函数调用与流式传输
所有 OpenAI 样式的函数调用均可直接使用。只需通过代理请求;服务器会在翻译请求中添加必要的 tools 与 tool_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 —— 项目在社区参与中茁壮成长。