Files d'attente d'annotation

Ce produit n'est pas pris en charge par le site Datadog que vous avez sélectionné. ().

Présentation

Les files d’attente d’annotation offrent un workflow structuré pour l’examen humain des traces LLM. Utilisez les files d’attente d’annotation pour :

  • Examinez les traces avec un contexte complet, incluant les spans, les métadonnées, les appels d’outils, les entrées, les sorties et les résultats d’évaluation
  • Appliquez des étiquettes structurées et des observations libres aux traces
  • Identifiez et catégorisez les modèles de défaillance
  • Validez la précision de l’évaluation LLM-as-a-Judge
  • Constituez des jeux de données de référence avec des étiquettes vérifiées par des humains pour les tests et la validation

Création d’une file d’attente d’annotation

Étape 1: Configurer les paramètres de la file d’attente

  1. Accédez à AI Observability > Experiment > Annotations et sélectionnez votre projet.

  2. Cliquez sur Create Queue.

  3. Dans l’onglet About, configurez :

    • Name : Nom descriptif reflétant l’objectif de la file d’attente (par exemple, « Failed Evaluations Review - Q1 2026 »)
    • Project : Projet Agent Observability auquel appartient cette file d’attente
    • Description (facultatif) : Expliquez l’objectif de la file d’attente et toute instruction particulière pour les annotateurs
  4. Cliquez ensuite sur Next.

  5. Dans l’onglet Schema, définissez le schéma d’étiquetage de votre nouvelle file d’attente. Utilisez le volet de prévisualisation pour voir comment les étiquettes apparaissent aux annotateurs au fur et à mesure que vous les configurez. Chaque étiquette peut être marquée comme obligatoire et peut éventuellement inclure :

    • Assessment criteria : Permettre aux annotateurs d’indiquer Pass/Fail pour cette valeur d’étiquette
    • Reasoning : Permettre aux annotateurs d’ajouter une courte explication
  6. Vérifiez la configuration de votre file d’attente et cliquez sur Create pour créer la file d’attente.

    La fenêtre modale Modifier la file d'attente affichant l'onglet Schéma avec la configuration des étiquettes à gauche et un volet de prévisualisation à droite. Le panneau de gauche affiche des champs pour configurer une étiquette catégorielle nommée failure_type avec trois catégories : hallucination, formatting_error et refusal. Des cases à cocher permettent d'activer les options Critères d'évaluation et Raisonnement. Le volet de prévisualisation de droite montre comment l'étiquette apparaît aux annotateurs avec des cases à cocher pour chaque catégorie, des boutons Pass/Fail pour l'évaluation et un champ de texte pour le raisonnement.

Étape 2: Sélectionner les traces pour l’annotation

Vous pouvez ajouter manuellement des traces à une file d’attente depuis le Trace Explorer ou remplir les files d’attente automatiquement à l’aide de règles d’automatisation.

Ajouter manuellement des traces à une file d’attente depuis le Trace Explorer :

  1. Accédez à AI Observability > Traces
  2. Filtrer les traces à l’aide des facettes disponibles (résultats d’évaluation, état d’erreur, application, plage temporelle)
  3. Sélectionner des traces individuelles ou sélectionner plusieurs traces en bloc
  4. Cliquez sur Flag for Annotation
  5. Choisissez Create New Queue ou sélectionnez une file d’attente existante

Au lieu de sélectionner manuellement les traces, utilisez les règles d’automatisation pour acheminer automatiquement les traces vers des files d’attente d’annotation en fonction de filtres et de critères d’échantillonnage. Cela permet une alimentation continue et automatique de la file d’attente sans nécessiter de sélection manuelle des traces. Consultez Automation Rules pour obtenir la référence complète de la fonctionnalité, y compris les champs de filtre pris en charge et les limites.

Les automatisations s'appliquent à l'avenir : les nouvelles traces correspondant à votre règle sont acheminées vers la file d'attente dès leur arrivée. Les traces existantes correspondant au filtre ne sont pas ajoutées rétroactivement.

Pour ajouter une action de file d’attente d’annotation à une règle d’automatisation :

  1. Accédez à AI Observability > Traces
  2. Appliquez des filtres pour identifier les traces que vous souhaitez acheminer (échecs d’évaluation, seuils de latence, applications spécifiques). Consultez Automation Rules > Supported filter fields pour connaître les options autorisées.
  3. Cliquez sur Automate Query
  4. Configurez le taux d’échantillonnage (jusqu’à 5 % pour les files d’attente d’annotation ; par exemple, 2 % des traces correspondantes).
  5. Sous Actions, sélectionnez Add to Annotation Queue.
  6. Choisissez la file d’attente cible.
  7. Enregistrez la règle.

