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

# Collecter et suivre des datasets

> Organiser, collecter, suivre et versionner des exemples pour l’évaluation d’applications LLM

Les datasets Weave vous aident à organiser, collecter, suivre et versionner des exemples pour l’évaluation d’applications LLM et la comparaison côte à côte. Cette page vous montre comment créer des collections d’exemples réutilisables et versionnées que vous et les membres de votre équipe pouvez utiliser pour évaluer, faire évoluer et comparer le comportement des applications LLM au fil du temps. Vous pouvez créer des `Dataset` et interagir avec eux par programmation ou via l’interface utilisateur.

Cette page s’adresse aux ingénieurs et aux membres de l’équipe qui souhaitent gérer les données d’évaluation dans le code ou via l’interface Weave. Elle décrit :

* Les opérations de base sur les `Dataset` en Python et TypeScript, ainsi que la marche à suivre pour bien démarrer.
* Comment créer un `Dataset` en Python et TypeScript à partir d’objets tels que les [appels](../tracking/tracing) Weave.
* Les opérations disponibles sur un `Dataset` dans l’interface utilisateur.

<div id="dataset-quickstart">
  ## Démarrage rapide de Dataset
</div>

Les exemples de code suivants montrent comment effectuer les opérations de base sur `Dataset` avec Python et TypeScript. Avec les SDK, vous pouvez :

* Créer un `Dataset`
* Publier le `Dataset`
* Récupérer le `Dataset`
* Accéder à un exemple spécifique du `Dataset`

Sélectionnez un onglet pour voir le code spécifique à Python et à TypeScript.

<Tabs>
  <Tab title="Python">
    ```python lines theme={null}
    import weave
    from weave import Dataset
    # Initialiser Weave
    weave.init('intro-example')

    # Créer un dataset
    dataset = Dataset(
        name='grammar',
        rows=[
            {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
            {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
            {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
        ]
    )

    # Publier le dataset
    weave.publish(dataset)

    # Récupérer le dataset
    dataset_ref = weave.ref('grammar').get()

    # Accéder à un exemple spécifique
    example_label = dataset_ref.rows[2]['sentence']
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript twoslash lines theme={null}
    // @noErrors
    import * as weave from 'weave';

    // Initialiser Weave
    const client = await weave.init('intro-example');

    // Créer un dataset
    const dataset = new weave.Dataset({
        name: 'grammar',
        rows: [
            {id: '0', sentence: "He no likes ice cream.", correction: "He doesn't like ice cream."},
            {id: '1', sentence: "She goed to the store.", correction: "She went to the store."},
            {id: '2', sentence: "They plays video games all day.", correction: "They play video games all day."}
        ]
    });

    // Publier le dataset
    const ref = await dataset.save();

    // Récupérer le dataset
    const retrievedDataset = await client.get(ref);

    // Vous pouvez aussi le récupérer à l’aide d’une chaîne URI
    const datasetUri = 'weave:///my-entity/intro-example/object/grammar:abc123def456';
    const refFromUri = weave.ObjectRef.fromUri(datasetUri);
    const retrievedDatasetFromUri = await client.get(refFromUri);

    // Accéder à un exemple spécifique
    const exampleLabel = retrievedDataset.getRow(2).sentence;
    ```
  </Tab>
</Tabs>

<div id="create-a-dataset-from-other-objects">
  ## Créer un dataset à partir d'autres objets
</div>

Cette section montre comment créer un `Dataset` à partir de données que vous possédez déjà, comme des appels Weave enregistrés ou des données tabulaires existantes, afin que vous n'ayez pas à ressaisir manuellement les exemples.

