Ajouter plusieurs catégories à votre robot de FAQ

Dans ce tutoriel, vous allez apprendre à :

  • Créer un projet et étiqueter les paires question-réponse dans des catégories distinctes avec des métadonnées
  • Créer un projet distinct pour chaque domaine
  • Créer une ressource de langue distincte pour chaque domaine

Lors de la création d’un bot de forum aux questions, vous pouvez être confronté à des cas d’utilisation qui vous demandent d’adresser des requêtes dans plusieurs domaines. Supposons que l’équipe marketing de Microsoft souhaite créer un bot de service clientèle qui réponde aux demandes les plus fréquentes des utilisateurs sur différents produits Surface. Par souci de simplicité, nous allons utiliser deux URL de FAQ, le stylet de Surfaceet les Earbuds de Surface pour créer le projet.

Créer un projet avec des métadonnées spécifiques à un domaine

Les auteurs de contenu peuvent utiliser ou ajouter au projet des documents pour extraire des paires de réponses aux questions. Pour regrouper ces questions et réponses dans des domaines ou des catégories spécifiques, vous pouvez ajouter des métadonnées.

Pour le bot des produits Surface, vous pouvez effectuer les étapes suivantes en créant un bot qui réponde aux requêtes des deux types de produits :

  1. Ajoutez les URL de FAQ suivantes en tant que sources en sélectionnant Ajouter une source>URL> puis Tout ajouter une fois que vous avez ajouté chacune des URL ci-dessous :

    FAQ sur le stylet Surface
    FAQ sur Surface Earbuds

    Screenshot of add URL UI.

  2. Dans ce projet, nous avons des paires de réponses aux questions sur deux produits et nous aimerions les distinguer afin de pouvoir rechercher des réponses parmi les questions et réponses d’un produit donné. Pour ce faire, nous pouvons mettre à jour le champ de métadonnées pour les paires de réponses aux questions.

    Comme vous pouvez le voir dans l’exemple ci-dessous, nous avons ajouté une métadonnée avec produit en tant que clé, et surface_pen ou surface_earbuds en tant que valeurs, lorsque cela est nécessaire. Vous pouvez étendre cet exemple pour extraire des données sur plusieurs produits, et ajouter une valeur différente pour chaque produit.

    Screenshot of metadata example.

  3. À présent, afin de limiter le système à un produit particulier dans sa recherche de la réponse, vous devez passer ce produit sous la forme d’un filtre dans l’API REST de réponses aux questions personnalisées.

    Vous pouvez récupérer l’URL de prédiction de l’API REST à partir du volet Déployer le projet :

    Screenshot of the Deploy project page with the prediction URL displayed.

    Dans le corps JSON de l’appel d’API, nous avons passé surface_pen comme valeur pour le produit en métadonnée. Le système recherche alors uniquement la réponse parmi les paires de questions-réponses ayant la même métadonnée.

        {
          "question": "What is the price?",
          "top": 3
        },
        "answerSpanRequest": {
          "enable": true,
          "confidenceScoreThreshold": 0.3,
          "topAnswersWithSpan": 1
        },
        "filters": {
          "metadataFilter": {
            "metadata": [
              {
                "key": "product",
                "value": "surface_pen"
              }
            ]
          }
        }
    

    Vous pouvez obtenir la valeur de la métadonnée en fonction de l’entrée utilisateur de l’une des manières suivantes :

    • Acceptez explicitement le domaine comme entrée à partir de l’utilisateur par le biais du client bot. Par exemple, comme illustré ci-dessous, vous pouvez utiliser une catégorie de produit en tant qu’entrée à partir de l’utilisateur lorsque la conversation est lancée.

      Take metadata input

    • Identifiez implicitement le domaine en fonction du contexte du bot. Par exemple, en cas de question précédente posée sur un produit Surface particulier, celui-ci peut être enregistré en tant que contexte par le client. Si l’utilisateur ne précise pas le produit dans la requête suivante, vous pouvez transmettre le contexte du bot comme métadonnées à l’API de génération de réponse.

      Pass context

    • Extrayez l’entité à partir de la requête utilisateur permettant d’identifier le domaine à utiliser pour le filtre de métadonnées. Vous pouvez utiliser d’autres Azure AI services tels que la Reconnaissance d’entités nommées (NER) et compréhension du langage courant pour l’extraction d’entités.

      Extract metadata from query

Quelle est la taille de nos projets ?

Vous pouvez ajouter jusqu’à 50 000 paires de réponses aux questions à un seul projet. Si vos données excèdent 50 000 paires de réponses aux questions, vous devez envisager de diviser le projet.

Créer un projet distinct pour chaque domaine

Vous pouvez également créer un projet distinct par domaine et gérer les projets séparément. Toutes les API demandent à l’utilisateur de transmettre le nom du projet pour effectuer une mise à jour du projet ou extraire une réponse à la question de l’utilisateur.

Lorsque le service reçoit la question de l’utilisateur, vous devez transmettre sur le projectName du point de terminaison de l’API REST présenté pour extraire une réponse du projet concerné. Vous pouvez localiser l’URL dans la page Déployer le projet sous Obtenir l’URL de prédiction :

https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

Créer une ressource de langue distincte pour chaque domaine

Supposons que l’équipe marketing de Microsoft souhaite créer un bot de service clientèle qui réponde aux demandes des utilisateurs concernant les produits Surface et Xbox. Ils envisagent d’affecter des équipes distinctes pour accéder aux projets des produits Surface et Xbox. Dans ce cas, il est recommandé de créer deux ressources de réponses aux questions personnalisées, une pour Surface et une autre pour Xbox. Par contre, vous pouvez définir des rôles distincts pour les utilisateurs qui accèdent à la même ressource.