Playground passerelle
L'écran Playground passerelle permet d'appeler la passerelle LLM du Control Plane comme le fait une application, en streaming, avec un effort de raisonnement et une classification des données, et d'inspecter l'identifiant de décision ainsi que le coût estimé et mesuré de chaque appel. Chemin dans le portail : /llm/playground. Il est utilisé par les développeurs et les ingénieurs de la plateforme IA qui testent un modèle à travers les mêmes politiques qu'en production. L'écran est construit dans portal/src/screens/llm-tools.tsx (Playground), avec le corps de requête de chatBody dans portal/src/lib/request-bodies.ts.
Ce que montre l'écran
La colonne Réglages :
| Champ | Contenu |
|---|---|
| Modèle | Sélecteur rempli par GET /v1/models (premier modèle par défaut). Si la liste est illisible, un champ texte Identifiant du modèle ; sans modèle, Aucun modèle enregistré. |
| Effort | none, low, medium, high, max (défaut none). |
| Classification des données | public, internal, confidential, restricted (défaut internal). |
| Streaming (SSE) | Actif par défaut : la réponse arrive en événements envoyés par le serveur. |
| Prompt système | Message système facultatif. |
| Estimer le coût | Bouton, avec l'estimation JSON dessous. |
La colonne Conversation :
- trois badges : Décision (en-tête
X-EAI-Decision-Idou événement du flux), Estimé (X-EAI-Cost-Estimated) et Mesuré (X-EAI-Cost-Measured, ou le coût de la réponse quand le streaming est coupé),-avant le premier appel ; - les messages, les vôtres à droite, les réponses à gauche, remplies au fil du flux ; « Envoyez un message pour appeler la passerelle. » quand la conversation est vide ;
- l'erreur du dernier appel, s'il y en a une ;
- le champ Écrire un message avec Envoyer, remplacé par Arrêter pendant un appel ;
- Effacer quand la conversation contient des messages.
Chaque appel est envoyé avec purpose: "playground", l'effort choisi et la classification choisie dans l'extension eai du corps OpenAI.
Actions
| Bouton ou action | Ce qu'il fait | Appel d'API | Rôles |
|---|---|---|---|
| Envoyer (ou Entrée) | Envoie l'historique avec le nouveau message ; diffuse la réponse en flux quand Streaming (SSE) est actif. | POST /v1/gateway/chat/completions | identifiant portant la portée models:invoke |
| Arrêter | Interrompt l'appel en cours dans le navigateur. | aucun | tout le monde |
| Estimer le coût | Estime le coût de la conversation plus le message en cours de saisie, sans appeler le modèle. | POST /v1/gateway/estimate | identifiant portant la portée models:invoke |
| Effacer | Vide la conversation et les badges. | aucun | tout le monde |
| Sélecteur Modèle | Liste les modèles enregistrés. | GET /v1/models | lecteurs LLM |
Rôles
- Les routes de la passerelle contrôlent une portée, pas un rôle : l'identifiant doit porter
models:invoke(require_scope("models:invoke")dansservices/control-plane/src/eai/domains/llm/__init__.py). Une session du portail ouverte avec la portéeopenidporte toutes les portées. - La liste des modèles demande l'un des rôles de lecteur LLM (
ROLES.llmReadersdeportal/src/lib/kit.ts). - La passerelle applique ensuite les politiques du tenant : statut du modèle et coupe-circuits, listes d'autorisation, région, classification des données face au modèle et face à votre habilitation, DLP, mode d'isolation et budget.
- L'appel demande un tenant : un principal sans tenant reçoit
platform_only.
Tâches courantes
Tester un modèle à travers la passerelle
- Choisir les réglages. Choisissez le Modèle, gardez Effort
noneet Classification des donnéesinternal, pour que l'appel passe par les politiques habituelles. Résultat attendu : le bouton Envoyer s'active dès que vous saisissez un message. En cas d'échec : Aucun modèle enregistré signifie que le registre est vide ; voir le Registre des modèles. - Envoyer. Saisissez un message dans Écrire un message et cliquez sur Envoyer. Résultat attendu : la réponse arrive en flux ; Décision, Estimé et Mesuré sont remplis. En cas d'échec : l'erreur s'affiche au-dessus du champ (voir la section Dépannage).
- Suivre la décision. Copiez l'identifiant Décision, pour retrouver l'appel dans les traces et le journal d'audit. Résultat attendu : un identifiant de décision dans le badge. En cas d'échec :
-signifie que l'appel a échoué avant la décision.
Le même appel en ligne de commande (voir docs/sdks/cli-reference.md) :
enterprise-ai chat -m <model-id> --effort low "Hello"
<model-id> : identifiant du modèle dans le registre.
Estimer avant d'envoyer un long prompt
- Préparer le message. Saisissez le Prompt système et le message, sans l'envoyer. Résultat attendu : le texte est dans le champ. En cas d'échec : rien à corriger, l'estimation ne demande qu'un modèle.
- Estimer. Cliquez sur Estimer le coût. Résultat attendu : une estimation JSON sous le bouton. En cas d'échec : « Le coût estimé dépasse le budget restant. » (
budget_exceeded, 429) signifie que le budget du tenant ou du projet est épuisé.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
insufficient_scope (403) | L'identifiant ne porte pas la portée models:invoke. | Utilisez un identifiant qui porte models:invoke. |
« Ce modèle est désactivé (coupe-circuit). » (model_disabled, 403) ou « Ce fournisseur est désactivé (coupe-circuit). » (provider_disabled, 403) | Un coupe-circuit est actif. | Activez le modèle dans le Registre des modèles ou le fournisseur dans Fournisseurs. |
« Ce modèle n'est pas approuvé (statut <statut>). » (model_blocked, 403) | Statut autre que approved. | Approuvez le modèle, ou choisissez-en un autre. |
« Ce modèle n'est pas dans la liste autorisée. » (model_not_allowed, 403) | La liste d'autorisation du tenant ou du projet exclut le modèle. | Choisissez un modèle autorisé. |
« La classification <classification> dépasse ce que ce modèle accepte. » (classification_exceeded, 403) | Classification des données au-dessus de la Classification max du modèle. | Baissez la classification ou choisissez un autre modèle. |
« La classification <classification> dépasse l'habilitation de l'appelant. » (clearance_exceeded, 403) | Votre habilitation est inférieure à la classification. | Baissez la classification. |
« Des données sensibles ont été détectées et la requête a été bloquée. » (dlp_blocked, 422) | La DLP a trouvé des données sensibles dans le message ou la réponse. | Retirez les données du message. |
« Mode <mode> : le modèle <model_id> du fournisseur <fournisseur> est externe et ne peut pas être routé. » (isolation_external_route, 403) | Le tenant ou le projet est en local_only ou air_gapped. | Utilisez un modèle local, ou changez le Mode d'isolation. |
« Le coût estimé dépasse le budget restant. » (budget_exceeded, 429) | Budget épuisé. | Relevez le budget ou attendez la période suivante. |
« Les appels de modèles sont désactivés pour ce tenant. » (tenant_llm_disabled, 403) | Le coupe-circuit du tenant est actif. | Demandez à un responsable sécurité. |