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

# Référencer des médias dans votre propre bucket (BYOB) avec Weave Op

> Affichez dans les traces Weave les images et vidéos stockées dans votre propre bucket cloud en journalisant leurs URI, sans importer leur contenu vers Weave.

Utilisez cette technique lorsque les médias que vous souhaitez afficher dans Weave se trouvent déjà dans votre propre bucket :

* Images multimédias issues d’un pipeline vidéo.
* Captures d’écran réalisées par un agent de navigation.
* Images écrites dans S3 par un modèle.

Plutôt que de téléverser à nouveau ces octets dans Weave, vous journalisez l’URI de l’objet sous forme de chaîne de caractères, et Weave affiche l’image ou la vidéo directement depuis votre bucket. Seule l’URI est envoyée vers Weave ; les octets restent dans votre bucket. Journaliser une vidéo de 2 Go ne coûte pas plus cher que journaliser son chemin.

Cette approche diffère de la journalisation de médias avec la [Content API](/fr/products/wandb/weave/guides/core-types/media#contents-api), qui lit les octets et les stocke dans Weave.

<Note>
  Il s’agit d’une fonctionnalité de Weave, distincte du [BYOB de la plateforme (Secure Storage Connector)](/fr/products/wandb/platform/hosting/data-security/secure-storage-connector), qui sert au stockage des artifacts et des runs W\&B. Les buckets de médias référencés se configurent par équipe et ne nécessitent qu’un accès en lecture.
</Note>

<h2 id="how-it-works">
  Fonctionnement
</h2>

Le rendu des médias référencés se déroule en trois étapes :

1. Vous stockez un objet multimédia dans votre bucket, par exemple `s3://[YOUR-BUCKET]/frames/000123.png`.
2. Vous journalisez cet URI sous forme de chaîne de caractères à n’importe quel endroit d’une trace : entrée ou sortie d’un op, ou résultat d’outil d’un agent. Le nom du champ n’a pas d’importance.
3. Lorsque vous ouvrez la trace, Weave convertit l’URI en une [URL présignée](/fr/products/wandb/platform/hosting/data-security/presigned-urls) de courte durée et affiche le média directement dans l’interface. Le mode d’affichage dépend de l’extension du fichier. Les formats d’image courants (tels que `.png`, `.jpg`, `.gif`) et les formats vidéo (tels que `.mp4`, `.mov`, `.webm`) s’affichent directement. Les autres formats s’affichent sous forme de lien de téléchargement.

Weave ne résout que les URI qui pointent vers un bucket enregistré pour votre équipe. Les schémas pris en charge sont `s3://` et `gs://`.

<h2 id="prerequisites">
  Prérequis
</h2>

* Cette fonctionnalité est prise en charge dans le [Cloud mutualisé de W\&B](/fr/products/wandb/platform/hosting/hosting-options/multi_tenant_cloud) et disponible en préversion pour le [Cloud dédié](/fr/products/wandb/platform/hosting/hosting-options/dedicated-cloud) et les déploiements [autogérés](/fr/products/wandb/platform/hosting/hosting-options/self-managed) v0.84.0 et versions ultérieures.
* Un compte CoreWeave Forge et une [clé API](https://forge.coreweave.com/settings#apikeys).
* Un bucket de stockage cloud que vous contrôlez (S3 ou GCS) et qui contient au moins un objet.
* Des autorisations d’administrateur de l’organisation. L’ajout d’un bucket de référence requiert la même autorisation que la création d’une équipe dans l’organisation.

<h2 id="configure-your-bucket">
  Configurer votre bucket
</h2>

Accordez à W\&B un accès en lecture au bucket et autorisez le navigateur à récupérer les objets via CORS.

Lorsque vous consultez une trace, W\&B génère une URL de téléchargement présignée de courte durée pour chaque objet référencé. Pour que la présignature aboutisse, accordez au principal de l’intégration W\&B un accès en lecture sur le bucket. Cet accès, en lecture seule, sert uniquement à l’affichage intégré.

<Tabs>
  <Tab title="AWS S3">
    1. Appliquez une stratégie de bucket qui accorde `s3:GetObject` au principal de l’intégration W\&B. Enregistrez le contenu suivant sous `bucket-policy.json`, en remplaçant `[YOUR-BUCKET]` par le nom de votre bucket :

       ```json lines theme={"system"}
       {
         "Version": "2012-10-17",
         "Id": "WandBAccess",
         "Statement": [{
           "Sid": "WandbAccess",
           "Effect": "Allow",
           "Principal": {"AWS": "arn:aws:iam::725579432336:role/WandbIntegration"},
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::[YOUR-BUCKET]/*"
         }]
       }
       ```

       Appliquez-la ensuite à votre bucket :

       ```bash theme={"system"}
       aws s3api put-bucket-policy --bucket [YOUR-BUCKET] --policy file://bucket-policy.json
       ```

    2. Appliquez une configuration CORS pour permettre à l’application de récupérer les objets dans le navigateur. Enregistrez le contenu suivant sous `cors.json` :

       ```json lines theme={"system"}
       {
         "CORSRules": [{
           "AllowedHeaders": ["*"],
           "AllowedMethods": ["GET", "HEAD"],
           "AllowedOrigins": ["https://forge.coreweave.com"],
           "ExposeHeaders": ["ETag"],
           "MaxAgeSeconds": 3000
         }]
       }
       ```

       Appliquez-la ensuite à votre bucket :

       ```bash theme={"system"}
       aws s3api put-bucket-cors --bucket [YOUR-BUCKET] --cors-configuration file://cors.json
       ```

    <Note>
      Si un objet est chiffré avec une clé KMS gérée par le client, la stratégie de cette clé doit également accorder `kms:Decrypt` à `arn:aws:iam::725579432336:role/WandbIntegration`. La stratégie de bucket seule ne suffit pas.
    </Note>
  </Tab>

  <Tab title="Google Cloud Storage">
    1. Accordez au compte de service de l’intégration W\&B le rôle `roles/storage.objectViewer` sur le bucket. Remplacez `[YOUR-BUCKET]` par le nom de votre bucket :

       ```bash theme={"system"}
       gcloud storage buckets add-iam-policy-binding gs://[YOUR-BUCKET] \
         --member="serviceAccount:wandb-integration@wandb-production.iam.gserviceaccount.com" \
         --role="roles/storage.objectViewer"
       ```

    2. Appliquez une configuration CORS pour permettre à l’application de récupérer les objets dans le navigateur. Enregistrez le contenu suivant sous `cors.json` :

       ```json lines theme={"system"}
       [{
         "origin": ["https://forge.coreweave.com"],
         "method": ["GET", "HEAD"],
         "responseHeader": ["ETag"],
         "maxAgeSeconds": 3000
       }]
       ```

       Appliquez-la ensuite à votre bucket :

       ```bash theme={"system"}
       gcloud storage buckets update gs://[YOUR-BUCKET] --cors-file=cors.json
       ```
  </Tab>
</Tabs>

Weights & Biases peut désormais lire les objets de votre bucket, et l’interface peut les récupérer dans le navigateur.

<h2 id="register-the-reference-bucket">
  Enregistrer le bucket de référence
</h2>

Enregistrez le bucket dans les paramètres de votre équipe pour permettre à Weave de générer des URL présignées et d’afficher les URI référencés.

1. Accédez à la page des paramètres de votre équipe (`https://forge.coreweave.com/wandb/[YOUR-TEAM]/settings`).
2. Dans la section **Reference buckets**, sélectionnez **Add bucket**.
3. Sélectionnez votre fournisseur de cloud (**AWS** ou **Google Cloud**).
4. Pour le nom du bucket, saisissez uniquement `[YOUR-BUCKET]`, sans le préfixe `s3://` ou `gs://`.
5. Pour la clé d’objet, saisissez la clé d’un objet existant dans le bucket, par exemple `photos/cat.png` (la clé d’objet seule, et non une URL complète). W\&B lit cet objet pour vérifier qu’il dispose d’un accès en lecture et que CORS est correctement configuré. Seul l’accès est vérifié : une fois cette vérification effectuée, la génération d’URL présignées fonctionne pour n’importe quel objet du bucket.
6. Vous pouvez également sélectionner **Test connection** pour valider la configuration sans l’enregistrer.
7. Sélectionnez **Add bucket** pour enregistrer.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/add-ref-bucket.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=7ab906b46a48b51e085530aaaf1e47a4" alt="La boîte de dialogue Add reference bucket dans les paramètres de l’équipe, avec des champs pour le fournisseur de cloud, le nom du bucket et une clé d’objet existante, ainsi que les boutons Test connection et Add bucket." width="548" height="449" data-path="products/wandb/weave/_media/add-ref-bucket.png" />
</Frame>

<Warning>
  Tant que le bucket n’est pas enregistré, les URI référencés ne sont pas rendus. C’est l’enregistrement qui permet à Weave de générer une URL présignée et d’afficher l’objet.
</Warning>

<h2 id="log-a-media-reference-using-weave-op-function-tracing">
  Journaliser une référence de média avec le traçage de fonctions par Weave Op
</h2>

Journalisez l’URI sous forme de chaîne de caractères dans une trace. Tout champ de type chaîne dont la valeur est une URI de bucket est rendu. Aucune annotation de contenu n’est nécessaire, car les octets restent dans votre bucket. L’Op d’exemple suivant génère des légendes pour des images déjà stockées dans votre bucket et journalise chaque URI avec sa légende. Remplacez `[YOUR-TEAM]`, `[YOUR-PROJECT]` et `[YOUR-BUCKET]` par vos propres valeurs.

<Tip>
  Si vous ajoutez des médias de référence à une application agentique, consultez plutôt [Médias de référence dans les spans d’agent](/fr/products/wandb/weave/guides/tracking/agents-byob-references).
</Tip>

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

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

    @weave.op
    def caption_image(image_uri: str) -> dict:
        caption = my_captioner(image_uri)  # Votre modèle ou appel d’API.
        # image_uri est rendu en ligne à partir de sa valeur ; le nom du champ est arbitraire
        # et l’extension (ici .png) détermine s’il s’agit d’une image ou d’une vidéo.
        return {"image": image_uri, "caption": caption}

    caption_image("s3://[YOUR-BUCKET]/photos/cat.png")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript lines theme={"system"}
    import * as weave from 'weave';

    await weave.init('[YOUR-TEAM]/[YOUR-PROJECT]');

    const captionImage = weave.op(async function captionImage(imageUri: string) {
      const caption = await myCaptioner(imageUri); // Votre modèle ou appel d’API.
      // imageUri est rendu en ligne à partir de sa valeur ; le nom du champ est arbitraire.
      return {image: imageUri, caption};
    });

    await captionImage('s3://[YOUR-BUCKET]/photos/cat.png');
    ```
  </Tab>
</Tabs>

<h2 id="view-the-reference-in-weave-traces">
  Afficher la référence dans Weave Traces
</h2>

Ouvrez la trace à partir du lien affiché par `weave.init()`. L’image ou la vidéo référencée s’affiche directement dans la vue **Traces**. Si Weave ne parvient pas à résoudre un URI, par exemple parce que l’objet est introuvable ou que le bucket n’est pas enregistré, il affiche simplement l’URI sous forme de chaîne brute.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/traces-byob.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=1089bf820959dde0fd237d7cc8e239d2" alt="Image référencée affichée directement dans la vue Weave Traces, résolue à partir d’un URI de bucket pointant vers un objet de votre propre bucket cloud." width="1442" height="422" data-path="products/wandb/weave/_media/traces-byob.png" />
</Frame>


## Related topics

- [Référencer des médias dans votre propre bucket (BYOB) à l’aide des spans d’agent](/fr/products/wandb/weave/guides/tracking/agents-byob-references.md)
