Aller au contenu principal

Suites d'évaluation

L'écran Suites d'évaluation vous permet de créer les jeux de tests qui évaluent un agent, un modèle, un prompt ou une autre cible, avec leurs métriques, leurs seuils et le fait qu'ils bloquent ou non une promotion. Chemin dans le portail : /quality/suites. Les développeurs, les responsables sécurité et les responsables de la gouvernance de l'IA écrivent les suites ; tout le tenant peut les lire. L'écran est dessiné par portal/src/screens/quality.tsx.

Ce que montre l'écran​

  • Tableau Suites, lu par GET /v1/evaluations/suites (50 lignes par appel, par nom, pagination par curseur). Colonnes : Nom, Type de cible, Cible, Type, Moteur, Cas (nombre de cas), Barrière bloquante.
  • Liste vide : Aucune suite d'évaluation, avec l'aide Créez une suite avec des cas et des métriques. et le bouton Nouvelle suite.
  • Un clic sur une ligne, ou Voir le détail, ouvre un panneau latéral avec GET /v1/evaluations/suites/{suite_id} : le contrat de la suite, la liste complète de ses cas et run_on_promotion.
  • Nouvelle suite ouvre un panneau latéral avec les champs :
    • Nom (obligatoire, unique dans le tenant).
    • Cible (obligatoire, type:ref@version, exemple agent:invoice-assistant@1.2.0 ; sans type, la cible est un agent). Types : model, agent, prompt, rag_pipeline, skill, tool.
    • Jeu de données (obligatoire, une référence comme inline://support-v1).
    • Métriques (obligatoire, séparées par des virgules, défaut exact_match).
    • Seuils (JSON, défaut {"exact_match": 0.8}) : un seuil par métrique.
    • Cas (liste JSON, par défaut un cas avec input et expected).
    • Bloquant (coché par défaut) : une suite bloquante compte dans la porte qualité.

Actions​

Bouton ou actionCe qu'il faitAppel d'APIRôles
Actualiser (icône)Recharge la liste.GET /v1/evaluations/suitesTout membre du tenant
Nouvelle suiteCrée la suite avec le moteur custom et le type quality.POST /v1/evaluations/suitestenant_admin, developer, security_officer, ai_governance_officer
Clic sur une ligne ou Voir le détailOuvre la suite avec ses cas.GET /v1/evaluations/suites/{suite_id}Tout membre du tenant
Réessayer (état d'erreur)Relance la lecture qui a échoué.Même appelMêmes rôles

Le formulaire construit ce corps (portal/src/lib/mappers.ts) : chaque métrique prend son seuil dans Seuils, le comparateur vaut par défaut gte (plus haut est meilleur) :

{
"name": "support-faq",
"target": {"type": "agent", "ref": "invoice-assistant", "version": "1.2.0"},
"dataset": {"ref": "inline://support-v1"},
"metrics": [{"name": "exact_match", "threshold": 0.8}],
"cases": [{"input": "What is the refund policy?", "expected": "30 days"}],
"blocking": true
}

Avec le moteur custom, les métriques admises sont exact_match, contains, not_contains, json_valid, faithfulness, latency et refusal (services/control-plane/src/eai/domains/evaluation/engines.py). Une suite créée ici s'exécute aussi à chaque promotion de sa cible (run_on_promotion vrai).

Rôles​

Le portail ne masque aucun bouton. Dans services/control-plane/src/eai/domains/evaluation/__init__.py, créer une suite demande l'un des WRITE_ROLES (tenant_admin, developer, security_officer, ai_governance_officer) ; lister et lire demandent un tenant. platform_admin passe tous les contrôles de rôle.

Tâches courantes​

Créer une suite de non-régression pour un agent​

  1. Écrire les cas. Chaque cas est une entrée et la réponse attendue. Préparez une liste JSON comme [{"input": "...", "expected": "..."}]. Résultat attendu : une liste JSON valide. En cas d'échec : JSON invalide s'affiche sous Cas.
  2. Créer la suite. La métrique et son seuil décident du succès ou de l'échec. Cliquez sur Nouvelle suite, remplissez Nom, Cible (agent:<name>@<version>), Jeu de données, Métriques et Seuils, collez les Cas, laissez Bloquant coché, puis cliquez sur Créer. Résultat attendu : le message Créé et la suite dans le tableau avec son nombre de Cas. En cas d'échec : invalid_request (400) nomme la métrique ou le type de cible refusé ; conflict (409) signifie que le nom est déjà pris.
  3. L'exécuter une première fois. Une première exécution donne la référence. Ouvrez Exécutions d'évaluation et cliquez sur Nouvelle évaluation avec l'identifiant de la suite. Résultat attendu : une exécution au statut Réussi ou Échoué. En cas d'échec : voir le dépannage de cette page.

Lire les cas d'une suite​

  1. Ouvrir la suite. La liste ne fait que compter les cas. Cliquez sur la ligne. Résultat attendu : le panneau latéral affiche cases, metrics et gate.blocking. En cas d'échec : not_found (404) signifie que la suite n'existe pas dans le tenant.

Dépannage​

SymptômeCauseCorrection
validation_error (422) sur CréerUne métrique de Métriques n'a pas de valeur dans Seuils, ou un champ obligatoire est vide.Donnez un seuil à chaque métrique, par exemple {"exact_match": 0.8, "contains": 1}.
invalid_request (400) avec metric et allowedLa métrique ne fait pas partie du moteur custom.Utilisez une métrique de la liste allowed.
invalid_request (400) avec target.typeLe type de cible n'est pas pris en charge.Utilisez model, agent, prompt, rag_pipeline, skill ou tool.
conflict (409)Une suite de ce nom existe déjà.Choisissez un autre nom.
forbidden (403) avec required_rolesVos rôles ne permettent pas de créer des suites.Demandez developer, security_officer ou ai_governance_officer.

Pages liées​