Turn, LLM, Tool et SubAgent) expose des méthodes permettant de joindre des métadonnées personnalisées. Utilisez ces méthodes pour apposer sur les spans de l’agent des informations contextuelles, telles que des ID utilisateur, des tenants, des noms d’expériences ou des libellés d’environnement, puis filtrez et regroupez l’activité de l’agent selon ces métadonnées dans l’interface de Weights & Biases.
Ces métadonnées se présentent sous deux formes :
- Attributs : propriétés clé-valeur qui s’appliquent au span dans son ensemble. Utilisez
set_attributes()(Python) ousetAttributes()(TypeScript) pour apposer des attributs sur un seul span, ou définissez des attributs au niveau de la conversation, qui s’appliquent à chaque span émis par celle-ci. - Événements : marqueurs ponctuels qui surviennent pendant la durée de vie d’un span, comme une demande 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 d’OTel. Le SDK Weave émet des spans OTel et stocke tous les attributs, qui restent ainsi interrogeables dans Weave.
Définir des attributs sur un span
Utilisezset_attributes() (Python) ou setAttributes() (TypeScript) pour associer des attributs arbitraires à un seul span. Transmettez un dictionnaire ou un objet, que vous ayez une seule clé ou plusieurs. La méthode renvoie le span, ce qui vous permet d’enchaîner les appels.
- Python
- TypeScript
- Python
- TypeScript
weave.* correspondent aux champs Weave intégrés, et celles commençant par gen_ai.* correspondent aux champs des conventions sémantiques 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 Agents et Traces. Pour les métadonnées arbitraires qui vous servent à filtrer et à regrouper, utilisez vos propres clés, comme user_id ou tenant, que Weave stocke sous forme d’attributs personnalisés filtrables.
Définir des attributs sur chaque span d’une conversation
Ajouter des attributs span par span convient bien aux métadonnées propres à un span, mais certaines métadonnées concernent une conversation entière. Pour appliquer les mêmes attributs à tous les spans émis par une conversation, transmettezattributes au démarrage de la conversation. Cette approche permet de propager des métadonnées valables pour toute la conversation, comme l’identité d’une 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 conversation. Définissez les champs des conventions sémantiques, comme le nom de l’agent, le nom de la conversation ou le modèle, au moyen de leurs paramètres typés (
agent_name, conversation_name, model) plutôt que via attributes. Évitez les clés relevant des préfixes réservés gen_ai.* et weave.* : Weave les extrait dans des champs typés lors de l’ingestion, si bien qu’une valeur personnalisée associée à une clé réservée n’est pas prise en charge.Quand définir des attributs
Définissez les attributs pendant l’enregistrement du span, c’est-à-dire après son démarrage et avant sa fin. En Python, cela correspond à l’intérieur du blocwith. En TypeScript, cela se situe entre start*() et end().
Si vous appelez set_attributes(), ou son équivalent TypeScript, sur un span qui n’a pas encore démarré ou qui est déjà terminé, l’appel n’a aucun effet (no-op) et journalise un avertissement indiquant la correction à apporter.
L’appel reste silencieux (aucun avertissement) uniquement lorsque OTel n’est pas installé ou que Weave est désactivé.