Passer au contenu principal
W&B Weave prend en charge le journal et l’affichage de nombreux types de contenu, avec des fonctions dédiées pour les vidéos, les images, les extraits audio, les PDF, les données CSV et le HTML. Ce guide s’adresse aux développeurs qui souhaitent capturer les entrées et sorties multimédias dans leurs traces Weave afin de pouvoir les examiner et les partager avec le reste des données de trace. Il propose des exemples de base et avancés pour journaliser et afficher chaque type de média pris en charge :

Aperçu

Les exemples de ce guide utilisent des annotations. Nous recommandons d’utiliser des annotations, car c’est la manière la plus directe de commencer à journaliser vos médias. Pour des configurations plus avancées, voir la section Content API.Pour journaliser des médias dans Weave, ajoutez des annotations de type comme Annotated[bytes, Content] ou Annotated[str, Content] comme types d’entrée ou de retour dans vos ops. Si vous annotez des arguments de chemin avec Annotated[str, Content], Weave ouvre, détecte et affiche automatiquement le média dans votre trace.
Les sections suivantes proposent des exemples de journalisation pour chaque type de média. Chaque section commence par un exemple minimal, puis s’étend à des scénarios plus avancés.

Journaliser des images

Les exemples suivants montrent comment générer et journaliser des images dans l’interface utilisateur de Weave.
Vue de trace Weave montrant une image générée d’un chat portant un chapeau en forme de citrouille
Journalisez des images en annotant les fonctions avec des types Annotated[bytes, Content] ou les chemins de fichier avec Annotated[str, Content].L’exemple suivant crée une image simple, puis la journalise dans Weave à l’aide de l’annotation Content :
Weave journalise l’image et renvoie un lien vers la trace où vous pouvez consulter l’image.

Exemple avancé : générer une image avec DALL-E et la journaliser dans Weave

L’exemple suivant génère une image de chat et la journalise dans Weave :

Exemple avancé : redimensionner les grandes images avant de les journaliser

Redimensionnez les images avant de les journaliser afin de réduire le coût de rendu de l’interface utilisateur et l’impact sur le stockage. Utilisez postprocess_output dans votre @weave.op pour redimensionner une image.
Weave journalise l’image redimensionnée et renvoie un lien vers la trace dans laquelle vous pouvez afficher l’image.

Journaliser une vidéo

Les exemples suivants montrent comment générer des vidéos et les journaliser dans l’interface utilisateur de Weave.
Journalisation de vidéo dans Weave
Journalisez des vidéos en annotant les fonctions avec le type Annotated[bytes, Content]. Weave gère automatiquement les vidéos mp4. Voici un exemple minimal :
Weave journalise la vidéo et renvoie un lien vers la trace, où vous pouvez la consulter.

Exemple avancé : journaliser une vidéo dans un projet d’analyse vidéo

L’exemple suivant montre comment journaliser une vidéo dans un projet de compréhension vidéo :
Weave journalise à la fois la vidéo d’entrée et l’analyse du modèle, afin que vous puissiez les examiner ensemble dans la trace.

Journaliser des documents