<Tabs>
  <Tab title="Python">
    En Python, les `Dataset` peuvent également être créés à partir d'objets Weave courants comme les [appels](../tracking/tracing), ainsi que d'objets Python comme les `pandas.DataFrame`. Cette fonctionnalité est utile si vous souhaitez créer un `Dataset` d'exemple à partir d'exemples précis.

    ### Call Weave

    Pour créer un `Dataset` à partir d'un ou de plusieurs appels Weave, récupérez le ou les objets call, puis ajoutez-les à une liste dans la méthode `from_calls`.

    ```python lines theme={null}
    @weave.op
    def model(task: str) -> str:
        return f"Now working on {task}"

    res1, call1 = model.call(task="fetch")
    res2, call2 = model.call(task="parse")

    dataset = Dataset.from_calls([call1, call2])
    # Vous pouvez maintenant utiliser le dataset pour évaluer le modèle, etc.
    ```

    ### DataFrame Pandas

    Pour créer un `Dataset` à partir d'un objet Pandas `DataFrame`, utilisez la méthode `from_pandas`. Pour reconvertir le `Dataset`, utilisez `to_pandas`.

    ```python lines theme={null}
    import pandas as pd

    df = pd.DataFrame([
        {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
        {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
        {'id': '2', 'sentence': "They plays video games all day.", 'correction': "They play video games all day."}
    ])
    dataset = Dataset.from_pandas(df)
    df2 = dataset.to_pandas()

    assert df.equals(df2)
    ```

    ### Hugging Face Datasets

    Pour créer un `Dataset` à partir d'un objet Hugging Face `datasets.Dataset` ou `datasets.DatasetDict`, assurez-vous d'abord que les dépendances nécessaires sont installées :

    ```bash theme={null}
    pip install weave[huggingface]
    ```

    Ensuite, utilisez la méthode `from_hf`. Si vous fournissez un `DatasetDict` avec plusieurs splits (comme `train`, `test`, `validation`), Weave utilise automatiquement le split `train` et émet un avertissement. Si le split `train` n'est pas présent, Weave lève une erreur. Vous pouvez aussi fournir directement un split spécifique (par exemple, `hf_dataset_dict['test']`).

    Pour reconvertir un `weave.Dataset` en `Dataset` Hugging Face, utilisez la méthode `to_hf`.

    ```python lines theme={null}
    # Assurez-vous que datasets est installé : pip install datasets
    from datasets import Dataset as HFDataset, DatasetDict

    # Exemple avec HF Dataset
    hf_rows = [
        {'id': '0', 'sentence': "He no likes ice cream.", 'correction': "He doesn't like ice cream."},
        {'id': '1', 'sentence': "She goed to the store.", 'correction': "She went to the store."},
    ]
    hf_ds = HFDataset.from_list(hf_rows)
    weave_ds_from_hf = Dataset.from_hf(hf_ds)

    # Reconvertir en HF Dataset
    converted_hf_ds = weave_ds_from_hf.to_hf()

    # Exemple avec HF DatasetDict (utilise le split 'train' par défaut)
    hf_dict = DatasetDict({
        'train': HFDataset.from_list(hf_rows),
        'test': HFDataset.from_list([{'id': '2', 'sentence': "Test sentence", 'correction': "Test correction"}])
    })
    # Cela émet un avertissement et utilise le split 'train'
    weave_ds_from_dict = Dataset.from_hf(hf_dict)

    # Fournir un split spécifique
    weave_ds_from_test_split = Dataset.from_hf(hf_dict['test'])
    ```
  </Tab>

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

<div id="create-edit-and-delete-a-dataset-in-the-ui">
  ## Créer, modifier et supprimer un dataset dans l’interface utilisateur
</div>

Vous pouvez créer, modifier et supprimer des `Dataset` dans l’interface utilisateur. La création de datasets dans l’interface utilisateur Weave vous permet, ainsi qu’aux membres non techniques de votre équipe, de créer et de gérer des datasets partageables contenant des exemples, des questions et d’autres données de test pour les agents, sans modifier le code.

Les procédures suivantes vous guident dans chacune de ces tâches dans l’interface utilisateur. Utilisez-les lorsque vous souhaitez gérer les données d’évaluation avec les traces dont elles sont issues, plutôt qu’à partir d’un notebook ou d’un script.

<div id="create-a-new-dataset">
  ### Créer un nouveau dataset
</div>

La procédure suivante crée un nouveau `Dataset` à partir d’un ou de plusieurs appels existants dans votre projet Weave. Une fois l’opération terminée, vous disposez d’un `Dataset` publié que vous pouvez référencer dans des évaluations et partager avec votre équipe.

