MiniMax-M3.1-Flash and DeepSeek-V4.1-Flash-1017 are now live on CometAPI →
guide/Pesquisa CometAPI

Como configurar o CometAPI no OpenCode

Configure o CometAPI no OpenCode com exemplos de Claude, GPT e DeepSeek. Inclui comandos para alternar modelos, tarefas de programação e solução de problemas.

CometAPI
Deon GoodwinEquipe de pesquisa de modelos e API de IA
Atualizado Oct 22, 2026 22 min de leitura
Como configurar o CometAPI no OpenCode
Use este padrão

Faça a primeira chamada à API.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_COMETAPI_KEY",
    base_url="https://api.cometapi.com/v1",
)

response = client.chat.completions.create(
    model="gpt-5-mini",
    messages=[{"role": "user", "content": "Build this workflow."}],
)

print(response.choices[0].message.content)

TL;DR

Configure o CometAPI uma vez no OpenCode e, em seguida, selecione Claude, GPT ou DeepSeek para sua tarefa de programação. Este guia expande o guia oficial de integração do CometAPI com o OpenCode em uma configuração completa de projeto: uma única chave de API do CometAPI, um arquivo de configuração com três exemplos de modelos, comandos para alternar modelos e uma pequena tarefa em JavaScript com verificação repetível.

Key Takeaways

  • A configuração do CometAPI no OpenCode requer um ID de provedor, URL base da API, credencial e ID do modelo.
  • Use {env:COMETAPI_KEY} para manter a chave real fora de opencode.json.
  • Registre exemplos de Claude, GPT e DeepSeek em um único opencode.json; as três entradas usam a mesma chave e gateway do CometAPI.
  • Troque o provedor/modelo selecionado no OpenCode sem obter chaves separadas da Anthropic, OpenAI e DeepSeek.
  • Atenção a variáveis de ambiente ausentes, rotas de API incorretas e prompts de aprovação que podem parecer requisições travadas.

What Is OpenCode and Why Use It with CometAPI?

OpenCode é um agente de codificação de IA de código aberto com interface de terminal, aplicativo desktop e extensão para IDE. Em um projeto, ele pode explicar código existente, planejar uma alteração, editar arquivos e executar comandos sob permissões configuradas. Este tutorial usa o fluxo de trabalho no terminal: dar ao agente uma pequena tarefa de programação, revisar suas ações propostas e verificar os arquivos resultantes com um teste local. Consulte a documentação oficial do OpenCode para instalação e uso.

O CometAPI fornece a camada de acesso a modelos. Um fluxo de trabalho multi-modelo normalmente envolve gerenciar credenciais, cobrança e configurações de conexão entre fornecedores. Encaminhar modelos compatíveis por uma única conta do CometAPI fornece, para este projeto, uma chave e uma URL base compartilhadas, enquanto o OpenCode mantém o repositório e as instruções da tarefa. Isso é útil ao comparar modelos na mesma tarefa ou ao mudar o modelo selecionado sem reorganizar o projeto. Um gateway de agregação é opcional: o acesso direto ao fornecedor pode atender a um fluxo de trabalho de provedor único ou exigências contratuais específicas. O benefício aqui é acesso simplificado a múltiplos provedores; formatos de API, comportamento de modelos e compatibilidade de ferramentas ainda exigem validação separada.

O CometAPI é compatível com Chat Completions no padrão da OpenAI e também expõe outros formatos de API. A integração oficial seleciona um adaptador para cada formato. Aqui, Claude Sonnet 5 usa Messages, GPT-6.1 Sol usa Responses, e DeepSeek V4.1 Flash usa Chat Completions, seguindo os exemplos vinculados abaixo. Todas as requisições ainda vão para o CometAPI com a mesma chave. O nome do fornecedor e o formato de API descrevem coisas diferentes; não se deve presumir que um único modelo aceite todos os formatos.

