Qué hace LiteLLM
- El SDK es una sola función de Python,
completion(), que llama a cualquier proveedor en el formato de OpenAI. El prefijo del nombre del modelo elige el proveedor:openai/significa cualquier API compatible con OpenAI. - El proxy es un servidor que ejecutas tú mismo, por defecto en
http://localhost:4000. Las aplicaciones lo llaman en el formato de OpenAI o de Anthropic, y él añade claves, presupuestos, registros y alternativas de respaldo delante de tus proveedores.
Configura el proxy
- Instálalo en un entorno virtual. LiteLLM 1.106 requiere Python 3.10 o superior.
python -m venv .venvsource .venv/bin/activate # Windows: .venv\Scripts\activatepip install "litellm[proxy]"- Escribe config.yaml. Este es el archivo que probamos: DeepSeek V4.1 Flash mediante el endpoint compatible con OpenAI, Claude Sonnet 5.5 mediante el proveedor de Anthropic de LiteLLM, y un comodín que llega a todos los demás modelos como
zurelay/<model ID>. Los precios demodel_infoson los actuales de 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- Inícialo con tu clave de Zurelay y una clave maestra propia. Los clientes envían la clave maestra; LiteLLM espera claves que empiecen por
sk-.
export ZURELAY_API_KEY="zr_live_..."export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"litellm --config config.yaml- Llámalo como cualquier API compatible con OpenAI, con el
model_namede la configuración.
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"}]}'O usa el SDK de Python
Sin el proxy, pasa la URL base y la clave en cada llamada. Para Claude a través del proveedor anthropic/ de LiteLLM, la URL base es https://api.zurelay.com, sin /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 a través de LiteLLM
El proxy también ofrece la API Messages de Anthropic, así que Claude Code puede funcionar con cualquier modelo de la configuración. Apunta Claude Code al proxy e indica qué modelos debe 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"claudeSi solo usas modelos Claude, no necesitas LiteLLM: Claude Code se comunica directamente con Zurelay, como muestra Claude Code pricing. Si prefieres un router con una página web en lugar de un archivo YAML, consulta Claude Code Router.
Los ajustes que lo rompieron
- Claude Code falló con DeepSeek con
Unknown request URL: POST /v1/responses. En los modelosopenai/, LiteLLM convierte las solicitudes de Anthropic Messages en llamadas a la API Responses de OpenAI, que Zurelay no ofrece. Tras un primer fallo, LiteLLM además puso el modelo en enfriamiento, así que las siguientes solicitudes recibieron429 No deployments available for selected model.use_chat_completions_url_for_anthropic_messages: trueenlitellm_settingslas envía a Chat Completions. - Los clientes de la Responses API fallaron de la misma manera. Una solicitud a
/v1/responsesdel proxy, o alitellm.responses()en el SDK, llegaba al proveedor sin cambios hasta que se configurabause_chat_completions_api: trueen el modelo. - Claude con /v1 en la URL base llamó a
/v1/v1/messagesy obtuvo un 404. El proveedoranthropic/añade/v1/messagespor sí solo; los modelosopenai/necesitan el/v1. - El comodín mostraba los modelos equivocados. Con
openai/*, el/v1/modelsdel proxy mostraba la lista integrada de LiteLLM con 216 nombres de OpenAI (gpt-3.5-turbo,babbage-002) y ninguno de Zurelay. Las solicitudes con IDs de modelo reales seguían funcionando.check_provider_endpoint: truehizo que mostrara los modelos de Zurelay en su lugar. - En Windows, el proxy fallaba al iniciar con
UnicodeEncodeError: 'charmap' codec can't encode characterscuando su salida iba a un archivo de registro: el banner tiene caracteres que la página de códigos predeterminada no incluye. El modo UTF-8 de Python lo resolvió:PYTHONUTF8=1en el entorno, opython -X utf8.
Seguimiento de costos
El seguimiento de gastos de LiteLLM calcula el precio de cada solicitud a partir de su propia lista. Para los modelos que conoce, usa el precio de lista del laboratorio: contabilizó nuestra solicitud a Claude Sonnet 5.5 con la tarifa de Anthropic, unas 2,5 veces lo que facturó Zurelay. Para los modelos que no conoce, como DeepSeek V4.1 Flash detrás de openai/, no registra ningún costo. Las líneas model_info de la configuración anterior corrigen ambos casos: con ellas, el costo que LiteLLM devolvió en su encabezado x-litellm-response-cost coincidió con nuestra factura.
Lo que costó en nuestra prueba
A través del proxy, Claude Code escribió un pequeño archivo de Python con DeepSeek V4.1 Flash y luego lo editó con Claude Sonnet 5.5. Ambos usaron correctamente las herramientas de archivos de Claude Code. Zurelay facturó:
| Modelo | Tarea | Solicitudes | Tokens de prompt (en caché) | Costo |
|---|---|---|---|---|
| DeepSeek V4.1 Flash | Crear hello.py | 3 | 39,725 (25,845) | $0.0005 |
| Claude Sonnet 5.5 | Editar hello.py | 3 | 51,310 (32,523) | $0.023 |
Cada solicitud incluía las instrucciones y las definiciones de herramientas de Claude Code, entre 13,000 y 18,000 tokens, y a partir de la segunda solicitud la mayor parte se leyó desde la caché. La estimación del propio Claude Code para la tarea con Claude fue de $0.054, a los precios de lista de Anthropic. Las llamadas al SDK anteriores, con una respuesta breve cada una, costaron $0.000006 en DeepSeek y $0.0003 en Claude Sonnet 5.5.
Cosas que conviene saber
- El proxy escucha en todas las interfaces de red (
0.0.0.0) a menos que pases--host 127.0.0.1. Mantén la clave maestra configurada; de lo contrario, cualquier persona en tu red podrá gastar tu crédito. - Los modelos comodín toman su ID real después del prefijo:
zurelay/gpt-6.1-terraen una solicitud se convierte engpt-6.1-terraen Zurelay. - En Windows, instala en una ruta de carpeta corta. Un entorno virtual ubicado muy dentro de una carpeta temporal falló con
ModuleNotFoundError: No module named 'openai.types...'porque algunas rutas de archivo superaban el límite de 260 caracteres de Windows.
Precios de los modelos que pondrías detrás
Por 1M de tokens, el precio de lista del laboratorio y el de Zurelay:
| Modelo | Entrada | Salida | En Zurelay (entrada / salida) |
|---|---|---|---|
| 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 |
Probado el 3 de noviembre de 2026 con LiteLLM 1.106.6 en Python 3.12 y Claude Code 2.1.317, en Windows, con la API de Zurelay. Encontrarás la configuración resumida en LiteLLM en la documentación. Documentación oficial de LiteLLM: Endpoints compatibles con OpenAI y configuración del proxy.