Partager via


Tutoriel : Déboguer un ensemble de compétences avec Sessions de débogage

Un ensemble de compétences coordonne les actions des compétences qui analysent, transforment ou créent du contenu pouvant faire l’objet d’une recherche. Souvent, la sortie d’une compétence devient l’entrée d’une autre. Lorsque les entrées sont tributaires des sorties, les erreurs dans les définitions des ensembles de compétences et les associations de champs peuvent se traduire par des données et des opérations omises.

Sessions de débogage est un outil du portail Azure qui fournit une visualisation holistique d’un ensemble de compétences. À l’aide de cet outil, vous pouvez atteindre des étapes spécifiques dans le but de découvrir facilement où peut se situer l’échec d’une action.

Dans cet article, utilisez des sessions de débogage pour rechercher et corriger des entrées et sorties manquantes. Le tutoriel est complet. Il fournit des exemples de données, un fichier REST qui crée des objets et des instructions pour le débogage des problèmes dans l’ensemble de compétences.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Prérequis

Remarque

Ce didacticiel utilise également Azure AI Services pour la détection de langue, la reconnaissance d’entité et l’extraction d’expressions clés. Comme la charge de travail est faible, Azure AI Services est utilisé en arrière-plan pour traiter gratuitement jusqu’à 20 transactions. Cela signifie que vous pouvez effectuer cet exercice sans avoir à créer une ressource Azure AI Services facturable.

Configurer les exemples de données

Cette section crée l’exemple de jeu de données dans le service Stockage Blob Azure pour permettre à l’indexeur et à l’ensemble de compétences de disposer d’un contenu à utiliser.

  1. Téléchargez l’exemple de données (clinical-trials-pdf-19) composé de 19 fichiers.

  2. Créez un compte de stockage Azure ou recherchez un compte existant.

    • Choisissez la même région que celle de la Recherche Azure AI pour éviter des frais de bande passante.

    • Il doit être de type StorageV2 (V2 universel).

  3. Accédez aux pages des services du Stockage Azure dans le portail, et créez un conteneur de blobs. Une bonne pratique consiste à spécifier le niveau d’accès «privé ». Nommez votre conteneur clinicaltrialdataset.

  4. Dans le conteneur, sélectionnez Charger pour charger les exemples de fichiers que vous avez téléchargés et décompressés au cours de la première étape.

  5. Dans le portail, copiez la chaîne de connexion pour Stockage Azure. Vous pouvez obtenir la chaîne de connexion à partir de Paramètres>Clés d’accès dans le portail.

Copier une clé et une URL

Les appels REST requièrent le point de terminaison de service de recherche et une clé API sur chaque requête. Vous pouvez obtenir ces valeurs à partir du portail Azure.

  1. Connectez-vous au portail Azure, accédez à la page Vue d’ensemble et copiez l’URL. Voici un exemple de point de terminaison : https://mydemo.search.windows.net.

  2. Sous Paramètres>Clés, copiez une clé d’administration. Les clés d’administration sont utilisées pour ajouter, modifier et supprimer des objets. Il existe deux clés d’administration interchangeables. Copiez l’une ou l’autre.

    Capture d’écran de l’URL et des clés API dans le portail Azure.

Une clé d’API valide permet d’établir, en fonction de chaque requête, une relation de confiance entre l’application qui envoie la requête et le service de recherche qui en assure le traitement.

Créer une source de données, un ensemble de compétences, un index et un indexeur

Dans cette section, créez un flux de travail « buggy » que vous pouvez corriger dans ce tutoriel.

  1. Démarrez Visual Studio Code et ouvrez le fichier debug-sessions.rest.

  2. Fournissez les variables suivantes : URL du service de recherche, clé API d’administration des services de recherche, chaîne de connexion de stockage et nom du conteneur d’objets blob stockant les fichiers PDF.

  3. Envoyez à son tour chaque requête. La création de l’indexeur prend plusieurs minutes.

  4. Fermez le fichier .

Contrôler les résultats sur le portail