1. Accédez au projet Weave que vous souhaitez modifier.

2. Dans la barre latérale, sélectionnez **Traces**.

3. Sélectionnez un ou plusieurs appel pour lesquels vous souhaitez créer un nouveau `Dataset`.

4. Dans le menu en haut à droite, cliquez sur l’icône **Ajouter les lignes sélectionnées à un dataset** (située à côté de l’icône de corbeille).

5. Dans la liste déroulante **Choisir un dataset**, sélectionnez **Créer nouveau**. Le champ **Nom du dataset** s’affiche.

6. Dans le champ **Nom du dataset**, saisissez un nom pour votre jeu de données. Les options **Configurer les champs du dataset** s’affichent.

   <Note>
     Les noms de dataset doivent commencer par une lettre ou un chiffre et ne peuvent contenir que des lettres, des chiffres, des traits d’union et des traits de soulignement.
   </Note>

7. (Facultatif) Dans **Configurer les champs du dataset**, sélectionnez les champs de vos appel à inclure dans le dataset.
   * Vous pouvez personnaliser les noms de colonnes pour chaque champ sélectionné.
   * Vous pouvez sélectionner un sous-ensemble de champs à inclure dans le nouveau `Dataset`, ou désélectionner tous les champs.

8. Une fois les champs du dataset configurés, cliquez sur **Suivant**. Un aperçu de votre nouveau `Dataset` s’affiche.

9. (Facultatif) Cliquez sur l’un des champs modifiables de votre **Dataset** pour modifier l’entrée.

10. Cliquez sur **Créer le dataset**. Weave crée votre nouveau jeu de données.

11. Dans la fenêtre contextuelle de confirmation, cliquez sur **Voir le dataset** pour afficher le nouveau `Dataset`. Vous pouvez aussi accéder à l’onglet **Datasets**.

<div id="edit-a-dataset">
  ### Modifier un dataset
</div>

Utilisez la procédure suivante pour ajouter de nouvelles lignes à un `Dataset` existant et publier une nouvelle version. La modification dans l’interface utilisateur est utile lorsque vous souhaitez étendre ou corriger des données d’évaluation sans modifier le code.

1. Accédez au projet Weave contenant le `Dataset` que vous souhaitez modifier.

2. Dans la barre latérale, sélectionnez **Datasets**. Les `Dataset`s disponibles s’affichent.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=c011e3f981712ffdb9e7b3c8b62b6747" alt="UI de Dataset" width="277" height="395" data-path="weave/guides/core-types/imgs/datasetui.png" />

3. Dans la colonne **Object**, cliquez sur le nom et la version du `Dataset` que vous souhaitez modifier. Une fenêtre modale détachable s’ouvre et affiche des informations sur le `Dataset`, notamment son nom, sa version, son auteur et ses lignes.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=19ad98ae1a82a808f6ce1a5812213062" alt="Afficher les informations du Dataset" width="341" height="306" data-path="weave/guides/core-types/imgs/datasetui-popout.png" />

4. Dans l’angle supérieur droit de la fenêtre modale, cliquez sur le bouton **Edit dataset** (l’icône en forme de crayon). Un bouton **+ Add row** s’affiche en bas de la fenêtre modale.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=8c58692bb63f9519592de60e90ea689b" alt="UI de Dataset- Icône d’ajout de ligne" width="48" height="65" data-path="weave/guides/core-types/imgs/datasetui-popout-edit.png" />

5. Cliquez sur **+ Add row**. Une nouvelle ligne s’affiche au-dessus des lignes existantes de votre `Dataset`, indiquant que vous pouvez y ajouter une nouvelle ligne.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-green.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=718d02330b3b1f1a7dc8eb282dcc6ac2" alt="UI de Dataset" width="841" height="194" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-green.png" />

6. Pour ajouter des données à une nouvelle ligne, cliquez sur la colonne souhaitée dans cette ligne. Vous ne pouvez pas modifier la colonne **id** par défaut d’une ligne de `Dataset`, car Weave l’attribue automatiquement lors de la création. Une fenêtre modale d’édition s’affiche avec les options **Text**, **Code** et **Diff** pour la mise en forme.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-addcol.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=e07cd4d2e808662d74658afae8082f5a" alt="UI de Dataset - Ajouter des données à une colonne et les mettre en forme." width="243" height="233" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-addcol.png" />

