O que o LiteLLM faz
- O SDK é uma função Python,
completion(), que chama qualquer provedor no formato da OpenAI. O prefixo no nome do modelo define o provedor:openai/significa qualquer API compatível com OpenAI. - O proxy é um servidor que você mesmo hospeda, em
http://localhost:4000por padrão. Os apps o chamam no formato da OpenAI ou da Anthropic, e ele adiciona chaves, orçamentos, logs e fallbacks na frente dos seus provedores.
Configure o proxy
- Instale em um ambiente virtual. O LiteLLM 1.106 exige Python 3.10 ou superior.
python -m venv .venvsource .venv/bin/activate # Windows: .venv\Scripts\activatepip install "litellm[proxy]"- Escreva o config.yaml. Este é o arquivo que testamos: DeepSeek V4.1 Flash pelo endpoint compatível com OpenAI, Claude Sonnet 5.5 pelo provedor Anthropic do LiteLLM e um curinga que alcança todos os outros modelos como
zurelay/<model ID>. Os preços demodel_infosão os atuais da Zurelay.
model_list: - model_name: deepseek-v4.1-flash litellm_params: model: openai/deepseek-v4.1-flash api_base: https://api.zurelay.com/v1 api_key: os.environ/ZURELAY_API_KEY use_chat_completions_api: true model_info: input_cost_per_token: 0.00000003 output_cost_per_token: 0.00000012 cache_read_input_token_cost: 0.00000000074 - model_name: claude-sonnet-5-5 litellm_params: model: anthropic/claude-sonnet-5-5 api_base: https://api.zurelay.com api_key: os.environ/ZURELAY_API_KEY model_info: input_cost_per_token: 0.00000079 output_cost_per_token: 0.00000395 cache_read_input_token_cost: 0.000000079 - model_name: zurelay/* litellm_params: model: openai/* api_base: https://api.zurelay.com/v1 api_key: os.environ/ZURELAY_API_KEY use_chat_completions_api: truelitellm_settings: use_chat_completions_url_for_anthropic_messages: true check_provider_endpoint: truegeneral_settings: master_key: os.environ/LITELLM_MASTER_KEY- Inicie-o com sua chave do Zurelay e uma chave mestra própria. Os clientes enviam a chave mestra; o LiteLLM espera chaves que começam com
sk-.
export ZURELAY_API_KEY="zr_live_..."export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"litellm --config config.yaml- Faça a chamada como em qualquer API compatível com a OpenAI, usando o
model_nameda configuração.
curl http://localhost:4000/v1/chat/completions \ -H "Authorization: Bearer $LITELLM_MASTER_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "deepseek-v4.1-flash", "messages": [{"role": "user", "content": "Hello"}]}'Ou use o SDK Python
Sem o proxy, passe a URL base e a chave em cada chamada. Para o Claude pelo provedor anthropic/ do LiteLLM, a URL base é https://api.zurelay.com, sem /v1.
import osfrom litellm import completionresponse = completion( model="openai/deepseek-v4.1-flash", api_base="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"], messages=[{"role": "user", "content": "Hello"}],)print(response.choices[0].message.content)claude = completion( model="anthropic/claude-sonnet-5-5", api_base="https://api.zurelay.com", api_key=os.environ["ZURELAY_API_KEY"], messages=[{"role": "user", "content": "Hello"}],)Claude Code via LiteLLM
O proxy também atende a Messages API da Anthropic, então o Claude Code pode rodar com qualquer modelo da configuração. Aponte o Claude Code para o proxy e indique os modelos que ele deve usar:
export ANTHROPIC_BASE_URL="http://localhost:4000"export ANTHROPIC_AUTH_TOKEN="$LITELLM_MASTER_KEY"export ANTHROPIC_MODEL="deepseek-v4.1-flash"export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-sonnet-5-5"export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5-5"export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4.1-flash"claudeSó para modelos Claude você não precisa do LiteLLM: o Claude Code se conecta direto ao Zurelay, como mostra Preços do Claude Code. Para um roteador com página web em vez de arquivo YAML, veja o Claude Code Router.
Os ajustes que causaram falhas
- O Claude Code falhou com o DeepSeek com
Unknown request URL: POST /v1/responses. Para modelosopenai/, o LiteLLM converte requisições da Messages API da Anthropic em chamadas à Responses API da OpenAI, que o Zurelay não atende. Depois de uma falha, o LiteLLM também colocou o modelo em cooldown, e as requisições seguintes receberam429 No deployments available for selected model.use_chat_completions_url_for_anthropic_messages: trueemlitellm_settingsenvia essas requisições para o Chat Completions. - Clientes da Responses API falharam do mesmo jeito. Uma requisição para
/v1/responsesdo proxy, oulitellm.responses()no SDK, seguia sem alterações para o provedor até queuse_chat_completions_api: truefosse definido no modelo. - Claude com /v1 na URL base chamou
/v1/v1/messagese recebeu um 404. O provedoranthropic/adiciona/v1/messagessozinho; já os modelosopenai/precisam de/v1. - O curinga listou os modelos errados. Com
openai/*, o/v1/modelsdo proxy mostrou a lista interna do LiteLLM com 216 nomes da OpenAI (gpt-3.5-turbo,babbage-002) e nenhum do Zurelay. Requisições com IDs reais de modelo continuaram funcionando.check_provider_endpoint: truefez a lista mostrar os modelos do Zurelay. - No Windows, o proxy travava na inicialização com
UnicodeEncodeError: 'charmap' codec can't encode charactersquando a saída ia para um arquivo de log: o banner tem caracteres que a página de código padrão não suporta. O modo UTF-8 do Python resolveu:PYTHONUTF8=1no ambiente, oupython -X utf8.
Acompanhamento de custos
O controle de gastos do LiteLLM calcula o preço de cada requisição a partir de uma lista própria. Para os modelos que ele conhece, usa o preço de tabela do laboratório: ele contou nossa requisição do Claude Sonnet 5.5 pela tarifa da Anthropic, cerca de 2,5 vezes o que o Zurelay cobrou. Para modelos que ele não conhece, como o DeepSeek V4.1 Flash por trás de openai/, não registra custo algum. As linhas model_info da configuração acima resolvem os dois casos: com elas, o custo que o LiteLLM retornou no cabeçalho x-litellm-response-cost bateu com a nossa cobrança.
Quanto custou no nosso teste
Pelo proxy, o Claude Code escreveu um pequeno arquivo Python no DeepSeek V4.1 Flash e depois o editou no Claude Sonnet 5.5. Os dois usaram corretamente as ferramentas de arquivo do Claude Code. O Zurelay cobrou:
| Modelo | Tarefa | Requisições | Tokens de prompt (em cache) | Custo |
|---|---|---|---|---|
| DeepSeek V4.1 Flash | Criar hello.py | 3 | 39,725 (25,845) | $0.0005 |
| Claude Sonnet 5.5 | Editar hello.py | 3 | 51,310 (32,523) | $0.023 |
Cada requisição levava as instruções e as definições de ferramentas do Claude Code, de 13.000 a 18.000 tokens, e a partir da segunda requisição a maior parte disso vinha do cache. A estimativa do próprio Claude Code para a tarefa no Claude foi de $0.054, com os preços de tabela da Anthropic. As chamadas de SDK anteriores, com uma resposta curta cada, custaram $0.000006 no DeepSeek e $0.0003 no Claude Sonnet 5.5.
O que você precisa saber
- O proxy escuta em todas as interfaces de rede (
0.0.0.0), a menos que você passe--host 127.0.0.1. Mantenha a chave mestra definida, ou qualquer pessoa na sua rede poderá gastar o seu crédito. - Nos modelos com curinga, o ID real vem depois do prefixo:
zurelay/gpt-6.1-terraem uma requisição viragpt-6.1-terrano Zurelay. - No Windows, instale em um caminho de pasta curto. Um ambiente virtual dentro de uma pasta temporária muito profunda falhou com
ModuleNotFoundError: No module named 'openai.types...'porque alguns caminhos de arquivo passaram do limite de 260 caracteres do Windows.
Preços dos modelos que você usaria com ele
Por 1M tokens, o preço de tabela do laboratório e o da Zurelay:
| Modelo | Entrada | Saída | Na Zurelay (entrada / saída) |
|---|---|---|---|
| DeepSeek V4.1 Flash | $0.30 | $1.20 | $0.03 / $0.12 |
| Claude Sonnet 5.5 | $2.00 | $10.00 | $0.79 / $3.95 |
| Claude Opus 5.5 | $4.00 | $20.00 | $1.40 / $7.00 |
| GPT-6.1 Terra | $1.00 | $5.00 | $0.25 / $1.25 |
| Gemini 3.8 Flash | $0.75 | $3.75 | $0.22 / $1.10 |
| Kimi K3.1 Pro | $2.00 | $10.00 | $0.80 / $4.00 |
| GLM-5.3 | $1.40 | $4.40 | $0.38 / $1.21 |
Testado em 3 de novembro de 2026 com LiteLLM 1.106.6 no Python 3.12 e Claude Code 2.1.317, no Windows, com a API do Zurelay. A configuração resumida está em LiteLLM na documentação. Documentação do próprio LiteLLM: Endpoints compatíveis com a OpenAI e configuração do proxy.