Passer au contenu principal
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 Weave.
  • Les opérations disponibles sur un Dataset dans l’interface utilisateur.

Démarrage rapide de Dataset

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.
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']

Créer un dataset à partir d’autres objets

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.
En Python, les Dataset peuvent également être créés à partir d’objets Weave courants comme les appels, 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.
@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.
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 :
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.
# 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'])

Créer, modifier et supprimer un dataset dans l’interface utilisateur

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.

Créer un nouveau dataset

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.
    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.
  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.

Modifier un dataset

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 Datasets disponibles s’affichent. UI de Dataset
  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. Afficher les informations du Dataset
  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. UI de Dataset- Icône d’ajout de ligne
  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. UI de Dataset
  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. UI de Dataset - Ajouter des données à une colonne et les mettre en forme.
  7. Répétez l’étape 6 pour chaque colonne de la nouvelle ligne à laquelle vous souhaitez ajouter des données. UI de Dataset - Ajouter des données à toutes les colonnes.
  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. UI de Dataset - Publier ou annuler. Une fois publiée, la nouvelle version du Dataset, avec les lignes mises à jour, est disponible dans l’UI. UI de Dataset - Métadonnées publiées. UI de Dataset - Lignes publiées.

Supprimer un dataset

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 Datasets 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. Dataset UI - Fenêtre modale de confirmation de suppression.
  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.

Ajouter une nouvelle trace d’agent à un dataset

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 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. 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.
  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.

Ajouter une nouvelle trace à un dataset

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.

Autres opérations sur les datasets

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

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.
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'}]