Un seul model=auto, et c’est la passerelle qui décide « quel modèle utiliser ».
Le routage automatique (LLM Router) sélectionne en temps réel, selon le contenu de la requête, le modèle le plus adapté parmi les centaines de modèles de la plateforme. Il vous suffit de renseigner auto comme model — pas besoin de choisir un modèle, ni de comparer les prix, ni de suivre les évolutions des modèles.
La facturation se fait selon le modèle réellement utilisé, sans surcoût, et sans aucune modification du code client. Le modèle effectivement appelé est inscrit dans les en-têtes et le corps de la réponse (voir Comment confirmer le modèle réellement utilisé) : c’est entièrement traçable.
Cas d’usage
- Répartition automatique selon le contexte : attribue automatiquement le modèle le plus adapté selon le contexte actuel de l’utilisateur — particulièrement utile pour les agents / applications qui appellent les modèles de nombreuses fois et ne peuvent pas figer à l’avance le choix du modèle à chaque étape.
- Optimisation des coûts : laissez les tâches simples basculer automatiquement vers des modèles moins chers et plus rapides (
autoprivilégie le coût par défaut). - Optimisation de la qualité : assurez-vous que les requêtes complexes sont routées vers des modèles plus puissants (
auto:quality_first). - Scénarios à faible latence : les boucles d’agent multi-tours, le chat interactif en temps réel et autres scénarios sensibles à la latence privilégient le modèle qui répond le plus vite (
auto:latency_critical). - Point d’entrée unique, sans choix de modèle : les différents types de requêtes sont automatiquement répartis vers leur modèle optimal — plus besoin de maintenir une table de correspondance « tâche → modèle », ni de suivre en continu les évolutions des modèles ou de comparer manuellement les prix et de changer de nom.
Démarrage rapide
Réglezmodel sur auto ; le reste du corps de la requête est identique à un appel normal. L’URL de base est https://aihubmix.com/v1.
Comment confirmer le modèle réellement utilisé
C’est l’ancre de confiance du routage automatique : vous savez toujours quel modèle a finalement servi cette requête. Méthode 1 · Console AIHubMix « Journaux » : sur console.aihubmix.com/logs, chaque requête affiche directement le vrai nom du modèle réellement atteint et facturé — sans code, vérifiable à l’œil nu. Méthode 2 · Champs de la réponse (pratique pour une lecture programmatique) :- Le champ
modeldu corps de la réponse est renseigné avec le vrai modèle utilisé (par exemplemimo-v2.5-pro), et nonauto. - Les en-têtes de la réponse fournissent l’information complète sur la décision :
| En-tête de réponse | Signification | Exemple de valeur |
|---|---|---|
X-Aihubmix-Router-Resolved-Model | Le modèle réellement utilisé, sur lequel se base la facturation | xiaomi-mimo-v2.5-pro |
X-Aihubmix-Router-Policy | La stratégie utilisée pour cette requête | cost_optimized |
X-Aihubmix-Router-Dimension | La dimension de tâche identifiée | text.overall |
X-Aihubmix-Router-Decision-Id | L’identifiant unique de cette décision, utile pour le diagnostic | 05dbad09-33c5-42de-… |
X-Aihubmix-Router-Reason | Brève explication de la décision (stratégie / dimension / meilleur score / nombre de candidats) | policy=cost_optimized dim=text.overall top=0.182 survivors=20/33 |
X-Aihubmix-Router-Fallback | Apparaît uniquement lorsque la solution de repli « aucun candidat » est déclenchée | true |
Les en-têtes HTTP sont insensibles à la casse : le tableau ci-dessus utilise par convention une majuscule en début de mot, mais le retour réel en HTTP/2 est en minuscules x-aihubmix-router-* ; les deux sont équivalents.
Lire la décision de routage (curl pour voir les en-têtes ; avec un SDK, récupérez l’en-tête via l’objet de réponse brut) :
reason : survivors=20/33 signifie que sur 33 candidats, 20 ont passé le filtrage strict et sont entrés dans la phase de scoring ; top=0.182 est le score global normalisé du modèle gagnant au sein du pool de candidats (capacité / coût / latence pondérés selon la stratégie).
Le
Resolved-Model de l’exemple dépend des candidats et des prix actuels du catalogue en ligne et varie au gré des mises en ligne et retraits de modèles de la plateforme — c’est précisément là toute la valeur du routage automatique : vous n’avez pas à suivre ces changements. Pour que la décision soit auditable, fiez-vous au vrai nom de modèle dans les en-têtes / le corps de la réponse, et ne supposez pas qu’il reste fixe.Stratégies de routage
Sans suffixe,auto utilise la stratégie par défaut cost_optimized. Vous pouvez utiliser auto:<stratégie> pour spécifier explicitement la priorité :
| Écriture de la stratégie | Priorité | Cas d’usage |
|---|---|---|
auto (= auto:cost_optimized) | Coût prioritaire : à capacité suffisante, choisit le moins cher | Tâches en lot, sensibilité au coût |
auto:balanced | Équilibré : capacité / coût / latence pris en compte | Usage général, choix sûr en cas d’incertitude |
auto:quality_first | Qualité prioritaire : privilégie le modèle le plus puissant | Raisonnement complexe, sorties critiques |
auto:latency_critical | Faible latence prioritaire : privilégie le plus rapide à répondre | Boucles d’agent, chat interactif en temps réel |
auto délimite d’abord la dimension de tâche selon le contenu de votre requête, puis choisit en temps réel le meilleur modèle dans le pool de candidats de centaines de modèles sur la plateforme selon la stratégie choisie — une même stratégie atteint donc des modèles différents selon le contenu. Les modèles actuellement dans le pool et leurs scores par dimension peuvent être consultés via l’endpoint Périmètre de modèles de la stratégie LLM Router. Le tableau « même requête, stratégies différentes → résultats différents » ci-dessous illustre exactement cela ; quel modèle l’emporte à chaque fois est déterminé par le vrai nom de modèle dans les en-têtes de réponse / les journaux de console.
Pour spécifier une stratégie, il suffit d’ajouter le suffixe au model :
What is the meaning of life?, toutes tombant dans la dimension text.overall) :
| Stratégie | Modèle utilisé | Score top |
|---|---|---|
auto (= cost_optimized) | xiaomi-mimo-v2.5-pro | 0.182 |
auto:balanced | claude-opus-4-6-think | 0.488 |
auto:latency_critical | claude-opus-4-6 | 0.646 |
auto:quality_first | claude-opus-4-6-think | 0.758 |
latency_criticala choisi la version non-think— la variante « thinking » a une latence de raisonnement plus élevée, et la stratégie faible latence l’évite activement. On voit que les pondérations de stratégie agissent réellement sur l’arbitrage « capacité / coût / latence », et pas seulement sur la capacité.
Le contenu modifie aussi le résultat : si l’on applique le mêmeauto:quality_firstà une tâche de code (la requête de l’exemple ci-dessus), la dimension passe detext.overallàtext.codinget, en mesure réelle, c’estclaude-opus-4-6-thinkqui est utilisé — la stratégie et le contenu de la requête déterminent ensemble le modèle final.
Un suffixe de stratégie inconnu (comme
auto:fast) revient à la stratégie par défaut cost_optimized sans déclencher d’erreur.Fonctionnement
À la réception demodel=auto, la passerelle transforme « l’intention » en « modèle concret » en trois étapes :
Extraire les caractéristiques de la requête
Analyse les modalités d’entrée / sortie de cette requête (texte, image, fichier), l’intention du contenu (code, mathématiques, OCR, graphiques, langue, recherche en ligne ou non, etc.) et l’ampleur de la requête (estimation des tokens en entrée / sortie), puis normalise le tout en une dimension de tâche. Par exemple : une question contenant du code →
text.coding ; une image accompagnée d’une demande d’OCR → vision.ocr ; un texte ordinaire → text.overall.Filtrer les candidats (filtre strict)
Exclut directement les modèles qui ne respectent pas les contraintes strictes : ne prennent pas en charge les modalités d’entrée / sortie requises, fenêtre de contexte insuffisante, retirés par le coupe-circuit (voir Fiabilité et tolérance aux pannes), ou hors de la plage de modèles autorisés par votre clé.
Scorer avec pondération selon la stratégie
Pour les candidats ayant passé le filtre, on combine le score de capacité du modèle issu de benchmarks de référence reconnus dans l’industrie, les prix en temps réel et les données de performance, puis on applique un scoring tridimensionnel pondéré « capacité / coût / latence » selon la stratégie choisie, et on retient le score le plus élevé. Le nom du modèle final est réécrit dans la requête et les en-têtes de réponse.
quality_first, top 3 du même pool de candidats ; données d’exemple basées sur des journaux de décision de production historiques) :
| Modèle candidat | Score de capacité | Coût relatif | Latence | Score global |
|---|---|---|---|---|
claude-opus-4-6-think | 1504 | 220 | 1963ms | 0.758 |
claude-opus-4-6 | 1498 | 220 | 822ms | 0.721 |
claude-fable-5 | 1510 | 484 | 11130ms | 0.600 |
Remarquez que claude-fable-5 a le score de capacité le plus élevé (1510), mais qu’il est relégué à la troisième place sur le score global en raison d’un coût plus élevé et d’une latence plus grande. C’est tout l’intérêt du scoring pondéré : non pas un « tout-capacité », mais un arbitrage entre capacité / coût / latence selon la stratégie.
claude-fable-5 était un modèle de référence en préversion par étapes (staged preview baseline) et est désormais retiré (deprecated) et n’est plus proposé ; son score historique est conservé ici uniquement pour illustrer le mécanisme de notation pondérée — les requêtes réelles ne l’atteindront plus.auto, des contenus différents sont routés vers des dimensions différentes :
| Votre requête | Dimension identifiée |
|---|---|
| Question en texte ordinaire | text.overall |
| Contient du code, demande d’écrire / déboguer un programme | text.coding |
| Preuve / résolution mathématique | text.math |
| Question très longue (environ 500+ tokens) | text.longer_query |
| Question en chinois | text.language.chinese |
| Entrée image + « What is in this image? » | vision.overall |
| Entrée image + « OCR… » / « reconnaître le texte » | vision.ocr |
| Entrée image + graphique / organigramme | vision.diagram |
| Recherche en ligne activée | search.overall |
Génération d’images (/v1/images/generations) | text_to_image.overall |
Édition d’images (/v1/images/edits, image en entrée → image en sortie) | image_edit.single_image |
auto envoie chaque type de requête au modèle le plus fort sur cette compétence. Domaines courants, par exemple :
- Texte :
text.coding= écrire / déboguer du code,text.math= résolution mathématique,text.longer_query= texte long,text.language.chinese= chinois,text.occupational.legal/text.occupational.medicine= scénarios professionnels juridiques / médicaux. - Vision :
vision.ocr= reconnaître le texte dans les images,vision.diagram= comprendre les graphiques / organigrammes,vision.overall= compréhension générale d’images.
Les entrées image passent aussi par le routage automatique : lorsqu’une image est jointe dans
/v1/chat/completions, la requête est routée vers un modèle aux fortes capacités visuelles selon la tâche image. En mesure réelle de production — « OCR this image » → vision.ocr, modèle utilisé qwen3.5-397b-a17b ; analyse d’image générale « What is in this image? » → vision.overall, modèle utilisé gpt-5.4-mini. (Il s’agit ici de la compréhension d’image ; la génération d’image /v1/images/* prend également en charge auto, voir FAQ.)Classement des scores et pool de modèles
Le classement des scores des modèles par dimension et le pool de modèles actuel peuvent être consultés de manière interactive sur la page LLM Router, ou récupérés directement via les endpoints ouverts sans connexion : Périmètre de modèles de la stratégie LLM Router et Icônes des fournisseurs de modèles. Le classement affiche le même ensemble que les candidats au routage : seuls les modèles actuellement routables apparaissent, les scores sont normalisés de 0 à 100 au sein de chaque dimension, et le classement est mis à jour en continu avec le pool de modèles.Fiabilité et tolérance aux pannes
Le routage automatique intègre une tolérance aux pannes multicouche pour garantir que le cheminauto n’échoue jamais sans raison :
Coupe-circuit : retrait automatique des modèles défaillants
Coupe-circuit : retrait automatique des modèles défaillants
La passerelle maintient pour chaque modèle une statistique de taux d’échec sur une fenêtre glissante. Lorsqu’un modèle accumule suffisamment d’échecs dans la fenêtre et dépasse le seuil de taux d’échec, il est temporairement retiré du pool de candidats puis rétabli automatiquement après une période de refroidissement — afin d’éviter de continuer à envoyer les requêtes suivantes à un modèle qui dysfonctionne. Le signal d’échec provient des erreurs renvoyées par l’upstream pour cette requête ; le « aucun canal disponible » propre à la passerelle n’est pas comptabilisé (ce n’est pas un problème du modèle lui-même).
Repli sans candidat : jamais de 400 sur auto
Repli sans candidat : jamais de 400 sur auto
Si jamais le filtre strict exclut tous les candidats (par exemple si une certaine combinaison de modalités n’a temporairement aucun modèle disponible), la passerelle ne renvoie pas d’erreur, mais attribue un modèle de repli selon le type de sortie afin de garantir une réponse, et ajoute l’en-tête
X-Aihubmix-Router-Fallback: true pour vous en informer.Garde-fou contre le dépassement de droits : une clé restreinte n'est pas contournée par le repli
Garde-fou contre le dépassement de droits : une clé restreinte n'est pas contournée par le repli
Si votre clé limite la plage de modèles disponibles, le modèle choisi par le routage automatique (repli inclus) reste toujours dans cette plage. Si aucun modèle de la plage ne peut réellement servir cette requête, un 403 explicite est renvoyé, plutôt que d’utiliser silencieusement un modèle hors plage (potentiellement plus cher).
Facturation
Facturation au prix réel du modèle effectivement utilisé ; le routage automatique lui-même ne facture aucun surcoût. Quel que soit le modèle qui répond finalement, le calcul se fait selon le prix, les capacités et les limites de contexte de ce modèle — ce modèle étant la valeur figurant dans l’en-têteX-Aihubmix-Router-Resolved-Model et dans le champ model du corps de la réponse. Autrement dit, le routage automatique n’utilise pas « en douce un modèle cher » : chaque utilisation est inscrite dans la réponse et peut être rapprochée ligne par ligne.
Limitations
-
Le routage automatique vise actuellement l’interface de complétion de conversation
/v1/chat/completionset les interfaces de génération / édition d’images/v1/images/*(voir FAQ : quelles interfaces sont prises en charge). -
?router=offou l’en-têteX-Router-Offfont renvoyer un 400 directement àmodel=auto— c’est un refus explicite de l’usage ambigu « vouloir auto tout en désactivant le routage », plutôt qu’une ignorance silencieuse : -
L’ensemble des candidats varie dynamiquement avec le catalogue de la plateforme : un même
autopeut utiliser des modèles différents à différents moments (c’est voulu par conception, auditable via les en-têtes de réponse). Le périmètre de candidats actuel peut être consulté via l’endpoint Périmètre de modèles de la stratégie LLM Router.
Différences avec OpenRouter / LiteLLM
La « sélection automatique de modèle » n’est pas propre à AIHubMix ; OpenRouter et LiteLLM offrent des capacités similaires. Les différences portent surtout sur le coût d’intégration et le mode d’hébergement :| Point de différence | OpenRouter | LiteLLM | AIHubMix |
|---|---|---|---|
| Sélection automatique selon le contenu de la requête | ✅ | ✅ | ✅ |
| Zéro configuration, prêt à l’emploi (pas de règles de routage / utterances à écrire) | ✅ | ❌ | ✅ |
| Hébergé par la plateforme, pas de proxy à auto-héberger / déployer | ✅ | ❌ | ✅ |
| Multi-stratégies coût / qualité / latence, basculées par un seul paramètre | ❌ | ❌ | ✅ |
| Décision d’utilisation traçable (en-têtes avec dimension / policy / reason) | ❌ | ❌ | ✅ |
| Facturation selon le modèle finalement utilisé | ✅ | ❌ | ✅ |
FAQ
Q : Quelles interfaces le routage automatique prend-il en charge ? R : Actuellement,model=auto prend en charge l’interface de complétion de conversation compatible OpenAI /v1/chat/completions, ainsi que les interfaces de génération / édition d’images (/v1/images/generations, /v1/images/edits). L’audio, /v1/embeddings, /v1/rerank, etc. ne prennent pas encore en charge auto ; veuillez spécifier directement un modèle concret.
Q : Le routage automatique prend-il en charge les entrées image ?
R : Oui. Joindre une image (image_url) dans /v1/chat/completions relève de la compréhension d’image et la requête est routée vers un modèle aux fortes capacités visuelles selon la tâche image (vision.ocr = reconnaître le texte dans les images, vision.diagram = comprendre les graphiques / organigrammes, vision.overall = compréhension générale d’images, etc.). La génération d’image prend également en charge auto : définissez model sur auto sur les interfaces /v1/images/* et la requête est routée selon les dimensions de génération d’images (par exemple text_to_image.overall).
Q : Comment savoir quel modèle a réellement été utilisé pour cette requête ?
R : Regardez l’en-tête X-Aihubmix-Router-Resolved-Model, ou le champ model du corps de la réponse — les deux sont renseignés avec le vrai nom du modèle. Voir Comment confirmer le modèle réellement utilisé.
Q : Le routage automatique va-t-il utiliser en douce un modèle cher ?
R : Non. La stratégie par défaut cost_optimized privilégie le coût ; et chaque modèle utilisé est inscrit dans la réponse et facturé à son prix d’origine, rapprochable ligne par ligne. Voir Facturation.
Q : Comment contrôler / estimer les coûts ?
R : Trois moyens cumulables — ① par défaut, auto (cost_optimized) privilégie déjà le coût ; ② utilisez la plage de modèles disponibles de la clé pour verrouiller les candidats dans une fourchette de prix acceptable, ce qui revient à fixer une borne supérieure de coût ; ③ chaque utilisation est facturée au prix d’origine du modèle figurant dans l’en-tête Resolved-Model, rapprochable ligne par ligne. Quand vous avez besoin de plus de puissance, utilisez explicitement auto:quality_first.
Q : Quelle est la différence entre auto et le « mappage de modèles / fallback » ?
R : Le mappage de modèles / fallback est un alias fixe au niveau de la clé + un repli ordonné en cas d’échec (toujours la même cible) ; le routage automatique sélectionne dynamiquement le modèle selon le contenu de chaque requête. Le premier résout « le client n’accepte qu’un certain nom / le modèle principal est tombé, on bascule sur le secours », le second résout « peu m’importe lequel, donnez-moi le plus adapté ».
Q : Peut-on limiter le routage automatique à un choix parmi quelques modèles seulement ?
R : Oui — via la contrainte de la plage de modèles disponibles de la clé : le routage automatique ne choisira que parmi les modèles autorisés par cette clé, et aucun modèle hors plage ne sera utilisé.
Q : Les requêtes en streaming sont-elles prises en charge ?
R : Oui. Le routage s’effectue avant que la requête n’atteigne l’upstream et traite de la même manière le streaming et le non-streaming.
Q : Pourquoi deux appels avec la même phrase ont-ils utilisé des modèles différents ?
R : L’ensemble des candidats et les prix varient dynamiquement avec le catalogue de la plateforme, c’est voulu par conception. Utilisez le Decision-Id et le Resolved-Model des en-têtes de réponse pour auditer chaque décision ; le périmètre de candidats actuel peut être consulté via l’endpoint Périmètre de modèles de la stratégie LLM Router.
Q : Comment faire pour qu’une requête utilise de façon stable le même modèle (par exemple pour réutiliser le cache de prompt) ?
R : auto sélectionne le modèle dynamiquement selon le catalogue actuel et ne garantit pas le déterminisme. Si vous avez besoin d’utiliser de façon stable le même modèle (par exemple pour dépendre du cache de prompt de l’upstream, ou pour une reproduction stricte), spécifiez directement un nom de modèle concret, ou limitez la plage disponible de la clé à un modèle unique — dans ces deux cas, le modèle utilisé est déterministe.
Ressources connexes
- Mappage de modèles et fallback : alias fixe au niveau de la clé + repli en cas d’échec, complémentaire au routage automatique.
- Paramètres d’inférence unifiés : paramètres de requête cohérents entre modèles.
- Page des modèles AIHubMix : consultez les noms de modèles, les prix et les
Input Modalities. - Périmètre de modèles de la stratégie LLM Router : accès sans connexion au sous-ensemble public de 23 sous-dimensions (sur les 30+ dimensions de routage) et au pool de modèles routables.