Proxy y SDK de LiteLLM con DeepSeek, Claude y cualquier API compatible con OpenAI

LiteLLM es un SDK de Python y servidor proxy gratuito y de código abierto que pone una sola API al estilo OpenAI delante de muchos proveedores de modelos. Lo configuramos con la API compatible con OpenAI de Zurelay, ejecutamos el SDK, el proxy y Claude Code a través de él, y anotamos cada ajuste que falló.

· Guías de Zurelay · Precios actualizados en tiempo real

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

  1. Instálalo en un entorno virtual. LiteLLM 1.106 requiere Python 3.10 o superior.
terminal
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install "litellm[proxy]"
  1. 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 de model_info son los actuales de 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. 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-.
terminal
export ZURELAY_API_KEY="zr_live_..."
export LITELLM_MASTER_KEY="sk-choose-a-long-random-key"
litellm --config config.yaml
  1. Llámalo como cualquier API compatible con OpenAI, con el model_name de la configuración.
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"}]}'

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.

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

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

Si 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

  1. Claude Code falló con DeepSeek con Unknown request URL: POST /v1/responses. En los modelos openai/, 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 recibieron 429 No deployments available for selected model. use_chat_completions_url_for_anthropic_messages: true en litellm_settings las envía a Chat Completions.
  2. Los clientes de la Responses API fallaron de la misma manera. Una solicitud a /v1/responses del proxy, o a litellm.responses() en el SDK, llegaba al proveedor sin cambios hasta que se configuraba use_chat_completions_api: true en el modelo.
  3. Claude con /v1 en la URL base llamó a /v1/v1/messages y obtuvo un 404. El proveedor anthropic/ añade /v1/messages por sí solo; los modelos openai/ necesitan el /v1.
  4. El comodín mostraba los modelos equivocados. Con openai/*, el /v1/models del 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: true hizo que mostrara los modelos de Zurelay en su lugar.
  5. En Windows, el proxy fallaba al iniciar con UnicodeEncodeError: 'charmap' codec can't encode characters cuando 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=1 en el entorno, o python -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ó:

ModeloTareaSolicitudesTokens de prompt (en caché)Costo
DeepSeek V4.1 FlashCrear hello.py339,725 (25,845)$0.0005
Claude Sonnet 5.5Editar hello.py351,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-terra en una solicitud se convierte en gpt-6.1-terra en 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:

ModeloEntradaSalidaEn 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.

Todos los modelos con una sola clave compatible con OpenAI, por debajo del precio de lista. Crédito desde $10, sin suscripción.Obtén tu clave de API

Preguntas frecuentes

Preguntas frecuentes

¿Algo más? Pregunta a nuestro equipo y te responderemos por correo.

¿Qué es LiteLLM?

Un SDK de Python y servidor proxy de código abierto de BerriAI. El SDK llama a muchos proveedores de modelos mediante una única función al estilo de OpenAI; el proxy es un servidor que ejecutas tú y al que las aplicaciones llaman en el formato de OpenAI o de Anthropic, con claves, presupuestos, registros y alternativas de respaldo (fallbacks) delante de tus proveedores.

¿LiteLLM es gratuito?

Sí. El SDK y el proxy son de código abierto bajo la licencia MIT, salvo las funciones empresariales de la carpeta enterprise del repositorio, que tienen su propia licencia. Solo pagas a los proveedores a los que envías solicitudes.

¿Cómo uso una API compatible con OpenAI con LiteLLM?

Añade el prefijo openai/ al nombre del modelo y define api_base con la URL base del proveedor, incluyendo /v1; por ejemplo, model: openai/deepseek-v4.1-flash con api_base: https://api.zurelay.com/v1. La clave va en api_key, o como os.environ/NAME en el config.yaml del proxy.

¿Por qué LiteLLM llama a /v1/responses?

Para los modelos de openai/, LiteLLM envía las solicitudes de Anthropic Messages (por ejemplo, desde Claude Code) y las solicitudes de Responses API a la Responses API del proveedor. Los proveedores que solo ofrecen Chat Completions responden con un 404. Configura use_chat_completions_url_for_anthropic_messages: true en litellm_settings y use_chat_completions_api: true en el modelo.

¿Cómo uso Claude Code con LiteLLM?

Ejecuta el proxy de LiteLLM con los modelos de config.yaml, luego establece ANTHROPIC_BASE_URL en http://localhost:4000, ANTHROPIC_AUTH_TOKEN con la master key del proxy, y ANTHROPIC_MODEL junto con las tres variables ANTHROPIC_DEFAULT_*_MODEL con nombres de modelos de la configuración, y ejecuta claude.

¿Por qué el costo de LiteLLM es incorrecto?

LiteLLM calcula el precio de las solicitudes con su propia lista: el precio de lista del laboratorio para los modelos que conoce, y nada para los que no conoce. Añade input_cost_per_token, output_cost_per_token y cache_read_input_token_cost dentro de model_info para cada modelo y así registrar lo que realmente cobra tu proveedor.

¿Qué puerto usa el proxy de LiteLLM?

El puerto 4000, en todas las interfaces de red (0.0.0.0) a menos que pases --host. Cambia el puerto con --port o con la variable de entorno PORT.

Más guías

Deja de pagar el precio de lista.
Empieza a ahorrar hoy.

Crea una clave en segundos, apunta a Zurelay el SDK que ya usas y cada solicitud cuesta hasta un 90% menos desde el primer token.