Une requête devient une liste ordonnée de candidats : chaque modèle de models(ou le seul model) et, pour chacun, les points d’accès capables de le servir, classés selon vos préférences de fournisseur, leur état mesuré et leur prix. Le premier candidat qui répond sert la requête. Seuls les trois premiers modèles d’une chaîne sont pris en compte, et au plus trois tentatives sont faites en tout, sur l’ensemble des points d’accès de ces modèles.
Déclarer une chaîne de repli
Passez models au lieu de model : si le premier ne peut pas être servi, le suivant est essayé. Même un seul model bascule, entre les fournisseurs qui le servent.
{
"models": ["anthropic/claude-sonnet-5", "openai/gpt-5.5", "google/gemini-3.1-pro"],
"messages": [{"role": "user", "content": "Bonjour"}]
}Depuis le SDK OpenAI, qui envoie toujours model, ajoutez models à côté (en Python par extra_body) ; quand models est présent, il remplace model.
client.chat.completions.create(
model="anthropic/claude-sonnet-5",
messages=[{"role": "user", "content": "Bonjour"}],
extra_body={"models": ["anthropic/claude-sonnet-5", "openai/gpt-5.5"]},
)Des replis pour toutes les requêtes du compte
PUT /v1/routing (ou Espace de travail → Acheminement) définit un default_model, utilisé quand une requête n’en nomme aucun, et jusqu’à huit fallback_models, ajoutés après les modèles qu’une requête nomme. La chaîne obtenue est réduite à trois modèles comme toute autre.
L’ordre des candidats
Pour chaque modèle, les points d’accès sont classés selon leur état mesuré et leur prix, par un tirage pondéré, pour que le trafic se répartisse entre ceux qui vont bien plutôt que de s’accumuler sur un seul. Un provider.sort à price, latency ou throughput remplace le tirage par un ordre fixe, et les préférences provider peuvent exiger, préférer ou exclure des fournisseurs — voir Acheminement.
Ce qui fait passer au candidat suivant
- Une erreur du fournisseur, un 5xx, ou une limite de débit 429 du fournisseur.
- Un fournisseur qui ne répond pas à temps. Chaque phase a sa limite : 30 secondes pour le premier octet d’une réponse diffusée, 60 secondes de silence entre deux fragments diffusés, et 180 secondes pour une réponse complète non diffusée. Un délai dépassé est signalé par un
524. - Un point d’accès qui ne peut pas porter la requête, par exemple un type de contenu que ce fournisseur n’accepte pas.
Ce qui ne le fait pas
- Une erreur de requête que tous les points d’accès refuseraient, comme des messages mal formés ou un paramètre invalide. Elle renvoie 400 aussitôt, et aucun autre point d’accès n’est essayé.
- Un échec après l’envoi du premier octet d’une réponse. Le texte déjà livré ne peut pas être repris, donc la requête n’est pas relancée chez un autre fournisseur.
- Un refus de vos propres limites ou garde-fous, qui est définitif.
- La déconnexion de votre client. La requête s’arrête, et rien n’est relancé à votre place.
Plafonds de dépense et garde-fous
Les plafonds de dépense des clés, les budgets des garde-fous, des espaces de travail et des agents sont tous vérifiés une seule fois, avant la première tentative, et les garde-fous décident quels fournisseurs peuvent être candidats. Le basculement ne contourne ni l’un ni l’autre : une requête au-delà d’une limite est refusée avec 403 budget_exceeded avant tout contact avec un fournisseur, et un fournisseur exclu par un garde-fou n’est jamais essayé en repli.
Chaque tentative passe par votre propre clé de fournisseur. Autonomous Relay ne facture rien pour une tentative, servie ou échouée ; qu’un fournisseur facture une tentative échouée de son côté relève de vous et de ce fournisseur.
État de santé
Chaque tentative alimente l’état mesuré du point d’accès, et cet état classe les candidats : un point d’accès qui échoue en ce moment est essayé plus tard. L’état est mesuré sur une fenêtre glissante de 30 minutes et publié dès qu’un point d’accès a servi 100 requêtes ; voir État. Une déconnexion de votre client n’est pas comptée contre le fournisseur.
Prévisualiser l’ordre avant d’envoyer
Prend le même corps qu’une complétion de chat et exécute les mêmes contrôles, filtres et classement, sans contacter de fournisseur ni rien réserver : il indique quels candidats seraient essayés, dans quel ordre, et si la requête serait refusée. ordering précise si l’ordre est fixe ou sampled — un ordre tiré au sort l’est de nouveau pour une vraie requête.
Voir ce qui s’est passé
Une ligne par tentative faite pour une requête, dans l’ordre, avec le résultat de chaque fournisseur. Une requête qui a basculé deux fois affiche trois lignes.