Início → Guias → OpenCode com uma API personalizada: configuração, Claude, small_model e custos reais
O OpenCode lê os provedores do opencode.json, então a configuração é um único arquivo. O que nos surpreendeu foi a conta: pedir uma única palavra gerou duas requisições e mais de 12.000 tokens de entrada. Rodamos o OpenCode 1.19.0 no nosso gateway com três modelos para mostrar para onde vão os tokens e como cortá-los.
Coloque isto em ~/.config/opencode/opencode.json (ou em opencode.json no projeto):
{
"$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, liste só modelos do grupo dessa chave. Cada chave pertence a um único grupo, então GPT, DeepSeek e Claude precisam cada um da sua entrada de provedor e da sua chave.opencode, digite /models e escolha APICLAN → gpt-6-astra. Em scripts: opencode run -m apiclan/gpt-6-astra "...".| baseURL | Resultado |
|---|---|
https://apiclan.us/v1 | ✓ |
https://apiclan.us | ✗ 404 Not Found |
O @ai-sdk/openai-compatible só acrescenta /chat/completions ao baseURL, então o /v1 precisa já estar lá. Sem ele, o OpenCode para com um simples Not Found.
Adicione um segundo provedor dentro de provider, com o pacote da Anthropic e uma chave de um grupo 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": {} }
}
Aqui o baseURL também precisa terminar em /v1: o pacote da Anthropic só acrescenta /messages, e https://apiclan.us sozinho devolveu 404 no nosso teste. É o oposto do Claude Code, cujo ANTHROPIC_BASE_URL não pode ter /v1.
Pedimos ao OpenCode “Reply with just OK” em um projeto vazio. Todos os modelos fizeram duas requisições: uma para dar título à sessão e a de verdade, que leva o prompt de sistema e as definições de ferramentas do OpenCode.
| Modelo | Requisições | Tokens de entrada (título + resposta) | Tempo total | Custo |
|---|---|---|---|---|
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 |
O OpenCode manda aos modelos GPT um prompt de sistema bem mais longo (cerca de 7.700 tokens) do que ao DeepSeek (cerca de 3.000), e só a requisição de título usou 4.640 tokens no GPT. Por isso o mesmo “OK” custou cerca de 77 vezes mais no gpt-6-astra do que no deepseek-v4.1-flash. Testado em 12 de outubro de 2026 com o OpenCode 1.19.0; custos conforme cobrados pelo nosso gateway.
O OpenCode usa o small_model para tarefas paralelas, como títulos de sessão. Aponte-o para um modelo barato em um provedor próprio:
"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": {} }
}
}
Com o gpt-6-astra como modelo principal, a requisição de título caiu de US$ 0,0187 para US$ 0,00003, e a troca inteira de uma palavra de US$ 0,050 para US$ 0,031 — 38% a menos em cada nova sessão, sem mudar as respostas.
A mesma tarefa para cada modelo: escrever fizzbuzz.py e os testes em pytest, sem executar comandos. Depois conferimos cada função com a saída correta de 1 a 30.
| Modelo | Requisições | Tempo total | Custo | Correto | Asserções de teste |
|---|---|---|---|---|---|
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 |
Os três escreveram código correto em três requisições. O deepseek-v4.1-flash foi o mais rápido e custou cerca de 1/60 do gpt-6-astra; os dois modelos DeepSeek também escreveram testes mais completos. O deepseek-v4-pro foi o mais lento porque raciocina antes de cada passo. O tempo total inclui alguns segundos de inicialização do próprio OpenCode.
baseURL sem /v1.apiKey não está definida no terminal que inicia o OpenCode.is not supported by any configured account in this group) → um modelo em models não está no grupo da chave — por exemplo, um modelo GPT em um provedor com chave DeepSeek.Outras ferramentas de código: Cline com uma API personalizada · Codex com uma API personalizada.
Sem assinatura, sem mínimo mensal, sem conversa com vendedor. Recarregue com USDT e gaste o que usar — 1 USDT dá 2 créditos de saldo de API.
Leia o início rápido de 30 segundosIdioma: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Türkçe · Português · Italiano · Bahasa Indonesia · Tiếng Việt · Bahasa Melayu · Polski · Čeština · فارسی · Русский
Os preços desta página são preenchidos automaticamente com dados reais de cobrança. Condições de terceiros são citadas da documentação deles.