> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-sdk-testing-latest.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Suivre et versionner des objets

> Suivre et versionner tout objet sérialisable en JSON dans W&B Weave

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.

<div id="objects">
  ## Objets
</div>

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

```python lines theme={null}
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)
```

<div id="publish-an-object">
  ## Publier un objet
</div>

La couche de sérialisation de Weave enregistre les objets et en gère les versions.

<Tabs>
  <Tab title="Python">
    ```python lines theme={null}
    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')
    ```
  </Tab>

  <Tab title="TypeScript">
    La prise en charge de la publication en TypeScript est limitée. Tous les objets ne sont pas pris en charge.

    ```typescript twoslash lines theme={null}
    // @noErrors
    import * as weave from 'weave'

    const client = await weave.init("your-team-name/your-project-name")

    // Enregistrer un tableau sous le nom 'cat-names'
    client.publish(['felix', 'jimbo', 'billie'], 'cat-names')
    ```
  </Tab>
</Tabs>

Lorsque vous enregistrez un objet sous un nom, Weave en crée la première version s’il n’existe pas encore.

<div id="get-an-object-back">
  ## Récupérer un objet
</div>

Après publication, vous pouvez récupérer un objet stocké à l’aide de sa référence.

<Tabs>
  <Tab title="Python">
    `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.

    ```python lines theme={null}
    weave.init("your-team-name/your-project-name")
    cat_names = weave.ref('cat-names').get()
    ```
  </Tab>

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

<div id="delete-an-object">
  ## Supprimer un objet
</div>

Si vous n’avez plus besoin d’une version spécifique d’un objet, vous pouvez la supprimer à l’aide de sa réf.

<Tabs>
  <Tab title="Python">
    Pour supprimer une version d'un objet, appelez `.delete()` sur la réf. de l'objet.

    ```python lines theme={null}
    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é.
  </Tab>

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

<div id="construct-object-refs">
  ## Construire des réf. d'objet
</div>

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 :

```text theme={null}
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`.

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()`."
