> ## 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) à l’aide des spans d’agent

> Affichez dans la vue Weave Agents des images et des vidéos stockées dans votre propre bucket cloud en renvoyant leurs URI depuis les spans d’outil de l’agent, sans importer leur contenu dans Weave.

export const AgentLensBanner = ({href}) => <Tip>
    <strong>This workflow is also available in CoreWeave Agent Lens.</strong> Agent Lens is the Forge experience built for tracing, monitoring, and analyzing AI agents, with automated insights into agent failures and user intents. It uses the same trace data as Weights & Biases Weave, so the traces you already send appear there with nothing to migrate.{' '}
    <a href={href || '/products/agent-lens'}>{href ? 'See how to do this in Agent Lens' : 'Learn about Agent Lens'}</a>.
  </Tip>;

<AgentLensBanner href="/fr/products/agent-lens/tracing/media-in-your-bucket" />

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-agent-spans">
  Journaliser une référence multimédia à l’aide des spans d’agent
</h2>

Renvoyez un URI de bucket comme résultat d’outil d’un agent : Weave l’affiche directement dans la vue **Agents**, sur l’appel d’outil qui l’a produit. L’exemple suivant ouvre une conversation, un tour de conversation et un span d’outil, puis définit un URI de bucket comme résultat de l’outil. Remplacez `[YOUR-TEAM]`, `[YOUR-PROJECT]` et `[YOUR-BUCKET]` par vos propres valeurs.

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

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

    # Un outil qui renvoie un objet déjà stocké dans votre bucket.
    def get_frame(frame_id: int) -> str:
        return f"s3://[YOUR-BUCKET]/frames/{frame_id:06d}.png"

    with weave.start_conversation(agent_name="frame-labeler") as conversation:
        with weave.start_turn(user_message="Show me frame 123", model="gpt-4o-mini"):
            with weave.start_tool(
                name="get_frame",
                arguments='{"frame_id": 123}',
                tool_call_id="call_1",
            ) as tool:
                # Le résultat est une chaîne d'URI de bucket ; il s'affiche directement dans la vue Agents.
                tool.result = get_frame(123)
    ```
  </Tab>

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

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

    // Un outil qui renvoie un objet déjà stocké dans votre bucket.
    function getFrame(frameId: number): string {
      return `s3://[YOUR-BUCKET]/frames/${String(frameId).padStart(6, '0')}.png`;
    }

    const conversation = weave.startConversation({agentName: 'frame-labeler'});
    const turn = weave.startTurn({model: 'gpt-4o-mini'});
    const tool = weave.startTool({
      name: 'getFrame',
      args: JSON.stringify({frameId: 123}),
      toolCallId: 'call_1',
    });
    // Le résultat est une chaîne d'URI de bucket ; il s'affiche directement dans la vue Agents.
    tool.result = getFrame(123);
    tool.end();
    turn.end();
    conversation.end();
    ```
  </Tab>
</Tabs>

<Note>
  Cet exemple utilise les spans d’agent de Weave. Pour une configuration complète sur plusieurs tours de conversation, avec les appels LLM et une boucle d’agent complète, consultez le [démarrage rapide des agents personnalisés](/fr/products/wandb/weave/custom-agents-quickstart).
</Note>

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

Ouvrez la conversation à partir du lien affiché par `weave.init()`. L’image ou la vidéo référencée s’affiche directement dans la vue **Agents**, au niveau de l’appel d’outil qui a renvoyé l’URI. Si Weave ne parvient pas à résoudre une URI, par exemple parce que l’objet est introuvable ou que le bucket n’est pas enregistré, il affiche simplement la chaîne de l’URI.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/agents-byob.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=8c9b833ecff7660a81b24d2027f0efe8" alt="Une image référencée affichée directement sur un appel d’outil dans la vue Weave Agents, résolue à partir d’une URI de bucket qui pointe vers un objet de votre propre bucket cloud." width="1440" height="576" data-path="products/wandb/weave/_media/agents-byob.png" />
</Frame>


## Related topics

- [Référencer des médias dans votre propre bucket (BYOB) avec Weave Op](/fr/products/wandb/weave/guides/tracking/byob-references.md)