ConfiguraçãoAPI do Claude Sonnet 5 no CometAPIAPI do GPT-6.1 Sol no CometAPIAPI do DeepSeek V4.1 Flash no CometAPI
Fornecedor do modeloAnthropicOpenAIDeepSeek
ID do modeloclaude-sonnet-5gpt-6.1-soldeepseek-v4.1-flash
ID do provedor no OpenCodecometapi-messagescometapi-responsescometapi-chat
Formato de API usado aquiMessagesResponses/ chatChat Completions
Adaptador@ai-sdk/anthropic@ai-sdk/openai@ai-sdk/openai-compatible

What Do You Need Before Configuring CometAPI in OpenCode?

Use um terminal, Node.js com npm, uma conta CometAPI com acesso à API e saldo disponível e um diretório de projeto descartável. Os exemplos em Bash se aplicam a macOS, Linux ou WSL; os exemplos em PowerShell usam a sintaxe do Windows. O Node.js também precisa estar disponível na mesma sessão para a verificação em JavaScript mais adiante neste guia.

Este passo a passo usa o estilo de configuração do OpenCode 1. A documentação oficial diferencia OpenCode 1 de OpenCode 2; ambos usam o comando opencode. Registre opencode --version antes de começar e use a documentação de configuração correspondente à sua versão principal. O fluxo de trabalho de três modelos abaixo é um passo a passo de integração com resultados esperados, não uma declaração de teste ponta a ponta concluído.

Registre seu CLI, Node.js, npm, sistema operacional e data do teste ao executar os exemplos. O uso da API é cobrado na sua conta CometAPI. Os comandos abaixo são um passo a passo prático com resultados esperados; não há reivindicação de saída gerada por modelo ou de execução bem-sucedida da integração com três modelos.

node --versionnpm --versionopencode --version

How to Configure CometAPI in OpenCode Step by Step?

Step 1: Install OpenCode

Instale o pacote oficial via npm se o OpenCode ainda não estiver disponível. A instalação não fixada segue a versão atual do pacote; registre a versão instalada antes de usar a configuração. Se você precisa reproduzir o ambiente do guia de origem, a versão do CLI informada é 1.18.16.

Instale o CLI do OpenCode e exiba sua versão.

npm install -g opencode-aiopencode --version

Abra um novo terminal se o executável não for encontrado após a instalação. Continue dentro de um diretório de projeto descartável para que a primeira tarefa do agente tenha um escopo claro.

Crie e entre em um diretório de projeto.

mkdir cometapi-opencode-democd cometapi-opencode-demo

Step 2: Create a CometAPI API Key

Gere uma chave de API na sua conta CometAPI e defina-a no mesmo terminal usado para iniciar o OpenCode. Substitua o placeholder localmente. Não faça commit da chave, não a cole em prompts nem a inclua em logs compartilhados.

A variável se aplica à sessão de shell atual e aos processos iniciados a partir dela. Não faça captura de tela de um token real. As verificações a seguir informam se a variável existe sem imprimir seu valor.

Defina a chave do CometAPI para a sessão atual do Bash.

export COMETAPI_KEY="YOUR_COMETAPI_KEY"

Defina a chave do CometAPI para a sessão atual do PowerShell.

$env:COMETAPI_KEY = "YOUR_COMETAPI_KEY"test -n "$COMETAPI_KEY" && printf "COMETAPI_KEY is set\n" || printf "COMETAPI_KEY is missing\n"if ([string]::IsNullOrWhiteSpace($env:COMETAPI_KEY)) {  "COMETAPI_KEY is missing"} else {  "COMETAPI_KEY is set"}

Step 3: Create opencode.json

Crie opencode.json na raiz do projeto, ou use ~/.config/opencode/opencode.json para disponibilizar as entradas em vários projetos. O arquivo do projeto mantém este tutorial autocontido. Use um único objeto provider contendo as três entradas abaixo; se um objeto provider já existir, mescle suas entradas em vez de criar uma chave JSON duplicada.

