SiCore TokenWorks
LLM APIAPI GatewayAggregation

Rétrospective d'un ingénieur en transition silicium-carbone : de l'intégration d'un modèle unique à celle de multiples modèles, qu'a réellement résolu la passerelle de modèles ?

SiCore TokenWorks Team·2026-10-05

Au second semestre de l'année dernière, nous avons conseillé une équipe qui développe un SaaS de logistique transfrontalière. Leur fonctionnalité d'IA n'appelait initialement que GPT-4o, et elle fonctionnait plutôt bien. Puis les équipes métier ont demandé d'ajouter des modèles nationaux : DeepSeek pour la revue de contrats, Qwen pour les scripts de service client, et ERNIE pour les textes marketing. Trois semaines plus tard, leur code backend s'était encombré de 4 SDK, la logique d'authentification était éparpillée dans 7 fichiers, les factures ne correspondaient plus, et le streaming sortait tantôt correctement, tantôt avec des caractères corrompus côté frontend. Le problème ne venait pas des modèles eux-mêmes, mais de l'absence d'une couche de passerelle de modèles.

Les pièges de l'intégration multi-modèles se concentrent presque tous au même endroit

Commençons par les conflits de SDK. Le SDK Python d'OpenAI et ceux de plusieurs fournisseurs nationaux s'appellent tous « client », les versions de dépendances se télescopent, et les clients HTTP de Qwen et d'ERNIE ne gèrent même pas les paramètres de timeout de la même manière. La solution finale de leurs ingénieurs a été de créer un environnement virtuel distinct par modèle, avec des appels isolés via subprocess. Ça tourne, mais le coût opérationnel est déraisonnablement élevé.

Parlons ensuite de la gestion des clés. Les consoles des quatre fournisseurs ont chacune leur propre système de clés : certains par projet, d'autres par application, d'autres encore avec des sous-comptes. Les clés de test et de production étaient mélangées. Un jour, un stagiaire a poussé une clé de production sur un dépôt GitHub public. Bien qu'elle ait été révoquée en dix minutes, toute l'équipe a passé l'après-midi à éplucher les journaux d'appels.

La facturation est encore plus pénible. DeepSeek facture au token, certains modèles Qwen facturent séparément l'entrée et la sortie, et certaines versions d'ERNIE conservent une logique héritée de facturation au nombre de caractères. En fin de mois, la finance voulait une facture consolidée, et les ingénieurs devaient exporter manuellement quatre CSV puis faire le mapping. Les formats de streaming ne sont pas non plus unifiés : certains renvoient un champ data en SSE, d'autres emballent le tout dans du JSON, et le code de parsing frontend n'est qu'une succession de if else.

Ce que fait réellement la passerelle de modèles au milieu

La passerelle de modèles est essentiellement une couche de proxy inverse doublée d'une couche d'adaptation de protocole : elle expose une interface unifiée compatible OpenAI vers l'extérieur, et traduit les requêtes vers le format compris par chaque fournisseur vers l'intérieur. Nous avons ensuite refactoré cette chaîne dans un autre projet en utilisant la capacité d'agrégation d'API IA de SiCore TokenWorks, et le ressenti a été assez direct.

L'authentification unifiée est la première étape. Le côté métier ne détient qu'une seule clé ; la passerelle maintient en interne la correspondance des identifiants vers chaque fournisseur. La rotation des clés, les limites de quota et les listes blanches d'IP se font toutes au niveau de la passerelle. La traduction de protocole est la deuxième étape : convertir le tableau messages au format OpenAI en input de Qwen, en prompt d'ERNIE, puis retraduire les réponses en une structure choices unifiée. Le format des chunks en streaming est également lissé à ce niveau, le frontend n'écrit plus qu'une seule logique de parsing.

Le routage détermine vers quel modèle part la requête. On peut faire du routage statique par type de tâche, ou de la sélection dynamique par coût. Lors de nos tests du routage multi-modèles de token8341, nous avons routé fixement les requêtes de revue de contrats vers DeepSeek-V3, et les requêtes de service client à texte court vers la version légère de Qwen. Le coût global des appels a baissé d'environ 60 % par rapport à un passage intégral par GPT-4o. L'imputation des coûts est la dernière étape : la passerelle marque les points selon les étiquettes métier, et sort directement en fin de mois une facture répartie. La finance n'a plus à recoller les tableaux manuellement.

Quelques conseils pratiques pour la mise en production

Premièrement, n'appelez pas directement les SDK des fournisseurs dans le code métier, même si vous n'intégrez qu'un seul modèle. Gardez une fine couche d'encapsulation : l'écart de charge de travail lors de l'ajout d'un modèle ultérieur sera d'un ordre de grandeur. Deuxièmement, les clés doivent passer par une passerelle ou un service de gestion de secrets ; le codage en dur dans un fichier de configuration finira par poser problème. Troisièmement, commencez par une stratégie de routage statique, attendez deux semaines d'exécution avec de vraies données d'appel avant d'envisager un routage dynamique par coût, sinon vous risquez, pour économiser quelques centimes, de router des requêtes critiques vers un modèle inadapté.

Pour le choix, regardez deux points : la compatibilité avec le SDK OpenAI, qui signifie un coût de migration quasi nul — changer une ligne de base_url suffit à basculer ; et la prise en charge de la facturation à l'usage et de l'imputation des coûts, un incontournable pour les entreprises où plusieurs lignes métier partagent une même capacité d'IA. L'approche de SiCore TokenWorks sur ce point est une couverture complète des API de grands modèles nationaux, avec facturation à l'usage ; dans notre projet, la facturation s'est révélée assez claire en comparaison.

En une phrase : la passerelle de modèles n'est pas indispensable, mais quand vous en êtes à intégrer un troisième modèle, elle passe d'optionnelle à nécessaire. Pour aller plus loin, vous pouvez consulter la documentation de spécification des interfaces compatibles OpenAI, comprendre comment la couche de protocole est conçue, afin d'éviter des détours lorsque vous écrirez votre propre encapsulation.