Les exemples suivants génèrent des documents et les journalisent dans l’interface utilisateur de Weave.
Journalisation de documents PDF dans Weave
Journalisez des documents en annotant les fonctions avec des types Annotated[bytes, Content], ou en spécifiant le type de document avec Annotated[str, Content[Literal['text']].Weave gère automatiquement les types de fichiers pdf, csv, md, text, json et xml. Vous pouvez également journaliser des fichiers en utilisant leurs chemins avec Annotated[str, Content].L’exemple suivant montre comment stocker des copies des fichiers PDF et CSV en entrée, puis stocker le contenu des fichiers renvoyé par la fonction :

Exemple avancé : journaliser des documents dans un système RAG

Cet exemple montre comment journaliser des documents dans un système de génération augmentée par récupération (RAG) :
Weave journalise à la fois le PDF source et la réponse générée, afin que vous puissiez auditer le document à l’origine de chaque réponse.

Journaliser l’audio

Les exemples suivants montrent comment journaliser de l’audio vers Weave.
Vue de trace Weave montrant un fichier audio enregistré avec un lecteur audio intégré
Journalisez l’audio dans Weave en annotant les fonctions avec des types Annotated[bytes, Content], ou en spécifiant le type audio avec Annotated[str, Content[Literal['mp3']].Weave gère automatiquement les types de fichiers mp3, wav, flac, ogg et m4a. Vous pouvez également journaliser à partir de chemins de fichiers avec Annotated[str, Content].Le code suivant génère une onde sinusoïdale, l’enregistre, puis journalise l’audio dans Weave :

Exemple avancé : générer et journaliser de l’audio généré par l’IA

Cet exemple génère et journalise de l’audio généré par l’IA à l’aide de l’annotation Content :
Cet audio est journalisé dans Weave et automatiquement affiché dans l’interface utilisateur, accompagné d’un lecteur audio. Dans ce lecteur, vous pouvez afficher et télécharger la forme d’onde audio brute.
Enregistrement audio dans Weave
L’exemple suivant montre comment journaliser de l’audio à l’aide d’une réponse en streaming de l’API OpenAI :
Essayez notre cookbook sur la journalisation audio. Le cookbook inclut également un exemple avancé d’assistant basé sur une API audio en temps réel intégré à Weave.

Journaliser du HTML

Les exemples suivants montrent comment générer et journaliser du HTML dans l’interface utilisateur de Weave.
Journalisation de HTML dans Weave
Journalisez du HTML interactif en annotant les fonctions avec Annotated[bytes, Content[Literal['html']]].L’exemple suivant crée une page HTML minimale et la journalise dans Weave :

Exemple avancé : générer des pages HTML autonomes avec Serverless Inference et les journaliser dans Weave

Cet exemple génère des pages HTML autonomes avec Serverless Inference et les journalise dans Weave :
Ce HTML est journalisé dans Weave et automatiquement affiché dans l’interface utilisateur. Cliquez sur la cellule file_name.html dans le tableau pour l’ouvrir en plein écran. Vous pouvez également télécharger le fichier .html brut.

Contents API

La Content API gère les objets multimédias dans Weave. Utilisez-la lorsque vous avez besoin de plus de contrôle que ne le permettent les exemples précédents basés sur des annotations. Par exemple, lorsque vous souhaitez importer du contenu à partir de données base64, de tampons d’octets personnalisés ou de texte, ou lorsque vous devez joindre des métadonnées personnalisées. Elle vous permet d’importer du contenu dans Weave sous forme de données base64, de chemins de fichiers, d’octets bruts ou de texte.
La Content API n’est disponible qu’en Python.

Utilisation

Vous pouvez utiliser la Content API de deux principales façons : les annotations de type et l’initialisation directe. Les annotations de type détectent automatiquement le constructeur approprié, tandis que l’initialisation directe offre un contrôle plus fin et vous permet de tirer parti des fonctionnalités de la Content API disponibles à l’exécution dans votre code.

Annotations de type

L’API Content de Weave est conçue pour être utilisée principalement via des annotations de type, qui indiquent à Weave que les entrées et sorties tracées doivent être traitées et stockées sous forme de blobs de contenu.

Initialisation directe

Pour profiter de fonctionnalités telles que les suivantes :
  • Ouvrir un fichier avec l’application par défaut (comme un lecteur PDF).
  • Sérialiser le modèle en JSON pour le téléverser vers votre propre stockage de blobs (comme S3).
  • Transmettre des métadonnées personnalisées à associer au blob Content (comme le modèle utilisé pour le générer).
Initialisez le contenu directement à partir de votre type cible à l’aide de l’une des méthodes suivantes :
  • Content.from_path - Créer à partir d’un chemin de fichier.
  • Content.from_bytes - Créer à partir d’octets bruts.
  • Content.from_text - Créer à partir d’une chaîne de texte.
  • Content.from_base64 - Créer à partir de données encodées en base64.

Types MIME personnalisés

Weave peut détecter la plupart des types MIME binaires, mais les types MIME personnalisés et les documents texte comme le Markdown peuvent ne pas être détectés automatiquement. Vous devrez alors spécifier manuellement le type MIME ou l’extension de votre fichier.

Types MIME personnalisés avec annotations de type

Types MIME personnalisés avec initialisation directe

Propriétés de Content

Pour consulter la liste complète des attributs et des méthodes de la classe, consultez la documentation de référence de Content.

Attributs

Méthodes utilitaires

  • save(dest: str | Path) -> None: Enregistrer le contenu dans un fichier.
  • open() -> bool: Ouvrir le fichier avec l’application par défaut du système (nécessite que le contenu ait déjà été enregistré ou chargé depuis un chemin).
  • as_string() -> str: Afficher les données sous forme de chaîne de caractères (les octets sont décodés à l’aide de l’attribut d’encodage).

Méthodes d’initialisation

Créez l’objet content à partir d’un chemin de fichier :
Créez l’objet content à partir d’octets bruts :
Créez l’objet content à partir du texte :
Créez l’objet content à partir de données encodées en base64 :

Métadonnées personnalisées

Vous pouvez associer des métadonnées personnalisées à n’importe quel objet Content :