Turn, LLM, Tool et SubAgent) expose des méthodes permettant d’ajouter des métadonnées personnalisées. Utilisez ces méthodes pour associer aux spans d’agent des informations contextuelles comme des ID d’utilisateur, des locataires, des noms d’expérience ou des libellés d’environnement, puis filtrez et regroupez l’activité des agents selon ces métadonnées dans l’interface Weave.
Ces métadonnées existent sous deux formes :
- Attributs : propriétés clé-valeur d’un span dans son ensemble. Utilisez
set_attributes()(Python) ousetAttributes()(TypeScript) pour définir des attributs sur un seul span, ou définissez des attributs à l’échelle de la session qui s’appliquent à chaque span émis par une session. - Événements : marqueurs ponctuels survenant pendant la durée de vie d’un span, comme un prompt d’autorisation ou une transition du cycle de vie. Utilisez
add_event()(Python) ouaddEvent()(TypeScript).
set_attributes correspond à Span.set_attributes d’OTel, et add_event à Span.add_event. Le SDK Weave émet des spans OTel et stocke tous les attributs afin qu’ils restent interrogeables dans Weave.
Définir des attributs sur un span
set_attributes() (Python) ou setAttributes() (TypeScript) pour ajouter des attributs arbitraires à un span donné. Passez un dictionnaire ou un objet, que vous ayez une seule clé ou plusieurs. La méthode renvoie le span, ce qui vous permet de chaîner les appels.
- Python
- TypeScript
- Python
- TypeScript
weave.* correspondent à des champs Weave intégrés, et les clés sous gen_ai.* correspondent aux champs de convention sémantique GenAI d’OpenTelemetry. Dans l’exemple précédent, weave.display_name est une clé réservée qui définit le nom d’affichage du span dans l’interface utilisateur Agents and Traces. Pour les métadonnées arbitraires sur lesquelles vous souhaitez filtrer et regrouper, utilisez vos propres clés, comme user_id ou tenant, que Weave stocke comme attributs personnalisés filtrables.
Définir des attributs sur chaque span d’une session
attributes lorsque vous démarrez la session. Cela permet de propager des métadonnées à l’échelle de la session, comme une identité d’intégration ou un environnement de déploiement.
- Python
- TypeScript
Comme pour les attributs par span, utilisez vos propres clés personnalisées pour les attributs de session. Définissez les champs de convention sémantique, comme le nom de l’agent, le nom de la session ou le modèle, via leurs paramètres typés (
agent_name, session_name, model) plutôt que via attributes. Évitez les clés sous les préfixes réservés gen_ai.* et weave.*. Weave les extrait dans des champs typés lors de l’ingestion. Une valeur personnalisée sous une clé réservée n’est donc pas prise en charge.Enregistrer des événements sur un span
add_event() (Python) ou addEvent() (TypeScript) pour enregistrer un marqueur à un moment précis du cycle de vie d’un span. Contrairement à un attribut, qui décrit le span dans son ensemble, un événement capture quelque chose qui se produit à un instant donné pendant le span, comme un prompt d’autorisation, une étape de compactage du contexte ou une transition de cycle de vie telle que spawned, streaming ou finished.
Chaque événement prend un nom et, de façon facultative, un dictionnaire ou un objet d’attributs.
- Python
- TypeScript
events dans l’arborescence JSON, comme illustré dans l’image suivante.

Quand vous pouvez définir des attributs et des événements
with. En TypeScript, cela se fait après start*() et avant end().
Si vous appelez set_attributes(), add_event() ou leurs équivalents TypeScript sur un span qui n’a pas encore démarré ou qui est déjà terminé, l’appel est sans effet et consigne un avertissement indiquant comment corriger le problème.
L’appel ne génère aucun avertissement uniquement lorsque OTel n’est pas installé ou que Weave est désactivé.