Получение ответа с помощью API GenerateAnswer
Чтобы получить прогнозируемый ответ на вопрос пользователя, используйте API GenerateAnswer. При публикации базы знаний можно просмотреть сведения об использовании этого API на странице Публикация. Вы также можете настроить API для фильтрации ответов на основе тегов метаданных и проверить базу знаний из конечной точки с помощью параметра строки тестового запроса.
Примечание.
Поддержка службы QnA Maker будет прекращена 31 марта 2025 г. Новая версия вопроса и возможности ответа теперь доступна как часть языка искусственного интеллекта Azure. Сведения о возможностях ответов на вопросы в службе Языка см. в статье с ответами на вопросы. С 1 октября 2022 г. вы не сможете создавать ресурсы QnA Maker. Сведения о переносе существующих баз знаний QnA Maker в функцию вопросов и ответов см. в руководстве по миграции.
Получение прогнозов ответов с помощью API GenerateAnswer
API GenerateAnswer можно использовать в боте или приложении для отправки к базе знаний запросов с вопросом пользователя для получения наиболее точного ответа из пар вопросов и ответов.
Примечание.
Эта документация не относится к последнему выпуску. Чтобы узнать об использовании новейших API функции ответов на вопросы, ознакомьтесь с кратким руководством по созданию ответа на вопрос.
Публикация для получения конечной точки GenerateAnswer
После публикации базы знаний, либо с портала QnA Maker, либо с помощью API, можно получить сведения о конечной точке GenerateAnswer.
Вот как это можно сделать.
Выполните вход в https://www.qnamaker.ai.
В разделе Мои базы знаний нажмите Просмотреть код для своей базы знаний.
Получите сведения о конечной точке GenerateAnswer.
Можно также получить сведения о конечной точки на вкладке Settings (Параметры) базы знаний.
Конфигурация запроса GenerateAnswer
Для вызова GenerateAnswer используется HTTP-запрос POST. Пример кода, в котором демонстрируется вызов GenerateAnswer, доступен в этих кратких руководствах.
Запрос POST использует:
- обязательные параметры URI;
- обязательное свойство заголовка (
Authorization
) для обеспечения безопасности; - обязательные свойства текста.
URL-адрес GenerateAnswer имеет следующий формат:
https://{QnA-Maker-endpoint}/knowledgebases/{knowledge-base-ID}/generateAnswer
Не забудьте задать в качестве значения свойства HTTP-заголовка значение Authorization
строки EndpointKey
с пробелом в конце, а затем ключ конечной точки, указанный на странице Параметры.
Пример текста JSON выглядит следующим образом:
{
"question": "qna maker and luis",
"top": 6,
"isTest": true,
"scoreThreshold": 30,
"rankerType": "" // values: QuestionOnly
"strictFilters": [
{
"name": "category",
"value": "api"
}],
"userId": "sd53lsY="
}
Узнайте подробнее о rankerType.
Предыдущий JSON запрашивал только ответы, которые имеют пороговую оценку 30 % или выше.
Свойства ответа GenerateAnswer
Ответ — это объект JSON, включающий всю информацию, необходимую для вывода ответа, и следующий шаг в диалоге, если он доступен.
{
"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"
}
]
}
]
}
Предыдущий JSON предоставил ответ с показателем 38,5 %.
Сопоставление только вопросов (по тексту)
По умолчанию QnA Maker выполняет поиск по вопросам и ответам. Если вы хотите выполнять поиск только по вопросам, используйте RankerType=QuestionOnly
в тексте сообщения запроса GenerateAnswer.
Можно выполнять поиск в опубликованной базе знаний (с помощью isTest=false
) или в тестовой базе знаний (с помощью isTest=true
).
{
"question": "Hi",
"top": 30,
"isTest": true,
"RankerType":"QuestionOnly"
}
Использование QnA Maker с ботом в C #
Платформа Bot Framework предоставляет доступ к свойствам QnA Maker с помощью 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);
Предыдущий JSON запрашивал только ответы, которые имеют пороговую оценку 30 % или выше.
Использование QnA Maker с ботом в Node.js
Платформа Bot Framework предоставляет доступ к свойствам QnA Maker с помощью 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);
Предыдущий JSON запрашивал только ответы, которые имеют пороговую оценку 30 % или выше.
Получение точных ответов с помощью API GenerateAnswer
Мы предлагаем точную функцию ответов только в управляемой версии QnA Maker.
Распространенные ошибки HTTP
Код | Описание |
---|---|
"2xx" | Удачное завершение |
400 | Параметры запроса указаны неправильно. Это означает, что требуемые параметры отсутствуют, имеют неправильный формат или слишком большой размер |
400 | Текст запроса указан неправильно. Это означает, что JSON отсутствует, имеет неправильный формат или слишком большой размер |
401 | Недопустимый ключ |
403 | Доступ запрещен. У вас нет необходимых разрешений |
404 | База знаний не существует |
410 | Этот API устарел и больше недоступен |
Следующие шаги
На странице публикации также содержатся сведения о создании ответа с помощью расширения REST Клиента Visual Studio Code или cURL.