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 :
Connectez-vous à https://www.qnamaker.ai.
Dans My knowledge bases (Mes bases de connaissances), sélectionnez View Code (Afficher le code) sur la ligne de votre base de connaissances.
Examinez les détails de votre point de terminaison GenerateAnswer.
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 :
- Obligatoirement des paramètres d’URI
- Obligatoirement une propriété d’en-tête,
Authorization
, pour la sécurité - Obligatoirement des propriétés de corps.
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 également des informations pour générer une réponse avec l’extension client REST Visual Studio Code ou cURL.