Proxy e SDK do LiteLLM com DeepSeek, Claude e qualquer API compatível com OpenAI

O LiteLLM é um SDK Python e servidor proxy gratuito e de código aberto que coloca uma única API ao estilo OpenAI à frente de vários fornecedores de modelos. Configurámo-lo com a API compatível com OpenAI da Zurelay, executámos o SDK, o proxy e o Claude Code através dele e registámos todas as definições que deram problemas.

· Guias da Zurelay · Preços atualizados em tempo real

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:4000 por 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

  1. Instale-o num ambiente virtual. O LiteLLM 1.106 requer Python 3.10 ou posterior.
terminal
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install "litellm[proxy]"
  1. 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 de model_info são os atuais da Zurelay.
config.yaml
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: true
litellm_settings:
use_chat_completions_url_for_anthropic_messages: true
check_provider_endpoint: true
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
  1. 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-.
terminal
export ZURELAY_API_KEY="zr_live_..."
export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"
litellm --config config.yaml
  1. Invoque-o como qualquer API compatível com OpenAI, com o model_name da configuração.
terminal
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.

app.py
import os
from litellm import completion
response = 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:

terminal
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"
claude

Só 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

  1. O Claude Code falhou com o DeepSeek com Unknown request URL: POST /v1/responses. Para modelos openai/, 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 devolveram 429 No deployments available for selected model. use_chat_completions_url_for_anthropic_messages: true em litellm_settings envia-os para Chat Completions.
  2. Os clientes da API Responses falharam da mesma forma. Um pedido a /v1/responses do proxy, ou litellm.responses() no SDK, seguia inalterado para o fornecedor até se definir use_chat_completions_api: true no modelo.
  3. O Claude com /v1 no URL base chamou /v1/v1/messages e recebeu um 404. O fornecedor anthropic/ acrescenta /v1/messages por si; os modelos openai/ precisam de /v1.
  4. O wildcard listou os modelos errados. Com openai/*, o /v1/models do 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: true fez com que listasse os modelos da Zurelay.
  5. No Windows, o proxy falhava no arranque com UnicodeEncodeError: 'charmap' codec can't encode characters quando 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=1 no ambiente, ou python -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:

ModeloTarefaPedidosTokens do prompt (em cache)Custo
DeepSeek V4.1 FlashCriar hello.py339,725 (25,845)$0.0005
Claude Sonnet 5.5Editar hello.py351,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-terra num pedido passa a gpt-6.1-terra na 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:

ModeloEntradaSaídaNa 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.

Todos os modelos com uma única chave compatível com a OpenAI, abaixo do preço de tabela. Crédito a partir de $10, sem subscrição.Obtenha a sua chave de API

Perguntas frequentes

Perguntas frequentes

Mais alguma dúvida? Fale com a nossa equipa e responderemos por email.

O que é o LiteLLM?

Um SDK de Python e servidor proxy de código aberto da BerriAI. O SDK chama vários fornecedores de modelos através de uma única função ao estilo da OpenAI; o proxy é um servidor que você executa e que as aplicações chamam no formato da OpenAI ou da Anthropic, com chaves, orçamentos, registos e fallbacks à frente dos seus fornecedores.

O LiteLLM é gratuito?

Sim. O SDK e o proxy são de código aberto sob a licença MIT, exceto as funcionalidades empresariais da pasta enterprise do repositório, que têm licença própria. Paga apenas aos fornecedores a quem envia pedidos.

Como uso uma API compatível com OpenAI no LiteLLM?

Coloque o prefixo openai/ no nome do modelo e defina api_base com o URL base do fornecedor, incluindo /v1, por exemplo model: openai/deepseek-v4.1-flash com api_base: https://api.zurelay.com/v1. A chave vai em api_key, ou em os.environ/NAME no config.yaml do proxy.

Porque é que o LiteLLM chama /v1/responses?

Para modelos openai/, o LiteLLM envia os pedidos da API Messages da Anthropic (do Claude Code, por exemplo) e os pedidos da API Responses para a API Responses do fornecedor. Os fornecedores que só disponibilizam Chat Completions respondem 404. Defina use_chat_completions_url_for_anthropic_messages: true em litellm_settings e use_chat_completions_api: true no modelo.

Como uso o Claude Code com o LiteLLM?

Execute o proxy LiteLLM com os modelos definidos em config.yaml, depois defina ANTHROPIC_BASE_URL como http://localhost:4000, ANTHROPIC_AUTH_TOKEN como a chave mestra do proxy e ANTHROPIC_MODEL, mais as três variáveis ANTHROPIC_DEFAULT_*_MODEL, com nomes de modelos da configuração, e execute claude.

Porque é que o custo do LiteLLM está errado?

O LiteLLM calcula o preço dos pedidos a partir da sua própria lista: o preço de tabela do laboratório para os modelos que conhece e nada para os que não conhece. Adicione input_cost_per_token, output_cost_per_token e cache_read_input_token_cost em model_info para cada modelo, para acompanhar o que o seu fornecedor realmente cobra.

Que porta usa o proxy LiteLLM?

Porta 4000, em todas as interfaces de rede (0.0.0.0), a menos que passe --host. Altere a porta com --port ou com a variável de ambiente PORT.

Mais guias

Deixe de pagar o preço de tabela.
Comece a poupar hoje.

Crie uma chave em segundos, configure o SDK que já usa para aceder à Zurelay e cada pedido custa até 90% menos desde o primeiro token.