O que faz o LiteLLM
- O SDK é uma única função Python,
completion(), que chama qualquer fornecedor no formato da OpenAI. O prefixo do nome do modelo escolhe o fornecedor:openai/significa qualquer API compatível com OpenAI. - O proxy é um servidor executado por si, em
http://localhost:4000por predefinição. As aplicações chamam-no no formato da OpenAI ou da Anthropic, e ele acrescenta chaves, orçamentos, registos e alternativas de recurso à frente dos seus fornecedores.
Configurar o proxy
- Instale-o num ambiente virtual. O LiteLLM 1.106 requer Python 3.10 ou posterior.
python -m venv .venvsource .venv/bin/activate # Windows: .venv\Scripts\activatepip install "litellm[proxy]"- Escreva o config.yaml. Este é o ficheiro que testámos: DeepSeek V4.1 Flash através do endpoint compatível com OpenAI, Claude Sonnet 5.5 através do fornecedor Anthropic do LiteLLM e um wildcard que chega 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 a sua chave Zurelay e uma chave mestra própria. Os clientes enviam a chave mestra; o LiteLLM espera chaves que comecem por
sk-.
export ZURELAY_API_KEY="zr_live_..."export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"litellm --config config.yaml- Invoque-o como qualquer API compatível com OpenAI, com 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 de Python
Sem o proxy, passe o URL base e a chave em cada chamada. Para o Claude através do fornecedor anthropic/ do LiteLLM, o 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 com o LiteLLM
O proxy também serve a API Messages da Anthropic, pelo que o Claude Code pode funcionar com qualquer modelo da configuração. Aponte o Claude Code para o proxy e indique os modelos que 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 não precisa do LiteLLM: o Claude Code comunica diretamente com a Zurelay, como mostra a página Preços do Claude Code. Para um router com uma página web em vez de um ficheiro YAML, veja o Claude Code Router.
As definições que causaram falhas
- O Claude Code falhou com o DeepSeek com
Unknown request URL: POST /v1/responses. Para modelosopenai/, o LiteLLM converte pedidos da API Messages da Anthropic em chamadas à API Responses da OpenAI, que a Zurelay não disponibiliza. Depois de uma falha, o LiteLLM colocou também o modelo em período de espera, pelo que os pedidos seguintes devolveram429 No deployments available for selected model.use_chat_completions_url_for_anthropic_messages: trueemlitellm_settingsenvia-os para Chat Completions. - Os clientes da API Responses falharam da mesma forma. Um pedido a
/v1/responsesdo proxy, oulitellm.responses()no SDK, seguia inalterado para o fornecedor até se definiruse_chat_completions_api: trueno modelo. - O Claude com /v1 no URL base chamou
/v1/v1/messagese recebeu um 404. O fornecedoranthropic/acrescenta/v1/messagespor si; os modelosopenai/precisam de/v1. - O wildcard listou os modelos errados. Com
openai/*, o/v1/modelsdo proxy mostrou a lista integrada do LiteLLM com 216 nomes da OpenAI (gpt-3.5-turbo,babbage-002) e nenhum da Zurelay. Os pedidos com IDs de modelo reais continuaram a funcionar.check_provider_endpoint: truefez com que listasse os modelos da Zurelay. - No Windows, o proxy falhava no arranque com
UnicodeEncodeError: 'charmap' codec can't encode charactersquando o output era redirecionado para um ficheiro de registo: o banner tem caracteres que a página de códigos predefinida não suporta. O modo UTF-8 do Python resolveu o problema:PYTHONUTF8=1no ambiente, oupython -X utf8.
Controlo de custos
O controlo de gastos do LiteLLM calcula o preço de cada pedido a partir da sua própria lista. Para os modelos que conhece, é o preço de tabela do laboratório: contou o nosso pedido ao Claude Sonnet 5.5 à tarifa da Anthropic, cerca de 2,5 vezes o que a Zurelay faturou. Para os modelos que não conhece, como o DeepSeek V4.1 Flash por detrás de openai/, não regista custo nenhum. As linhas model_info da configuração acima resolvem os dois casos: com elas, o custo que o LiteLLM devolveu no cabeçalho x-litellm-response-cost coincidiu com a nossa fatura.
Quanto custou no nosso teste
Através do proxy, o Claude Code escreveu um pequeno ficheiro Python com o DeepSeek V4.1 Flash e depois editou-o com o Claude Sonnet 5.5. Ambos usaram corretamente as ferramentas de ficheiros do Claude Code. A Zurelay faturou:
| Modelo | Tarefa | Pedidos | Tokens do 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 pedido incluía as instruções e as definições de ferramentas do Claude Code, entre 13 000 e 18 000 tokens, e a partir do segundo pedido a maior parte foi lida da cache. A estimativa do próprio Claude Code para a tarefa com o Claude foi de $0.054, aos preços de tabela da Anthropic. As chamadas ao SDK anteriores, com uma resposta curta cada, custaram $0.000006 no DeepSeek e $0.0003 no Claude Sonnet 5.5.
O que deve saber
- O proxy escuta em todas as interfaces de rede (
0.0.0.0), a menos que passe--host 127.0.0.1. Mantenha a chave mestra definida; caso contrário, qualquer pessoa na sua rede pode gastar o seu crédito. - Nos modelos wildcard, o ID real vem a seguir ao prefixo:
zurelay/gpt-6.1-terranum pedido passa agpt-6.1-terrana Zurelay. - No Windows, instale numa pasta com um caminho curto. Um ambiente virtual no fundo de uma pasta temporária falhou com
ModuleNotFoundError: No module named 'openai.types...'porque alguns caminhos de ficheiros ultrapassaram o limite de 260 carateres do Windows.
Preços dos modelos que colocaria por trás dele
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 em Python 3.12 e Claude Code 2.1.317, no Windows, com a API da Zurelay. A configuração resumida está em LiteLLM na documentação. Documentação do próprio LiteLLM: Endpoints compatíveis com OpenAI e configuração do proxy.