Fournisseurs
L'écran Fournisseurs permet de connecter des fournisseurs de modèles (cloud ou locaux) à votre tenant, de tester la connexion, de couper un fournisseur immédiatement et d'importer dans le registre les modèles qu'il sert. Chemin dans le portail : /llm/providers (Gestion des LLM > Fournisseurs). Il est utilisé par les administrateurs de la plateforme IA (tenant_admin, platform_admin, ai_platform_engineer) ; les autres lecteurs LLM voient le catalogue et l'état de chaque fournisseur. L'écran est construit dans portal/src/screens/llm.tsx (Providers, ProviderDrawer, DiscoveryPanel).
Ce que montre l'écran
L'écran est un catalogue de cartes, pas une table. Les préréglages intégrés au portail sont fusionnés avec le catalogue lu par GET /v1/providers/catalog : OpenAI, Azure OpenAI, AWS Bedrock, Gemini, Google Vertex AI, Anthropic, Qwen (Alibaba), Z.AI, DeepSeek, MiniMax, Ollama, LM Studio, vLLM, OpenAI Codex, Github Copilot, Mistral, Groq, Hugging Face, Cohere, Together AI, Fireworks AI, OpenRouter, Azure AI Foundry, Compatible OpenAI personnalisé et Compatible Anthropic personnalisé, plus toute entrée supplémentaire du catalogue de l'API.
| Élément | Contenu |
|---|---|
| Champ Rechercher un fournisseur | Filtre sur le libellé et l'identifiant du fournisseur. |
| Filtre Hébergement | Tous les hébergements, Cloud ou Local. |
| Filtre Statut | Tous les statuts, Configuré, Non configuré ou Désactivé. |
| Compteur | N fournisseur(s) affiché après les filtres. |
| Section Fournisseurs configurés (n) | Fournisseurs connectés à ce tenant, les actifs d'abord. Aide : le menu ... permet de récupérer leurs modèles, de les désactiver ou de les déconnecter. Vide : « Aucun fournisseur configuré pour l'instant : choisissez-en un ci-dessous et configurez-le. » |
| Section Fournisseurs disponibles (n) | Le reste du catalogue. Aide : configurez un fournisseur pour le connecter ; il passe alors en haut de la page. |
| Carte | Pastille de deux lettres, libellé, URL de base (ou URL de base requise), badge d'état (Configuré, Non configuré, Non connecté, Désactivé), badge d'hébergement (Cloud ou Local), la mention Saisie manuelle uniquement quand le fournisseur n'a pas d'API de liste des modèles, et « Activez le fournisseur pour récupérer ses modèles. » quand il est désactivé. |
| Pagination | Une pagination par section. |
Quand le catalogue est illisible, un panneau d'erreur avec Réessayer s'affiche en haut et toutes les cartes sont listées comme disponibles avec l'état Non connecté.
Configurer ouvre un panneau latéral au nom du fournisseur (« Les champs viennent du catalogue des fournisseurs. Les secrets sont en écriture seule. ») :
- Jeux d'identifiants acceptés quand le fournisseur accepte plusieurs combinaisons, et les modèles suggérés en badges ;
- l'interrupteur Activé (coupe-circuit : « la désactivation arrête immédiatement tout appel à ce fournisseur »), seulement une fois le fournisseur configuré ;
- le formulaire : Nom (
a-z, 0-9, -), URL de base quand le catalogue n'a pas de champ d'adresse, puis les champs du fournisseur (par exempleregion,access_key_id,secret_access_key,role_arnpour AWS Bedrock ;endpoint,api_version,deployment,api_keypour Azure OpenAI ;project,location,service_account_jsonpour Vertex AI). Les champs secrets sont en écriture seule ; en modification, « Laisser vide pour conserver la valeur stockée » ; - Enregistrer, puis Tester la connexion avec la réponse JSON du test.
Récupérer les modèles ouvre la boîte Modèles de <fournisseur> : modèles lus depuis l'API du fournisseur avec les identifiants enregistrés. Elle contient un champ de recherche, un filtre de catégorie, le résumé N modèle(s) trouvé(s), M déjà enregistré(s), Récupérer à nouveau, et une table avec les colonnes : case de sélection, Modèle du fournisseur (avec l'identifiant de registre proposé dessous), Nom, Contexte, Sortie max, Prix / 1M tokens (entrée / sortie), Catégorie (un sélecteur par ligne) et État (Enregistré ou Nouveau). Un modèle déjà enregistré ne peut pas être sélectionné. Pour un fournisseur sans API de liste, la boîte indique « Ce fournisseur n'expose pas de liste de modèles », donne la raison (Vertex AI ne liste que le catalogue des éditeurs ; un point d'accès Azure AI Foundry sert un seul modèle ; un compte d'abonnement n'a pas de liste publique) et propose Ajouter manuellement.
Actions
| Bouton ou action | Ce qu'il fait | Appel d'API | Rôles |
|---|---|---|---|
| Configurer (carte) | Ouvre le panneau de configuration du fournisseur. | aucun (catalogue déjà chargé) | tous ceux qui voient l'écran ; l'enregistrement demande un rôle d'administration |
| Enregistrer (panneau, nouveau fournisseur) | Crée le fournisseur : les secrets vont dans credentials, les autres champs dans config. Notification Enregistré. | POST /v1/providers | tenant_admin, platform_admin, ai_platform_engineer |
| Enregistrer (panneau, fournisseur configuré) | Met à jour la configuration ; un champ secret vide conserve la valeur stockée. | PATCH /v1/providers/{pid} | tenant_admin, platform_admin, ai_platform_engineer |
| Interrupteur Activé (panneau) | Coupe-circuit : désactivé, il bloque tout appel au fournisseur ; activé, il le rétablit. | POST /v1/providers/{pid}/disable ou POST /v1/providers/{pid}/enable | désactiver : les trois rôles d'administration et security_officer ; activer : les trois rôles d'administration |
| Tester la connexion (panneau) | Teste la configuration enregistrée et affiche la réponse JSON. Grisé tant que la configuration n'est pas enregistrée. | POST /v1/providers/{pid}/test | tenant_admin, platform_admin, ai_platform_engineer |
| Récupérer les modèles (menu ..., fournisseur configuré) | Ouvre la boîte des modèles et liste ceux que sert le fournisseur, avec les catégories du tenant. | POST /v1/providers/{pid}/models/discover, GET /v1/llm/categories | tenant_admin, platform_admin, ai_platform_engineer |
| Désactiver (menu ..., fournisseur configuré) | Demande une confirmation (enregistrée dans le journal d'audit), puis désactive le fournisseur. | POST /v1/providers/{pid}/disable | menu affiché à tenant_admin, platform_admin, ai_platform_engineer |
| Activer (menu ..., fournisseur désactivé) | Réactive le fournisseur. | POST /v1/providers/{pid}/enable | tenant_admin, platform_admin, ai_platform_engineer |
| Déconnecter (menu ...) | Après confirmation, supprime la configuration et les identifiants. Les modèles déjà importés restent dans le registre, sans fournisseur configuré. | DELETE /v1/providers/{pid} | tenant_admin, platform_admin, ai_platform_engineer |
| Récupérer à nouveau (boîte des modèles) | Relit la liste des modèles du fournisseur. | POST /v1/providers/{pid}/models/discover | tenant_admin, platform_admin, ai_platform_engineer |
| Importer la sélection (n) (boîte des modèles) | Enregistre les nouveaux modèles sélectionnés avec la catégorie choisie. Notification N modèle(s) importé(s), M déjà enregistré(s). | POST /v1/models/import | tenant_admin, platform_admin, ai_platform_engineer |
| Ajouter manuellement (fournisseur sans liste) | Ouvre le Registre des modèles pour saisir le modèle. | aucun | tenant_admin, platform_admin, ai_platform_engineer |
| Réessayer (panneau d'erreur) | Relit le catalogue. | GET /v1/providers/catalog | lecteurs LLM |
Rôles
- Lecture (
GET /v1/providers/catalog,GET /v1/providers,GET /v1/providers/{pid}) : les rôlesREADdeservices/control-plane/src/eai/domains/llm/__init__.py, qui sont lesllmReadersdeportal/src/lib/kit.ts:tenant_admin,platform_admin,security_officer,finops,developer,auditor,viewer,agent,ai_platform_engineer,ai_governance_officer,support_engineer. - Administration (création, mise à jour, test, activation, découverte, import, suppression) : les rôles
ADMINtenant_admin,platform_admin,ai_platform_engineer(ROLES.llmAdmins). Le menu ... d'une carte n'est affiché qu'à ces rôles. - Désactivation :
ADMINplussecurity_officercôté serveur (ROLES.llmDisablers). Un responsable sécurité utilise l'interrupteur Activé du panneau, car le menu de la carte est réservé aux administrateurs. platform_adminpasse tous les contrôles de rôle du Control Plane. Seul un administrateur de la plateforme modifie un fournisseur défini au niveau plateforme.
Tâches courantes
Connecter un fournisseur cloud
- Trouver le fournisseur. Saisissez son nom dans Rechercher un fournisseur ou réglez Hébergement sur Cloud, pour travailler sur la bonne carte. Résultat attendu : la carte affiche Non configuré. En cas d'échec : si toutes les cartes affichent Non connecté, le catalogue est illisible ; cliquez sur Réessayer.
- Remplir la configuration. Cliquez sur Configurer, gardez ou changez Nom, puis saisissez les identifiants (pour OpenAI,
api_key). Les secrets sont rangés dans le coffre de secrets et ne sont plus jamais affichés. Résultat attendu : le formulaire accepte les valeurs. En cas d'échec : un champ obligatoire est marqué Obligatoire. - Enregistrer. Cliquez sur Enregistrer pour créer le fournisseur. Résultat attendu : notification Enregistré, la carte passe dans Fournisseurs configurés avec le badge Configuré. En cas d'échec : lisez le message dans le panneau et consultez la section Dépannage ci-dessous.
- Tester la connexion. Cliquez sur Tester la connexion, pour savoir que les identifiants fonctionnent avant d'utiliser les modèles. Résultat attendu : une réponse JSON du test du fournisseur. En cas d'échec : corrigez les identifiants, Enregistrer à nouveau, puis testez encore.
Importer les modèles d'un fournisseur
- Ouvrir la liste des modèles. Sur une carte configurée, ouvrez ... > Récupérer les modèles. Le Control Plane lit la liste depuis l'API du fournisseur, il n'en invente jamais. Résultat attendu : la boîte affiche
N modèle(s) trouvé(s), M déjà enregistré(s). En cas d'échec : un panneau d'erreur avec Réessayer donne la cause (identifiants refusés, délai dépassé, pas d'adresse). - Choisir les modèles. Cochez les lignes Nouveau voulues, ou la case d'en-tête pour sélectionner tous les nouveaux modèles affichés, et réglez la Catégorie de chaque ligne. Résultat attendu : le pied affiche
n sélectionné(s). En cas d'échec : une ligne Enregistré ne se coche pas, le modèle est déjà au registre. - Importer. Cliquez sur Importer la sélection (n). Résultat attendu : notification
N modèle(s) importé(s), M déjà enregistré(s); les modèles apparaissent dans le Registre des modèles. En cas d'échec : « Certains modèles sélectionnés sont invalides : rien n'a été importé. » liste les problèmes ; corrigez la catégorie et importez à nouveau.
Couper un fournisseur en urgence
- Ouvrir le fournisseur. Cliquez sur Configurer sur la carte configurée. Résultat attendu : le panneau affiche l'interrupteur Activé. En cas d'échec : l'interrupteur n'existe qu'une fois le fournisseur enregistré.
- Le couper. Désactivez Activé : tout appel à ce fournisseur s'arrête immédiatement (coupe-circuit). Résultat attendu : notification Enregistré, la carte affiche Désactivé ; la passerelle répond « Ce fournisseur est désactivé (coupe-circuit). ». En cas d'échec : une erreur
forbiddensignifie que votre rôle ne peut pas désactiver un fournisseur. - Le rétablir. Une fois l'incident clos, réactivez Activé ou utilisez ... > Activer. Résultat attendu : la carte affiche de nouveau Configuré. En cas d'échec : la réactivation demande un rôle d'administration, pas
security_officer.
Dépannage
| Symptôme | Cause | Correction |
|---|---|---|
| Panneau d'erreur en haut, toutes les cartes Non connecté | GET /v1/providers/catalog a échoué, par exemple « L'API Control Plane est injoignable. » | Vérifiez que le Control Plane tourne et que NEXT_PUBLIC_EAI_API_URL est correct, puis Réessayer. |
« Champ obligatoire <champ> manquant pour ce fournisseur. » (missing_credential_field, 422) | Un identifiant obligatoire ou un jeu d'identifiants accepté manque. | Renseignez le champ cité, ou l'un des Jeux d'identifiants acceptés. |
« Le champ <champ> n'est pas accepté par ce fournisseur. » (unknown_credential_field) | Le corps contient un champ que le catalogue du fournisseur ne déclare pas. | Retirez le champ ; seuls les champs du panneau sont acceptés. |
« Les fournisseurs distants doivent être joints en HTTPS. » (tls_required, 422) | L'URL de base d'un fournisseur distant n'est pas en https. | Utilisez une adresse https://. |
« Un fournisseur portant ce nom existe déjà. » (provider_exists, 409) | Nom déjà utilisé dans le tenant. | Choisissez un autre nom, ou modifiez le fournisseur existant. |
« Seul un administrateur de la plateforme peut modifier les entrées de niveau plateforme. » (platform_only, 403) | Le fournisseur est défini au niveau plateforme. | Demandez à un platform_admin. |
| Tester la connexion grisé | La configuration n'est pas encore enregistrée. | Cliquez d'abord sur Enregistrer (« Enregistrez la configuration avant de tester la connexion. »). |
« Le fournisseur <hôte> a refusé les identifiants enregistrés (HTTP <statut>). » (discovery_auth_failed, 502) | Le fournisseur rejette la clé. | Saisissez un secret valide dans le panneau et Enregistrer. |
« Le fournisseur <hôte> n'a pas répondu en <n> secondes. » ou « est injoignable » (discovery_timeout, discovery_network_error, 502) | Réseau, proxy ou règle de sortie. | Vérifiez le chemin réseau et la politique de sortie, puis Récupérer à nouveau. |
« Ce fournisseur n'a pas d'adresse de point d'accès : renseignez-la avant de récupérer ses modèles. » (discovery_no_api_base, 422) | Aucune URL de base configurée. | Renseignez URL de base dans le panneau. |
« Ce fournisseur est désactivé (coupe-circuit). » (provider_disabled, 409) sur Récupérer les modèles | Le fournisseur est désactivé. | Activez-le d'abord. |
« Certains modèles sélectionnés sont invalides : rien n'a été importé. » (import_invalid, 422) ou catégorie inconnue (category_unknown, 422) | Une ligne sélectionnée est invalide ou sa catégorie n'existe pas. | Choisissez une catégorie existante (voir l'onglet Catégories du Registre des modèles). |
forbidden (403) | Le rôle de l'utilisateur n'est pas autorisé sur cette route. | Demandez à un tenant_admin ou à un ai_platform_engineer. |