Получение ответа с помощью 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.

Вот как это можно сделать.

  1. Выполните вход в https://www.qnamaker.ai.

  2. В разделе Мои базы знаний нажмите Просмотреть код для своей базы знаний. Снимок экрана:

  3. Получите сведения о конечной точке GenerateAnswer.

    Снимок экрана: сведения о конечной точке

Можно также получить сведения о конечной точки на вкладке Settings (Параметры) базы знаний.

Конфигурация запроса GenerateAnswer

Для вызова GenerateAnswer используется HTTP-запрос POST. Пример кода, в котором демонстрируется вызов GenerateAnswer, доступен в этих кратких руководствах.

Запрос POST использует:

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.