Les traces correspondant aux filtres de la règle sont ajoutées à la file d’attente dès leur arrivée. Les files d’attente d’annotation peuvent contenir jusqu’à 1 000 enregistrements ; l’automatisation se met en pause lorsque la file d’attente atteint cette limite.

Annotation des traces

Accès à vos files d’attente

Accédez à AI Observability > Experiment > Annotations pour voir toutes les files d’attente d’annotation disponibles. Cliquez sur une file d’attente pour voir la liste des traces, puis cliquez sur Review pour commencer l’annotation.

Remarque : lorsqu’une tâche d’annotation vous est nouvellement assignée, Datadog envoie un e-mail avec le nom de la file d’attente, l’utilisateur qui l’a assignée et un lien direct pour ouvrir l’interaction assignée. Pour vous désinscrire, désactivez les e-mails d’assignation d’annotation Agent Observability dans Paramètres personnels abonnements aux e-mails.

Le mode Révision affiche :

  • Full trace context (panneau de droite) :

    • Arborescence complète des spans avec entrées, sorties, métadonnées
    • Appels d’outils et étapes de raisonnement intermédiaires
    • Résultats d’évaluation sur la trace et les spans individuels
  • Annotation controls (panneau de gauche) :

    • Libellés configurés pour cette file d’attente
    • Indicateur de progression affichant la position dans la file d’attente
    • Commandes de navigation (Précédent, Suivant)
    L'interface de révision d'annotation affichant le panneau d'annotation à gauche et les détails de la trace à droite. Le panneau de gauche affiche les contrôles de libellés, notamment les cases à cocher failure_type pour hallucination, formatting_error et refusal, ainsi qu'une évaluation requires_escalation avec des boutons Pass et Fail et un bouton Save en bas. Le panneau de droite affiche les détails de la trace pour citizen_agent avec une arborescence de spans, les résultats d'évaluation et des sections extensibles pour Input et Output affichant des données au format JSON concernant une requête d'informations météorologiques.

Application des libellés

Pour chaque trace :

  1. Examinez le contexte complet de la trace : développez les spans si nécessaire pour comprendre les entrées, les sorties, les appels d’outils et les résultats d’évaluation.
  2. Appliquez les libellés : remplissez les libellés configurés en fonction de votre évaluation.
  3. Les annotations sont enregistrées automatiquement.

Meilleures pratiques pour l’annotation

Soyez cohérent :

  • Examinez la description de la file d’attente et les définitions des libellés avant de commencer.
  • Lorsque plusieurs annotateurs travaillent sur la même file d’attente, établissez une compréhension commune des critères.
  • Documentez le raisonnement dans les notes pour les cas limites.

Fournissez un raisonnement :

  • Utilisez des notes libres pour documenter pourquoi vous avez appliqué des étiquettes spécifiques.
  • Notez les modèles que vous observez à travers plusieurs traces.
  • Le raisonnement aide à affiner les critères d’évaluation et à comprendre les modes de défaillance.

Gestion des files d’attente

Suivi de la progression des files d’attente

La page de liste des annotations affiche une barre de progression pour chaque file d’attente indiquant le rapport entre les interactions examinées et le nombre total d’interactions. Utilisez ceci pour surveiller l’achèvement des annotations dans les files d’attente en un coup d’œil.

Gestion de l’accès aux files d’attente

Les propriétaires de files d’attente gèrent la liste des examinateurs, les paramètres d’accès et les attributions à partir des détails de la file d’attente. Seul le propriétaire de la file d’attente peut modifier la liste des examinateurs, les paramètres d’accès ou les attributions.

Les restrictions d’accès s’appliquent indépendamment, vous pouvez donc activer l’une ou l’autre restriction, ou les deux :

  • La restriction des examinateurs limite les interactions non attribuées aux examinateurs désignés.
  • La restriction des assignataires limite les interactions attribuées à leurs assignataires.
  • Lorsque les deux restrictions sont activées, les examinateurs peuvent annoter les interactions non assignées et les assignataires peuvent annoter les interactions qui leur sont assignées.

