Home → Guide → OpenCode con un'API personalizzata: configurazione, Claude, small_model e costi reali
OpenCode legge i provider da opencode.json, quindi la configurazione è un solo file. A sorprenderci è stato il conto: chiedere una sola parola ha generato due richieste e oltre 12.000 token di input. Abbiamo eseguito OpenCode 1.19.0 sul nostro gateway con tre modelli per mostrare dove finiscono i token e come ridurli.
Metti questo in ~/.config/opencode/opencode.json (oppure in opencode.json nel progetto):
{
"$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 elenca solo i modelli del gruppo di quella chiave. Ogni chiave appartiene a un solo gruppo, quindi GPT, DeepSeek e Claude hanno bisogno ciascuno della propria voce provider e della propria chiave.opencode, digita /models e scegli APICLAN → gpt-6-astra. Negli script: opencode run -m apiclan/gpt-6-astra "...".| baseURL | Risultato |
|---|---|
https://apiclan.us/v1 | ✓ |
https://apiclan.us | ✗ 404 Not Found |
@ai-sdk/openai-compatible aggiunge a baseURL solo /chat/completions, quindi il /v1 deve esserci già. Senza, OpenCode si ferma con un semplice Not Found.
Aggiungi un secondo provider dentro provider, con il pacchetto Anthropic e una chiave di un gruppo 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": {} }
}
Anche qui baseURL deve finire con /v1: il pacchetto Anthropic aggiunge solo /messages, e https://apiclan.us da solo ha restituito 404 nel nostro test. È l'opposto di Claude Code, il cui ANTHROPIC_BASE_URL non deve contenere /v1.
Abbiamo chiesto a OpenCode «Reply with just OK» in un progetto vuoto. Ogni modello ha fatto due richieste: una per dare un titolo alla sessione e quella vera, che porta il prompt di sistema e le definizioni degli strumenti di OpenCode.
| Modello | Richieste | Token di input (titolo + risposta) | Tempo totale | Costo |
|---|---|---|---|---|
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 invia ai modelli GPT un prompt di sistema molto più lungo (circa 7.700 token) che a DeepSeek (circa 3.000), e la sola richiesta del titolo ha usato 4.640 token su GPT. Ecco perché lo stesso «OK» è costato circa 77 volte di più su gpt-6-astra che su deepseek-v4.1-flash. Test del 12 ottobre 2026 con OpenCode 1.19.0; costi come fatturati dal nostro gateway.
OpenCode usa small_model per i compiti secondari come i titoli delle sessioni. Puntalo su un modello economico in un provider dedicato:
"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": {} }
}
}
Con gpt-6-astra come modello principale, la richiesta del titolo è scesa da 0,0187 $ a 0,00003 $ e l'intero scambio di una parola da 0,050 $ a 0,031 $: il 38% in meno a ogni nuova sessione, senza cambiare le risposte.
Stesso compito per ogni modello: scrivere fizzbuzz.py e i relativi test pytest, senza eseguire comandi. Poi abbiamo confrontato ogni funzione con l'output corretto da 1 a 30.
| Modello | Richieste | Tempo totale | Costo | Corretto | Asserzioni di 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 |
Tutti e tre hanno scritto codice corretto in tre richieste. deepseek-v4.1-flash è stato il più veloce e costava circa 1/60 di gpt-6-astra; entrambi i modelli DeepSeek hanno anche scritto test più completi. deepseek-v4-pro è stato il più lento perché ragiona prima di ogni passo. Il tempo totale include qualche secondo di avvio di OpenCode stesso.
baseURL senza /v1.apiKey non è impostata nel terminale che avvia OpenCode.is not supported by any configured account in this group) → un modello in models non è nel gruppo della chiave, per esempio un modello GPT in un provider con chiave DeepSeek.Altri strumenti di codice: Cline con un'API personalizzata · Codex con un'API personalizzata.
Nessun abbonamento, nessun minimo mensile, nessuna telefonata commerciale. Ricarica in USDT e spendi quello che usi — 1 USDT ti dà 2 crediti di saldo API.
Leggi l'avvio rapido da 30 secondiLingua: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Türkçe · Português · Italiano · Bahasa Indonesia · Tiếng Việt · Bahasa Melayu · Polski · Čeština · فارسی · Русский
I prezzi di questa pagina sono compilati automaticamente dai dati di fatturazione reali. Le condizioni di terzi sono citate dalla loro documentazione.