OpenMultiDocumentation
Console

Modèles et routage

Le champ model et le bloc optionnel openmulti pilotent tout le routage. Les deux sont facultatifs au sens où un id concret sans extension fait d'OpenMulti un proxy transparent.

Le champ model

Valeur Effet
auto OpenMulti choisit le modèle (tier par défaut : balanced)
auto:economy / auto:balanced / auto:quality choix automatique dans le tier demandé
vendor/model (ex. anthropic/claude-sonnet-4.6) honoré tel quel, aucun routage
nom nu, sans / (ex. kimi-k2.6) résolu vers l'id canonique si et seulement si le suffixe correspond à un seul modèle connu

Un nom nu inconnu ou ambigu est refusé avec 400 (model_unknown / model_ambiguous) — jamais de repli silencieux vers un autre modèle.

La liste des modèles servis, avec leurs tiers, usages et tarifs, s'obtient via GET /v1/models ou dans la console, onglet Modèles — et l'inventaire complet des modèles adressables via GET /v1/models?all=1.

Le bloc openmulti

Optionnel, il affine l'intention :

{
  "model": "auto",
  "messages": [{ "role": "user", "content": "..." }],
  "openmulti": {
    "tier": "economy",
    "purpose": "agent",
    "allow": ["deepseek/deepseek-v3", "moonshotai/kimi-k2.6"],
    "route": "smart"
  }
}
Champ Valeurs Effet
tier economy / balanced / quality niveau qualité/prix visé (équivaut à auto:<tier>)
purpose generation, light, agent, … la nature de la tâche ; affine le choix (ex. agent → modèle orienté code)
allow ["vendor/model", …] contrainte dure : ne choisir que dans cette liste
route default / smart smart = arbitrage continu coût/santé parmi les candidats du tier

Avec route: "smart", le routeur mesure en continu le coût réel par requête et le taux d'erreur de chaque candidat : le moins cher des candidats sains gagne le trafic, un modèle qui se dégrade le perd automatiquement, et il est re-testé régulièrement pour pouvoir revenir.

Comprendre la décision : openmulti.reason

Si votre requête contient un bloc openmulti, la réponse (non streamée) porte une trace lisible du routage :

{
  "id": "...",
  "model": "deepseek/deepseek-v3",
  "openmulti": { "reason": "balanced tier, smart: cheapest healthy" },
  "usage": { "prompt_tokens": 12, "completion_tokens": 40, "cost": 0.000041 }
}

Sans bloc openmulti, la réponse est strictement identique à celle du fournisseur — aucun champ ajouté. En streaming, la décision est exposée dans les en-têtes X-OpenMulti-Model et X-OpenMulti-Reason (voir Streaming).

Génération d'images

Passez modalities pour router vers un modèle de génération d'image :

{
  "model": "auto",
  "modalities": ["image", "text"],
  "messages": [{ "role": "user", "content": "Un phare dans la tempête, style gravure" }]
}

Fiabilité : retries et bascule de chemin

En cas de panne transitoire en amont (erreur de connexion, 429/5xx), OpenMulti réessaie le même modèle de façon bornée — il ne change jamais de modèle, car cela changerait la réponse. Quand un modèle est accessible par plusieurs chemins (API native du fournisseur ou agrégateur), un chemin en panne bascule automatiquement sur l'autre — même modèle, réponse préservée. Tout est transparent ; après épuisement des tentatives, vous recevez 504.

Les champs de requête inconnus sont retirés avant la transmission (allowlist des champs OpenAI/OpenRouter) : un champ propriétaire d'un autre fournisseur ne provoque pas d'erreur, il est simplement ignoré.