Como usar o OpenCode com LiteLLM para conectar vários modelos de IA

Configuração do OpenCode com LiteLLM conectando múltiplos provedores de IA no terminal
Resposta rápida

O OpenCode fala o formato da API da OpenAI e o LiteLLM expõe mais de 100 provedores nesse mesmo formato, por isso a combinação OpenCode LiteLLM dá liberdade de trocar de modelo sem trocar de ferramenta. Você sobe o proxy do LiteLLM (litellm --config config.yaml, na porta 4000), declara um provider no opencode.json apontando pra http://localhost:4000/v1 e autentica com a API key do proxy. Dá pra automatizar tudo com o opencode-plugin-litellm, que descobre os modelos sozinho, e até rodar vários LiteLLM ao mesmo tempo

Trocar de modelo sem trocar de ferramenta: é isso que essa dupla resolve

O OpenCode fala o formato da API da OpenAI

o LiteLLM pega mais de 100 modelos diferentes e traduz todos pra esse mesmo formato

por isso os dois vivem aparecendo juntos quando o papo é ter liberdade de modelo direto no terminal

O que o LiteLLM resolve e por que ele aparece junto do OpenCode

Antes do como, o porquê

O LiteLLM é um projeto open source (da BerriAI) que oferece uma interface única pra chamar mais de 100 modelos de linguagem

OpenAI, Anthropic, Vertex AI, Bedrock e por aí vai, todos usando o formato da API da OpenAI

Ele vem em dois pedaços: um SDK Python, pra chamar de dentro do seu app, e um servidor proxy standalone, o tal AI Gateway, que sobe sozinho e expõe uma API REST compatível com OpenAI

É esse proxy que interessa aqui

Do outro lado tem o OpenCode, um agente de código de IA open source pra rodar no terminal, feito pela equipe por trás do SST

Ele suporta 75+ provedores de fábrica

E aqui mora o encaixe: o OpenCode conversa em formato OpenAI-compatible, e o proxy do LiteLLM expõe QUALQUER provedor exatamente nesse formato

Ou seja, pro OpenCode o LiteLLM parece só mais um endpoint da OpenAI

e por trás desse endpoint você pluga o que quiser

O que você precisa antes de começar

Nada de PC da Nasa, é setup de configuração mesmo

  • OpenCode instalado na máquina
  • LiteLLM instalado, com o servidor proxy disponível
  • Um config.yaml do LiteLLM listando os modelos e provedores que você quer usar, cada um com a respectiva chave de API do provedor
  • A API key do proxy do LiteLLM, que pode ser a master key ou uma virtual key

O config.yaml é o coração da coisa

é nele que você diz ao LiteLLM quais modelos existem e com qual chave cada um fala

Com esses quatro itens na mão, bora conectar

Passo a passo: conectar o LiteLLM ao OpenCode

  1. Suba o proxy do LiteLLM apontando pro seu arquivo de configuração:
litellm --config config.yaml

Se deu tudo certo, ele responde com a mensagem Proxy running on http://0.0.0.0:4000

O proxy roda por padrão na porta 4000

O erro comum deste passo: seguir em frente sem confirmar essa mensagem de "proxy running" e a porta

se a porta não for a 4000, o resto da configuração não vai bater

  1. Declare o provider no opencode.json

Aqui você registra o LiteLLM como um provider compatível com OpenAI, apontando pra baseURL do proxy:

{
  "provider": {
    "LiteLLM": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "LiteLLM",
      "options": {
        "baseURL": "http://localhost:4000/v1"
      },
      "models": {
        "seu-modelo": {}
      }
    }
  }
}

O pacote npm é o @ai-sdk/openai-compatible, o name é o nome do provider e o objeto models lista os modelos que você quer expor no OpenCode

Esse opencode.json pode ficar global em ~/.config/opencode/opencode.json, por projeto na raiz, ou via variável de ambiente OPENCODE_CONFIG

O erro comum deste passo: esquecer o /v1 no fim da baseURL

tem que ser http://localhost:4000/v1, senão o OpenCode não acha os endpoints

  1. Autentique no OpenCode

Na hora de autenticar, informe o nome do provider IGUAL ao campo name do config (ou seja, LiteLLM) e cole a API key do LiteLLM, que é a master key ou uma virtual key do proxy

O erro comum deste passo: usar um nome de provider diferente do que está no name do config

se os dois divergirem, o OpenCode não casa a autenticação com o provider e não conecta

Atalho: o plugin que descobre os modelos sozinho

Se você não quiser ficar listando modelo por modelo no models, tem um caminho mais preguiçoso (e isso é bom!)

Existe o opencode-plugin-litellm

