Sobre el proyecto

Este repositorio proporciona una pasarela FastAPI neutral respecto al proveedor, diseñada para abstraer las dependencias directas de proveedores de LLM específicos como Gemini u OpenAI. En lugar de codificar nombres de modelos como 'gemini-3.5-flash' o 'gpt-5.6-terra', las aplicaciones solicitan capacidades a través de alias estables como 'fast', 'reasoning', 'cheap' o 'embedding'. La pasarela gestiona la selección del proveedor, la lógica de reintentos con backoff exponencial y jitter, el enrutamiento de fallback, la aplicación de timeouts, la normalización de errores, el seguimiento del uso de tokens, la estimación de costos y el almacenamiento persistente de eventos de uso en SQLite. Las características clave incluyen: - Enrutamiento basado en alias de modelo con cadenas de fallback ordenadas - Adaptadores de proveedor para Gemini y OpenAI - Salida JSON estructurada utilizando restricciones de JSON Schema - Embeddings de texto con metadatos normalizados - Propagación de ID de solicitud y encabezados de latencia - Catálogo de precios configurable para la estimación de costos - Endpoint de analíticas de uso con desglose por proveedor/modelo - Pruebas asíncronas, soporte de Docker y CI/CD con GitHub Actions - Controles de seguridad que incluyen autenticación por clave de API en producción La arquitectura impone una separación clara entre la lógica de la aplicación y la complejidad del proveedor de LLM. Incluye middleware para el contexto de la solicitud, respuestas tipadas de Pydantic y registros detallados. Los intentos fallidos se persisten junto con los exitosos para mantener la transparencia operativa. El sistema es extensible, pero evita intencionalmente funciones avanzadas como autenticación JWT, streaming o limitación de tasa distribuida para centrarse en la abstracción central y la confiabilidad. La configuración implica clonar el repositorio, crear un entorno virtual, instalar las dependencias, configurar el archivo .env con las claves de API y ejecutar mediante uvicorn o Docker. La documentación de Swagger está disponible en /docs. El proyecto utiliza Ruff, pytest, CodeQL y Dependabot para la calidad del código y la seguridad. Un archivo NOTES.md detallado explica las decisiones de diseño y los objetivos de aprendizaje para proyectos de ingeniería de IA.