LiteLLM: Unificando la galaxia de los LLM para un desarrollo sin fisuras

Descripción del Proyecto

LiteLLM es un SDK de Python y servidor proxy (puerta de enlace LLM) diseñado para simplificar las interacciones con más de 100 APIs de Grandes Modelos de Lenguaje (LLM). Unifica varios proveedores de LLM (por ejemplo, Bedrock, Azure, OpenAI, VertexAI, Cohere, Anthropic, Sagemaker, HuggingFace, Replicate, Groq) bajo un formato consistente similar al de OpenAI.

LiteLLM busca manejar complejidades como: - Traducir las entradas a los endpoints específicos del proveedor para completación, embedding y generación de imágenes. - Asegurar formatos de salida consistentes en diferentes LLMs. - Implementar lógica de reintentos y fallback en múltiples despliegues (por ejemplo, Azure/OpenAI) usando su función Router. - Permitir la aplicación de límites de presupuesto y rate limits por proyecto, clave de API y modelo a través del LiteLLM Proxy Server.

Instrucciones de Uso

Para usar LiteLLM, puedes instalarlo a través de pip:

pip install litellm

Completación Básica de Chat

from litellm import completion
import os

# Establece las variables de entorno para las claves de API
os.environ["OPENAI_API_KEY"] = "tu-clave-openai"
os.environ["ANTHROPIC_API_KEY"] = "tu-clave-anthropic"

messages = [{ "content": "¿Hola, cómo estás?","role": "user"}]

# Llamada a OpenAI
response = completion(model="openai/gpt-4o", messages=messages)

# Llamada a Anthropic
response = completion(model="anthropic/claude-3-sonnet-20240229", messages=messages)
print(response)

Llamadas Asíncronas

from litellm import acompletion
import asyncio

async def test_get_response():
    user_message = "¿Hola, cómo estás?"
    messages = [{"content": user_message, "role": "user"}]
    response = await acompletion(model="openai/gpt-4o", messages=messages)
    return response

response = asyncio.run(test_get_response())
print(response)

Respuestas 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 "")

Registro y Observabilidad

LiteLLM soporta varias herramientas de registro y observabilidad (Lunary, MLflow, Langfuse, DynamoDB, S3, Helicone, Promptlayer, Traceloop, Athina, Slack) a través de callbacks.

from litellm import completion
import os
import litellm

# Establece las variables de entorno para las herramientas de registro y las claves de API
os.environ["LUNARY_PUBLIC_KEY"] = "tu-clave-publica-lunary"
os.environ["HELICONE_API_KEY"] = "tu-clave-auth-helicone"
os.environ["LANGFUSE_PUBLIC_KEY"] = "" # Usa las claves reales
os.environ["LANGFUSE_SECRET_KEY"] = "" # Usa las claves reales
os.environ["ATHINA_API_KEY"] = "tu-clave-api-athina"
os.environ["OPENAI_API_KEY"] = "tu-clave-openai"

# Establece los callbacks
litellm.success_callback = ["lunary", "mlflow", "langfuse", "athina", "helicone"]

response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hola 👋 - soy openai"}])

Servidor Proxy de LiteLLM

Para ejecutar el servidor proxy de LiteLLM:

  1. Instala con las dependencias del proxy:
    pip install 'litellm[proxy]'
    
  2. Inicia el proxy:
    litellm --model huggingface/bigcode/starcoder
    # INFO: Proxy ejecutándose en http://0.0.0.0:4000
    
  3. Realiza peticiones al proxy usando un SDK de OpenAI:
    import openai # openai v1.0.0+
    client = openai.OpenAI(api_key="cualquier-cosa",base_url="http://0.0.0.0:4000") # establece el proxy como base_url
    response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [
        {
            "role": "user",
            "content": "esto es una petición de prueba, escribe un poema corto"
        }
    ])
    print(response)
    