Le propriétaire de la file d’attente conserve l’accès et peut annoter toutes les interactions.

Filtrage des traces par étiquettes d’annotation

utilisez la facette Annotation Labels pour filtrer les traces par étiquettes appliquées dans les files d’attente d’annotation. Cela vous permet de :

  • Trouver toutes les traces marquées avec un mode de défaillance spécifique (par exemple, failure_type: hallucination)
  • Constituer des échantillons ciblés pour une révision ultérieure, la création de jeux de données ou l’exportation CSV pour l’analyse de données

Modification du schéma de file d’attente

Vous pouvez modifier le schéma d’étiquettes d’une file d’attente après sa création :

  1. Accédez à AI Observability > Experiment > Annotations.
  2. Ouvrez la file d’attente.
  3. Si le panneau Détails est masqué, cliquez sur View Details.
  4. Cliquez sur Edit.
  5. Ajoutez, supprimez ou modifiez des étiquettes.
  6. Cliquez sur Save Changes.
La modification du schéma n'affecte pas les étiquettes déjà appliquées, mais les annotateurs verront le schéma mis à jour par la suite.

Exportation de données annotées

Exportez les traces annotées pour analyse ou pour une utilisation dans d’autres workflows :

  1. Accédez à AI Observability > Experiment > Annotations.
  2. Ouvrez la file d’attente.
  3. Sélectionnez des traces (ou sélectionnez tout).
  4. Cliquez sur Export.

Le fichier se télécharge sous le nom annotations_<queue-id>.csv. Vous pouvez également récupérer les données de span par programmation en utilisant l’Export API.

Chaque ligne représente une interaction annotée. Le fichier commence par ces colonnes fixes :

ColonneDescription
Content IDID du contenu annoté (par exemple, un ID de trace ou un ID de session)
TypeType d’interaction : trace, experiment_trace ou session
InputRésumé de l’entrée (vide pour les interactions de session)
OutputRésumé de la sortie (vide pour les interactions de session)
Expected OutputUniquement présent lorsque Include Expected Output est activé ; renseigné pour les traces d’expérience uniquement

Après les colonnes fixes, il y a un ensemble de colonnes par évaluateur par étiquette. Les évaluateurs sont triés par ordre alphabétique selon leur nom d’affichage (les espaces sont remplacés par des traits de soulignement). Les étiquettes suivent l’ordre défini dans le schéma de la file d’attente :

ColonneDescription
{reviewer}_{label}Valeur de l’étiquette (chaîne, nombre, booléen ou tableau JSON)
{reviewer}_{label}_assessmentpass ou fail, si les critères d’évaluation sont activés pour cette étiquette
{reviewer}_{label}_reasoningRaisonnement en texte libre, si le raisonnement est activé pour cette étiquette

Si un évaluateur n’a pas annoté une ligne donnée, ces cellules sont vides.

Exemple : une file d’attente avec les évaluateurs Alice Johnson et Bob Smith et les étiquettes quality (score) et failure_type (catégorielle) produit ces en-têtes de colonne :

Content ID,Type,Input,Output,Alice_Johnson_quality,Alice_Johnson_quality_assessment,Alice_Johnson_quality_reasoning,Alice_Johnson_failure_type,Alice_Johnson_failure_type_assessment,Alice_Johnson_failure_type_reasoning,Bob_Smith_quality,...

Récupérez les spans par ID de trace ou ID de session

Après avoir exporté les données d’annotation, utilisez l’Export API pour récupérer les données complètes des spans des traces ou des sessions dans le CSV et joignez-les à vos étiquettes d’annotation.

Par ID de trace :

curl -G "https://api.datadoghq.com/api/v2/llm-obs/v1/spans/events" \
  -H "DD-API-KEY: <YOUR_DATADOG_API_KEY>" \
  -H "DD-APPLICATION-KEY: <YOUR_DATADOG_APPLICATION_KEY>" \
  --data-urlencode "filter[trace_id]=<TRACE_ID>"

Par ID de session :

curl -G "https://api.datadoghq.com/api/v2/llm-obs/v1/spans/events" \
  -H "DD-API-KEY: <YOUR_DATADOG_API_KEY>" \
  -H "DD-APPLICATION-KEY: <YOUR_DATADOG_APPLICATION_KEY>" \
  --data-urlencode "filter[query]=@session_id:<SESSION_ID>"