Ele auto-detecta o proxy do LiteLLM rodando, puxa os modelos direto de /v1/models e registra tudo no OpenCode sozinho

Pra ligar, é só adicionar no opencode.json:

{
  "plugin": ["opencode-plugin-litellm@latest"]
}

Aí o plugin faz a descoberta na hora, sem você precisar declarar modelo a modelo

O erro comum aqui: o proxy não estar rodando no momento da detecção

se o LiteLLM estiver desligado, não tem /v1/models pra ler e o plugin não acha nada

sobe o proxy primeiro, sempre

Vários LiteLLM e mistura com outros provedores

Agora a parte massa

O OpenCode não te prende a um único LiteLLM

Dá pra configurar mais de um provider LiteLLM ao mesmo tempo, cada um apontando pra uma baseURL diferente

por exemplo, um litellm-prod e um litellm-dev, cada um com seu próprio proxy

E não para aí: você pode misturar isso com provedores diretos, sem passar pelo LiteLLM

Na prática, é alternar o modelo conforme o contexto de trabalho

um setup pra brincar, outro pra produção, e ainda um provedor direto pra alguma tarefa específica

tudo no mesmo OpenCode, sem reescrever nada do zero a cada troca

Modelos gratuitos no OpenCode: um vídeo pra começar

Pra começar do zero com uso de modelos no OpenCode, este vídeo do canal mostra como colocar modelos gratuitos pra rodar dentro do agente

no teste de API que aparece por lá, os modelos gratuitos não descontaram nada

quem gerou custo foi o Gemini 3.5 flash

e teve um momento bem real de desenvolvimento: bateu rate limit no Sonnet e o próprio agente alternou pro GLM 4.6, seguindo o trabalho sem travar

Conclusão

O valor da combinação OpenCode LiteLLM é um só: flexibilidade de modelo sem reescrever o setup

você monta o proxy uma vez, declara o provider e passa a trocar de modelo como quem troca de aba

O próximo passo é montar o seu config.yaml com os provedores e chaves que você quer, subir o proxy e testar a troca de modelos direto no OpenCode

se quiser pular a parte manual, joga o opencode-plugin-litellm no meio e deixa ele descobrir os modelos por você

bora testar?

Perguntas frequentes

Preciso deixar o proxy do LiteLLM rodando enquanto uso o OpenCode?

Sim, o proxy precisa estar ativo durante todo o uso. Toda chamada de modelo passa pelo endpoint http://localhost:4000/v1, e se o proxy cair o OpenCode para de alcançar os modelos na hora. O fluxo é sempre subir o proxy com litellm --config config.yaml antes de abrir o OpenCode

Dá pra mudar a porta padrão 4000 do proxy do LiteLLM?

Dá sim, a porta é customizável com --port na linha de comando ao subir o proxy. Se você mudar, é só ajustar a baseURL no opencode.json pra bater com a nova porta. O 4000 é o padrão, não uma obrigação

O LiteLLM cobra alguma coisa pelo uso do proxy ou pelo SDK?

Não, o LiteLLM é open source e o proxy em si não tem cobrança nenhuma. O custo que aparece vem dos provedores de modelo que você conecta: cada chamada vai pro provedor (Anthropic, Google, OpenAI…) e quem cobra é ele, não o LiteLLM. O proxy só faz o meio de campo

Como eu sei qual nome usar na autenticação do OpenCode pra apontar pro LiteLLM?

O nome que você informa na autenticação tem que ser IDÊNTICO ao campo name dentro do bloco do provider no opencode.json. Se declarou "name": "LiteLLM", é exatamente esse valor que vai na autenticação. Se os dois divergirem, o OpenCode não casa a autenticação com o provider e a conexão não fecha

O opencode.json por projeto e o arquivo global de configuração podem existir ao mesmo tempo?

Sim, o OpenCode aceita a configuração em três lugares: global em ~/.config/opencode/opencode.json, por projeto na raiz do repositório, ou via variável de ambiente OPENCODE_CONFIG. Assim você mantém um setup global pra uso geral e um opencode.json por projeto com os modelos específicos de cada contexto, sem conflito

O plugin opencode-plugin-litellm precisa que eu liste os modelos manualmente no opencode.json?

Não, essa é exatamente a vantagem dele: o plugin puxa os modelos direto de /v1/models do proxy e registra tudo sozinho no OpenCode, sem você precisar listar um por um. A única condição é o proxy do LiteLLM estar rodando no momento da detecção, senão não tem endpoint pra ler e o plugin não acha nada




Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 473 aulas
  • 20 projetos
  • 39h 26min

Blog | Mais populares