Turn, LLM, Tool et SubAgent) vous permet de joindre des métadonnées personnalisées sous forme d’attributs. Les attributs sont des propriétés clé-valeur d’un span. Utilisez-les pour associer aux spans d’agent des informations contextuelles telles que 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 de CoreWeave Agent Lens.
Vous pouvez définir des attributs sur un seul span avec set_attributes() (Python) ou setAttributes() (TypeScript), ou bien définir des attributs au niveau d’une conversation, qui s’appliquent à chaque span émis par celle-ci. set_attributes reprend la méthode Span.set_attributes de l’API de span OpenTelemetry (OTel). Le SDK Agent Lens émet des spans OTel et stocke tous les attributs, qui peuvent ainsi être interrogés dans Agent Lens.
Les exemples de cette page supposent que vous avez installé et initialisé le SDK comme décrit dans Tracer vos agents.
Définir des attributs sur un span
Utilisezset_attributes() (Python) ou setAttributes() (TypeScript) pour associer des attributs arbitraires à un span donné. Transmettez 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 aux champs intégrés d’Agent Lens, et les clés gen_ai.* 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 d’Agent Lens. Pour les métadonnées arbitraires qui vous serviront à filtrer et à regrouper, utilisez vos propres clés, comme user_id ou tenant, qu’Agent Lens stocke sous forme d’attributs personnalisés filtrables.
Enregistrer ce qui se passe pendant un span
Les attributs permettent également d’enregistrer ce qui se produit pendant l’exécution d’un span, comme une demande d’autorisation ou son issue. Définissez les attributs au moment où cela se produit, tant que le span est encore en cours d’enregistrement :- Python
- TypeScript
permission.granted_at.
Les méthodes
add_event() (Python) et addEvent() (TypeScript) du SDK sont obsolètes, car OpenTelemetry abandonne progressivement l’API Span Event. Enregistrez plutôt ces données à l’aide d’attributs.Définir des attributs sur chaque span d’une conversation
Définir les 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, passezattributes au démarrage de la conversation. Vous pouvez ainsi propager des métadonnées valables pour toute la conversation, comme un nom de déploiement ou un environnement.
- Python
- TypeScript
Comme pour les attributs par span, utilisez vos propres clés personnalisées pour les attributs de conversation. Définissez les champs relevant des conventions sémantiques, tels que 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 de attributes. Évitez les clés relevant des préfixes réservés gen_ai.* et weave.*. Agent Lens les extrait dans des champs typés lors de l’ingestion ; une valeur personnalisée associée à une clé réservée n’est donc 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 correspond à l’intervalle 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 et journalise un avertissement qui indique comment corriger le problème.
L’appel est silencieux (aucun avertissement) uniquement lorsque le traçage n’a pas été initialisé.