À propos du projet

Ce dépôt fournit une passerelle FastAPI neutre vis-à-vis des fournisseurs, conçue pour faire abstraction des dépendances directes envers des fournisseurs de LLM spécifiques comme Gemini ou OpenAI. Au lieu de coder en dur des noms de modèles tels que 'gemini-3.5-flash' ou 'gpt-5.6-terra', les applications demandent des capacités via des alias stables comme 'fast', 'reasoning', 'cheap' ou 'embedding'. La passerelle gère la sélection du fournisseur, la logique de tentative avec backoff exponentiel et jitter, le routage de repli, l'application des délais d'expiration, la normalisation des erreurs, le suivi de l'utilisation des jetons, l'estimation des coûts et le stockage persistant des événements d'utilisation dans SQLite. Les fonctionnalités clés incluent : - Routage basé sur des alias de modèles avec chaînes de repli ordonnées - Adaptateurs de fournisseurs pour Gemini et OpenAI - Sortie JSON structurée utilisant des contraintes JSON Schema - Embeddings de texte avec métadonnées normalisées - Propagation de l'ID de requête et en-têtes de latence - Catalogue de prix configurable pour l'estimation des coûts - Point de terminaison d'analyse d'utilisation avec ventilation par fournisseur/modèle - Tests asynchrones, support Docker et CI/CD GitHub Actions - Contrôles de sécurité incluant l'authentification par clé API en production L'architecture impose une séparation nette entre la logique applicative et la complexité des fournisseurs de LLM. Elle comprend un middleware pour le contexte de requête, des réponses Pydantic typées et une journalisation détaillée. Les tentatives échouées sont conservées aux côtés des tentatives réussies pour maintenir la transparence opérationnelle. Le système est extensible mais évite intentionnellement les fonctionnalités avancées comme l'authentification JWT, le streaming ou la limitation du débit distribuée pour se concentrer sur l'abstraction et la fiabilité de base. L'installation implique le clonage du dépôt, la création d'un environnement virtuel, l'installation des dépendances, la configuration du fichier .env avec les clés API et l'exécution via uvicorn ou Docker. La documentation Swagger est disponible sur /docs. Le projet utilise Ruff, pytest, CodeQL et Dependabot pour la qualité du code et la sécurité. Un fichier NOTES.md détaillé explique les décisions de conception et les objectifs d'apprentissage pour les projets d'ingénierie IA.