Aller au contenu

Déclarer un modèle servi par la passerelle

Le moteur d'inférence, le modèle et le point d'appel, dans l'ordre où ils doivent exister, et ce que la console refuse.

Une passerelle qui vient d’être installée répond 404 à tout : elle ne sert encore aucun modèle. Cette page décrit les trois déclarations qui la raccordent au moteur d’inférence de votre périmètre, l’ordre dans lequel elles doivent exister, et ce que la console refuse.

La passerelle se raccorde à tout moteur qui expose une API compatible OpenAI, avec le modèle à poids ouverts que vous avez retenu. Elle est seule à joindre le moteur : ni les postes ni les bacs à sable ne connaissent son adresse (livre blanc sécurité V3, sections 3.4 et 8.2). La console nomme le moteur Provider ; cette page dit « fournisseur » quand elle cite ce libellé.

Les exemples de cette page déclarent un moteur à l’adresse https://inference.interne:8000, qui sert le modèle qwen2.5-coder, et le publient sous le point d’appel code-principal.

Tout se passe dans l’onglet Endpoints, présent dans les deux profils de construction. Les libellés de la console sont en anglais ; ils sont cités ici tels que vous les lisez à l’écran.

Fournisseur (Provider) → Modèle (Model) → Point d'appel (Endpoint)

Un modèle exige le fournisseur qui l’expose, un point d’appel exige le modèle qu’il route, et la base refuse une ligne dont le parent manque. Dans l’interface, le sélecteur Provider du formulaire de modèle n’offre aucune option tant qu’aucun fournisseur n’est déclaré.

Pour défaire, l’ordre s’inverse : un point d’appel avant son modèle, un modèle avant son fournisseur. La console refuse toute suppression qui laisserait un orphelin, et le dit.

Section Providers, bouton Add provider.

ChampObligatoireCe qu’il porte
SlugouiL’identifiant court du moteur, par exemple moteur-interne. Lettres, chiffres, _ et - seulement.
NameouiLe nom lisible, affiché dans les listes.
Base URLouiL’adresse absolue du moteur, schéma compris, par exemple https://inference.interne:8000.
API Key EnvnonLe nom de la variable d’environnement qui porte la clé du moteur, et non la clé.
API Key HeadernonLe nom de l’en-tête HTTP dans lequel la clé doit être posée.

Les deux champs de clé vont ensemble. Laissés vides, la passerelle relaie sans poser de clé, ce qui convient à un moteur qui n’en demande pas. Remplis tous les deux, la passerelle lit la variable dans son propre environnement au moment de relayer, et pose sa valeur telle quelle dans l’en-tête nommé. La console ne stocke aucune clé : elle retient le nom de la variable.

La passerelle construit l’adresse appelée en ajoutant à la Base URL ce que l’appelant a écrit après le nom du point d’appel. Un poste qui appelle /code-principal/v1/chat/completions atteint donc https://inference.interne:8000/v1/chat/completions. Le segment /v1 s’écrit à un seul des deux endroits : dans l’adresse d’appel des postes, comme ici, ou à la fin de la Base URL.

Ce que vous avez saisiRéponse
Un champ obligatoire vide400, slug, name, and base_url are required
Un Slug avec un espace, un point, un accent400, le format accepté est rappelé dans le message
Un Slug déjà pris409, A provider with this slug already exists
Une Base URL que la passerelle ne sait pas lire400, une URL absolue avec son schéma est attendue
Un schéma autre que https:// ou http://400, la passerelle ne relaie que vers ces deux schémas

Le trajet de la passerelle au moteur est chiffré en TLS (livre blanc sécurité V3, section 3.3) : déclarez le moteur en https://. Une Base URL en http:// est refusée par défaut. La raison est écrite dans le refus : sur ce trajet, les requêtes, les réponses et la clé du moteur circulent en clair, et la passerelle ne présente aucun certificat client au moteur ; l’authentification mutuelle ne s’applique qu’aux moteurs en https://.

Une dérogation existe, hors de l’architecture de référence : dès que l’adresse commence par http://, une case à cocher apparaît dans le formulaire, et la cocher vaut acceptation du trajet en clair, pour ce fournisseur seulement. Le tutoriel Découvrir la passerelle s’en sert pour un moteur qui tourne sur la même machine que la passerelle.

Deux points à connaître :

  • Il n’existe aucun réglage qui lève ce contrôle pour tous les fournisseurs à la fois. L’acceptation se donne fournisseur par fournisseur.
  • La case est remise à zéro après chaque ajout réussi : elle ne se reporte pas sur la déclaration suivante.