Ajout aux jeux de données

Transférez les traces annotées vers des jeux de données pour l’évaluation de l’expérience :

  1. Accédez à AI Observability > Experiment > Annotations.
  2. Ouvrez la file d’attente.
  3. Sélectionnez les traces à transférer.
  4. Cliquez sur Add to Dataset.
  5. Définissez le expected output du jeu de données :
    • From interaction : utilisez la sortie réelle de chaque trace. Pour les traces d’expérience, vous pouvez également choisir Expected output pour utiliser la sortie attendue originale du jeu de données source de l’expérience.
    • From annotation label : utilisez les valeurs appliquées par les annotateurs. Sélectionnez une ou plusieurs étiquettes. La expected_output de l’enregistrement est construite à partir de votre sélection.
  6. Choisissez un jeu de données existant ou créez un jeu de données.

Lorsque la sortie attendue est construite à partir d’étiquettes d’annotation, la valeur exportée est un objet JSON indexé par nom d’étiquette, par exemple { "is_harmful": false, "tone": ["neutral"], "topics": ["safety", "policy"] }. Le même format s’applique, que vous sélectionniez une ou plusieurs étiquettes. Les étiquettes catégorielles sont toujours exportées sous forme de tableaux d’options sélectionnées, que l’étiquette soit à sélection unique ou multiple.

Lorsque plusieurs annotateurs ont annoté la même trace, la valeur de chaque étiquette est agrégée entre eux par consensus :

Type d’étiquetteAgrégation
BooléenVote majoritaire (les égalités sont tranchées en faveur de true)
CatégorielIntersection : l’ensemble trié des options que chaque annotateur a sélectionnées
ScoreMoyenne
TexteListe des réponses

Pour les étiquettes catégorielles (sélection unique ou multiple), la valeur agrégée est le tableau trié des options que chaque annotateur a sélectionnées. Si la sélection d’un annotateur diffère, la valeur est un tableau vide. Le résultat est toujours un tableau, même lorsqu’un seul annotateur a annoté la trace.

Exemple : catégoriel (consensus). Trois annotateurs évaluent tone et sont tous d’accord :

  • Annotateur A : polite
  • Annotateur B : polite
  • Annotateur C : polite

Agrégé : ["polite"].

Exemple : catégoriel (désaccord). Trois annotateurs évaluent tone et l’un d’eux diffère :

  • Annotateur A : polite
  • Annotateur B : rude
  • Annotateur C : polite

Agrégé : []. L’intersection est vide car rude ne figure pas dans l’ensemble de chaque annotateur.

Exemple : catégoriel (sélection multiple). Trois annotateurs attribuent des tags à topics (chacun peut choisir plusieurs options) :

  • Annotateur A : ["safety", "policy"]
  • Annotateur B : ["safety", "billing"]
  • Annotateur C : ["safety", "policy"]

Agrégé : ["safety"]. Seul safety apparaît dans l’ensemble de chaque annotateur ; policy est absent de la sélection de B et billing est absent de celles de A et C.

Exemple : texte. Deux annotateurs laissent des notes :

  • Annotateur A : "Confusing phrasing"
  • Annotateur B : "Tone too casual"

Agrégé : ["Confusing phrasing", "Tone too casual"]. La valeur de chaque annotateur est conservée.

Les valeurs brutes par annotateur sont conservées dans les métadonnées de chaque enregistrement, ainsi que l’identité de l’annotateur. Si le consensus par défaut ne correspond pas à votre workflow, vous pouvez le recalculer avec une stratégie différente (par exemple, médiane, vote pondéré ou choix du réviseur).

Les étiquettes non sélectionnées comme sortie attendue sont également incluses avec chaque trace en tant que métadonnées.

Voir Jeux de données pour plus d’informations sur l’utilisation des jeux de données dans les expériences.

Suppression des files d’attente

Pour supprimer une file d’attente :

  1. Accédez à AI Observability > Experiment > Annotations.
  2. Ouvrez la file d’attente.
  3. Cliquez sur Delete dans le panneau Détails.
La suppression d'une file d'attente supprime la file d'attente et les associations d'étiquettes, mais ne supprime pas les traces sous-jacentes d'Agent Observability. Les traces restent accessibles dans Trace Explorer.

Utilisation de l’API