Características Clave

  • Interfaz de API Unificada: Conecta a más de 100 LLMs usando un único formato de API similar al de OpenAI.
  • Soporte de Proveedores: Soporta los principales proveedores de LLM, incluyendo Bedrock, Azure, OpenAI, VertexAI, Cohere, Anthropic, Sagemaker, HuggingFace, Replicate, Groq y muchos más.
  • Salida Consistente: Todas las respuestas de texto están consistentemente disponibles en ['choices'][0]['message']['content'].
  • Router (Lógica de Reintento/Fallback): Maneja automáticamente los mecanismos de reintento y fallback en múltiples despliegues de LLM.
  • Soporte de Streaming: Soporta respuestas en streaming para todos los modelos integrados.
  • Operaciones Asíncronas: Proporciona llamadas a la API asíncronas para un rendimiento mejorado.
  • Observabilidad: Se integra con varias herramientas de registro y observabilidad (por ejemplo, Lunary, MLflow, Langfuse, Helicone) a través de callbacks.
  • Servidor Proxy de LiteLLM (Puerta de Enlace LLM):
    • Seguimiento de Costos: Monitorea el gasto en diferentes proyectos.
    • Balanceo de Carga: Distribuye las solicitudes entre múltiples despliegues de LLM.
    • Límites de Tarifa (Rate Limiting): Aplica límites de tarifa por proyecto, clave de API y modelo.
    • Gestión de Claves: Se conecta con una base de datos PostgreSQL para crear y gestionar claves de proxy con control granular sobre modelos, duraciones y metadatos.
    • Interfaz Web (Web UI): Ofrece una interfaz de usuario (/ui) para gestionar el servidor proxy, incluyendo la configuración de presupuestos y límites de tarifa.
  • Características Empresariales: Ofrece seguridad mejorada, gestión de usuarios y soporte profesional para usuarios comerciales, incluyendo integraciones personalizadas y SLAs.

Audiencia Objetivo

  • Desarrolladores e Ingenieros: Buscando una interfaz unificada para interactuar con varios proveedores de LLM, simplificando el código y la gestión.
  • Equipos de IA/ML: Buscando soluciones para gestionar el acceso a LLM, monitorear el uso, controlar los costos e implementar estrategias robustas de reintento/fallback.
  • Organizaciones que construyen aplicaciones basadas en LLM: Requerir características como límites de tarifa, gestión de presupuesto y observabilidad para su infraestructura de IA.
  • Investigadores: Que necesitan experimentar con múltiples modelos y proveedores de LLM de manera eficiente.

Enlaces del Proyecto

Casos de Uso

  • Construcción de Aplicaciones Multi-LLM: Alterna fácilmente entre diferentes LLMs o combínalos (por ejemplo, GPT-4 para escritura creativa, Claude para resumen) sin cambiar la lógica central de la aplicación.
  • Optimización de Costos y Presupuesto: Implementa cuotas fijas y presupuestos flexibles por usuario, proyecto o clave de API usando el proxy, evitando gastos inesperados.
  • Garantizar Alta Disponibilidad y Fiabilidad: Utiliza el Router para un fallback automático a un proveedor o despliegue de LLM alternativo si uno falla o alcanza los límites de tarifa.
  • Pruebas A/B de Modelos LLM: Dirige sin problemas el tráfico a diferentes modelos para comparar rendimiento y costo en producción.
  • Puerta de Enlace LLM Centralizada: Establece un único punto de entrada para todas las llamadas a LLM dentro de una organización, simplificando la seguridad, el registro y el control de acceso.
  • Monitoreo y Observabilidad: Obtén información sobre el uso, el rendimiento y los costos de LLM al integrar con varias herramientas de observabilidad.
  • Desarrollo de Agentes LLM/Orquestación: Proporciona un backend robusto y flexible para agentes que necesitan interactuar con diversas capacidades de LLM (chat, embeddings, generación de imágenes).

Compartir este artículo