L’exemple de code crée délibérément un index incorrect à la suite de problèmes qui se sont produits lors de l’exécution d’un ensemble de compétences. Le problème est que l’index manque de données.

  1. Dans la page Vue d’ensemble du service de recherche dans le portail Azure, sélectionnez l’onglet Index.

  2. Sélectionnez clinical-trials.

  3. Entrez cette chaîne de requête JSON dans la vue JSON de l’Explorateur de recherche. Elle renvoie des champs pour des documents spécifiques (identifiés par le champ unique metadata_storage_path).

    "select": "metadata_storage_path, organizations, locations",
    "count"=true`
    
  4. Exécutez la requête. Vous devez voir des valeurs vides pour organizations et locations.

    Ces champs auraient dû être remplis à l’aide de la compétence de reconnaissance d’entité de l’ensemble de compétences ; celle-ci est utilisée pour détecter des organisations et des emplacements n’importe où dans le contenu du blob. Dans l’exercice suivant, vous déboguez l’ensemble de compétences pour déterminer la cause du problème.

Vous pouvez également investiguer les erreurs et les avertissements en utilisant le portail Azure.

  1. Ouvrez l’onglet Indexeurs et sélectionnez clinical-trials-idxr.

    Remarquez que, même si le travail de l’indexeur a été globalement accompli avec succès, il y a eu des avertissements.

  2. Cliquez sur Réussite pour afficher les avertissements (s’il y avait eu principalement des erreurs, le lien des détails serait libellé Échec). Vous voyez une liste exhaustive de tous les avertissements émis par l’indexeur.

    Capture d’écran des avertissements d’affichage.

Démarrer votre session de débogage

  1. Dans le volet de navigation gauche du service de recherche, sous Gestion de la recherche, sélectionnez Sessions de débogage.

  2. Sélectionnez + Ajouter une session de débogage.

  3. Donnez un nom à la session.

  4. Connectez la session à votre compte de stockage. Créez un conteneur nommé « sessions de débogage ». Vous pouvez utiliser ce conteneur à plusieurs reprises pour stocker toutes vos données de session de débogage.

  5. Si vous avez configuré une connexion approuvée entre la recherche et le stockage, sélectionnez l’identité système ou l’identité managée par l’utilisateur pour la connexion. Sinon, utilisez la valeur par défaut (Aucun).

  6. Dans le modèle Indexeur, indiquez le nom de l’indexeur. L’indexeur a des références à la source de données, à l’ensemble de compétences et à l’index.

  7. Acceptez le choix de document par défaut pour le premier document de la collection. Une session de débogage ne fonctionne qu’avec un seul document. Vous pouvez choisir le document à déboguer, ou simplement utiliser le premier proposé.

  8. Enregistrez la session. L’enregistrement de la session lance le pipeline d’enrichissement défini par l’ensemble de compétences pour le document sélectionné.

    Capture d’écran de la configuration d’une nouvelle session de débogage.

  9. Quand l’initialisation de la session de débogage est terminée, la session affiche par défaut l’onglet Enrichissements par IA, en mettant en évidence le Graphe des compétences. Le graphe des compétences fournit une hiérarchie visuelle de l’ensemble de compétences, et de son ordre d’exécution de manière séquentielle et en parallèle.

    Capture d’écran de l’éditeur visuel Session de débogage.

Trouver les problèmes liés à l’ensemble de compétences

Tous les problèmes signalés par l’indexeur se trouvent sous l’onglet adjacent Erreurs/avertissements.

Capture d’écran de l’onglet Erreurs et avertissements.

Remarquez que l’onglet Erreurs/avertissements propose une liste bien plus courte que celle affichée précédemment puisqu’elle renseigne uniquement sur les erreurs d’un seul document. Comme avec la liste affichée par l’indexeur, vous pouvez sélectionner un message d’avertissement pour voir les détails le concernant.

Sélectionnez Erreurs/avertissements pour passer en revue les notifications. Vous devriez en voir quatre :

  • « Impossible d’exécuter la compétence parce qu’une ou plusieurs entrées de compétence ne sont pas valides. L’entrée de compétence requise est manquante. Nom : ’texte’, Source : ’/document/contenu'. »

  • « Impossible de mapper le champ de sortie "locations" à l’index de recherche. Vérifiez la propriété outputFieldMappings de votre indexeur. Valeur /document/merged_content/locations manquante ».

  • « Impossible de mapper le champ de sortie "organizations" à l’index de recherche. Vérifiez la propriété outputFieldMappings de votre indexeur. Valeur /document/merged_content/organizations manquante ».

  • « Compétence exécutée mais susceptible de présenter des résultats inattendus, car une ou plusieurs entrées de compétence ne sont pas valides. L’entrée de compétence facultative est manquante. Nom : languageCode, Source : /document/languageCode. Problèmes d’analyse de la langue d’expression : Valeur /document/languageCode manquante ».

Nombreuses sont les compétences assorties d’un paramètre « languageCode ». En examinant l’opération de plus près, vous pouvez voir que cette entrée de code de langue est absente de EntityRecognitionSkill.#1 ; il s’agit de la même compétence de reconnaissance d’entité qui rencontre des problèmes avec les sorties « locations » et « organizations ».

Étant donné que les quatre notifications se rapportent à cette compétence, l’étape suivante consiste à déboguer cette compétence. Dans la mesure du possible, commencez par résoudre les problèmes d’entrée avant de passer aux problèmes de sortie.

Corriger les valeurs d’entrée de compétence manquantes

Sous l’onglet Erreurs/avertissements, deux entrées sont manquantes pour une opération libellée EntityRecognitionSkill.#1. Le détail de la première erreur explique qu’une entrée requise pour « texte » est manquante. Celui de la seconde indique un problème avec une valeur d’entrée « /document/languageCode ».

  1. Dans Enrichissements par IA>Graphique des compétences, sélectionnez la compétence libellée #1 pour afficher ses détails dans le volet de droite.

  2. Sélectionnez l’onglet Exécutions et recherchez l’entrée pour « texte ».

  3. Sélectionnez le symbole </> pour ouvrir l’évaluateur d’expression. Le résultat affiché pour cette entrée ne ressemble pas à une entrée de texte. Il ressemble plutôt à une série de caractères de nouvelle ligne \n \n\n\n\n. L’absence de texte signifie qu’aucune entité ne peut être identifiée, de sorte que ce document ne répond pas aux conditions préalables de la compétence, ou qu’il existe une autre entrée qui devrait être utilisée à la place.

    Capture d’écran de l’évaluateur d’expression pour l’entrée de texte.

  4. Basculez le volet gauche vers Structure de données enrichie, et faites défiler la liste des nœuds d’enrichissement pour ce document. Notez que le \n \n\n\n\n pour « content » n’a pas de source d’origine, mais qu’une autre valeur pour « merged_content » a une sortie OCR. Bien qu’il n’y ait aucune indication, le contenu de ce fichier PDF semble être un fichier JPEG, comme le montre le texte extrait et traité dans « merged_content ».

    Capture d’écran de Structure de données enrichie.

  5. Dans le volet droit, sélectionnez Exécutions pour la compétence #1, et ouvrez l’évaluateur d’expression </> pour l’entrée « texte ».

  6. Remplacez l’expression /document/content par /document/merged_content, puis sélectionnez Évalluer. Notez que le contenu est maintenant un segment de texte et qu’il est par conséquent actionnable pour la reconnaissance d’entité.

    Capture d’écran de l’évaluateur d’expression pour l’entrée merged_content fixe.

  7. Basculez vers l’Éditeur JSON de compétences.

  8. À la ligne 16, sous « entrées », remplacez /document/content par /document/merged_content.

     {
       "name": "text",
       "source": "/document/merged_content"
     },
    
  9. Sélectionnez Enregistrer dans le volet Détails de la compétence.

    Capture d’écran de la commande Enregistrer pour les détails de l’ensemble de compétences.

  10. Cliquez sur Exécuter dans le menu Fenêtre de la session. Cela lance une autre exécution de l’ensemble de compétences avec le document.

  11. Une fois l’exécution de la session de débogage terminée, cliquez sur l’onglet Erreurs/avertissements. Celui-ci indique que l’erreur de saisie de texte a disparu, mais que les autres avertissements subsistent. L’étape suivante consiste à traiter l’avertissement concernant « languageCode ».

    Capture d’écran des erreurs et avertissements mis à jour.

  12. Sélectionnez l’onglet Exécutions et recherchez l’entrée pour « languageCode ».

  13. Sélectionnez le symbole </> pour ouvrir l’évaluateur d’expression. Notez la confirmation que la propriété « languageCode » n’est pas une entrée valide.

    Capture d’écran de l’évaluateur d’expression pour l’entrée de langue.

Il existe deux façons de rechercher cette erreur. La première consiste à examiner d’où provient l’entrée, c’est-à-dire quelle compétence de la hiérarchie est supposée produire ce résultat ? L’onglet Exécutions du volet des détails des compétences doit afficher la source de l’entrée. Si aucune source n’est affichée, cela indique une erreur de mappage de champ.

  1. Sous l’onglet exécutions, vérifiez les ENTRÉES et recherchez « languagecode ». Aucune source n’est indiquée pour cette entrée.

  2. Basculez le volet gauche vers Structure de données enrichie. Faites défiler la liste des nœuds d’enrichissement pour ce document. Notez qu’il n’existe pas de nœud « languageCode », mais qu’il en existe un pour « language ». Par conséquent, il y a une faute de frappe dans les paramètres des compétences.

    Capture d’écran de Structure de données enrichie, avec la langue mise évidence.

  3. Toujours dans la Structure de données enrichie, ouvrez l’évaluateur d’expression </> pour le nœud « language » et copiez l’expression /document/language.

  4. Dans le volet droit, sélectionnez Paramètres de compétence pour la compétence #1 et ouvrez l’évaluateur d’expression </> pour l’entrée « languageCode ».

  5. Collez la nouvelle valeur /document/language dans la zone Expression, puis sélectionnez Évaluer. Elle doit afficher l’entrée correcte « en ».

  6. Sélectionnez Enregistrer.

  7. Sélectionnez Exécuter.

Une fois l’exécution de la session de débogage terminée, vérifiez sous l’onglet Arreurs/avertissements que tous les avertissements d’entrée ont disparu. Il ne reste désormais plus que les deux avertissements sur les champs de sortie pour les organisations et les localisations.

Remédier aux valeurs de sortie de compétence manquantes

Les messages indiquent de vérifier la propriété « outputFieldMappings » de votre indexeur. Faisons donc cela.

  1. Accédez au Graphique des compétences et sélectionnez Mappages de champs de sortie. Les mappages sont effectivement corrects mais, normalement, vous devriez vérifier la définition d’index pour vous assurer que les champs existent pour les « emplacements » et les « organisations ».

    Capture d’écran des mappages de champs de sortie.

  2. S’il n’y a aucun problème avec l’index, l’étape suivante consiste à vérifier les sorties de la compétence. Comme précédemment, sélectionnez la Structure de données enrichie et faites défiler les nœuds pour rechercher les « emplacements » et « organisations ». Notez que le parent est « content » au lieu de « merged_content ». Le contexte est incorrect.

    Capture d’écran de Structure de données enrichie, avec un contexte erroné.

  3. Revenez au Graphique des compétences et sélectionnez la compétence de reconnaissance d’entité.

  4. Accédez aux Paramètres des compétences pour rechercher « context » (contexte).

    Capture d’écran de la correction de contexte dans le paramètre de compétence.

  5. Double-cliquez sur le paramètre pour « context », puis remplacez-le pour qu’il indique « /document/merged_content ».

  6. Sélectionnez Enregistrer.

  7. Sélectionnez Exécuter.

Toutes les erreurs ont été résolues.

Valider les changements apportés à l’ensemble de compétences

Quand la session de débogage a été lancée, le service de recherche a créé une copie de l’ensemble de compétences. Cette opération a été effectuée pour protéger l’ensemble de compétences d’origine de votre service de recherche. Maintenant que vous avez terminé le débogage de votre ensemble de compétences, les correctifs peuvent être validés (remplacez l’ensemble de compétences d’origine).

Si vous n’êtes pas prêt à valider les modifications, vous pouvez également enregistrer la session de débogage et la rouvrir ultérieurement.

  1. Sélectionnez Valider les changements dans le menu principal Sessions de débogage.

  2. Sélectionnez OK pour vérifier que vous souhaitez mettre à jour votre ensemble de compétences.

  3. Fermez la session Debug et ouvrez Indexers à partir du volet de navigation gauche.

  4. Sélectionnez « clinical-trials-idxr ».

  5. Sélectionnez Réinitialiser.

  6. Sélectionnez Exécuter.

  7. Sélectionnez Actualiser pour afficher les états des commandes de réinitialisation et d’exécution.

Une fois l’exécution de l’indexeur terminée, une coche verte et le mot « Réussite » doivent s’afficher en regard de l’horodatage de la dernière exécution, sous l’onglet Historique d’exécution. Pour vérifier que les changements ont été appliqués :

  1. Dans le volet de navigation gauche, ouvrez Index.

  2. Sélectionnez l’index « clinical-trials », puis sous l’onglet Explorateur de recherche, entrez la chaîne de requête $select=metadata_storage_path, organizations, locations&$count=true pour retourner les champs de documents spécifiques (identifiés par le champ metadata_storage_path unique).

  3. Sélectionnez Recherche.

Les résultats doivent indiquer que les organisations et les localisations sont maintenant renseignées avec les valeurs attendues.

Nettoyer les ressources

Lorsque vous travaillez dans votre propre abonnement, il est recommandé, à la fin de chaque projet, de déterminer si vous avez toujours besoin des ressources que vous avez créées. Les ressources laissées en cours d’exécution peuvent vous coûter de l’argent. Vous pouvez supprimer les ressources une par une, ou choisir de supprimer le groupe de ressources afin de supprimer l’ensemble des ressources.

Vous pouvez rechercher et gérer les ressources dans le portail à l’aide des liens Toutes les ressources ou Groupes de ressources situés dans le volet de navigation de gauche.

Le service gratuit est limité à trois index, indexeurs et sources de données. Vous pouvez supprimer des éléments un par un dans le portail pour ne pas dépasser la limite.

Étapes suivantes

Ce tutoriel a abordé différents aspects de la définition et du traitement de l’ensemble de compétences. Pour en savoir plus sur les concepts et les workflows, consultez les articles suivants :