AI Gateway pour Symfony
Une passerelle unique entre vos applications et les fournisseurs d’IA : clés, coûts, journal et choix des modèles au même endroit.
- Type
- Bundle Symfony open source, licence MIT
- Code
- github.com/symfony-ai-gateway
- Serveur
- PHP 8.3+, Symfony 7.4 ou 8, Doctrine, SQLite par défaut
- Déploiement
- Image Docker FrankenPHP, ou bundle Composer
- Compatible
- API OpenAI et Anthropic, flux en streaming
- Mon rôle
- Conception et code

Le problème
Dès qu’une entreprise utilise l’IA dans plusieurs applications, les mêmes questions reviennent : les clés des fournisseurs circulent d’un projet à l’autre, personne ne sait qui consomme quoi, et changer de modèle oblige à modifier chaque application. Cette passerelle règle ces questions une fois, comme une brique d’infrastructure.
Ce qu’elle fait, et seulement ça
Les applications appellent la passerelle comme elles appelleraient OpenAI ou Anthropic : il suffit de changer l’adresse. La passerelle fait trois choses, et laisse passer tout le reste sans le modifier.
- Elle authentifie chaque appel avec une clé propre à l’application ou à l’équipe.
- Elle journalise chaque requête : modèle, jetons, durée et coût.
- Elle centralise le choix des modèles : les applications demandent un alias, par exemple « deepseek », et la passerelle le traduit en vrai modèle avec la vraie clé du fournisseur.
Ce que la passerelle ajoute
- Des budgets et des limites par clé et par équipe.
- Des chaînes de modèles : un modèle de secours si le premier échoue, ou une répartition pondérée entre plusieurs modèles.
- Un tableau de bord pour gérer les fournisseurs, les alias, les clés, les équipes, et relire les requêtes.
- Le streaming, transmis tel quel.
Elle ne fait volontairement rien d’autre : pas de traduction entre formats, pas de cache, pas de SDK à installer. Une requête au format OpenAI part au format OpenAI, une requête au format Anthropic part au format Anthropic. Seuls le nom du modèle et la clé changent.
Deux façons de l’utiliser
- En service autonome : une image Docker que toutes les applications de l’entreprise appellent, quel que soit leur langage. C’est le choix recommandé pour une infrastructure partagée.
- En bundle Symfony : installée dans une application existante, elle partage sa base de données et peut reconnaître ses utilisateurs au lieu de gérer ses propres clés.
La stack
PHP 8.3 ou plus, Symfony 7.4 ou 8, Doctrine ORM et DBAL, SQLite par défaut, Twig pour le tableau de bord, PHPUnit pour les tests, et une image Docker FrankenPHP. Le code est publié sous licence MIT.