Partager via


Flux de travail Microsoft Agent Framework - Observabilité

L’observabilité fournit des insights sur l’état interne et le comportement des flux de travail pendant l’exécution. Cela inclut la journalisation, les métriques et les fonctionnalités de suivi qui permettent de surveiller et de déboguer les flux de travail.

Conseil / Astuce

L’observabilité est une fonctionnalité à l’échelle de l’infrastructure et n’est pas limitée aux flux de travail. Pour plus d’informations, consultez Observabilité.

Outre la télémétrie GenAI standard, les flux de travail du cadre Agent Framework émettent des étendues supplémentaires, des journaux et des métriques pour fournir des informations plus détaillées sur l’exécution du flux de travail. Ces fonctionnalités d’observabilité aident les développeurs à comprendre le flux de messages, les performances des exécuteurs et toutes les erreurs qui peuvent se produire.

Activer l’observabilité

Reportez-vous à l’activation de l’observabilité pour obtenir des instructions sur l’activation de l’observabilité dans vos applications.

Reportez-vous à l’activation de l’observabilité pour obtenir des instructions sur l’activation de l’observabilité dans vos applications.

Étendues de flux de travail

Les segments suivants sont émis pendant l’exécution du flux de travail :

Nom de l’étendue Descriptif
workflow.build Émis pour chaque build de flux de travail.
workflow.session Étendue externe représentant toute la durée de vie d’une exécution de flux de travail, du début jusqu’à l’arrêt ou à l’erreur.
workflow_invoke Émis pour chaque cycle d’entrée à arrêter au sein d’une session de flux de travail.
executor.process {executor_id} Émis pour chaque exécuteur traitant un message. L’ID d’exécuteur est ajouté au nom de l’étendue.
edge_group.process Émis pour chaque groupe de périphérie qui traite un message.
message.send Émis pour chaque message envoyé d’un exécuteur à un autre exécuteur.

Les portées suivantes sont émises pendant l’exécution du flux de travail :

Nom de l’étendue Descriptif
workflow.build Émis pour chaque build de flux de travail.
workflow.run Émis pour chaque exécution de flux de travail.
executor.process {executor_id} Émis pour chaque exécuteur traitant un message. L'ID d'exécuteur est ajouté au nom du tracé.
edge_group.process {edge_group_type} Émis pour chaque groupe de périphérie qui traite un message. Le type de groupe d'edge est ajouté au nom du span.
message.send Émis pour chaque message envoyé d’un exécuteur à un autre exécuteur.

Attributs de plage

Les segments portent des attributs qui fournissent un contexte supplémentaire à l'opération. Les attributs suivants sont définis sur les périmètres de flux de travail :

Caractéristique Étendues Descriptif
workflow.id workflow.build, workflow.session Identificateur unique du flux de travail.
workflow.name workflow.session Nom du workflow.
workflow.description workflow.session Description du workflow.
workflow.definition workflow.build Définition JSON du graphe de flux de travail.
session.id workflow.session Identificateur de session unique.
executor.id executor.process Identificateur unique de l’exécuteur.
executor.type executor.process Nom de type de l’exécuteur.
executor.input executor.process Message d’entrée. Ne configurez que lorsque des données sensibles sont disponibles.
executor.output executor.process Sortie de l’exécuteur. Activez uniquement si des données sensibles sont activées.
message.type executor.process, message.send Nom du type du message.
message.content message.send Contenu du message. Ne définissez que lorsque des données sensibles sont activées.
message.source_id message.send ID de l’exécuteur qui a envoyé le message.
message.target_id message.send ID de l’exécuteur cible, s’il est spécifié.
edge_group.type edge_group.process Type du groupe de bords.
edge_group.delivered edge_group.process Indique si le message a été remis (booléen).
edge_group.delivery_status edge_group.process Résultat de la livraison (voir État de livraison du groupe Edge).
error.type Toute plage concernant une erreur Nom du type d’exception.
Caractéristique Étendues Descriptif
workflow.id workflow.build, workflow.run Identificateur unique du flux de travail.
workflow.name workflow.run Nom du workflow.
workflow.description workflow.run Description du workflow.
workflow.definition workflow.build Définition JSON du graphe de flux de travail.
workflow_builder.name workflow.build Nom du générateur de flux de travail.
workflow_builder.description workflow.build Description du générateur de flux de travail.
executor.id executor.process Identificateur unique de l’exécuteur.
executor.type executor.process Nom de type de l’exécuteur.
message.type executor.process, message.send Nom du type du message.
message.payload_type executor.process Type de données de la charge utile du message.
message.destination_executor_id message.send ID de l’exécuteur cible, s’il est spécifié.
message.source_id edge_group.process ID de l’exécuteur qui a envoyé le message.
message.target_id edge_group.process ID de l’exécuteur cible, s’il est spécifié.
edge_group.type edge_group.process Type du groupe de bords.
edge_group.id edge_group.process Identificateur unique du groupe de bordure.
edge_group.delivered edge_group.process Indique si le message a été remis (booléen).
edge_group.delivery_status edge_group.process Résultat de la livraison (voir État de livraison du groupe Edge).