La console n’expose aucun moyen de changer la Base URL, le nom de la variable de clé ou l’en-tête d’un fournisseur déjà déclaré. Pour corriger une adresse, supprimez le fournisseur et redéclarez-le, donc supprimez d’abord ses modèles et leurs points d’appel.

Il en va de même pour les modèles. Seuls les points d’appel se modifient.

Section Models, bouton Add model.

ChampObligatoireCe qu’il porte
SlugouiLe nom du modèle tel que le moteur le sert.
NameouiLe nom lisible.
ProviderouiLe fournisseur qui l’expose, choisi dans la liste.
Input price (nano€/token)non, vaut 0Prix d’un token entrant, en nano-euros, nombre entier.
Output price (nano€/token)non, vaut 0Prix d’un token sortant, même unité.

Le Slug est le nom que la passerelle écrit dans le champ model de chaque requête relayée, par exemple qwen2.5-coder. Il doit être celui que le moteur annonce dans sa liste de modèles.

Les deux prix servent aux plans de dépense du profil de construction serverless. Pour un modèle servi par votre propre moteur, laissez-les à 0 : la consommation est comptée en tokens et valorisée à zéro. L’unité est le nano-euro par token, c’est-à-dire un milliardième d’euro.

Refus possibles : 400 si le slug, le nom ou le fournisseur manque ; 409 si le slug est déjà pris ; 400 avec Provider not found si le fournisseur a disparu entre-temps.

Section Endpoints, bouton Add endpoint. Deux champs : Name, et Model choisi dans la liste. Le nom accepte les lettres, les chiffres, _ et - ; c’est lui que les clients écrivent dans leur adresse d’appel. Un nom qui décrit un usage, comme code-principal ou completion-rapide, reste valable quand vous remplacez le modèle servi.

Un point d’appel est actif dès sa création. Le formulaire ne propose pas de le créer désactivé.

Refus possibles : 400 si le nom ou le modèle manque, 400 si le nom contient autre chose que les caractères acceptés, 409 si le nom est déjà pris.

À ce stade, la passerelle sert le modèle. La suite, pointer un poste de travail vers ce point d’appel, est décrite dans Router l’IDE vers la passerelle.

Rebrancher un point d’appel vers un autre modèle

Section intitulée « Rebrancher un point d’appel vers un autre modèle »

Dans la colonne Model, cliquez sur le nom du modèle : la cellule devient un sélecteur. Le changement est enregistré au moment où vous choisissez, sans bouton de validation et sans confirmation.

Ce geste change le modèle servi à une équipe sans qu’elle touche à sa configuration : l’adresse d’appel ne bouge pas, ce qu’il y a derrière change.

L’interrupteur de la colonne Enabled écrit l’état du point d’appel. Un point d’appel désactivé est refusé par la passerelle avant tout routage : les appels qui lui arrivent n’atteignent aucun moteur. Sa ligne reste visible dans la console, grisée.

Ni le rebranchement ni l’interrupteur ne demandent de confirmation, et un échec n’affiche aucun message : l’état revient à sa valeur d’origine au rafraîchissement du tableau. Après l’un de ces deux gestes, rechargez la page pour vérifier que la console montre ce que vous attendez.

La suppression d’un point d’appel a deux issues, et la console choisit :

SituationCe qui se passe
Aucun appel n’a jamais été journalisé pour luiLa ligne est supprimée.
Des appels ont été journalisésLa ligne est conservée et désactivée.

La raison du second cas : l’historique d’usage référence le point d’appel. Le supprimer détacherait cet historique, qui attribue chaque appel à un compte et qui sert, en profil serverless, au calcul des plafonds de dépense. Dans les deux cas, le point d’appel cesse d’accepter des appels.

La boîte de confirmation annonce les deux issues. L’interface ne dit pas laquelle a eu lieu : la ligne a disparu, ou elle est grisée.

Les deux sont refusés tant qu’un enfant subsiste :

Ce que vous supprimezRéponse
Un modèle qui a des points d’appel409, Cannot delete model: it still has endpoints. Delete them first.
Un fournisseur qui a des modèles409, Cannot delete provider: it still has models. Delete them first.

Il n’y a aucune suppression en cascade : rien ne disparaît sans que vous l’ayez demandé nommément.

Chacune de ces trois familles exige sa propre permission, et la lecture exige la même que l’écriture : lister les fournisseurs rend leurs adresses de base et les noms des variables portant leurs clés, c’est-à-dire la topologie du déploiement. Les noms exacts des permissions et le rôle qui les porte sont dans la référence de la console d’administration.