Version 1.0.0
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.
L’ordre des trois déclarations
Section intitulée « L’ordre des trois déclarations »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.
1. Déclarer le fournisseur
Section intitulée « 1. Déclarer le fournisseur »Section Providers, bouton Add provider.
| Champ | Obligatoire | Ce qu’il porte |
|---|---|---|
Slug | oui | L’identifiant court du moteur, par exemple moteur-interne. Lettres, chiffres, _ et - seulement. |
Name | oui | Le nom lisible, affiché dans les listes. |
Base URL | oui | L’adresse absolue du moteur, schéma compris, par exemple https://inference.interne:8000. |
API Key Env | non | Le nom de la variable d’environnement qui porte la clé du moteur, et non la clé. |
API Key Header | non | Le 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 la console refuse
Section intitulée « Ce que la console refuse »| Ce que vous avez saisi | Réponse |
|---|---|
| Un champ obligatoire vide | 400, slug, name, and base_url are required |
Un Slug avec un espace, un point, un accent | 400, le format accepté est rappelé dans le message |
Un Slug déjà pris | 409, A provider with this slug already exists |
Une Base URL que la passerelle ne sait pas lire | 400, 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 |
Un moteur joint en http://
Section intitulée « Un moteur joint en http:// »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.
Corriger une adresse de fournisseur
Section intitulée « Corriger une adresse de fournisseur »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.
2. Déclarer le modèle
Section intitulée « 2. Déclarer le modèle »Section Models, bouton Add model.
| Champ | Obligatoire | Ce qu’il porte |
|---|---|---|
Slug | oui | Le nom du modèle tel que le moteur le sert. |
Name | oui | Le nom lisible. |
Provider | oui | Le fournisseur qui l’expose, choisi dans la liste. |
Input price (nano€/token) | non, vaut 0 | Prix d’un token entrant, en nano-euros, nombre entier. |
Output price (nano€/token) | non, vaut 0 | Prix 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.
3. Déclarer le point d’appel
Section intitulée « 3. Déclarer le point d’appel »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.
Exploiter les points d’appel existants
Section intitulée « Exploiter les points d’appel existants »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.
Activer ou désactiver
Section intitulée « Activer ou désactiver »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.
Supprimer
Section intitulée « Supprimer »La suppression d’un point d’appel a deux issues, et la console choisit :
| Situation | Ce qui se passe |
|---|---|
| Aucun appel n’a jamais été journalisé pour lui | La ligne est supprimée. |
| Des appels ont été journalisés | La 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.
Supprimer un modèle ou un fournisseur
Section intitulée « Supprimer un modèle ou un fournisseur »Les deux sont refusés tant qu’un enfant subsiste :
| Ce que vous supprimez | Réponse |
|---|---|
| Un modèle qui a des points d’appel | 409, Cannot delete model: it still has endpoints. Delete them first. |
| Un fournisseur qui a des modèles | 409, 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.
Les permissions requises
Section intitulée « Les permissions requises »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.