Développer un flux d’évaluation dans Microsoft portail Foundry (classique)

S’applique uniquement au :Portail Foundry (classique). Cet article n’est pas disponible pour le nouveau portail Foundry. En savoir plus sur le nouveau portail.

Note

Les liens de cet article peuvent ouvrir du contenu dans la nouvelle documentation Microsoft Foundry au lieu de la documentation Foundry (classique) que vous affichez maintenant.

Avertissement

Le développement de fonctionnalités Prompt Flow a pris fin le 20 avril 2026. La fonctionnalité sera entièrement retirée le 20 avril 2027. À la date de mise hors service, "Prompt Flow" passe en mode lecture seule. Vos flux existants continueront à fonctionner jusqu’à cette date.

Action recommandée : Migrer vos charges de travail de flux d’invite vers Microsoft Agent Framework avant le 20 avril 2027.

Les flux d’évaluation sont des types spéciaux de flux qui évaluent la façon dont les sorties d’une exécution s’alignent sur des critères et des objectifs spécifiques.

Dans le flux de dialogue, vous pouvez personnaliser ou créer votre propre flux d’évaluation adapté à vos tâches et objectifs, puis l’utiliser pour évaluer d’autres flux. Dans ce document, vous allez apprendre :

  • Comment développer une méthode d’évaluation.
  • Comprendre les entrées, les sorties et les métriques de journal pour les évaluations du flux de commande.

Conditions préalables

Important

Cet article décrit une prise en charge héritée des projets basés sur le hub. Elle ne fonctionnera pas pour les projets Foundry. Découvrez comment savoir quel type de projet j’ai ?

note de compatibilité SDK : les exemples de code nécessitent une version spécifique du SDK Foundry Microsoft. Si vous rencontrez des problèmes de compatibilité, envisagez de migrer d’un hub vers un projet Foundry.

Démarrage du développement d’une méthode d’évaluation

Il existe deux façons de développer vos propres méthodes d’évaluation :

  • Personnaliser un flux d’évaluation intégré : Modifiez un flux d’évaluation intégré.

    1. Sous Générer et personnaliser, sélectionnez flux d’invite.
    2. Sélectionnez Créer pour ouvrir l’assistant de création de flux.
    3. Dans la galerie de flux, sous Explorer la galerie , sélectionnez Flux d’évaluation pour filtrer par ce type. Sélectionnez un exemple et sélectionnez Cloner pour effectuer la personnalisation.
  • Créez un flux d’évaluation à partir de zéro : Développez une nouvelle méthode d’évaluation dès le départ.

    1. Sous Générer et personnaliser, sélectionnez flux d’invite.
    2. Sélectionnez Créer pour ouvrir l’assistant de création de flux.
    3. Dans la galerie de flux, sous Créer par type , dans la zone « Flux d’évaluation », sélectionnez Créer , puis vous pouvez voir un modèle de flux d’évaluation.

Comprendre l’évaluation dans le flux d’invite

Dans Prompt Flow, un flux est une séquence de nœuds qui traitent une entrée et génèrent une sortie. Les flux d’évaluation prennent également les entrées requises et produisent des sorties correspondantes.

Voici quelques fonctionnalités spéciales des méthodes d’évaluation :

  • Ils s’exécutent généralement après l’exécution à tester et reçoivent des sorties de cette exécution.
  • Outre les sorties de l’exécution à tester, elles peuvent éventuellement recevoir un autre jeu de données qui peut contenir des vérités de base correspondantes.
  • Ils peuvent avoir un nœud d’agrégation qui calcule les performances globales du flux testé en fonction des scores individuels.
  • Ils peuvent journaliser les métriques à l’aide de la log_metric() fonction.

Nous présentons comment les entrées et sorties doivent être définies dans le développement de méthodes d’évaluation.

Entrées

Une évaluation s’exécute après une autre exécution pour évaluer la façon dont les sorties de cette exécution s’alignent sur des critères et des objectifs spécifiques. Par conséquent, l’évaluation reçoit les sorties générées à partir de cette exécution.

D’autres entrées peuvent également être requises, telles que la vérité au sol, qui peut provenir d’un jeu de données. Par défaut, l’évaluation utilise le même jeu de données que le jeu de données de test fourni à l’exécution testée. Toutefois, si les étiquettes correspondantes ou les valeurs de vérité de base cible se trouvent dans un autre jeu de données, vous pouvez facilement basculer vers celle-ci.

