Collecter les feedbacks et utiliser les annotations
Recueillir et analyser les feedbacks pour les applications LLM via l’UI et le SDK
Évaluer des applications LLM nécessite des outils pour recueillir et analyser les feedbacks. W&B Weave fournit un système de feedback intégré, qui vous permet de donner votre avis sur les Appels directement dans l’UI ou par programmation via le SDK. Différents types de feedbacks sont pris en charge, notamment les réactions par emoji, les commentaires textuels et les données structurées, ce qui permet aux équipes de :
Créer des jeux de données d’évaluation pour le suivi des performances.
Identifier et résoudre les problèmes de contenu des LLM.
Recueillir des exemples pour des tâches avancées comme le fine-tuning.
Ce guide s’adresse aux développeurs et aux réviseurs qui travaillent avec des applications LLM dans Weave. Il explique comment utiliser la fonctionnalité de feedback de Weave dans l’UI et le SDK, interroger et gérer les feedbacks, et utiliser des annotations humaines pour des évaluations détaillées.
Les sections suivantes expliquent comment fournir du feedback dans l’interface Weave, soit depuis le panneau des détails de l’appel, soit à l’aide des icônes de feedback.
Dans la barre latérale du projet Weave, accédez à Traces.
Repérez la ligne correspondant à l’Appel auquel vous souhaitez ajouter un feedback.
Cliquez sur le nom de la trace associé pour ouvrir l’arborescence de trace et le panneau des détails de l’appel.
Dans la barre d’onglets des détails de l’appel, sélectionnez Feedback.
Ajoutez, affichez ou supprimez des feedbacks :
Ajoutez et affichez des feedbacks à l’aide des icônes situées dans l’angle supérieur droit de la vue Feedback des détails de l’appel.
Affichez et supprimez des feedbacks depuis le tableau Feedback des détails de l’appel. Supprimez un feedback en cliquant sur l’icône de corbeille dans la colonne la plus à droite de la ligne de feedback concernée.
Vous pouvez ajouter ou supprimer une réaction, et ajouter une note à l’aide des icônes situées à la fois dans le tableau Traces et dans chaque panneau des détails de l’appel.
Tableau Traces : dans la colonne Feedback de la ligne correspondante du tableau Traces.
Panneau des détails de l’appel : dans le coin supérieur droit de chaque panneau des détails de l’appel.
Pour ajouter une réaction :
Cliquez sur l’icône emoji.
Ajoutez un pouce levé, un pouce baissé ou cliquez sur l’icône + pour afficher plus d’emojis.
Pour supprimer une réaction :
Survolez la réaction emoji que vous souhaitez supprimer.
Utilisez le SDK si vous souhaitez automatiser la collecte des feedbacks ou l’intégrer dans des pipelines d’évaluation, plutôt que de saisir les feedbacks manuellement dans l’UI.Vous trouverez des exemples d’utilisation du SDK pour les feedbacks dans l’UI, sous l’onglet Use du panneau des détails de l’appel.Vous pouvez utiliser le SDK Python de Weave pour ajouter, supprimer et interroger les feedbacks sur les appels par programmation. Le SDK TypeScript ne prend pas en charge les feedbacks.
Vous pouvez interroger le feedback de votre projet Weave à l’aide du SDK. Le SDK prend en charge les opérations de requête de feedback suivantes :
client.get_feedback() : Renvoie tout le feedback d’un projet.
client.get_feedback("[FEEDBACK-UUID]") : Renvoie un objet feedback spécifique indiqué par [FEEDBACK-UUID] sous forme de collection.
client.get_feedback(reaction="[REACTION-TYPE]") : Renvoie tous les objets feedback pour un type de réaction spécifique.
Vous pouvez également obtenir plus d’informations sur chaque objet feedback dans client.get_feedback() :
id : l’ID de l’objet feedback.
created_at : les informations de date de création de l’objet feedback.
feedback_type : le type de feedback (réaction, note, personnalisé).
payload : la charge utile du feedback.
Python
TypeScript
import weaveclient = weave.init('intro-example')# Obtenir tout le feedback dans un projetall_feedback = client.get_feedback()# Récupérer un objet feedback spécifique par ID.# L'API renvoie une collection, qui ne doit contenir au plus qu'un seul élément.one_feedback = client.get_feedback("[FEEDBACK-UUID]")[0]# Trouver tous les objets feedback avec une réaction spécifique. Vous pouvez spécifier offset et limit.thumbs_up = client.get_feedback(reaction="👍", limit=10)# Après la récupération, afficher les détails de chaque objet feedback.for f in client.get_feedback(): print(f.id) print(f.created_at) print(f.feedback_type) print(f.payload)
Cette fonctionnalité n’est pas encore disponible en TypeScript.
Vous pouvez ajouter du feedback à un Appel à l’aide de l’UUID de l’Appel. Pour utiliser l’UUID afin d’obtenir un Appel précis, récupérez-le pendant ou après l’exécution de l’Appel. Le SDK prend en charge les opérations suivantes pour ajouter du feedback à un Appel :
call.feedback.add_reaction("[REACTION-TYPE]"): ajoute l’une des valeurs [REACTION-TYPE] prises en charge (émojis), par exemple 👍.
call.feedback.add_note("[NOTE]"): ajoute une note.
call.feedback.add("[LABEL]", [OBJECT]): ajoute un [OBJECT] de feedback personnalisé spécifié par [LABEL].
Le nombre maximal de caractères dans une note de feedback est de 1024. Si une note dépasse cette limite, Weave ne la crée pas.
Python
TypeScript
import weaveclient = weave.init('intro-example')call = client.get_call("[CALL-UUID]")# Ajout d’une réaction emojicall.feedback.add_reaction("👍")# Ajout d’une notecall.feedback.add_note("this is a note")# Ajout de paires clé/valeur personnalisées.# Le premier argument est une chaîne "type" définie par l’utilisateur.# Le feedback doit être sérialisable en JSON et faire moins de 1 Ko une fois sérialisé.call.feedback.add("correctness", { "value": 5 })
Cette fonctionnalité n’est pas encore disponible en TypeScript.
Si vous devez ajouter un feedback immédiatement après un Appel, vous pouvez récupérer l’UUID de l’Appel par code pendant son exécution ou une fois l’Appel terminé.
Lors de l’exécution de l’Appel
Pour récupérer l’UUID lors de l’exécution de l’Appel, récupérez l’Appel en cours et renvoyez son ID.
Python
TypeScript
import weaveweave.init("uuid")@weave.op()def simple_operation(input_value): # Effectuer une opération simple output = f"Processed {input_value}" # Obtenir l’ID de l’appel en cours current_call = weave.require_current_call() call_id = current_call.id return output, call_id
Cette fonctionnalité n’est pas encore disponible en TypeScript.
Après l’exécution de l’Appel
Vous pouvez également utiliser la méthode call() pour exécuter l’opération et récupérer l’ID après l’exécution de l’Appel :
Python
TypeScript
import weaveweave.init("uuid")@weave.op()def simple_operation(input_value): return f"Processed {input_value}"# Exécuter l’opération et récupérer le résultat ainsi que l’ID de l’Appelresult, call = simple_operation.call("example input")call_id = call.id
Cette fonctionnalité n’est pas encore disponible en TypeScript.
Les annotations humaines vous permettent de capturer des jugements structurés, examinés par des humains, sur les appels afin que les réviseurs puissent évaluer la sortie du modèle selon vos propres critères.Les annotations humaines sont prises en charge dans Weave UI. Cette fonctionnalité vous permet de créer des champs personnalisés pour ajouter à vos traces des données saisies manuellement sous forme de feedback. Pour créer des annotations humaines, vous devez d’abord créer un évaluateur d’annotation humaine à l’aide de la UI ou de l’API. Vous pouvez ensuite utiliser l’évaluateur dans la UI pour créer des annotations, puis modifier vos évaluateurs d’annotation à l’aide de l’API.
Créer un évaluateur d’annotation humaine dans l’interface utilisateur
Pour créer un évaluateur d’annotation humaine dans l’interface utilisateur, procédez comme suit :
Dans la barre latérale du projet, accédez à Assets.
Dans le panneau de navigation Assets, cliquez sur Scorers.
Dans l’en-tête du panneau Scorers, cliquez sur New scorer.
Dans la boîte de dialogue modale Create Scorer, définissez :
Scorer type sur Human annotation
Name
Description
Type, qui détermine le type de feedback à recueillir, par exemple boolean ou integer.
Cliquez sur Create scorer. Vous pouvez maintenant utiliser votre évaluateur pour effectuer des annotations.
Dans l’exemple suivant, un annotateur humain sélectionne le type de document chargé par le LLM. Le Type de la configuration du score est un enum qui contient les types de documents possibles.
Utiliser l’évaluateur d’annotation humaine dans l’interface utilisateur
Après avoir créé un évaluateur d’annotation humaine, vous pouvez l’utiliser sur la page Traces.Pour utiliser l’évaluateur, procédez comme suit :
Dans la barre latérale du projet, accédez à Traces.
Repérez la ligne de l’Appel auquel vous souhaitez ajouter une annotation humaine.
Cliquez sur le nom de la trace pour ouvrir l’arborescence de trace et le panneau des détails de l’appel.
Dans l’angle supérieur droit de la barre d’onglets des détails de l’Appel, cliquez sur le bouton Show feedback.Vos évaluateurs d’annotation humaine disponibles s’affichent dans un panneau Annotate.
Ajoutez une annotation.
Cliquez sur Save.
Dans la barre d’onglets du panneau des détails de l’Appel, cliquez sur l’onglet Feedback pour afficher le tableau Feedback. La nouvelle annotation apparaît dans le tableau. Vous pouvez également voir les annotations dans la colonne Annotations du tableau principal Traces.
Actualisez le tableau Traces pour afficher les informations les plus récentes.
Créer un évaluateur d’annotation humaine à l’aide de l’API
Vous pouvez également créer des évaluateurs d’annotation humaine via l’API. Chaque évaluateur est un objet distinct, que vous créez et mettez à jour indépendamment. Pour créer un évaluateur d’annotation humaine par programmation, procédez comme suit :
Importez la classe AnnotationSpec depuis weave.flow.annotation_spec.
Utilisez la méthode publish de weave pour créer l’évaluateur.
L’exemple suivant crée deux évaluateurs. Le premier évaluateur, Temperature, attribue un score à la température perçue de l’Appel LLM. Le second évaluateur, Tone, attribue un score au ton de la Réponse du LLM. Chaque évaluateur utilise save avec un ID d’objet associé (temperature-scorer et tone-scorer).
Python
TypeScript
import weavefrom weave.flow.annotation_spec import AnnotationSpecclient = weave.init("feedback-example")spec1 = AnnotationSpec( name="Temperature", description="The perceived temperature of the llm call", field_schema={ "type": "number", "minimum": -1, "maximum": 1, })spec2 = AnnotationSpec( name="Tone", description="The tone of the llm response", field_schema={ "type": "string", "enum": ["Aggressive", "Neutral", "Polite", "N/A"], },)weave.publish(spec1, "temperature-scorer")weave.publish(spec2, "tone-scorer")
Cette fonctionnalité n’est pas encore disponible en TypeScript.
Modifier un évaluateur d’annotation humaine via l’API
Dans la continuité de la création d’un évaluateur d’annotation humaine via l’API, l’exemple suivant crée une version mise à jour de l’évaluateur Temperature en utilisant l’ID d’objet original (temperature-scorer) lors de publish. Le résultat est un objet mis à jour, avec un historique de toutes les versions.
Vous pouvez consulter l’historique des objets d’évaluateur d’annotation humaine dans l’onglet Évaluateurs, sous Annotations humaines.
Python
TypeScript
import weavefrom weave.flow.annotation_spec import AnnotationSpecclient = weave.init("feedback-example")# créer une nouvelle version de l’évaluateurspec1 = AnnotationSpec( name="Temperature", description="La température perçue de l’appel LLM", field_schema={ "type": "integer", # <<- modifier le type en integer "minimum": -1, "maximum": 1, })weave.publish(spec1, "temperature-scorer")
Cette fonctionnalité n’est pas encore disponible en TypeScript.
Utiliser un évaluateur d’annotation humaine avec l’API
L’API de feedback vous permet d’utiliser un évaluateur d’annotation humaine en indiquant un nom au format spécifique et un champ annotation_ref. Vous pouvez obtenir l’annotation_spec_ref dans l’interface utilisateur en sélectionnant l’onglet approprié, ou lors de la création de l’AnnotationSpec.