Passer au contenu principal
Cette page explique comment publier, récupérer, supprimer et référencer des objets versionnés dans W&B Weave. Utilisez-la lorsque vous devez suivre des données structurées telles que des jeux de données, des modèles ou des prompts d’un run à l’autre et au fil du temps.

Objets

Un objet désigne des données sérialisables et versionnées. Weave versionne automatiquement les objets à chaque modification et crée un historique immuable. Les objets comprennent :
  • Datasets : collections d’exemples pour l’évaluation
  • Models : configurations et paramètres pour la logique de votre LLM
  • Prompts : modèles de prompt versionnés
dataset = weave.Dataset(
    name="test-cases",
    rows=[
        {"input": "What is 2+2?", "expected": "4"},
        {"input": "What is the capital of France?", "expected": "Paris"},
    ]
)
weave.publish(dataset)

Publier un objet

La couche de sérialisation de Weave enregistre les objets et en gère les versions.
import weave
weave.init("your-team-name/your-project-name")
# Enregistrer une liste sous le nom 'cat-names'
weave.publish(['felix', 'jimbo', 'billie'], 'cat-names')
Lorsque vous enregistrez un objet sous un nom, Weave en crée la première version s’il n’existe pas encore.

Récupérer un objet

Après publication, vous pouvez récupérer un objet stocké à l’aide de sa référence.
weave.publish() renvoie une réf. Vous pouvez appeler .get() sur n’importe quelle réf. pour récupérer l’objet.Vous pouvez créer une réf., puis récupérer l’objet.
weave.init("your-team-name/your-project-name")
cat_names = weave.ref('cat-names').get()

Supprimer un objet

Si vous n’avez plus besoin d’une version spécifique d’un objet, vous pouvez la supprimer à l’aide de sa réf.
Pour supprimer une version d’un objet, appelez .delete() sur la réf. de l’objet.
weave.init("your-team-name/your-project-name")
cat_names_ref = weave.ref('cat-names:v1')
cat_names_ref.delete()
L’accès à un objet supprimé renvoie une erreur. La résolution d’un objet qui référence un objet supprimé renvoie un DeletedRef à la place de l’objet supprimé.

Construire des réf. d’objet

Les réf. permettent d’identifier de manière unique un objet stocké et sa version. Les sections suivantes décrivent la structure de l’URI et les différentes façons de construire une réf. Dans Weave, une URI de réf. d’objet complète se présente comme suit :
weave:///[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]/object/[OBJECT-NAME]:[OBJECT-VERSION]
  • [YOUR-TEAM-NAME] : entité W&B (nom d’utilisateur ou nom d’équipe)
  • [YOUR-PROJECT-NAME] : projet W&B
  • [OBJECT-NAME] : nom de l’objet
  • [OBJECT-VERSION] : soit un hachage de version, une chaîne comme v0 ou v1, soit un alias comme :latest. Tous les objets ont l’alias :latest. Voir Organize object versions with tags and aliases pour créer vos propres alias.
Vous pouvez construire des réf. de plusieurs manières :
  • weave.ref([NAME]) : récupère la version :latest d’un objet. Nécessite d’appeler weave.init(...).
  • weave.ref([NAME]:[VERSION]) : récupère la version spécifiée d’un objet. Nécessite d’appeler weave.init(...).
  • weave.ref([FULLY-QUALIFIED-REF-URI]) : récupère l’objet situé à l’URI de réf. d’objet complète indiquée. Ne nécessite pas d’appeler weave.init().

Organiser les versions d’objets avec des tags et des alias

Utilisez des tags et des alias pour étiqueter des versions spécifiques de n’importe quel objet Weave, y compris Dataset, Model, Prompt ou tout autre objet que vous publiez avec weave.publish. Ces libellés fonctionnent avec n’importe quel ObjectRef, donc les mêmes API s’appliquent à tous les types d’objets.
  • Alias : nom unique qui renvoie à une seule version. Vous pouvez déplacer un alias vers une autre version à tout moment, ce qui le rend utile pour des références stables comme production ou staging. Chaque objet dispose automatiquement d’un alias :latest qui pointe vers la version la plus récente.
  • Tag : libellé descriptif associé à une version. Une version peut avoir plusieurs tags, et un même tag peut apparaître sur plusieurs versions. Utilisez les tags pour catégoriser et filtrer les versions, par exemple reviewed ou passed-eval.
Résolvez un alias ou une version spécifique en l’ajoutant au nom de l’objet dans une réf. : L’exemple suivant publie deux versions d’un jeu de données, puis attribue et met à jour des tags et des alias sur chaque version.
import weave

client = weave.init("[YOUR-TEAM-NAME]/[YOUR-PROJECT-NAME]")

# Publier deux versions d'un objet.
dataset_v0 = weave.publish(
    weave.Dataset(name="test-cases", rows=[{"input": "ping", "expected": "pong"}]),
)
dataset_v1 = weave.publish(
    weave.Dataset(name="test-cases", rows=[{"input": "ping", "expected": "pong!"}]),
)

# Définir des alias sur une version.
client.set_aliases(dataset_v0, "staging")
client.set_aliases(dataset_v1, "production")

# Récupérer un objet à l'aide de son alias
dataset = weave.ref("test-cases:production").get()

# Lister tous les alias du projet.
client.list_aliases()

# --- Tags : libellés sur une version spécifique. ---

# Ajouter des tags à une version.
client.add_tags(dataset_v0, ["reviewed", "passed-eval"])
client.add_tags(dataset_v1, ["reviewed", "needs-improvement"])

# Obtenir les tags d'une version.
client.get_tags(dataset_v0)  # ["passed-eval", "reviewed"]

# Lister tous les tags distincts du projet.
client.list_tags()