- Python
- TypeScript
Transmettez des évaluateurs à un objet
weave.Evaluation lors de l’évaluation. Weave prend en charge deux types d’évaluateurs :- Évaluateurs basés sur des fonctions : fonctions Python décorées avec
@weave.op. - Évaluateurs basés sur des classes : classes Python qui héritent de
weave.Scorer, destinées aux évaluations plus complexes.
Créer vos propres évaluateurs
Les évaluateurs personnalisés vous permettent de définir des critères d’évaluation propres à votre cas d’usage, au-delà de ce que couvrent les évaluateurs intégrés. Les sections suivantes décrivent les deux façons de définir un évaluateur : sous forme de fonction, ou sous forme de classe pour une logique plus complexe.Évaluateurs basés sur des fonctions
- Python
- TypeScript
Les évaluateurs basés sur des fonctions sont des fonctions décorées avec Lorsque vous exécutez l’évaluation,
@weave.op qui renvoient un dictionnaire. Ils sont bien adaptés aux évaluations simples, comme celle-ci :evaluate_uppercase vérifie si le texte est entièrement en majuscules.Évaluateurs basés sur des classes
- Python
- TypeScript
Pour des évaluations plus avancées, notamment lorsque vous devez suivre des métadonnées supplémentaires de l’évaluateur, tester différents prompts pour vos évaluateurs LLM ou effectuer plusieurs appels de fonctions, utilisez la classe Cette classe évalue la qualité d’une synthèse en la comparant au texte original.
Scorer.Exigences :- Héritez de
weave.Scorer. - Définissez une méthode
scoredécorée avec@weave.op. - La méthode
scoredoit renvoyer un dictionnaire.
Fonctionnement des évaluateurs
Cette section explique comment les évaluateurs reçoivent les données de votre évaluation, comment mapper les colonnes du jeu de données aux arguments des évaluateurs, comment faire référence aux variables d’un op dans les prompts d’évaluation, et comment Weave agrège les scores de chaque ligne en un résultat final.Arguments nommés des évaluateurs
- Python
- TypeScript
Les évaluateurs peuvent accéder à la fois à la sortie de votre système d’IA et aux données d’entrée de la ligne de jeu de données.Lorsqu’une Mapper les noms de colonnes avec
Il arrive que les noms d’arguments de la méthode L’argument
- Entrée : si vous souhaitez que votre évaluateur utilise des données de votre ligne de jeu de données, comme une colonne
labeloutarget, mettez-les à sa disposition en ajoutant un argument nommélabeloutargetà la définition de votre évaluateur.
label de votre jeu de données, votre fonction d’évaluation (ou la méthode de classe score) aura une liste de paramètres de ce type :Evaluation Weave s’exécute, elle transmet la sortie du système d’IA au paramètre output. L’Evaluation tente également de faire correspondre automatiquement les autres noms d’arguments de l’évaluateur aux colonnes de votre jeu de données. S’il n’est pas possible de personnaliser les arguments de votre évaluateur ou les colonnes de votre jeu de données, vous pouvez utiliser le mappage de colonnes. Voir la section suivante.- Sortie : incluez un paramètre
outputdans la signature de votre fonction d’évaluation pour accéder à la sortie du système d’IA.
Mapper les noms de colonnes avec column_map
Il arrive que les noms d’arguments de la méthode score ne correspondent pas aux noms de colonnes de votre jeu de données. Vous pouvez résoudre ce problème à l’aide d’un column_map.Si vous utilisez un évaluateur basé sur une classe, transmettez un dictionnaire à l’attribut column_map de Scorer lors de l’initialisation de votre classe d’évaluateur. Ce dictionnaire associe les noms d’arguments de votre méthode score aux noms de colonnes du jeu de données, sous la forme {scorer_keyword_argument: dataset_column_name}.Exemple :text de la méthode score reçoit désormais les données de la colonne news_article du jeu de données.Remarques :- Pour mapper vos colonnes, vous pouvez également créer une sous-classe de
Scoreret surcharger la méthodescoreen mappant explicitement les colonnes.
Accéder aux variables de vos ops dans les prompts d’évaluation
Dans les prompts d’évaluation des évaluateurs LLM-as-a-judge, vous pouvez faire référence aux variables de votre op. Weave extrait automatiquement ces valeurs lors de l’exécution de l’évaluateur. Par exemple, pour une fonction comme celle-ci :
Exemple de prompt d’évaluation :
Synthèse finale de l’évaluateur
- Python
- TypeScript
Pendant l’évaluation, Weave calcule l’évaluateur pour chaque ligne de votre jeu de données. Pour obtenir un score final de l’évaluation, Weave exécute
auto_summarize en fonction du type de retour de la sortie.Vous pouvez redéfinir la méthode summarize de la classe Scorer pour fournir votre propre méthode de calcul des scores finaux. La fonction summarize attend :- Un seul paramètre
score_rows: une liste de dictionnaires, dans laquelle chaque dictionnaire contient les scores renvoyés par la méthodescorepour une ligne de votre jeu de données. - Elle renvoie un dictionnaire contenant les scores synthétisés.
Dans cet exemple, la fonction auto_summarize par défaut renverrait le nombre et la proportion de valeurs True.
Pour plus d’informations, voir l’implémentation de CorrectnessLLMJudge.Appliquer des évaluateurs à un appel
En plus d’exécuter des évaluateurs dans le cadre d’uneweave.Evaluation, vous pouvez les appliquer directement à un appel individuel. C’est utile lorsque vous souhaitez évaluer le trafic de production ou joindre des métriques d’évaluation à une invocation d’op précise.
Pour appliquer des évaluateurs à vos ops Weave, utilisez la méthode .call(), qui donne accès à la fois au résultat de l’opération et à ses informations de suivi. Vous pouvez ainsi associer les résultats des évaluateurs à des appels spécifiques dans la base de données de Weave.
Pour plus d’informations sur l’utilisation de la méthode .call(), consultez le guide Appeler des ops.
- Python
- TypeScript
Voici un exemple de base :Vous pouvez également appliquer plusieurs évaluateurs au même appel :Remarques :
- Weave stocke automatiquement les résultats des évaluateurs dans sa base de données.
- Les évaluateurs s’exécutent de manière asynchrone une fois l’opération principale terminée.
- Vous pouvez consulter les résultats des évaluateurs dans l’interface utilisateur ou les interroger via l’API.
Utiliser preprocess_model_input
Vous pouvez utiliser le paramètre preprocess_model_input pour modifier les exemples du jeu de données avant qu’ils ne soient transmis à votre modèle pendant l’évaluation.
Pour en savoir plus sur son utilisation et consulter un exemple, voir Utiliser preprocess_model_input pour formater les lignes du jeu de données avant l’évaluation.
Analyse des scores
Une fois vos évaluateurs exécutés, vous aurez souvent besoin d’examiner les scores qu’ils ont produits pour comprendre le comportement du modèle ou comparer des versions. Les sections suivantes expliquent comment analyser les scores d’un appel unique, d’appels multiples et de tous les appels évalués par un évaluateur spécifique, à la fois avec l’API et dans l’interface utilisateur de Weights & Biases.Analyser les scores d’un appel unique
API d’appel unique
Pour récupérer un appel unique, utilisez la méthodeget_call.
Interface d’un appel unique

Analyser les scores d’appels multiples
API d’appels multiples
Pour récupérer plusieurs appels, utilisez la méthodeget_calls.
Interface pour plusieurs appels

Analyser tous les appels évalués par un évaluateur spécifique
API de tous les appels par évaluateur
Pour récupérer tous les appels évalués par un évaluateur spécifique, utilisez la méthodeget_calls.
Tous les appels par évaluateur dans l’interface utilisateur
Enfin, pour voir tous les appels évalués par un évaluateur, accédez à l’onglet Évaluateurs dans l’interface utilisateur, puis sélectionnez l’onglet Programmatic évaluateur. Cliquez sur votre évaluateur pour ouvrir sa page de détails.