7. Répétez l’étape 6 pour chaque colonne de la nouvelle ligne à laquelle vous souhaitez ajouter des données.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-colsadded.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=16154c3e8bb487e193de7f8ade3499db" alt="UI de Dataset - Ajouter des données à toutes les colonnes." width="853" height="194" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-colsadded.png" />

8. Répétez l’étape 5 pour chaque ligne que vous souhaitez ajouter au `Dataset`.

9. Une fois vos modifications terminées, publiez votre `Dataset` en cliquant sur **Publish** dans l’angle supérieur droit de la fenêtre modale. Si vous ne souhaitez pas publier vos modifications, cliquez sur **Cancel**.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-publish.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=654cedabe596f017448ae93cc527d17b" alt="UI de Dataset - Publier ou annuler." width="224" height="135" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-publish.png" />

   Une fois publiée, la nouvelle version du `Dataset`, avec les lignes mises à jour, est disponible dans l’UI.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-published-meta.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=f79f512ccf39735079c56b1daa790128" alt="UI de Dataset - Métadonnées publiées." width="560" height="137" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-published-meta.png" />

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-popout-edit-published-rows.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=7fac2d9b7665b77a931df37361ba8827" alt="UI de Dataset - Lignes publiées." width="838" height="219" data-path="weave/guides/core-types/imgs/datasetui-popout-edit-published-rows.png" />

<div id="delete-a-dataset">
  ### Supprimer un dataset
</div>

Suivez la procédure ci-dessous lorsque vous souhaitez supprimer de votre projet Weave un `Dataset` dont vous n’avez plus besoin.

1. Accédez au projet Weave contenant le `Dataset` que vous souhaitez modifier.

2. Dans la barre latérale, sélectionnez **Datasets**. Les `Dataset`s disponibles s’affichent.

3. Dans la colonne **Object**, cliquez sur le nom et la version du `Dataset` que vous souhaitez supprimer. Une fenêtre modale détachable s’ouvre et affiche des informations sur le `Dataset`, comme son nom, sa version, son auteur et ses lignes.

4. Dans l’angle supérieur droit de la fenêtre modale, cliquez sur l’icône de corbeille.

   Une fenêtre modale s’affiche pour vous demander de confirmer la suppression du `Dataset`.

   <img src="https://mintcdn.com/wb-21fd5541/6UHHO9Wn0FEtNKHz/weave/guides/core-types/imgs/datasetui-delete-modal.png?fit=max&auto=format&n=6UHHO9Wn0FEtNKHz&q=85&s=c1e87d12b76131cf9c0fa524e8ce9d56" alt="Dataset UI - Fenêtre modale de confirmation de suppression." width="560" height="358" data-path="weave/guides/core-types/imgs/datasetui-delete-modal.png" />

5. Dans la fenêtre modale, cliquez sur **Supprimer** pour supprimer le `Dataset`. Vous pouvez également cliquer sur **Annuler** si vous ne souhaitez pas supprimer le `Dataset`.

   Le `Dataset` est supprimé et n’est plus visible dans l’onglet **Datasets** de votre tableau de bord Weave.

<div id="add-a-new-agent-trace-to-a-dataset">
  ### Ajouter une nouvelle trace d’agent à un dataset
</div>

Pour ajouter des traces d’agent, comme des sessions, des tours de conversation et des appels d’outil, à un `Dataset` :