Para campos conflitantes, a configuração do projeto tem precedência sobre a configuração global; campos sem conflito são preservados. O arquivo OPENCODE_CONFIG personalizado é carregado entre a configuração global e a do projeto. Verifique a cadeia de precedência documentada se houver configurações gerenciadas ou embutidas.

Salve a seguinte configuração completa como opencode.json. Cada provedor lê COMETAPI_KEY do ambiente. O modelo padrão foi deliberadamente omitido para que você selecione explicitamente um dos três exemplos.

A variante Flash torna explícito o exemplo solicitado do DeepSeek V4.1. Mantenha o GPT no adaptador Responses para uso de ferramentas; o guia do DeepSeek no CometAPI documenta a rota de Chat Completions usada aqui. Verifique novamente a disponibilidade do modelo e as permissões na sua conta antes de executar os exemplos.

{  "$schema": "https://opencode.ai/config.json",  "provider": {    "cometapi-messages": {      "npm": "@ai-sdk/anthropic",      "name": "CometAPI Claude",      "options": {        "baseURL": "https://api.cometapi.com/v1",        "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "claude-sonnet-5": {          "name": "Claude Sonnet 5"        }      }    },    "cometapi-responses": {      "npm": "@ai-sdk/openai",      "name": "CometAPI GPT",      "options": {        "baseURL": "https://api.cometapi.com/v1",        "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "gpt-6.1-sol": {          "name": "GPT-6.1 Sol"        }      }    },    "cometapi-chat": {      "npm": "@ai-sdk/openai-compatible",      "name": "CometAPI DeepSeek",      "options": {        "baseURL": "https://api.cometapi.com/v1",        "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "deepseek-v4.1-flash": {          "name": "DeepSeek V4.1 Flash"        }      }    }  },  "permission": {    "edit": "ask",    "shell": "ask"  }}

baseURL correta: https://api.cometapi.com/v1. baseURL incorreta: https://api.cometapi.com/v1/chat/completions. O adaptador adiciona o caminho do endpoint. Mescle o exemplo em um opencode.json existente sem remover configurações não relacionadas.

As configurações de edit e shell solicitam aprovação para alterações de arquivos e comandos conforme as regras atuais de permissões do OpenCode. Execute os exemplos de codificação de forma interativa e inspecione essas solicitações. O OpenCode também herda o acesso ao sistema operacional do processo que o inicia; use um diretório descartável para este exercício.

Step 4: Check the Gateway Connection

A configuração e verificação opcionais do Gemini são fornecidas após as verificações de conexão dos três modelos abaixo.

O exemplo HTTP abaixo verifica diretamente a entrada de Chat Completions do DeepSeek. É uma forma útil de isolar a conexão com o gateway do OpenCode. Claude e GPT usam suas rotas de adaptador selecionadas no próximo passo; mudar o ID do modelo dentro desta requisição HTTP não altera automaticamente seu protocolo.

Envie uma requisição mínima de Chat Completions a partir do Bash.

curl --silent --show-error \  --output response.json \  --write-out "HTTP %{http_code}\n" \  https://api.cometapi.com/v1/chat/completions \  -H "Authorization: Bearer $COMETAPI_KEY" \  -H "Content-Type: application/json" \  -d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"Reply with a short greeting."}]}'

Este comando usa as opções write-out e output do curl para separar o status HTTP de response.json. Uma transferência bem-sucedida ainda pode conter um erro HTTP, então inspecione o status impresso e o corpo JSON. Isso evita depender de --fail-with-body, que requer o curl 7.76.0 ou posterior.

Envie a mesma requisição a partir do PowerShell sem aspas específicas de shell para JSON.

$body = @{  model = "deepseek-v4.1-flash"  messages = @(@{ role = "user"; content = "Reply with a short greeting." })} | ConvertTo-Json -Depth 4​$response = Invoke-WebRequest -UseBasicParsing -Method Post `  -Uri "https://api.cometapi.com/v1/chat/completions" `  -Headers @{ Authorization = "Bearer $env:COMETAPI_KEY" } `  -ContentType "application/json" `  -Body $body$response.Content | Set-Content -Encoding UTF8 response.json"HTTP $($response.StatusCode)"

Em caso de erro HTTP, o PowerShell pode disparar uma exceção antes das duas últimas linhas serem executadas. Capture o status e os detalhes do erro com redação a partir dessa falha; não o registre como resposta bem-sucedida.

Resultado esperado para a requisição do DeepSeek: HTTP 200 e texto não vazio em choices[0].message.content. Inspecione o response.json salvo em vez de aceitar apenas o HTTP 200. As adições a seguir mostram o formato da resposta e como verificar as três rotas configuradas. Os exemplos são ilustrativos; esta revisão não reivindica resultados de teste em tempo real no CometAPI. Uma requisição apenas de texto não valida streaming nem chamadas de ferramentas.

Formato ilustrativo de resposta do DeepSeek: a saudação, valores de usage e outros campos dependem da requisição real. O JSON a seguir é um exemplo deliberadamente encurtado, não uma resposta capturada da API.

{"choices":[{"message":{"role":"assistant","content":"Hello!"}}]}

Após uma requisição HTTP realmente bem-sucedida, a linha de status deve indicar HTTP 200 e response.json deve conter texto não vazio do assistente. Guarde o status e o corpo reais da sua execução; não copie o exemplo como prova de teste.

Step 5: Switch Between Claude, GPT, and DeepSeek

Os comandos deste passo devem retornar os marcadores solicitados do assistente. Texto ilustrativo do assistente, com banners de terminal, tempos e metadados omitidos:

Claude:   CLAUDE_READYGPT:      GPT_READYDeepSeek: DEEPSEEK_READY

Essas linhas mostram apenas o conteúdo esperado. Elas não são uma transcrição do terminal. Registre a saída real e o status de saída do processo para cada provedor; um marcador ausente ou requisição com falha requer investigação.

Comece no diretório que contém opencode.json. Liste os modelos para cada provedor configurado e faça uma requisição de texto curta para cada entrada. Esses comandos mudam o modelo e o adaptador selecionados; a chave e a URL base do CometAPI permanecem as mesmas.

Use estes comandos para verificar se as três entradas estão visíveis e podem retornar texto.

opencode models cometapi-messagesopencode models cometapi-responsesopencode models cometapi-chat​opencode run --model cometapi-messages/claude-sonnet-5 "Reply exactly with: CLAUDE_READY"opencode run --model cometapi-responses/gpt-6.1-sol "Reply exactly with: GPT_READY"opencode run --model cometapi-chat/deepseek-v4.1-flash "Reply exactly with: DEEPSEEK_READY"

Para alternância interativa, inicie o opencode, digite /models e selecione CometAPI Claude, CometAPI GPT ou CometAPI DeepSeek. O OpenCode usa o par provedor/modelo dessa entrada. Você não precisa de três contas de fornecedor ou três chaves de API. Com esta configuração baseada em ambiente, não use /connect para fornecer uma segunda credencial; uma COMETAPI_KEY ausente deve ser corrigida no shell que inicia o processo.

Resultado esperado: cada requisição curta retorna seu marcador solicitado. Registre o resultado real de cada modelo. Uma entrada de modelo visível confirma o registro; uma resposta de texto bem-sucedida confirma esse caminho de requisição. Nenhum dos dois, sozinho, prova que as ferramentas de arquivo funcionam.

O Gemini usa um provedor e protocolo separados. Mantenha as entradas de Claude, GPT e DeepSeek acima; mescle a entrada a seguir no objeto provider existente. A URL base abaixo segue a configuração do CometAPI fornecida pelo revisor. Confirme a rota atual e o acesso ao modelo na sua conta CometAPI antes do uso.

O adaptador Google suporta uma baseURL personalizada e envia apiKey usando x-goog-api-key. Veja a referência do provedor Google do AI SDK. Isso confirma as configurações do adaptador; não comprova que um modelo específico do Gemini esteja habilitado no gateway do CometAPI.

{  "provider": {    "cometapi-gemini": {      "npm": "@ai-sdk/google",      "name": "CometAPI Gemini",      "options": {        "baseURL": "https://api.cometapi.com/v1beta",      "apiKey": "{env:COMETAPI_KEY}"      },      "models": {        "YOUR_GEMINI_MODEL_ID": {          "name": "CometAPI Gemini (account-selected model)"        }      }    }  }}

Substitua YOUR_GEMINI_MODEL_ID tanto na chave JSON quanto no comando abaixo pelo ID exato do modelo Gemini habilitado para sua conta CometAPI. É um placeholder, não um ID real de modelo. Mescle esta entrada de provedor sem duplicar a chave provider no nível superior e inicie o OpenCode a partir do mesmo shell onde COMETAPI_KEY está definida.

opencode models cometapi-geminiopencode run --model cometapi-gemini/YOUR_GEMINI_MODEL_ID "Reply exactly with: GEMINI_READY"

Texto esperado do assistente: GEMINI_READY. Um modelo listado confirma o registro local; receber o marcador confirma a requisição de texto. Salve a resposta real e o status de saída. Para validar ferramentas de codificação, inicie opencode --model cometapi-gemini/YOUR_GEMINI_MODEL_ID em um diretório descartável novo e repita a tarefa greet.cjs/check.cjs abaixo. Apenas o sucesso em texto não verifica streaming, edição ou chamadas de ferramentas.

How Do You Run a Coding Task with Claude, GPT, and DeepSeek?

Use a mesma pequena tarefa para cada modelo: criar uma função de saudação, adicionar uma asserção e executá-la. Mantenha três diretórios limpos para que o segundo modelo não possa simplesmente reutilizar arquivos criados pelo primeiro. Isso verifica o fluxo de integração sem transformar o artigo em um ranking de desempenho.

Salve prepare-runs.cjs ao lado de opencode.json e execute-o uma vez. Ele cria três novos diretórios e copia apenas a configuração compartilhada. Ele para se algum diretório de destino já existir, para que trabalhos anteriores não sejam sobrescritos.

const fs = require("node:fs");const path = require("node:path");const root = __dirname;const names = ["claude-demo", "gpt-demo", "deepseek-demo"];const config = path.join(root, "opencode.json");if (!fs.existsSync(config)) throw new Error("Missing opencode.json");for (const name of names) {  if (fs.existsSync(path.join(root, name))) {    throw new Error(`Directory already exists: ${name}`);  }}for (const name of names) {  const dir = path.join(root, name);  fs.mkdirSync(dir);  fs.copyFileSync(config, path.join(dir, "opencode.json"));}node prepare-runs.cjscd claude-demoopencode --model cometapi-messages/claude-sonnet-5# Após sair do OpenCode:cd ..cd gpt-demoopencode --model cometapi-responses/gpt-6.1-sol# Após sair do OpenCode:cd ..cd deepseek-demoopencode --model cometapi-chat/deepseek-v4.1-flash# Após sair do OpenCode:cd ..

Execute uma das sessões por vez, começando a partir do diretório pai do projeto. Saia da sessão antes de passar para o próximo exemplo. Em cada sessão, envie a mesma tarefa abaixo e revise as edições e comandos propostos. O Node.js deve estar disponível para o processo que inicia o OpenCode.

Peça ao agente para criar e verificar uma pequena função em JavaScript.

Create greet.cjs in this directory.Export a function named greet(name) that returns "Hello, " + name + "!".Create check.cjs using node:assert/strict.Assert that greet("Ada") equals "Hello, Ada!".Run node check.cjs and report its actual exit status.Do not modify opencode.json or unrelated files.

Resultado esperado: o agente solicita as aprovações configuradas, cria ambos os arquivos e conclui node check.cjs com status de saída 0. Registre o que realmente aconteceu. Inspecione os arquivos e execute a verificação você mesmo; uma alegação em prosa de sucesso não é suficiente. Se uma chamada de ferramenta for rejeitada ou malformada, investigue a compatibilidade da rota separadamente de uma aprovação pendente.

Reference Files and Local Verification

Os arquivos a seguir são uma implementação de referência da tarefa solicitada. Foram escritos diretamente para este guia; não são apresentados como artefatos gerados por modelos. Correspondência ao comportamento observável deles é a condição de aceitação para sua execução com o agente.

function greet(name) {  return "Hello, " + name + "!";}​module.exports = { greet };const assert = require("node:assert/strict");const { greet } = require("./greet.cjs");​assert.equal(greet("Ada"), "Hello, Ada!");node check.cjsprintf "exit=%s\n" "$?"node check.cjs"exit=$LASTEXITCODE"

Verificação local de referência: Windows, Node.js v24.19.0, 22 de outubro de 2026; node check.cjs retornou status de saída 0 sem saída no padrão. Isso verifica apenas os dois arquivos de referência. Não valida a instalação do OpenCode, o acesso ao CometAPI, prompts de aprovação ou chamadas de ferramentas do modelo.

ExecuçãoEntrada de modelo selecionadaO que registrar
Claudecometapi-messages/claude-sonnet-5Resposta, arquivos gerados, aprovações, código de saída do teste
GPTcometapi-responses/gpt-6.1-solResposta, arquivos gerados, aprovações, código de saída do teste
DeepSeekcometapi-chat/deepseek-v4.1-flashResposta, arquivos gerados, aprovações, código de saída do teste

Mantenha um registro de resultados por modelo: provedor/modelo selecionado, se uma resposta chegou, se greet.cjs e check.cjs foram criados, se aprovações apareceram e o código de saída de node check.cjs. Registre falhas como falhas; não infira aprovação a partir da implementação de referência.

Protect Credentials and Verify Reliability

Armazene COMETAPI_KEY em uma variável de ambiente em vez de arquivos de configuração ou logs compartilhados. Mantenha as aprovações para edição de arquivos e execução de comandos ativadas e teste novas configurações em um projeto descartável.

Verifique separadamente a requisição direta à API, a resposta do OpenCode e o fluxo de trabalho de edição de arquivos. Registre erros e resultados de teste, repita apenas falhas transitórias e inspecione o workspace antes de repetir tarefas interrompidas.

O CometAPI simplifica a troca entre modelos, mas o OpenCode não fornece automaticamente failover entre modelos por meio desta configuração. Se um modelo ficar indisponível, selecione manualmente outro modelo já verificado e repita a verificação de aceitação.

How much does it cost to use Opencode with CometAPI?

Prices for CometAPI, and how is billing structured

O CometAPI oferece preços pay-as-you-go sem mensalidades, cobrando apenas pelo uso real da API. As tarifas de modelos oficiais geralmente são 20% mais baixas do que os preços padrão dos provedores, com descontos adicionais por volume. Desenvolvedores podem acessar Claude, GPT, DeepSeek e outros modelos por meio de uma única conta, pagando com base no consumo de tokens do modelo selecionado. Consulte a página de preços do CometAPI para tarifas atuais.

Para requisições sem cache ou taxas adicionais:

Custo = (tokens de entrada × tarifa de entrada + tokens de saída × tarifa de saída) / 1.000.000

Por exemplo, com tarifas hipotéticas de US$ 1/M tokens de entrada e US$ 4/M tokens de saída, usando 20.000 tokens de entrada e 2.000 tokens de saída, o custo é US$ 0,028. Essas são tarifas ilustrativas, não preços reais de modelos.

Registre uso de tokens, cobranças totais da API, tempo de execução e resultados de teste para cada tarefa. Para reduzir custos, limite o contexto desnecessário, use prompts concisos, evite repetidas requisições com falha e escolha modelos de menor custo quando atenderem aos mesmos requisitos de qualidade.

OpenCode API Cost Optimization Strategies

Para reduzir custos no OpenCode sem comprometer a qualidade da codificação, foque na seleção do modelo, eficiência de tokens e requisições de API desnecessárias.

  • Escolha o modelo certo: Use modelos de menor custo como DeepSeek para tarefas rotineiras de codificação, reservando Claude ou GPT para depuração, refatoração e raciocínio complexos.
  • Reduza o consumo de tokens: Mantenha prompts concisos, forneça apenas arquivos relevantes do projeto e evite enviar repetidamente grandes quantidades de contexto do repositório.
  • Use cache de prompts: Aproveite recursos de cache suportados para contexto repetido, como instruções de projeto e referências de código, para reduzir custos de entrada.
  • Evite tentativas desnecessárias: Corrija erros de configuração e autenticação antes de tentar novamente e revise saídas anteriores para evitar trabalho duplicado.
  • Monitore o gasto real: Acompanhe uso de tokens, cobranças da API e conclusão bem-sucedida de tarefas via CometAPI. Compare o custo por tarefa bem-sucedida, e não apenas os preços por token.

Combinadas com a precificação com desconto e pay-as-you-go do CometAPI, essas práticas ajudam a controlar gastos mantendo desempenho confiável no OpenCode.

How Can You Extend the CometAPI Configuration?

Para adicionar outro modelo, coloque seu ID de modelo sob o provedor cujo formato de API ele suporta ou adicione uma nova entrada de provedor com o adaptador necessário. Em seguida, selecione esse provedor/modelo via /models. Mantenha as credenciais em COMETAPI_KEY e mantenha as entradas existentes para que a troca continue sendo apenas uma operação de seleção.

O guia oficial cobre quatro formatos de API, incluindo o Gemini. Este artigo usa as três entradas necessárias para Claude, GPT e DeepSeek. Se vários modelos selecionados suportam Chat Completions, eles podem compartilhar um único mapa de models do cometapi-chat. Não mova uma rota exclusiva de Responses ou Messages para esse mapa apenas para reduzir o número de entradas.

Escolha o adaptador com base na rota que você pretende chamar e o modelo com base na tarefa de programação. Uma mudança de fornecedor não exige uma nova chave do CometAPI; uma mudança de formato de API exige o adaptador correspondente configurado.

How to Troubleshoot CometAPI in OpenCode?

Siga o primeiro estágio que falhar: requisição HTTP → provedor do OpenCode → ferramentas de arquivo. Se o HTTP falhar, inspecione credenciais, acesso ao modelo e detalhes do endpoint. Se o HTTP funcionar, mas o OpenCode falhar, inspecione a configuração e o ambiente de execução. Se os dois testes de texto funcionarem, mas ações em arquivos falharem, inspecione permissões e compatibilidade de chamadas de ferramentas.

SintomaPrimeira verificaçãoPróxima açãoComando de diagnóstico / evidência
Resposta 401Valor da chave e cabeçalho AuthorizationDefina a chave no terminal atual; verifique espaços acidentais.Verifique a presença da variável sem imprimir a chave; mantenha o status HTTP e o erro com redação.
403 ou restrição de contaCorpo do erro e permissões da contaConfirme acesso ao modelo e status da conta no CometAPI.Salve o erro redigido da resposta e confirme o acesso à conta.
Resposta 404Host, caminho do endpoint e ID do modeloCompare a requisição com a documentação da API do modelo selecionado.Compare response.json com o modelo solicitado e o endpoint.
Modelo ausente no OpenCodeDiretório do projeto e config do provedorVerifique JSON válido e nomes correspondentes de provedor/modelo; reinicie após editar.Execute opencode models cometapi-chat, opencode models cometapi-messages e opencode models cometapi-responses; registre opencode --version.
Texto funciona, ferramentas falhamResposta de tool-call e compatibilidade da rotaVerifique suporte da rota; distinga uma chamada de ferramenta rejeitada de um prompt de aprovação.Compare a requisição de texto curta com a ação de ferramenta que falhou; mantenha o erro.
Comando aguarda aprovaçãoSessão interativa e configurações de permissãoRevise e aprove a ação pretendida; não trate uma solicitação pendente como indisponibilidade da API.Use a sessão interativa; registre a ação solicitada e o resultado da aprovação.
429 ou erro transitório do servidorDetalhes do erro e limites de usoReduza concorrência de requisições; siga orientações de retry em vez de repetir continuamente.Mantenha o status HTTP e as orientações de tentativa; reduza a concorrência.

Ao compartilhar um problema, inclua a versão do OpenCode, sistema operacional, ID do modelo, caminho do endpoint e texto do erro com redação. Exclua chaves de API e conteúdo privado do repositório. Mantenha a menor requisição que reproduza a falha para que problemas de configuração e ferramentas possam ser investigados separadamente.

FAQ

Why does OpenCode lose my CometAPI key in a new terminal?

Os comandos de export e PowerShell acima definem uma variável de ambiente para a sessão atual e seus processos filhos. Um terminal aberto separadamente ou um editor já em execução pode não herdá-la. Defina a chave no ambiente que lança o OpenCode e reinicie esse processo. Para configuração persistente, use o gerenciador de credenciais do seu ambiente em vez de embutir o segredo em um arquivo de repositório.

Does OpenCode load COMETAPI_KEY from a .env file automatically?

A expressão {env:COMETAPI_KEY} lê o ambiente do processo. Apenas criar um arquivo .env não estabelece que a variável foi carregada. Use seu shell ou um carregador de ambiente configurado explicitamente antes de iniciar o OpenCode. Diagnostique um valor vazio no processo de lançamento em vez de presumir que o provedor está indisponível.

Can a global OpenCode configuration change this project setup?

O OpenCode mescla configurações em vez de substituir cada arquivo anterior. O arquivo do projeto sobrescreve campos sobrepostos do arquivo global, enquanto configurações globais não relacionadas permanecem. Um arquivo OPENCODE_CONFIG personalizado é carregado entre eles. Se o comportamento divergir entre repositórios, compare essas fontes e quaisquer configurações gerenciadas ou embutidas em vez de assumir que o arquivo local é a única entrada.

Does refreshing the OpenCode model list enable CometAPI access?

Não. A opção de atualização de modelos atualiza o cache models.dev; ela não concede acesso à conta nem prova que um endpoint aceita um ID de modelo. Uma entrada configurada manualmente pode estar visível antes de qualquer requisição bem-sucedida. Use uma requisição real para verificar a rota e consulte as configurações de conta do CometAPI para restrições de acesso.

Why does curl work while OpenCode cannot call CometAPI?

Os dois processos podem carregar credenciais diferentes, usar IDs de modelo distintos ou enviar formatos de requisição diferentes. Primeiro, repita o prompt de texto curto a partir do mesmo terminal da requisição HTTP bem-sucedida. Em seguida, compare a base URL do provedor, o adaptador e o modelo selecionado. Se o texto simples funcionar, mas uma tarefa de agente falhar, preserve o erro relacionado à ferramenta separadamente; a conectividade HTTP por si só não demonstra compatibilidade de ferramentas.

Conclusion

Agora você tem um único opencode.json com exemplos de Claude, GPT e DeepSeek, uma credencial compartilhada do CometAPI e comandos para alternar o modelo ativo. Use as requisições curtas de texto para verificar o acesso e, em seguida, execute a mesma tarefa de criação de arquivos em diretórios separados para validar o fluxo de codificação. Mantenha os resultados observados com os detalhes do seu ambiente antes de aplicar a configuração a um repositório maior.

Continuar aprendendo

Conecte este artigo à próxima decisão.

Ver todos os tópicos
Publicado em Oct 22, 2026
Última atualização Oct 22, 2026
0 visualizações
Revisado para maior clareza, atribuição de fontes e terminologia de API atual.

Leia Mais