Agent en ligne de commande

Connecter Codex à des modèles tiers avec Responses

Codex actuel ne prend en charge que Responses. Configurez le fournisseur et la clé, testez la route API et découvrez quoi faire si une passerelle ne propose que Chat Completions.

Vérifié le 2026-10-26S'applique à
Codex CLI 0.154.0

La réponse courte

Codex actuel accepte uniquement "responses" pour wire_api. "chat" a été supprimé et provoque une erreur de configuration au démarrage. KimiSeek expose /v1/responses : la configuration ci-dessous permet une connexion directe.

Table de décision en 30 secondes

Capacité de la passerelleAction
Fournit /v1/responsesUtiliser "responses"
Seulement /v1/chat/completionsChoisir une passerelle compatible Responses ou une couche de conversion exposant Responses
InconnueTester le chemin et examiner le corps de la réponse ci-dessous

Pourquoi Codex passe par responses par défaut

Codex envoie ses requêtes à /responses et traite ses événements de flux et d'appels d'outils. Chat Completions utilise une structure différente : changer wire_api ne permet pas au Codex actuel de l'utiliser. Les capacités dépendent aussi du modèle et de la passerelle ; une réponse valide ne vérifie pas à elle seule toutes les fonctions des outils.

Prérequis

  • Node.js 20 ou plus récent
  • Codex CLI : npm install -g @openai/codex
  • Une API key KimiSeek (commençant par ks-), créée dans la console

Étape 1 · écrire le fichier de configuration

Le fichier est ~/.codex/config.toml, créez-le s'il n'existe pas :

TOML · ~/.codex/config.toml
model = "deepseek-v4-pro-0813"
model_provider = "kimiseek"

[model_providers.kimiseek]
name = "KimiSeek"
base_url = "https://api.kimiseek.app/v1"
env_key = "KIMISEEK_API_KEY"
wire_api = "responses"

Trois pièges classiques :

  1. base_url doit contenir /v1. Codex concatène /responses directement derrière base_url ; sans le /v1, la requête part sur https://api.kimiseek.app/responses et renvoie 404.
  2. env_key est un nom de variable, pas la clé elle-même. Vous y écrivez le nom KIMISEEK_API_KEY, la valeur réelle reste dans l'environnement.
  3. model doit être un id réellement présent dans le catalogue. Une faute de frappe renvoie model not found, et un modèle retiré produit la même erreur.

Étape 2 · définir la variable d'environnement et lancer

Shell
export KIMISEEK_API_KEY="ks-your-key"

codex

Pour changer de modèle ponctuellement, modifiez model dans config.toml, ou passez codex --model <id>.

Étape 3 · vérifier que la clé est valide

Shell
curl https://api.kimiseek.app/v1/models \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}"

Si vous récupérez une liste de modèles, la clé et le réseau sont bons. L'intérêt de cette étape est de séparer les problèmes d'authentification de ceux de protocole — sinon, devant un 404, vous ne savez pas si c'est la clé ou le chemin qui est en cause.

Étape 4 · sonder responses en 30 secondes

Shell · OpenAI Responses
curl https://api.kimiseek.app/v1/responses \
  -H "Authorization: Bearer ${KIMISEEK_API_KEY:?Set KIMISEEK_API_KEY before running this command}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro-0813",
    "input": "Explain what a base URL is in one sentence.",
    "max_output_tokens": 256,
    "stream": false
  }'
  • HTTP 200 avec un tableau JSON output → la route Responses fonctionne ; testez ensuite une tâche et les appels d’outils.
  • HTTP 404 → vérifiez /v1 dans base_url, puis si le corps signale une route absente ou un modèle introuvable. Le statut seul ne suffit pas.
  • HTTP 401 → revenez à l’étape 3 et vérifiez les identifiants.

Si la passerelle ne propose que Chat Completions

Gardez wire_api = "responses". Choisissez une passerelle fournissant /v1/responses, ou ajoutez une couche de conversion compatible. Ne remplacez pas la valeur par "chat", qui a été supprimée.

Erreurs courantes

ErreurCauseCorrection
unexpected status 401 Unauthorized: Missing bearerLa variable désignée par env_key n'est pas définie, ou son nom est mal orthographiéVérifiez que KIMISEEK_API_KEY est visible dans le shell courant
unexpected status 404 Not Foundbase_url sans /v1, ou passerelle dépourvue de /v1/responsesAjouter /v1 et lire le corps d’erreur ; si Responses est absent, utiliser une passerelle ou une couche de conversion compatible
stream disconnected before completionFlux interrompu en cours de route : proxy local, passerelle d'entreprise ou timeoutContrôlez les réglages de proxy HTTP et réessayez sur un autre réseau
model not foundmodel mal écrit ou id retiré du catalogueUtilisez l'id complet du catalogue, par exemple deepseek-v4-pro-0813

D'autres erreurs de niveau protocolaire sont réunies dans la table des erreurs.

Coût

L'usage de Codex a une caractéristique : l'entrée pèse bien plus que la sortie, car chaque exécution renvoie le contexte. DeepSeek V4 Pro est facturé en CNY par million de tokens, sur deux plages :

PlageEntréeEntrée en cacheSortie
off-peak¥4.5¥0.45¥13.5
peak¥9¥0.9¥27

Les tarifs peak valent exactement le double des tarifs off-peak. Pour des refactors lancés en série, se placer hors des heures de pointe divise la facture par deux. Les modèles et les tarifs à jour sont sur la page tarifs, qui lit directement la configuration du catalogue.

Versions et vérification

Configuration vérifiée avec Codex CLI 0.154.0 le 2026-10-26. Consultez la référence officielle de configuration pour les protocoles pris en charge.

Questions fréquentes

Avec une passerelle de ce type, faut-il encore un outil de pont comme Codex-Bridge ?

Non. Un pont existe pour traduire localement les requêtes Responses en Chat Completions, à destination des passerelles qui ne parlent que chat completions. KimiSeek implémente /v1/responses lui-même : une couche de pont n'ajoute qu'un saut et un point de panne supplémentaire.

Pourquoi base_url doit-il obligatoirement contenir /v1 ?

Parce que Codex concatène : base_url + "/responses". Si vous écrivez https://api.kimiseek.app, la requête part sur https://api.kimiseek.app/responses, qui est une page du site et non une API.

Codex actuel accepte-t-il encore wire_api = "chat" ?

Non. Les versions actuelles refusent cette valeur au démarrage. Utilisez responses ; une API uniquement Chat Completions exige une passerelle compatible ou une couche de conversion.

Une même clé peut-elle servir à la fois à Claude Code et à Codex ?

Oui. Les clés sont au niveau du compte ; les deux clients appellent simplement la même clé via des chemins protocolaires différents. Voir le tutoriel Claude Code.