Vous pouvez gérer les files d’attente d’annotation par programmation. Les endpoints suivants sont disponibles dans la référence de l’API Agent Observability :

EndpointDescription
Lister les files d’attente d’annotationListez toutes les files d’attente d’annotation de votre organisation.
Créer une file d’attente d’annotationCréez une file d’attente d’annotation. name et project_id sont requis. Incluez un annotation_schema facultatif pour définir des étiquettes lors de la création.
Mettre à jour une file d’attente d’annotationMettez partiellement à jour le name, le description ou le annotation_schema d’une file d’attente.
Supprimer une file d’attente d’annotationSupprimez une file d’attente d’annotation par ID.
Ajouter des interactions à une file d’attenteAjoutez une ou plusieurs interactions à une file d’attente d’annotation pour examen.
Supprimer des interactions d’une file d’attenteSupprimez des interactions spécifiques d’une file d’attente par ID d’interaction.
Obtenir les interactions annotéesRécupérez toutes les interactions et leurs étiquettes d’annotation appliquées pour une file d’attente.
Obtenir le schéma d’étiquetteRécupérez le schéma d’étiquette configuré pour une file d’attente.
Mettre à jour le schéma d’étiquetteCréez ou remplacez le schéma d’étiquette pour une file d’attente.

Rétention des données

DonnéesPériode de conservation
Traces dans les files d’attenteLimitées par la période de conservation des traces de votre organisation
Étiquettes d’annotationIndéfinies

Exemples de workflows

Analyse des erreurs et découverte des modes de défaillance

Examinez les traces ayant échoué pour identifier les modèles récurrents et catégoriser la manière dont votre application échoue en production.

  1. Filtrez les traces dans Trace Explorer pour les évaluations ayant échoué ou pour des modèles d’erreur spécifiques
  2. Sélectionnez manuellement les traces et ajoutez-les à une file d’attente d’annotation
  3. Les annotateurs examinent les traces et documentent les types de défaillance dans des notes libres
  4. Des modèles courants émergent : hallucinations dans des contextes spécifiques, problèmes de formatage, refus inappropriés
  5. Créez des étiquettes catégorielles pour les modes de défaillance identifiés et recodez les traces
  6. Utilisez la distribution des modes de défaillance pour prioriser les correctifs

Configuration de la file d’attente

  • Étiquettesa: Notes libres, étiquette failure_type catégorielle, évaluation réussite/échec

  • Annotateursa: Chefs de produit, ingénieurs, experts du domaine

Validation des évaluations LLM-as-a-Judge

Trouvez les traces pour lesquelles les évaluateurs automatisés peuvent être incertains ou incorrects, puis demandez à des humains de fournir une vérité terrain.

  1. Échantillonnez les résultats d’évaluation : tous les résultats, ou un score/seuil donné
  2. Ajoutez les traces sélectionnées à une file d’attente d’annotation
  3. Les annotateurs examinent les traces et fournissent des scores humains pour les mêmes critères
  4. Comparez les étiquettes humaines aux scores d’évaluation automatisés
  5. Identifiez les désaccords systématiques (juge trop strict, trop indulgent ou mauvaise compréhension des critères)
  6. Affinez les prompts d’évaluation en fonction des désaccords

Configuration de la file d’attente

  • Étiquettes: Scores numériques correspondant aux critères d’évaluation (0-10), judge_accuracyétiquette catégorielle, notes de raisonnement

  • Annotateurs: Experts en la matière qui comprennent les critères d’évaluation

Création d’un jeu de données de référence

Construisez des jeux de données de référence avec des étiquettes vérifiées par des humains pour les tests de régression et la validation continue.

  1. Échantillonnez diverses traces de production depuis Trace Explorer (exemples bons et mauvais)
  2. Ajoutez des traces à la file d’attente d’annotation
  3. Les annotateurs examinent et étiquettent les traces selon plusieurs dimensions de qualité
  4. Ajoutez des exemples bien étiquetés et à haute confiance au jeu de données de référence
  5. Utilisez le jeu de données pour les tests de régression CI/CD des modifications de prompts
  6. Élargissez continuellement le jeu de données avec de nouveaux cas limites

Configuration de la file d’attente

  • Étiquettes: Plusieurs étiquettes catégorielles couvrant les dimensions de qualité, scores numériques, évaluation réussite/échec, notes

  • Annotateurs: Équipe d’experts du domaine pour la cohérence

Pour aller plus loin