> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recueillir du feedback et utiliser des annotations

> Recueillir et analyser le feedback sur les applications LLM via l’interface utilisateur et le SDK

L’évaluation des applications LLM nécessite des outils permettant de recueillir et d’analyser le feedback. W\&B Weave propose un système de feedback intégré qui vous permet de fournir du feedback sur les appels directement dans l’interface utilisateur, ou par programmation via le SDK. Weave prend en charge plusieurs types de feedback, notamment les réactions emoji, les commentaires textuels et les données structurées, afin que votre équipe puisse :

* Constituer des jeux de données d’évaluation pour le monitoring des performances.
* Identifier et résoudre les problèmes liés au contenu généré par les LLM.
* Rassembler des exemples pour des tâches avancées comme le fine-tuning.

Ce guide s’adresse aux développeurs et aux relecteurs qui travaillent sur des applications LLM dans Weave. Il explique comment utiliser les fonctionnalités de feedback de Weave dans l’interface utilisateur et dans le SDK, comment interroger et gérer le feedback, et comment utiliser les annotations humaines pour des évaluations approfondies.

* [Fournir du feedback dans l’interface utilisateur](#provide-feedback-in-the-ui)
* [Fournir du feedback via le SDK](#provide-feedback-through-the-sdk)
* [Ajouter des annotations humaines](#add-human-annotations)

<h2 id="provide-feedback-in-the-ui">
  Fournir du feedback dans l’interface utilisateur
</h2>

Les sections suivantes expliquent comment fournir du feedback dans l’interface utilisateur de Weights & Biases, soit depuis le panneau des détails de l’appel, soit à l’aide des icônes de feedback.

<h3 id="use-the-call-details-panel">
  Utiliser le panneau des détails de l’appel
</h3>

1. Dans la barre latérale du projet Weave, accédez à **Traces**.
2. Trouvez la ligne correspondant à l’appel auquel vous souhaitez ajouter du feedback.
3. Cliquez sur le lien portant le nom de la trace pour ouvrir l’arborescence de trace et le panneau des détails de l’appel.
4. Dans la barre d’onglets des détails de l’appel, sélectionnez **Feedback**.
5. Ajoutez, affichez ou supprimez du feedback :
   * *Ajoutez et affichez du feedback à l’aide des icônes* situées dans le coin supérieur droit de la vue Feedback des détails de l’appel.
   * *Affichez et supprimez du feedback depuis le tableau Feedback des détails de l’appel.* Pour supprimer un feedback, cliquez sur l’icône de corbeille dans la dernière colonne à droite de la ligne de feedback concernée.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/feedback_tab.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=50b49b6e6e2614b182b1a33775754175" alt="Onglet Feedback dans les détails de l’appel" width="1266" height="548" data-path="products/wandb/weave/_media/feedback_tab.png" />
</Frame>

<h3 id="use-the-feedback-icons">
  Utiliser les icônes de feedback
</h3>

Vous pouvez ajouter ou supprimer une réaction, ainsi qu’ajouter une note, à l’aide des icônes situées à la fois dans le tableau des traces et dans le panneau des détails de chaque appel.

* *Tableau des traces* : dans la colonne **Feedback** de la ligne concernée 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 :

1. Cliquez sur l’icône emoji.
2. Ajoutez un pouce levé ou un pouce baissé, ou cliquez sur l’icône **+** pour afficher d’autres emojis.

Pour supprimer une réaction :

1. Survolez la réaction emoji à supprimer.
2. Cliquez sur la réaction pour la supprimer.

> Vous pouvez également supprimer un feedback depuis la [colonne **Feedback** du panneau des détails de l’appel](#use-the-call-details-panel).

Pour ajouter un commentaire :

1. Cliquez sur l’icône en forme de bulle de commentaire.
2. Saisissez votre note dans la zone de texte. Une note de feedback peut contenir au maximum 1 024 caractères.
3. Pour enregistrer la note, appuyez sur la touche **Enter**. Vous pouvez ajouter d’autres notes.

<Warning>
  Une note de feedback peut contenir au maximum 1 024 caractères. Si une note dépasse cette limite, Weave ne la crée pas.
</Warning>

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/feedback_calls.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=ab4006b5d636f9e87db1edc7a80fd1ab" alt="Grille des appels avec la colonne de feedback" width="3056" height="1589" data-path="products/wandb/weave/_media/feedback_calls.png" />
</Frame>

<h2 id="provide-feedback-through-the-sdk">
  Fournir du feedback via le SDK
</h2>

Utilisez le SDK pour automatiser la collecte de feedback ou l’intégrer à des pipelines d’évaluation, plutôt que de saisir le feedback manuellement dans l’interface utilisateur.

Vous trouverez des exemples d’utilisation du SDK pour le feedback dans l’interface utilisateur, sous l’onglet **Use** du panneau des détails de l’appel.

Le SDK Python de Weave vous permet d’[ajouter](/fr/products/wandb/weave/reference/python-sdk/trace/feedback#method-add), de [supprimer](/fr/products/wandb/weave/reference/python-sdk/trace/feedback#method-purge) et d’[interroger le feedback](/fr/products/wandb/weave/reference/python-sdk/trace/weave_client#method-get_feedback) des appels par programmation. Le SDK TypeScript ne prend pas en charge le feedback.

<h3 id="query-a-projects-feedback">
  Interroger le feedback d’un projet
</h3>

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 l’ensemble du feedback d’un projet.
* `client.get_feedback("[FEEDBACK-UUID]")` : renvoie, sous forme de collection, l’objet de feedback désigné par `[FEEDBACK-UUID]`.
* `client.get_feedback(reaction="[REACTION-TYPE]")` : renvoie tous les objets de feedback correspondant à un type de réaction donné.

Vous pouvez également obtenir des informations supplémentaires sur chaque objet de feedback renvoyé par `client.get_feedback()` :

* `id` : l’ID de l’objet de feedback.
* `created_at` : la date de création de l’objet de feedback.
* `feedback_type` : le type de feedback (réaction, note, personnalisé).
* `payload` : la charge utile du feedback.

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave
    client = weave.init('intro-example')

    # Obtenir l'ensemble du feedback d'un projet
    all_feedback = client.get_feedback()

    # Récupérer un objet de feedback précis à partir de son id.
    # L'API renvoie une collection, qui doit contenir au plus un élément.
    one_feedback = client.get_feedback("[FEEDBACK-UUID]")[0]

    # Trouver tous les objets de feedback ayant une réaction donnée. Vous pouvez spécifier offset et limit.
    thumbs_up = client.get_feedback(reaction="👍", limit=10)

    # Une fois les objets récupérés, afficher les détails de chaque objet de feedback.
    for f in client.get_feedback():
        print(f.id)
        print(f.created_at)
        print(f.feedback_type)
        print(f.payload)
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    Cette fonctionnalité n'est pas encore disponible en TypeScript.
    ```
  </Tab>
</Tabs>

<h3 id="add-feedback-to-a-call">
  Ajouter du feedback à un Appel
</h3>

Vous pouvez ajouter du feedback à un Appel à l’aide de son UUID. Pour obtenir un Appel précis à partir de son UUID, [récupérez celui-ci pendant ou après l’exécution de l’Appel](#retrieve-the-call-uuid). 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 (emojis), comme 👍.
* `call.feedback.add_note("[NOTE]")` : ajoute une note.
* `call.feedback.add("[LABEL]", [OBJECT])` : ajoute un `[OBJECT]` de feedback personnalisé identifié par `[LABEL]`.

<Warning>
  Une note de feedback ne peut pas dépasser 1 024 caractères. Si une note dépasse cette limite, Weave ne la crée pas.
</Warning>

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave
    client = weave.init('intro-example')

    call = client.get_call("[CALL-UUID]")

    # Ajout d’une réaction emoji
    call.feedback.add_reaction("👍")

    # Ajout d’une note
    call.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 peser moins de 1 Ko une fois sérialisé.
    call.feedback.add("correctness", { "value": 5 })
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    Cette fonctionnalité n’est pas encore disponible en TypeScript.
    ```
  </Tab>
</Tabs>

<h4 id="retrieve-the-call-uuid">
  Récupérer l’UUID de l’Appel
</h4>

Si vous devez ajouter du feedback juste après un Appel, vous pouvez récupérer l’UUID de l’Appel par programmation, pendant ou après son exécution.

<h5 id="during-call-execution">
  Pendant l’exécution de l’appel
</h5>

Pour récupérer l’UUID pendant l’exécution de l’appel, obtenez l’appel en cours, puis renvoyez son ID.

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}

    import weave
    weave.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
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    Cette fonctionnalité n'est pas encore disponible en TypeScript.
    ```
  </Tab>
</Tabs>

<h5 id="after-call-execution">
  Après l’exécution de l’appel
</h5>

Vous pouvez également utiliser la méthode `call()` pour exécuter l’opération et récupérer l’ID une fois l’appel exécuté :

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave
    weave.init("uuid")

    @weave.op()
    def simple_operation(input_value):
        return f"Processed {input_value}"

    # Exécuter l'opération, puis récupérer le résultat et l'ID de l'appel
    result, call = simple_operation.call("example input")
    call_id = call.id
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    Cette fonctionnalité n'est pas encore disponible en TypeScript.
    ```
  </Tab>
</Tabs>

<h3 id="delete-feedback-from-a-call">
  Supprimer le feedback d’un Appel
</h3>

Vous pouvez supprimer le feedback d’un appel donné en spécifiant son UUID.

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    call.feedback.purge("[FEEDBACK-UUID]")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    Cette fonctionnalité n’est pas encore disponible en TypeScript.
    ```
  </Tab>
</Tabs>

<h2 id="add-human-annotations">
  Ajouter des annotations humaines
</h2>

Les annotations humaines vous permettent de capturer des jugements structurés et vérifié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 l’interface utilisateur de Weights & Biases. 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 réaliser des annotations humaines, vous devez d’abord créer un évaluateur d’annotation humaine, soit [dans l’interface utilisateur](#create-a-human-annotation-scorer-in-the-ui), soit [à l’aide de l’API](#create-a-human-annotation-scorer-using-the-api). Vous pouvez ensuite [utiliser l’évaluateur dans l’interface utilisateur pour réaliser des annotations](#use-the-human-annotation-scorer-in-the-ui) et [modifier vos évaluateurs d’annotation à l’aide de l’API](#modify-a-human-annotation-scorer-using-the-api).

<h3 id="create-a-human-annotation-scorer-in-the-ui">
  Créer un évaluateur d’annotation humaine dans l’interface utilisateur
</h3>

Pour créer un évaluateur d’annotation humaine dans l’interface utilisateur, procédez comme suit :

1. Dans la barre latérale du projet, accédez à **Assets**.
2. Dans le panneau de navigation Assets, cliquez sur **Scorers**.
3. Dans l’en-tête du panneau **Scorers**, cliquez sur **New scorer**.
4. Dans la boîte de dialogue modale **Create Scorer**, renseignez les champs suivants :
   * `Scorer type` : `Human annotation`
   * `Name`
   * `Description`
   * `Type`, qui détermine le type de feedback à recueillir, par exemple `boolean` ou `integer`.
5. Cliquez sur **Create scorer**. Vous pouvez désormais utiliser votre évaluateur pour créer des annotations.

Dans l’exemple suivant, un annotateur humain indique 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.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/human-annotation-scorer-form.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=7d38f47385bd21b407caf5a959b1a7e9" alt="Boîte de dialogue modale Create Scorer" width="3342" height="1862" data-path="products/wandb/weave/_media/human-annotation-scorer-form.png" />
</Frame>

<h3 id="use-the-human-annotation-scorer-in-the-ui">
  Utiliser l’évaluateur d’annotation humaine dans l’interface utilisateur
</h3>

Une fois que vous avez créé un évaluateur d’annotation humaine, vous pouvez l’utiliser sur la page Traces.

Pour utiliser l’évaluateur, procédez comme suit :

1. Dans la barre latérale du projet, accédez à **Traces**.

2. Repérez la ligne de l’appel auquel vous souhaitez ajouter une annotation humaine.

3. Cliquez sur le lien portant le nom de la trace pour ouvrir l’arborescence de trace et le panneau des détails de l’appel.

4. Dans le coin supérieur droit de la barre d’onglets des détails de l’appel, cliquez sur le bouton **Show feedback**.

   <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/marker-icon.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=aafc9db6195967a8ec0acfe214fd5044" alt="Icône de marqueur dans l’en-tête de l’appel" width="306" height="84" data-path="products/wandb/weave/_media/marker-icon.png" />

   Les évaluateurs d’annotation humaine disponibles s’affichent dans un panneau **Annotate**.

   <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/full-feedback-sidebar.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=ba9ef22e7d49bd57e0a087b7dcbd05f0" alt="Panneau de feedback de l’évaluateur d’annotation humaine" width="3342" height="1862" data-path="products/wandb/weave/_media/full-feedback-sidebar.png" />

5. Saisissez votre annotation.

6. Cliquez sur **Save**.

7. 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 y apparaît. Vous pouvez également consulter les annotations dans la colonne **Annotations** du tableau Traces principal.

   > Actualisez le tableau Traces pour afficher les informations les plus récentes.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/feedback-in-the-table.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=6118c46e60c28bc3117179d9d44b49fa" alt="Feedback de l’évaluateur d’annotation humaine dans le tableau Traces" width="3342" height="1569" data-path="products/wandb/weave/_media/feedback-in-the-table.png" />
</Frame>

<h3 id="create-a-human-annotation-scorer-using-the-api">
  Créer un évaluateur d’annotation humaine à l’aide de l’API
</h3>

Vous pouvez également créer des évaluateurs d’annotation humaine via l’API. Chaque évaluateur est un objet à part entière, que vous créez et mettez à jour séparément. Pour créer un évaluateur d’annotation humaine par programmation, procédez comme suit :

1. Importez la classe `AnnotationSpec` depuis `weave.flow.annotation_spec`.
2. Utilisez la méthode `publish` de `weave` pour créer l’évaluateur.

L’exemple suivant crée deux évaluateurs. Le premier, `Temperature`, évalue la température perçue de l’appel LLM. Le second, `Tone`, évalue le ton de la réponse du LLM. Chaque évaluateur est enregistré (`save`) avec un ID d’objet associé (`temperature-scorer` et `tone-scorer`).

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave
    from weave.flow.annotation_spec import AnnotationSpec

    client = 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")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    Cette fonctionnalité n’est pas encore disponible en TypeScript.
    ```
  </Tab>
</Tabs>

<h3 id="modify-a-human-annotation-scorer-using-the-api">
  Modifier un évaluateur d’annotation humaine à l’aide de l’API
</h3>

Dans le prolongement de la section [Créer un évaluateur d’annotation humaine à l’aide de l’API](#create-a-human-annotation-scorer-using-the-api), l’exemple suivant crée une nouvelle version de l’évaluateur `Temperature` en réutilisant l’ID d’objet d’origine (`temperature-scorer`) lors de l’appel à `publish`. Vous obtenez ainsi un objet mis à jour, accompagné de l’historique de toutes ses versions.

> Vous pouvez consulter l’historique des objets d’évaluateur d’annotation humaine dans l’onglet **Scorers**, sous **Human annotations**.

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave
    from weave.flow.annotation_spec import AnnotationSpec

    client = weave.init("feedback-example")

    # créer une nouvelle version de l'évaluateur
    spec1 = AnnotationSpec(
      name="Temperature",
      description="The perceived temperature of the llm call",
      field_schema={
        "type": "integer",  # <<- remplacer le type par integer
        "minimum": -1,
        "maximum": 1,
      }
    )
    weave.publish(spec1, "temperature-scorer")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```plaintext theme={"system"}
    Cette fonctionnalité n'est pas encore disponible en TypeScript.
    ```
  </Tab>
</Tabs>

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/human-annotation-scorer-history.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=98b79764fd87597de1bde43f086def64" alt="Historique de l’évaluateur d’annotation humaine" width="2574" height="1434" data-path="products/wandb/weave/_media/human-annotation-scorer-history.png" />
</Frame>

<h3 id="use-a-human-annotation-scorer-using-the-api">
  Utiliser un évaluateur d’annotation humaine à l’aide de l’API
</h3>

L’API de feedback vous permet d’utiliser un évaluateur d’annotation humaine en spécifiant un nom construit selon un format particulier ainsi qu’un champ `annotation_ref`. Vous pouvez obtenir la valeur `annotation_spec_ref` depuis l’interface utilisateur en sélectionnant l’onglet correspondant, ou lors de la création de l’`AnnotationSpec`.

<Tabs>
  <Tab title="Python">
    ```python lines theme={"system"}
    import weave

    client = weave.init("feedback-example")

    call = client.get_call("[CALL-ID]")
    annotation_spec = weave.ref("[ANNOTATION-SPEC-REF-URI]")

    call.feedback.add(
      feedback_type="wandb.annotation." + annotation_spec.name,
      payload={"value": 1},
      annotation_ref=annotation_spec.uri(),
    )
    ```
  </Tab>
</Tabs>


## Related topics

- [Configurer des files d’annotation](/fr/products/wandb/weave/guides/tracking/annotation-queues.md)
