Obtenir une réponse avec l’API GenerateAnswer

Pour obtenir la réponse prédite à la question d’un utilisateur, utilisez l’API GenerateAnswer. Lorsque vous publiez une Base de connaissances, vous pouvez voir des informations sur l’utilisation de cette API dans la page Publier. Vous pouvez également configurer l’API pour filtrer les réponses en fonction des balises de métadonnées, et tester la Base de connaissances à partir du point de terminaison avec le paramètre de chaîne de requête de test.

Notes

Le service QnA Maker sera mis hors service le 31 mars 2025. Une version plus récente de la fonctionnalité de questions et réponses est désormais disponible dans le cadre d’Azure AI Language. Pour obtenir des réponses aux questions au sein du service de langage, consultez Réponses aux questions. À partir du 1er octobre 2022 vous ne pourrez plus créer de nouvelles ressources QnA Maker. Pour plus d’informations sur la migration de bases de connaissances QnA Maker existantes vers Réponses aux questions, consultez le Guide de migration.

Obtenir des prédictions de réponse avec l’API GenerateAnswer

Utilisez l’API GenerateAnswer dans votre bot ou application pour rechercher dans votre Base de connaissances une réponse à une question d’un utilisateur et obtenir la meilleure correspondance parmi les paires question/réponse.

Notes

Cette documentation ne s’applique pas à la dernière version. Pour en savoir plus sur l’utilisation des API de réponse aux questions les plus récentes, consultez le guide de démarrage rapide de réponses aux questions.

Publier pour obtenir un point de terminaison GenerateAnswer

Après avoir publié votre Base de connaissances à partir du portail QnA Maker, ou à l’aide de l’API, vous pouvez obtenir les détails de votre point de terminaison GenerateAnswer.

Pour obtenir les détails de votre point de terminaison :

  1. Connectez-vous à https://www.qnamaker.ai.

  2. Dans My knowledge bases (Mes bases de connaissances), sélectionnez View Code (Afficher le code) sur la ligne de votre base de connaissances. Capture d’écran des Bases de connaissances

  3. Examinez les détails de votre point de terminaison GenerateAnswer.

    Capture d’écran des détails du point de terminaison

Vous pouvez également obtenir les détails de votre point de terminaison à partir de l’onglet Settings (Paramètres) de votre base de connaissances.

Configuration de requête GenerateAnswer

Vous appelez GenerateAnswer à l’aide d’une requête HTTP POST. Pour obtenir un exemple de code qui montre comment appeler GenerateAnswer, consultez les guides de démarrage rapide.

La requête POST utilise :

Le format de l’URL GenerateAnswer est le suivant :

https://{QnA-Maker-endpoint}/knowledgebases/{knowledge-base-ID}/generateAnswer

N’oubliez pas de définir la propriété d’en-tête HTTP de Authorization avec une valeur de la chaîne EndpointKey et une espace final, puis la clé de point de terminaison figurant sur la page Paramètres.

Un exemple de corps JSON ressemble à ceci :

{
    "question": "qna maker and luis",
    "top": 6,
    "isTest": true,
    "scoreThreshold": 30,
    "rankerType": "" // values: QuestionOnly
    "strictFilters": [
    {
        "name": "category",
        "value": "api"
    }],
    "userId": "sd53lsY="
}

En savoir plus sur rankerType.

Le JSON précédent a demandé uniquement des réponses à 30 % ou plus par rapport au score de seuil.

Propriétés de réponse GenerateAnswer

La réponse est un objet JSON incluant toutes les informations nécessaires pour afficher la réponse et l’intersection suivante dans la conversation, si elle est disponible.

{
    "answers": [
        {
            "score": 38.54820341616869,
            "Id": 20,
            "answer": "There is no direct integration of LUIS with QnA Maker. But, in your bot code, you can use LUIS and QnA Maker together. [View a sample bot](https://github.com/Microsoft/BotBuilder-CognitiveServices/tree/master/Node/samples/QnAMaker/QnAWithLUIS)",
            "source": "Custom Editorial",
            "questions": [
                "How can I integrate LUIS with QnA Maker?"
            ],
            "metadata": [
                {
                    "name": "category",
                    "value": "api"
                }
            ]
        }
    ]
}

Le JSON précédent a fourni une réponse avec un score de 38,5 %.

Faire correspondre les questions uniquement, par texte

Par défaut, QnA Maker recherche dans les questions et les réponses. Pour rechercher dans les questions uniquement afin de générer une réponse, utilisez le paramètre RankerType=QuestionOnly dans le corps POST de la requête GenerateAnswer.

Vous pouvez rechercher dans la Base de connaissances publiée à l’aide de isTest=false, ou dans la Base de connaissances de test à l’aide de isTest=true.

{
  "question": "Hi",
  "top": 30,
  "isTest": true,
  "RankerType":"QuestionOnly"
}

Utiliser QnA Maker avec un bot en C#

Bot Framework donne accès aux propriétés de QnA Maker avec l’API getAnswer :

using Microsoft.Bot.Builder.AI.QnA;
var metadata = new Microsoft.Bot.Builder.AI.QnA.Metadata();
var qnaOptions = new QnAMakerOptions();

metadata.Name = Constants.MetadataName.Intent;
metadata.Value = topIntent;
qnaOptions.StrictFilters = new Microsoft.Bot.Builder.AI.QnA.Metadata[] { metadata };
qnaOptions.Top = Constants.DefaultTop;
qnaOptions.ScoreThreshold = 0.3F;
var response = await _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext, qnaOptions);

Le JSON précédent a demandé uniquement des réponses à 30 % ou plus par rapport au score de seuil.

Utiliser QnA Maker avec un bot en Node.js

Bot Framework donne accès aux propriétés de QnA Maker avec l’API getAnswer :

const { QnAMaker } = require('botbuilder-ai');
this.qnaMaker = new QnAMaker(endpoint);

// Default QnAMakerOptions
var qnaMakerOptions = {
    ScoreThreshold: 0.30,
    Top: 3
};
var qnaResults = await this.qnaMaker.getAnswers(stepContext.context, qnaMakerOptions);

Le JSON précédent a demandé uniquement des réponses à 30 % ou plus par rapport au score de seuil.

Obtenir des réponses précises avec l’API GenerateAnswer

Nous proposons la fonctionnalité de réponse précise uniquement dans la version managée de QnA Maker.

Erreurs HTTP courantes

Code Explication
2xx Succès
400 Les paramètres de la requête sont incorrects, ce qui signifie que les paramètres obligatoires sont manquants, incorrects ou trop grands
400 Le corps de la requête est incorrect, ce qui signifie que l’objet JSON est manquant, mal formé ou trop grand
401 Clé non valide
403 Interdit : vous n’avez pas les autorisations appropriées
404 La base de connaissances n’existe pas
410 Cette API est déconseillée et n’est plus disponible.

Étapes suivantes

La page Publier fournit aussi des informations pour générer une réponse avec Postman ou cURL.