Par conséquent, pour exécuter une évaluation, vous devez indiquer les sources de ces entrées requises. Pour ce faire, lors de l’envoi d’une évaluation, vous voyez une section « mappage d’entrée ».

  • Si la source de données provient de votre sortie d’exécution, la source est indiquée comme suit : ${run.output.[OutputName]}
  • Si la source de données provient de votre jeu de données de test, la source est indiquée comme ${data.[ColumnName]}

Note

Si votre évaluation ne nécessite pas de données à partir du jeu de données, vous n’avez pas besoin de référencer des colonnes de jeu de données dans la section mappage d’entrée, indiquant que la sélection du jeu de données est une configuration facultative. La sélection du jeu de données n’affecte pas le résultat d’évaluation.

Description de l’entrée

Pour rappeler les entrées nécessaires pour calculer les métriques, vous pouvez ajouter une description pour chaque entrée requise. Les descriptions sont affichées lors du mappage des sources dans la soumission d’exécution par lots.

Pour ajouter des descriptions pour chaque entrée, sélectionnez Afficher la description dans la section d’entrée lors du développement de votre méthode d’évaluation. Vous pouvez également sélectionner « Masquer la description » pour masquer la description.

Cette description s’affiche ensuite lors de l’utilisation de cette méthode d’évaluation dans la soumission d’exécution par lots.

Sorties et métriques

Les résultats d’une évaluation sont les résultats qui mesurent les performances du flux testé. La sortie contient généralement des métriques telles que des scores, et peut également inclure du texte pour le raisonnement et les suggestions.

Sorties des scores au niveau de l’instance

Dans le flux de traitement, le processus prend en charge chaque jeu de données échantillon un par un et génère un enregistrement de sortie. De même, dans la plupart des cas d’évaluation, il existe une métrique pour chaque sortie, ce qui vous permet de vérifier la façon dont le flux s’exécute sur chaque donnée individuelle.

Pour enregistrer le score pour chaque échantillon de données, calculez le score pour chaque sortie et consignez le score en tant que sortie de flux en le définissant dans la section de sortie. Cette expérience de création est identique à la définition d’une sortie de flux standard.

Nous calculons ce score dans le nœud line_process, que vous pouvez créer et modifier à partir de zéro lors de la création d'un type. Vous pouvez également remplacer ce nœud Python par un nœud LLM pour utiliser LLM pour calculer le score.

Lorsque cette méthode d’évaluation est utilisée pour évaluer un autre flux, le score au niveau de l’instance peut être consulté sous l’onglet Sortie de vue d’ensemble>.

Nœud de journalisation et d’agrégation des métriques

En outre, il est également important de fournir un score global pour le test. Vous pouvez vérifier le « définir comme agrégation » d’un nœud Python dans un flux d’évaluation pour le transformer en nœud « reduce », ce qui permet au nœud de recevoir les entrées sous forme de liste et de les traiter en lot.

De cette façon, vous pouvez calculer et traiter tous les scores de chaque sortie de flux et calculer un résultat global pour chaque variante.

Vous pouvez enregistrer les métriques dans un nœud d’agrégation à l’aide de flow_sdk.log_metrics(). Les métriques doivent être numériques (float/int). La journalisation des métriques de type chaîne n’est pas prise en charge.

Nous calculons ce score dans le aggregate nœud, que vous pouvez créer et modifier à partir de zéro lors de la création par type. Vous pouvez également remplacer ce nœud Python par un nœud LLM pour utiliser le LLM pour calculer le score. Consultez l’exemple suivant pour utiliser l’API log_metric dans un flux d’évaluation :

from typing import List
from promptflow import tool, log_metric

@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
    aggregate_grades = {}
    for index in range(len(grades)):
        grade = grades[index]
        variant_id = variant_ids[index]
        if variant_id not in aggregate_grades.keys():
            aggregate_grades[variant_id] = []
        aggregate_grades[variant_id].append(grade)

    # calculate accuracy for each variant
    for name, values in aggregate_grades.items():
        accuracy = round((values.count("Correct") / len(values)), 2)
        log_metric("accuracy", accuracy, variant_id=name)

    return aggregate_grades

Comme vous avez appelé cette fonction dans le nœud Python, vous n'avez pas besoin de l'affecter ailleurs, et vous pouvez afficher les métriques ultérieurement. Lorsque cette méthode d’évaluation est utilisée dans une exécution par lots, le score au niveau de l’instance peut être consulté sous l’onglet Vue d’ensemble-Métriques>.

Étapes suivantes