- Biblioteca de Python creada por el equipo de Mozilla AI que permite usar más de 20 proveedores de LLM con una sola función
- Al cambiar entre modelos de OpenAI, Anthropic, Google, Mistral, AWS Bedrock y otros, basta con cambiar
provider_id/model_id
- Prioriza el uso de los SDK oficiales de los proveedores para minimizar los problemas de compatibilidad, y no requiere instalar por separado un servidor proxy/gateway, por lo que se puede usar de inmediato tras instalar con pip
- Pensada para desarrolladores, con sugerencias de tipos completas en el IDE, manejo intuitivo de excepciones, excepciones personalizadas, documentación y una guía rápida
- Con un router liviano, es independiente del framework y no requiere un servidor proxy/gateway adicional (se puede usar de inmediato con solo una API Key)
- Resuelve problemas de soluciones existentes y cuenta con mantenimiento activo: ya se usa en productos reales como any-agent de Mozilla
- LiteLLM: implementación propia en lugar de usar el SDK oficial → puede haber preocupaciones de compatibilidad/errores
- AISuite: estructura modular, pero con deficiencias en administración y tipado
- Dependientes de frameworks: vuelven a fragmentarse según cada proyecto
- Solo proxy: requieren un servidor aparte, lo que aumenta la complejidad
Documentación relacionada
3 comentarios
Supongo que habría que administrar una clave para cada proveedor de LLM.
Comentarios de Hacker News
No he experimentado grandes problemas de compatibilidad con las APIs de texto, y entiendo que para estandarizar distintas APIs hay que implementar una interfaz propia
Este proceso es necesario si quieres construir un router específico
Lo probé de forma experimental como librería, pero al final me cambié a llm de Simon. Mi agradecimiento para Simon
Las diferencias se notan más en casos límite como el comportamiento de streaming, el manejo de timeouts o la incorporación de funciones nuevas
Nosotros también rehacemos interfaces para normalizar APIs, y usar o no un SDK es solo una diferencia de dónde separas las capas
Adoptar un SDK suele ser más una preferencia de mantenimiento que un defecto fundamental del enfoque de LiteLLM
El SDK de Together llegó a incluir una dependencia de 60 MB llamada Apache Arrow, y tuvimos que parchearla para volverla opcional
Si fuerzan una versión fija de una dependencia, puede entrar en conflicto con mi proyecto
Me parece mejor usar solo OpenAPI/REST que una librería que arrastra demasiadas dependencias
Usar el SDK oficial tampoco resuelve automáticamente todos los problemas de compatibilidad, y any_llm al final también necesita trabajo directo para mantener la compatibilidad con los SDK oficiales
Es difícil decir claramente que un enfoque sea superior al otro
Desde la perspectiva del usuario, no hay una diferencia práctica de uso entre que el proxy use o no el SDK oficial
Puede haber ventajas para quien desarrolla el proxy
Por ejemplo, hace poco LiteLLM tuvo un problema con el manejo de Deepseek Reasoning, y la parte de reasoning llegó a omitirse tanto en respuestas síncronas como en streaming
En mi experiencia, LiteLLM en realidad funciona de forma muy sólida
Los proveedores suelen avisar con anticipación cuando habrá cambios en la API, y LiteLLM nunca me ha causado problemas por eso
Los supuestos defectos negativos relacionados con LLM solo aparecen en este artículo
También hablaron de OpenRouter y Portkey como soluciones de proxy/gateway, pero en realidad OpenRouter no requiere que el usuario levante su propio servidor: solo haces llamadas API directamente al endpoint
En este artículo entendieron mal OpenRouter como si fuera un proxy autohospedado
Y AISuite es un producto creado por Andrew NG, pero el blog decía que “no tiene mantenimiento desde diciembre de 2024”; en realidad solo no tiene tags de release, y en proyectos comunitarios pequeños a veces ni siquiera se acostumbra etiquetar releases
Me pareció problemático publicar eso en un blog sin verificar los hechos
Si no llevara la marca Mozilla, habría pensado que era una estafa o malware
Además, el nombre se parece demasiado a Anything-LLM, así que también resulta confuso
He usado LiteLLM hasta ahora, pero al ver su implementación interna parecía muy complejo y lleno de problemas
Por ejemplo, durante los últimos meses el Structured Output del apartado de Ollama estuvo completamente roto, y la documentación tampoco estaba nada organizada
Supongo que eligieron Python porque la mayoría de los SDK están basados en Python
Aun así, creo que habría sido realmente innovador si hubiera tenido una forma portable a varios lenguajes sin intérprete
Para construir una solución verdaderamente universal, habría que separar por completo el runtime del modelo y el lenguaje, lo cual es un problema mucho más difícil, pero un gran avance
El punto fuerte del proyecto de Mozilla (incluido LiteLLM) es que ya soporta varias interfaces, así que puedes usar múltiples modelos de inmediato
Es posible conectarse directamente con varios proveedores de LLM sin un servidor proxy/gateway aparte. No conozco lo suficiente LiteLLM como para compararlos bien
Empecé a desarrollarlo porque lo necesitaba en mi trabajo de investigación
Tomé ideas de proyectos existentes y lo hice para un uso más general
https://github.com/proxai/proxai
https://proxai.co/
Yo también lancé hace poco una capa de abstracción de LLM similar
Se puede usar fácilmente con
pip install, y está enfocada en la compatibilidad con Langchain para que sea sencillo reemplazar sistemas existentesAdemás, permite failover automático mediante proveedores virtuales cuando se excede automáticamente el rate limit
pipo con versiones de PythonLas funciones de Usage/Logs ayudan a visualizar el uso real de LLM, y la función de cache también sirve mucho para reducir costos en pruebas repetidas
Gracias por el buen artículo. Justo hoy estaba haciendo la refactorización número 27, de hecho.
Empecé en C++, luego pasé a JavaScript y ahora otra vez en Rust...