Accueil → Guides → OpenCode avec une API personnalisée : configuration, Claude, small_model et coûts réels
OpenCode lit ses fournisseurs dans opencode.json, la configuration tient donc dans un seul fichier. Ce qui nous a surpris, c'est la facture : demander un seul mot a produit deux requêtes et plus de 12 000 jetons d'entrée. Nous avons lancé OpenCode 1.19.0 sur notre passerelle avec trois modèles pour montrer où partent les jetons et comment les réduire.
Placez ceci dans ~/.config/opencode/opencode.json (ou opencode.json dans votre projet) :
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apiclan": {
"npm": "@ai-sdk/openai-compatible",
"name": "APICLAN",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_GPT_KEY}"
},
"models": {
"gpt-6-astra": {},
"gpt-6.1-sol": {}
}
}
}
}
APICLAN_GPT_KEY.models, listez uniquement les modèles du groupe de cette clé. Chaque clé appartient à un seul groupe : GPT, DeepSeek et Claude ont donc chacun leur propre entrée de fournisseur et leur clé.opencode, tapez /models et choisissez APICLAN → gpt-6-astra. Dans un script : opencode run -m apiclan/gpt-6-astra "...".| baseURL | Résultat |
|---|---|
https://apiclan.us/v1 | ✓ |
https://apiclan.us | ✗ 404 Not Found |
@ai-sdk/openai-compatible n'ajoute que /chat/completions à baseURL, le /v1 doit donc y être déjà. Sans lui, OpenCode s'arrête sur un simple Not Found.
Ajoutez un second fournisseur dans provider, avec le paquet Anthropic et une clé d'un groupe Claude :
"claude": {
"npm": "@ai-sdk/anthropic",
"name": "APICLAN Claude",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_CLAUDE_KEY}"
},
"models": { "claude-fable-5-1": {} }
}
Ici aussi, baseURL doit se terminer par /v1 : le paquet Anthropic n'ajoute que /messages, et https://apiclan.us seul a renvoyé 404 dans notre test. C'est l'inverse de Claude Code, dont ANTHROPIC_BASE_URL ne doit pas contenir /v1.
Nous avons demandé à OpenCode « Reply with just OK » dans un projet vide. Chaque modèle a envoyé deux requêtes : l'une pour titrer la session, l'autre pour la vraie réponse, qui transporte le prompt système et les définitions d'outils d'OpenCode.
| Modèle | Requêtes | Jetons d'entrée (titre + réponse) | Durée totale | Coût |
|---|---|---|---|---|
gpt-6-astra | 2 | 4,640 + 7,678 | 20.5 s | $0.050 |
deepseek-v4-pro | 2 | 528 + 5,708 | 34.1 s | $0.005 |
deepseek-v4.1-flash | 2 | 529 + 3,027 | 21.8 s | $0.0006 |
OpenCode envoie aux modèles GPT un prompt système bien plus long (environ 7 700 jetons) qu'à DeepSeek (environ 3 000), et la seule requête de titre a consommé 4 640 jetons sur GPT. Voilà pourquoi le même « OK » a coûté environ 77 fois plus sur gpt-6-astra que sur deepseek-v4.1-flash. Testé le 12 octobre 2026 avec OpenCode 1.19.0 ; coûts tels que facturés par notre passerelle.
OpenCode utilise small_model pour les tâches annexes comme les titres de session. Pointez-le vers un modèle bon marché dans son propre fournisseur :
"small_model": "apiclan-ds/deepseek-v4.1-flash",
"provider": {
"apiclan": { ... },
"apiclan-ds": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://apiclan.us/v1",
"apiKey": "{env:APICLAN_DS_KEY}"
},
"models": { "deepseek-v4.1-flash": {} }
}
}
Avec gpt-6-astra comme modèle principal, la requête de titre est passée de 0,0187 $ à 0,00003 $, et tout l'échange d'un mot de 0,050 $ à 0,031 $ — 38 % de moins à chaque nouvelle session, sans changement des réponses.
Même tâche pour chaque modèle : écrire fizzbuzz.py et ses tests pytest, sans exécuter de commande. Nous avons ensuite vérifié chaque fonction par rapport à la bonne sortie pour 1 à 30.
| Modèle | Requêtes | Durée totale | Coût | Correct | Assertions de test |
|---|---|---|---|---|---|
gpt-6-astra | 3 | 40 s | $0.069 | ✓ | 2 |
deepseek-v4-pro | 3 | 61 s | $0.008 | ✓ | 7 |
deepseek-v4.1-flash | 3 | 25 s | $0.0011 | ✓ | 7 |
Les trois ont écrit du code correct en trois requêtes. deepseek-v4.1-flash a été le plus rapide et a coûté environ 1/60 de gpt-6-astra ; les deux modèles DeepSeek ont aussi écrit des tests plus complets. deepseek-v4-pro a été le plus lent, car il raisonne avant chaque étape. La durée inclut quelques secondes de démarrage d'OpenCode lui-même.
baseURL sans /v1.apiKey n'est pas définie dans le terminal qui lance OpenCode.is not supported by any configured account in this group) → un modèle sous models n'est pas dans le groupe de la clé — par exemple un modèle GPT chez un fournisseur qui utilise une clé DeepSeek.Autres outils de code : Cline avec une API personnalisée · Codex avec une API personnalisée.
Pas d'abonnement, pas de minimum mensuel, pas de rendez-vous commercial. Rechargez en USDT et dépensez ce que vous consommez — 1 USDT vous donne 2 crédits de solde API.
Lire le démarrage rapide en 30 secondesLangue: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Türkçe · Português · Italiano · Bahasa Indonesia · Tiếng Việt · Bahasa Melayu · Polski · Čeština · فارسی · Русский
Les prix de cette page sont remplis automatiquement à partir des données de facturation réelles. Les conditions de tiers sont citées de leur propre documentation.