CLIProxyAPI : proxy unifié Gemini, Claude & Codex
CLIProxyAPI : un proxy gratuit et unifié pour Gemini, Claude, Codex et plus
OpenAI, Gemini de Google, Claude d'Anthropic et Qwen de Baidu sont livrés chacun avec leurs propres API, SDK et modèles d'authentification. Pour les développeurs construisant un CLI ou un outil web à un seul clic, jongler avec les préfixes de clés, les flux OAuth et les dialectes JSON peut sembler plus un projet full‑stack qu’un simple exercice « appeler une API ».
Voici CLIProxyAPI – un serveur Go léger qui encapsule toutes ces API en un seul point de terminaison compatible OpenAI. Il s’exécute localement, expose une interface compatible OpenAI standard, et peut optionnellement rediriger les appels vers un fournisseur choisi. Le résultat ? Une seule commande curl, un SDK, un flux d’authentification, et aucune clé codée en dur.
Pourquoi CLIProxyAPI ? Les points douloureux résolus
| Point douloureux | Solution CLIProxyAPI |
|---|---|
| Clés multiples – Gemini, Claude, Codex nécessitent chacun une clé API ou un jeton OAuth distinct. | Stockez tous les jetons dans un magasin local sécurisé (JSON ou basé sur Git) et changez de fournisseur avec un seul en‑tête. |
| Schémas de requêtes/réponses incohérents | Le proxy normalise les charges utiles vers le schéma OpenAI v1 et les traduit de retour vers la version du fournisseur. |
| Logique de fournisseur codée en dur dans chaque CLI | Centralisez la logique de fournisseur dans le proxy ; les outils CLI restent agnostiques vis-à-vis du fournisseur. |
| Équilibrage de charge multi‑comptes | Tourne en rond à travers les comptes de chaque fournisseur ; peut configurer des poids ou des chaînes de secours. |
| Authentification OAuth | Prend en charge OAuth pour Anthropic ou Codex – aucune nécessité pour les utilisateurs de gérer les jetons manuellement. |
| Cas d’utilisation avancés | Streaming, appels de fonctions, entrée multimodale (texte+image) et basculement de modèle intégrés. |
Démarrage rapide
1. Installation
Vous pouvez exécuter CLIProxyAPI soit sous forme d’exécutable préconstruit, soit via Docker.
Depuis Homebrew (macOS/Linux)
brew install router-for-me/cli/cli-proxy-api
cli-proxy-api --help
Depuis 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
Depuis Source
go install github.com/router-for-me/CLIProxyAPI/cmd/server@latest
# ou
go run main.go
Astuce – Le dépôt fournit un Dockerfile et un exemple Docker‑compose qui configurent le proxy et un client frontal.
2. Configuration du proxy
Créez config.yaml (dans le dossier d’exemples du dépôt). Exemple minimal :
# config.yaml
# List of providers you want to expose
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
# Optional: routing fallback chain
fallback:
- gemini
- claude
- codex
# Optional: HTTPS (self‑signed or certs via cert-manager or Let's Encrypt)
# https:
# cert: /path/to/cert.pem
# key: /path/to/key.pem
Démarrez le proxy et il exposera ces points d’accès :
GET /v1/models
POST /v1/chat/completions
GET /v1/models/<model>/functions
Toutes les requêtes vont vers /v1/* comme un client OpenAI.
3. Utilisation du proxy
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"}]
}'
Le champ
modelpeut être n’importe quel nom de fournisseur (gemini-2.5-pro,claude-3-opus-20240229,codex-gpt-35-turbo) ou un alias défini par le proxy tel quegemini-pro. Le serveur effectue la traduction.
4. Intégration SDK
Un SDK Go léger est inclus sous le sdk/ folder. L'utiliser est aussi simple que :
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)
Le SDK gère HTTP, streaming et appels de fonctions en interne. Consultez docs/sdk-usage.md pour tous les détails.
Fonctionnalités avancées
Équilibrage de charge multi‑comptes
Si vous avez plusieurs comptes Gemini ou Claude, ajoutez-les tous dans le fichier de configuration avec des noms uniques. Activez le drapeau round_robin sur le fournisseur pour activer la rotation :
providers:
- name: gemini-acc1
type: gemini
key: <KEY1>
round_robin: true
- name: gemini-acc2
type: gemini
key: <KEY2>
round_robin: true
Les requêtes vers gemini choisiront alternativement gemini-acc1 et gemini-acc2.
Retour arrière automatique du modèle
Si un fournisseur ne prend pas en charge un modèle particulier, définissez une chaîne de secours dans le fichier de configuration. Par exemple, si Claude‑Opus n’est pas disponible, passez à claude-sonnet :
fallback:
- 'claude-sonnet-2'
- 'claude-3-haiku-20240307'
Le proxy intercepte une 404 de sa cible et réessaie avec le modèle suivant jusqu’au succès ou à l’épuisement.
Appel de fonctions et streaming
Tous les appels de fonctions de style OpenAI fonctionnent immédiatement. Il suffit de les demander via le proxy ; le serveur ajoute les champs tools et tool_choice nécessaires dans la requête traduite.
Le streaming est géré via le point d’accès /v1/chat/completions avec stream=true. La réponse est découpée au format flux d’événements OpenAI et transférée au client.
Communauté et écosystème
CLIProxyAPI est le noyau d’un écosystème croissant d’outils : - vibemacro – application macOS en barre de menu qui transforme votre abonnement en proxy prêt à CLI. - ProxyPal – interface graphique pour la gestion des proxys. - ProxyPilot – interface TUI native Windows. - Claude Proxy VSCode – extension permettant de changer de modèles via une backend proxy.
Consultez la section
projectsdu dépôt pour une liste complète et contribuez en ajoutant la vôtre.
Le dépôt encourage les contributions. Les problèmes liés aux bogues ou aux demandes de fonctionnalités sont les bienvenus, et la communauté entretient activement la documentation et les exemples.
FAQ
Q : Dois-je payer pour chaque fournisseur cible ?
R : Le proxy lui‐même est gratuit et sous licence MIT. Vous ne payez que pour l’utilisation du fournisseur sous‑jacente. Pour les niveaux gratuits, Gemini 2.5 Pro, GPT‑5 et Claude‑sonnet sont disponibles sans frais.
Q : Puis-je exposer le proxy via un reverse‑proxy comme Nginx ?
R : Absolument. Exécutez CLIProxyAPI derrière HTTPS, utilisez un reverse‑proxy compatible CORS, et même ajoutez une authentification basique si vous le souhaitez.
Q : Quels autres fournisseurs sont pris en charge ?
R : Actuellement Gemini, Claude, Codex (OpenAI), Qwen, iFlow, et toute API compatible OpenRouter via un fournisseur personnalisé.
Commencer
Visitez le dépôt officiel sur https://github.com/router-for-me/CLIProxyAPI pour le code, les exemples et la communauté.
# Clone and run
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
make run
Vous voilà un pas de plus vers une expérience CLI IA unifiée et sans effort. Bon codage !
Lectures complémentaires
- Gestion de plusieurs fournisseurs AI en Go – Un article technique approfondi sur le routage des fournisseurs.
- OAuth dans les outils CLI – Comment CLIProxyAPI implémente des magasins de jetons sécurisés.
- Appel de fonctions avec les API OpenAI – Un guide rapide.
Si vous avez des retours ou une demande de fonctionnalité, ouvrez une issue ou soumettez une pull request – le projet prospère grâce à la participation de la communauté.