1. Accédez à [wandb.ai](http://wandb.ai) et sélectionnez votre projet.

2. Dans la barre latérale du projet Weave, cliquez sur **Agents**.

3. Dans la barre d’onglets supérieure, cliquez sur **Conversations**.

4. Dans le tableau **Conversations**, sélectionnez une ligne de conversation pour afficher le panneau latéral des détails de la conversation. Ce panneau comporte un en-tête avec le nom de l’agent et un UUID.

5. Dans l’en-tête du panneau latéral des détails de la conversation, cliquez sur l’icône de tableau à droite pour ouvrir le volet latéral **Add example to dataset**.

   <img src="https://mintcdn.com/wb-21fd5541/stpB5jBgBeVCTLoH/weave/guides/core-types/imgs/agent-conversation-details-header-add-dataset.png?fit=max&auto=format&n=stpB5jBgBeVCTLoH&q=85&s=fa403f715d9b64a81fa66c278b64279b" alt="En-tête du panneau des détails de la conversation de l’agent montrant l’icône de tableau pour ajouter des éléments à un dataset." width="1265" height="114" data-path="weave/guides/core-types/imgs/agent-conversation-details-header-add-dataset.png" />

6. Dans **Choisir un dataset**, utilisez la liste déroulante pour choisir le dataset auquel vous souhaitez ajouter des traces.

7. Dans **Select context**, sélectionnez les messages à ajouter au dataset. Cliquez sur **Next**.

8. Vérifiez vos sélections, puis cliquez sur **Add to dataset**.

<div id="add-a-new-trace-to-a-dataset">
  ### Ajouter une nouvelle trace à un dataset
</div>

Pour ajouter à un `Dataset` des traces générées à partir d’opérations et d’appels :

1. Accédez au projet Weave que vous souhaitez modifier.

2. Dans la barre latérale, sélectionnez **Traces**.

3. Sélectionnez un ou plusieurs appels avec `Datasets` pour lesquels vous souhaitez créer de nouveaux exemples.

4. Dans le menu en haut à droite, cliquez sur l’icône **Ajouter les lignes sélectionnées à un dataset** (située à côté de l’icône de corbeille). Si vous le souhaitez, désactivez **Show latest versions** pour afficher toutes les versions de tous les jeux de données disponibles.

5. Dans le menu déroulant **Choisir un dataset**, sélectionnez le `Dataset` auquel vous souhaitez ajouter des exemples. Les options **Configure field mapping** s’affichent.

6. Facultatif : dans **Configure field mapping**, vous pouvez ajuster le mappage des champs de vos appels vers les colonnes correspondantes du jeu de données.

7. Une fois le mappage des champs configuré, cliquez sur **Next**. Un aperçu de votre nouveau `Dataset` s’affiche.

8. Dans la ligne vide (verte), ajoutez les valeurs de votre nouvel exemple. Le champ **id** n’est pas modifiable et Weave le crée automatiquement.

9. Cliquez sur **Add to dataset**. Pour revenir à l’écran **Configure field mapping**, cliquez sur **Back**.

10. Dans la fenêtre contextuelle de confirmation, cliquez sur **Voir le dataset** pour voir les modifications. Vous pouvez aussi accéder à l’onglet **Datasets** pour voir les mises à jour apportées à votre `Dataset`.

<div id="other-dataset-operations">
  ## Autres opérations sur les datasets
</div>

Cette section présente des opérations SDK supplémentaires utiles lorsque vous disposez déjà d’un `Dataset`.

<Tabs>
  <Tab title="Python">
    ### Sélection de lignes

    Vous pouvez sélectionner des lignes spécifiques d’un `Dataset` par leur index à l’aide de la méthode `select`. C’est utile pour créer des sous-ensembles de vos données, par exemple lorsque vous souhaitez évaluer sur un sous-ensemble plus restreint d’exemples.

    ```python lines theme={null}
    import weave
    from weave import Dataset

    # Créer un jeu de données d’exemple
    dataset = Dataset(rows=[
        {'col_a': 1, 'col_b': 'x'},
        {'col_a': 2, 'col_b': 'y'},
        {'col_a': 3, 'col_b': 'z'},
        {'col_a': 4, 'col_b': 'w'},
    ])

    # Sélectionner les lignes d’index 0 et 2
    subset_dataset = dataset.select([0, 2])

    # subset_dataset contient maintenant uniquement la première et la troisième ligne
    # print(list(subset_dataset))
    # Sortie : [{'col_a': 1, 'col_b': 'x'}, {'col_a': 3, 'col_b': 'z'}]
    ```
  </Tab>

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