Uzyskiwanie odpowiedzi za pomocą interfejsu API GenerateAnswer

Aby uzyskać przewidywaną odpowiedź na pytanie użytkownika, użyj interfejsu API GenerateAnswer. Podczas publikowania baza wiedzy można zobaczyć informacje o sposobie korzystania z tego interfejsu API na stronie Publikowanie. Możesz również skonfigurować interfejs API do filtrowania odpowiedzi na podstawie tagów metadanych i przetestować baza wiedzy z punktu końcowego przy użyciu parametru ciągu zapytania testowego.

Uwaga

Usługa QnA Maker jest wycofywana 31 marca 2025 r. Nowsza wersja funkcji pytań i odpowiedzi jest teraz dostępna w ramach języka sztucznej inteligencji platformy Azure. Aby uzyskać informacje na temat możliwości odpowiadania na pytania w usłudze językowej, zobacz odpowiadanie na pytania. Od 1 października 2022 r. nie będzie można tworzyć nowych zasobów usługi QnA Maker. Aby uzyskać informacje na temat migrowania istniejących baz wiedzy usługi QnA Maker do odpowiadania na pytania, zapoznaj się z przewodnikiem migracji.

Uzyskiwanie przewidywań odpowiedzi za pomocą interfejsu API GenerateAnswer

Interfejs API GenerateAnswer w botze lub aplikacji służy do wykonywania zapytań dotyczących baza wiedzy za pomocą pytania użytkownika, aby uzyskać najlepsze dopasowanie z par pytań i odpowiedzi.

Uwaga

Ta dokumentacja nie dotyczy najnowszej wersji. Aby dowiedzieć się więcej na temat korzystania z najnowszych interfejsów API odpowiedzi na pytania, zapoznaj się z przewodnikiem Szybki start dotyczącym odpowiadania na pytania.

Publikowanie w celu pobrania punktu końcowego GenerateAnswer

Po opublikowaniu baza wiedzy w portalu usługi QnA Maker lub przy użyciu interfejsu API możesz uzyskać szczegółowe informacje o punkcie końcowym GenerateAnswer.

Aby uzyskać szczegóły punktu końcowego:

  1. Zaloguj się do witryny https://www.qnamaker.ai.

  2. W obszarze Moje bazy wiedzy wybierz pozycję Wyświetl kod dla baza wiedzy. Zrzut ekranu przedstawiający moje bazy wiedzy

  3. Pobierz szczegóły punktu końcowego GenerateAnswer.

    Zrzut ekranu przedstawiający szczegóły punktu końcowego

Szczegóły punktu końcowego można również uzyskać na karcie Ustawienia baza wiedzy.

Konfiguracja żądania GenerateAnswer

Wywołasz metodę GenerateAnswer z żądaniem HTTP POST. Aby uzyskać przykładowy kod pokazujący sposób wywoływania metody GenerateAnswer, zobacz przewodniki Szybki start.

Żądanie POST używa:

Adres URL generateAnswer ma następujący format:

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

Pamiętaj, aby ustawić właściwość nagłówka Authorization HTTP z wartością ciągu EndpointKey z spacją końcową, a następnie klucz punktu końcowego znajdujący się na stronie Ustawienia .

Przykładowa treść JSON wygląda następująco:

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

Dowiedz się więcej o rankerType.

Poprzedni kod JSON zażądał tylko odpowiedzi, które są w 30% lub powyżej wyniku progu.

Właściwości odpowiedzi GenerateAnswer

Odpowiedź jest obiektem JSON zawierającym wszystkie informacje potrzebne do wyświetlenia odpowiedzi, a następnie z kolei w konwersacji, jeśli jest dostępna.

{
    "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"
                }
            ]
        }
    ]
}

Poprzedni kod JSON odpowiedział odpowiedzią z wynikiem 38,5%.

Dopasuj tylko pytania według tekstu

Domyślnie usługa QnA Maker wyszukuje pytania i odpowiedzi. Jeśli chcesz wyszukiwać tylko pytania, aby wygenerować odpowiedź, użyj wartości RankerType=QuestionOnly w treści POST żądania GenerateAnswer.

Możesz przeszukać opublikowaną bazę wiedzy przy użyciu polecenia lub w bazie wiedzy testowej przy użyciu isTest=falsepolecenia isTest=true.

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

Używanie usługi QnA Maker z botem w języku C#

Platforma botów zapewnia dostęp do właściwości usługi QnA Maker za pomocą interfejsu 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);

Poprzedni kod JSON zażądał tylko odpowiedzi, które są w 30% lub powyżej wyniku progu.

Używanie usługi QnA Maker z botem w Node.js

Platforma botów zapewnia dostęp do właściwości usługi QnA Maker za pomocą interfejsu 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);

Poprzedni kod JSON zażądał tylko odpowiedzi, które są w 30% lub powyżej wyniku progu.

Uzyskiwanie dokładnych odpowiedzi za pomocą interfejsu API GenerateAnswer

Oferujemy precyzyjną funkcję odpowiedzi tylko w przypadku zarządzanej wersji usługi QnA Maker.

Typowe błędy HTTP

Kod Wyjaśnienie
2xx Powodzenie
400 Parametry żądania są nieprawidłowe, co oznacza, że brakuje wymaganych parametrów, są źle sformułowane lub zbyt duże
400 Treść żądania jest niepoprawna, co oznacza, że brakuje kodu JSON, źle sformułowane lub zbyt duże
401 Nieprawidłowy klucz
403 Zabronione — nie masz odpowiednich uprawnień
404 Baza wiedzy nie istnieje
410 Ten interfejs API jest przestarzały i nie jest już dostępny

Następne kroki

Strona Publikowanie zawiera również informacje umożliwiające wygenerowanie odpowiedzi za pomocą narzędzia Postman lub programu cURL.