Événements d’étendue

Les événements de segment sont des entrées de journal structurées attachées à des segments, fournissant une chronologie des moments clés dans chaque segment.

Nom de l'événement Étendues Descriptif
build.started workflow.build Émis lorsque le processus de génération commence.
build.validation_completed workflow.build Émis quand la validation de la construction réussit.
build.completed workflow.build Émis lorsque la build est terminée avec succès.
build.error workflow.build Émis lorsque la compilation échoue.
session.started workflow.session Émis lorsqu’une session de flux de travail commence.
session.completed workflow.session Émis lorsqu’une session de flux de travail est terminée.
session.error workflow.session Émis lorsqu’une session de flux de travail rencontre une erreur.
workflow.started workflow_invoke Émis lorsqu’un appel de flux de travail commence.
workflow.completed workflow_invoke Émis lorsqu’un appel de flux de travail est terminé.
workflow.error workflow_invoke Émis lorsqu’un appel de flux de travail rencontre une erreur.
Nom de l'événement Étendues Descriptif
build.started workflow.build Émis lorsque le processus de génération commence.
build.validation_completed workflow.build Émis lorsque la validation de la construction est réussie.
build.completed workflow.build Émis lorsque la build est terminée avec succès.
build.error workflow.build Émis lorsque la compilation échoue.
workflow.started workflow.run Émis lorsqu’une exécution de flux de travail commence.
workflow.completed workflow.run Émis lorsqu’une exécution du flux de travail est terminée.
workflow.error workflow.run Émis lorsqu’une exécution de flux de travail rencontre une erreur.

Lorsqu’un exécuteur envoie un message à un autre exécuteur, l’étendue message.send est créée en tant qu’enfant de l’étendue executor.process . Toutefois, l'étendue executor.process de l'exécuteur cible n'est pas un enfant de l'étendue message.send, car l'exécution n'est pas imbriquée. Au lieu de cela, l’étendue executor.process de l’exécuteur cible est liée à l’étendue message.send de l’exécuteur source. Cette liaison crée un chemin d'accès traçable via l'exécution du processus de travail sans impliquer une hiérarchie d'appels imbriquée.

La même approche de liaison s’applique aux edge_group.process segments, qui sont liés aux segments sources message.send pour le suivi de la causalité. Cela prend en charge les scénarios de fan-in dans lesquels plusieurs étendues sources contribuent à une étendue de traitement unique.

Statut de livraison du groupe Edge

Les plages de traitement des groupes de bord incluent des attributs d’état de remise qui indiquent le résultat du routage des messages via chaque groupe de bord. L’attribut edge_group.delivery_status est défini sur l’une des valeurs suivantes :

État Descriptif
delivered Le message a été remis à l’exécuteur cible.
dropped type mismatch L’exécuteur cible ne peut pas gérer le type de message.
dropped target mismatch Le message a spécifié une cible qui ne correspond pas à cette arête.
dropped condition false La condition de routage à la périphérie a été évaluée comme fausse.
exception Une exception s’est produite pendant le traitement de périphérie.
buffered Le message a été mis en mémoire tampon, en attente de l'arrivée de messages supplémentaires (agrégation).

L’attribut edge_group.delivered booléen fournit un contrôle rapide pour déterminer si le message a été remis avec succès.

Configuration de la télémétrie

Les données de télémétrie de flux de travail peuvent être activées via la WithOpenTelemetry méthode d’extension sur le générateur de flux de travail. La WorkflowTelemetryOptions classe fournit un contrôle précis sur les portées émises :

Choix Par défaut Descriptif
EnableSensitiveData false Inclut des entrées brutes, des sorties et du contenu de message dans les attributs d’étendue.
DisableWorkflowBuild false Désactive les étendues workflow.build .
DisableWorkflowRun false Désactive les étendues workflow.session et workflow_invoke.
DisableExecutorProcess false Désactive les intervalles executor.process.
DisableEdgeGroupProcess false Désactive les balises edge_group.process.
DisableMessageSend false Désactive les balises message.send .

Avertissement

L’activation des données sensibles entraîne l'inclusion du contenu brut des messages, des entrées des exécutants et des sorties des exécutants dans les données de télémétrie. Activez-le uniquement dans les environnements sécurisés où les données de télémétrie sont correctement protégées.

La télémétrie de flux de travail est activée par le biais de la fonction globale enable_instrumentation() . Lorsque l’instrumentation est activée, toutes les étendues de flux de travail sont émises automatiquement. La configure_otel_providers() fonction peut être utilisée pour configurer des exportateurs pour les traces, les métriques et les journaux.

Avertissement

Passez en revue la configuration de votre pipeline de télémétrie pour vous assurer que les données sensibles sont correctement protégées lors de l’exportation de traces.

Étapes suivantes