LiteLLM - Pasarela Unificada de Llamadas a la API de Modelos de Lenguaje Grandes
Resumen del Proyecto
LiteLLM es un SDK de Python de código abierto y un servidor proxy (pasarela LLM) que puede llamar a más de 100 API de modelos de lenguaje grandes en formato OpenAI, incluidos los principales proveedores como Bedrock, Azure, OpenAI, VertexAI, Cohere, Anthropic, Sagemaker, HuggingFace, Replicate, Groq, etc.
Dirección de GitHub: https://github.com/BerriAI/litellm
Funciones Principales
1. Formato de API Unificado
- Estandarización del Formato de Entrada: Convierte todas las entradas de los proveedores a un formato unificado.
- Consistencia del Formato de Salida: La respuesta de texto siempre está disponible en
['choices'][0]['message']['content']
.
- Soporte de Múltiples Endpoints: Soporta endpoints de completion, embedding e image_generation.
2. Garantía de Alta Disponibilidad
- Lógica de Reintento/Respaldo: Soporta reintentos y respaldos automáticos entre múltiples implementaciones (como Azure/OpenAI).
- Funcionalidad de Enrutamiento: Enrutamiento inteligente al mejor modelo disponible.
- Balanceo de Carga: Distribuye la carga de solicitudes entre múltiples implementaciones.
3. Control de Costos y Permisos
- Gestión de Presupuesto: Establece límites de presupuesto por proyecto, clave de API y modelo.
- Limitación de Tasa: Evita el uso excesivo de llamadas a la API.
- Seguimiento de Uso: Estadísticas detalladas de llamadas y análisis de costos.
Características Principales
Ejemplo de Uso del SDK de Python
Llamada Básica
from litellm import completion
import os
os.environ["OPENAI_API_KEY"] = "your-openai-key"
os.environ["ANTHROPIC_API_KEY"] = "your-anthropic-key"
messages = [{"content": "Hello, how are you?", "role": "user"}]
# OpenAI
response = completion(model="openai/gpt-4o", messages=messages)
# Anthropic
response = completion(model="anthropic/claude-3-sonnet-20240229", messages=messages)
Soporte de Llamadas Asíncronas
from litellm import acompletion
import asyncio
async def test_get_response():
user_message = "Hello, how are you?"
messages = [{"content": user_message, "role": "user"}]
response = await acompletion(model="openai/gpt-4o", messages=messages)
return response
response = asyncio.run(test_get_response())
Respuesta en Streaming
from litellm import completion
response = completion(model="openai/gpt-4o", messages=messages, stream=True)
for part in response:
print(part.choices[0].delta.content or "")
Funcionalidad del Servidor Proxy
Inicio Rápido
pip install 'litellm[proxy]'
litellm --model huggingface/bigcode/starcoder
# INFO: Proxy running on http://0.0.0.0:4000
Llamada del Cliente
import openai
client = openai.OpenAI(
api_key="anything",
base_url="http://0.0.0.0:4000"
)
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{
"role": "user",
"content": "this is a test request, write a short poem"
}]
)
Proveedores Soportados
LiteLLM soporta más de 30 proveedores principales de LLM, incluyendo:
Proveedores de Servicios en la Nube Principales
- OpenAI - Modelos de la serie GPT
- Azure - Servicio Azure OpenAI
- AWS - Bedrock y SageMaker
- Google - Vertex AI, PaLM, Gemini
- Anthropic - Modelos de la serie Claude
Plataformas de Código Abierto y Profesionales
- HuggingFace - Alojamiento de modelos de código abierto
- Replicate - Servicio de API de modelos
- Together AI - Inferencia de modelos de código abierto
- Groq - Chip de inferencia de alta velocidad
- Ollama - Ejecución de modelos locales
Plataformas de Funciones Especiales
- Cohere - NLP de nivel empresarial
- AI21 - Modelo Jurassic
- Perplexity - Generación aumentada por búsqueda
- DeepInfra - Inferencia de alto rendimiento
Observabilidad y Registro
LiteLLM tiene soporte incorporado para múltiples plataformas de monitoreo y registro:
import litellm
import os
os.environ["LUNARY_PUBLIC_KEY"] = "your-lunary-public-key"
os.environ["HELICONE_API_KEY"] = "your-helicone-auth-key"
os.environ["LANGFUSE_PUBLIC_KEY"] = "your-langfuse-public-key"
litellm.success_callback = [
"lunary", "mlflow", "langfuse",
"athina", "helicone"
]
response = completion(
model="openai/gpt-4o",
messages=[{"role": "user", "content": "Hi 👋"}]
)
Plataformas de monitoreo soportadas:
- Lunary - Monitoreo de aplicaciones LLM
- MLflow - Seguimiento de experimentos de aprendizaje automático
- Langfuse - Seguimiento de aplicaciones LLM
- Helicone - Monitoreo de llamadas a la API
- Athina - Evaluación de aplicaciones de IA
Funciones de Nivel Empresarial
Sistema de Gestión de Claves
curl 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data-raw '{
"models": ["gpt-3.5-turbo", "gpt-4", "claude-2"],
"duration": "20m",
"metadata": {
"user": "user@company.com",
"team": "core-infra"
}
}'
Implementación con Docker
git clone https://github.com/BerriAI/litellm
cd litellm
echo 'LITELLM_MASTER_KEY="sk-1234"' > .env
echo 'LITELLM_SALT_KEY="your-salt-key"' > .env
docker-compose up
Interfaz de Administración Web
- Acceda a
/ui
para obtener una interfaz de administración visual
- Establezca presupuestos y límites de tasa para múltiples proyectos
- Monitoree el uso de la API en tiempo real
- Gestión de usuarios y equipos
Especificaciones Técnicas
Requisitos del Sistema
- Versión de Python: Requiere Python 3.7+
- Requisitos de Dependencia:
openai>=1.0.0
(v1.0.0+ requerido)
pydantic>=2.0.0
(v1.40.14+ requerido)
Estándares de Calidad del Código
- Estilo de Código: Siga la guía de estilo de Google Python
- Herramientas de Formateo: Use Black e isort
- Verificación de Tipos: MyPy y Pyright
- Revisión de Código: Ruff para la revisión de lint
Garantía de Estabilidad
- Versión Estable: Use imágenes de Docker con la etiqueta
-stable
- Pruebas de Carga: Realice pruebas de carga de 12 horas antes del lanzamiento
- Integración Continua: Proceso completo de CI/CD
Soporte Comercial
Características de la Edición Empresarial
- Funciones de Seguridad Avanzadas: Integración de inicio de sesión único (SSO)
- Soporte Profesional: Soporte dedicado en Discord y Slack
- Integración Personalizada: Integración personalizada de proveedores de LLM
- Garantía de SLA: Acuerdo de nivel de servicio
- Prioridad de Funciones: Desarrollo prioritario de funciones solicitadas por la empresa
Soporte de la Comunidad
- GitHub Issues: Solicitudes de funciones e informes de problemas
- Comunidad de Discord: Comunicación y soporte en tiempo real
- Documentación Completa: Documentación y tutoriales detallados de la API
Casos de Uso
1. Implementación de LLM Multi-Nube
- Evite el bloqueo del proveedor
- Implemente llamadas a modelos multiplataforma
- Reduzca los costos de migración
2. Optimización de Costos
- Enrutamiento inteligente al modelo disponible más barato
- Control de presupuesto y monitoreo de uso
- Optimización de llamadas API por lotes
3. Arquitectura de Alta Disponibilidad
- Conmutación por error automática
- Balanceo de carga
- Soporte de implementación en múltiples regiones
4. Mejora de la Eficiencia del Desarrollo
- Interfaz de API unificada
- Cambio de modelo simplificado
- Amplio soporte de SDK
Instalación y Comienzo Rápido
Instalación Básica
pip install litellm
Instalación del Servidor Proxy
pip install 'litellm[proxy]'
Configuración del Entorno de Desarrollo
git clone https://github.com/BerriAI/litellm
cd litellm
python -m venv .venv
source .venv/bin/activate
pip install -e ".[all]"
uvicorn litellm.proxy.proxy_server:app --host localhost --port 4000 --reload
Resumen
LiteLLM ha sido adoptado por empresas de renombre como Rocket Money, Samsara, Lemonade y Adobe. Al proporcionar una interfaz de API unificada, potentes funciones de enrutamiento y características de gestión de nivel empresarial, simplifica significativamente la complejidad de la gestión de entornos multi-LLM, lo que lo convierte en una opción ideal para el desarrollo de aplicaciones de IA modernas.