Uzyskiwanie odpowiedzi z baza wiedzy QNA Maker

Uwaga

Usługa Azure Open AI On Your Data korzysta z dużych modeli językowych (LLMs), aby wygenerować podobne wyniki do usługi QnA Maker. Jeśli chcesz przeprowadzić migrację projektu usługi QnA Maker do usługi Azure Open AI On Your Data, zapoznaj się z naszym przewodnikiem.

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ć odpowiedzi 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 baza wiedzy usługi QnA Maker do odpowiadania na pytania, zapoznaj się z przewodnikiem migracji.

Uwaga

Ta dokumentacja nie ma zastosowania do najnowszej wersji. Aby dowiedzieć się więcej na temat korzystania z najnowszych interfejsów API odpowiedzi na pytania, zapoznaj się z przewodnikiem tworzenia odpowiedzi na pytania.

Ten przewodnik Szybki start oparty na języku cURL przeprowadzi Cię przez proces uzyskiwania odpowiedzi z baza wiedzy.

Wymagania wstępne

  • Zasób usługi QnA Maker utworzony w witrynie Azure Portal. Pamiętaj nazwę zasobu Microsoft Entra ID, Subscription, QnA wybraną podczas tworzenia zasobu.
  • Przeszkolony i opublikowany baza wiedzy z pytaniami i odpowiedziami z poprzedniego przewodnika Szybki start skonfigurowany za pomocą metadanych i czatu chit.

Uwaga

Gdy wszystko będzie gotowe do wygenerowania odpowiedzi na pytanie z baza wiedzy, musisz wytrenować i opublikować baza wiedzy. Po opublikowaniu bazy wiedzy na stronie Publikowanie zostaną wyświetlone ustawienia żądania HTTP do generowania odpowiedzi. Karta cURL zawiera ustawienia wymagane do wygenerowania odpowiedzi na podstawie narzędzia wiersza polecenia.

Filtrowanie odpowiedzi przy użyciu metadanych

Użyj baza wiedzy z poprzedniego szybkiego, aby wysłać zapytanie o odpowiedź na podstawie metadanych.

  1. Na stronie Ustawienia baza wiedzy wybierz kartę CURL, aby wyświetlić przykładowe polecenie cURL używane do generowania odpowiedzi na podstawie baza wiedzy.

  2. Skopiuj polecenie do środowiska edytowalnego (na przykład pliku tekstowego), aby można było edytować polecenie . Zmodyfikuj wartość pytania w następujący sposób, aby metadane service:qna_maker elementu były używane jako filtr par pytań i odpowiedzi.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'top':30, 'question':'size','strictFilters': [{'name':'service','value':'qna_maker'}]}"
    

    Pytanie to tylko jedno słowo , sizektóre może zwrócić jedną z dwóch par pytań i odpowiedzi. Tablica strictFilters informuje odpowiedź, aby zmniejszyć tylko qna_maker odpowiedzi.

  3. Odpowiedź zawiera tylko odpowiedź spełniającą kryteria filtrowania. Następująca odpowiedź cURL została sformatowana pod kątem czytelności:

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 68.76,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "service",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null
    }
    

    Jeśli istnieje para pytań i odpowiedzi, która nie spełnia terminu wyszukiwania, ale spełnia filtr, nie zostanie zwrócona. Zamiast tego zwracana jest ogólna odpowiedź No good match found in KB. .

Używanie właściwości zapytania debugowania

Uwaga

Nie zalecamy używania właściwości Debug dla żadnej zależności. Ta właściwość została dodana w celu ułatwienia zespołowi produktu rozwiązywania problemów.

Informacje debugowania pomagają zrozumieć, jak została określona zwrócona odpowiedź. Chociaż jest to przydatne, nie jest to konieczne. Aby wygenerować odpowiedź z informacjami debugowania, dodaj debug właściwość:

Debug: {Enable:true}
  1. Edytuj polecenie cURL, aby uwzględnić właściwość debugowania, aby wyświetlić więcej informacji.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'Debug':{'Enable':true}}"
    
  2. Odpowiedź zawiera odpowiednie informacje o odpowiedzi. W poniższych danych wyjściowych JSON niektóre szczegóły debugowania zostały zastąpione wielokropkiem w celu zwięzłości.

    {
        "answers": [
            {
                "questions": [
                    "How do I share a knowledge base with others?"
                ],
                "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.",
                "score": 56.07,
                "id": 5,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": {
            "userQuery": {
                "question": "How do I programmatically update my Knowledge Base?",
                "top": 1,
                "userId": null,
                "strictFilters": [],
                "isTest": false,
                "debug": {
                    "enable": true,
                    "recordL1SearchLatency": false,
                    "mockQnaL1Content": null
                },
                "rankerType": 0,
                "context": null,
                "qnaId": 0,
                "scoreThreshold": 0.0
            },
            "rankerInfo": {
                "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base",
                "synonyms": "what s...",
                "rankerLanguage": "English",
                "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini",
                "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers",
                "allQnAsfeatureValues": {
                    "WordnetSimilarity": {
                        "5": 0.54706300120043716,...
                    },
                    ...
                },
                "rankerVersion": "V2",
                "rankerModelType": "TreeEnsemble",
                "rankerType": 0,
                "indexResultsCount": 25,
                "reRankerResultsCount": 1
            },
            "runtimeVersion": "5.24.0",
            "indexDebugInfo": {
                "indexDefinition": {
                    "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e",
                    "fields": [...
                    ],
                    "scoringProfiles": [],
                    "defaultScoringProfile": null,
                    "corsOptions": null,
                    "suggesters": [],
                    "analyzers": [],
                    "tokenizers": [],
                    "tokenFilters": [],
                    "charFilters": [],
                    "@odata.etag": "\"0x8D7A920EA5EE6FE\""
                },
                "qnaCount": 117,
                "parameters": {},
                "azureSearchResult": {
                    "continuationToken": null,
                    "@odata.count": null,
                    "@search.coverage": null,
                    "@search.facets": null,
                    "@search.nextPageParameters": null,
                    "value": [...],
                    "@odata.nextLink": null
                }
            },
            "l1SearchLatencyInMs": 0,
            "qnaL1Results": {...}
        },
        "activeLearningEnabled": true
    }
    

Korzystanie z baza wiedzy testowych

Jeśli chcesz uzyskać odpowiedź z baza wiedzy testowej, użyj isTest właściwości body.

Właściwość jest wartością logiczną.

isTest:true

Polecenie cURL wygląda następująco:

curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'IsTest':true}"

Odpowiedź JSON używa tego samego schematu co opublikowane zapytanie baza wiedzy.

Uwaga

Jeśli test i opublikowane baza wiedzy są dokładnie takie same, nadal może istnieć niewielka zmienność, ponieważ indeks testowy jest współużytkowany między wszystkimi baza wiedzy w zasobie.

Używanie biblioteki cURL do wykonywania zapytań dotyczących odpowiedzi na czacie

  1. W terminalu obsługującym bibliotekę cURL użyj instrukcji kończącej konwersację bota od użytkownika, takiej jak Thank you pytanie. Nie ma żadnych innych właściwości do ustawienia.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'thank you'}"
    
  2. Uruchom polecenie cURL i odbierz odpowiedź JSON, w tym wynik i odpowiedź.

    {
      "answers": [
          {
              "questions": [
                  "I thank you",
                  "Oh, thank you",
                  "My sincere thanks",
                  "My humblest thanks to you",
                  "Marvelous, thanks",
                  "Marvelous, thank you kindly",
                  "Marvelous, thank you",
                  "Many thanks to you",
                  "Many thanks",
                  "Kthx",
                  "I'm grateful, thanks",
                  "Ahh, thanks",
                  "I'm grateful for that, thank you",
                  "Perfecto, thanks",
                  "I appreciate you",
                  "I appreciate that",
                  "I appreciate it",
                  "I am very thankful for that",
                  "How kind, thank you",
                  "Great, thanks",
                  "Great, thank you",
                  "Gracias",
                  "Gotcha, thanks",
                  "Gotcha, thank you",
                  "Awesome thanks!",
                  "I'm grateful for that, thank you kindly",
                  "thank you pal",
                  "Wonderful, thank you!",
                  "Wonderful, thank you very much",
                  "Why thank you",
                  "Thx",
                  "Thnx",
                  "That's very kind",
                  "That's great, thanks",
                  "That is lovely, thanks",
                  "That is awesome, thanks!",
                  "Thanks bot",
                  "Thanks a lot",
                  "Okay, thanks!",
                  "Thank you so much",
                  "Perfect, thanks",
                  "Thank you my friend",
                  "Thank you kindly",
                  "Thank you for that",
                  "Thank you bot",
                  "Thank you",
                  "Right on, thanks very much",
                  "Right on, thanks a lot",
                  "Radical, thanks",
                  "Rad, thanks",
                  "Rad thank you",
                  "Wonderful, thanks!",
                  "Thanks"
              ],
              "answer": "You're welcome.",
              "score": 100.0,
              "id": 75,
              "source": "qna_chitchat_Professional.tsv",
              "metadata": [
                  {
                      "name": "editorial",
                      "value": "chitchat"
                  }
              ],
              "context": {
                  "isContextOnly": false,
                  "prompts": []
              }
          }
      ],
      "debugInfo": null,
      "activeLearningEnabled": true
    }
    

    Ponieważ pytanie Thank you było dokładnie zgodne z pytaniem w konwersacji, usługa QnA Maker jest całkowicie pewna odpowiedzi (ocena 100%). Usługa QnA Maker zwróciła również wszystkie powiązane pytania oraz właściwość metadanych zawierającą informacje o tagu metadanych konwersacji.

Użyj wartości progowej i odpowiedzi domyślnej

Możesz zażądać minimalnej wartości progowej dla odpowiedzi. Jeśli próg nie zostanie osiągnięty, zostanie zwrócona domyślna odpowiedź.

  1. Dodaj właściwość , threshold aby poprosić o odpowiedź size na wartość progową 80% lub lepszą. Baza wiedzy nie powinna znaleźć tej odpowiedzi, ponieważ wynik pytania wynosi 71%. Wynik zwraca domyślną odpowiedź podaną podczas tworzenia baza wiedzy.

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':80.00}"
    
  2. Uruchom polecenie cURL i odbierz odpowiedź JSON.

    {
        "answers": [
            {
                "questions": [],
                "answer": "No good match found in KB.",
                "score": 0.0,
                "id": -1,
                "source": null,
                "metadata": []
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

    Usługa QnA Maker zwróciła wynik 0, co oznacza brak pewności. Zwróciła również domyślną odpowiedź.

  3. Zmień wartość progu na 60% i ponownie zażądaj zapytania:

    curl -X POST https://replace-with-your-resource-name.azurewebsites.net/qnamaker/knowledgebases/replace-with-your-knowledge-base-id/generateAnswer -H "Authorization: EndpointKey replace-with-your-endpoint-key" -H "Content-type: application/json" -d "{'question':'size', 'scoreThreshold':60.00}"
    

    Zwrócony kod JSON znalazł odpowiedź.

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 71.1,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "server",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

Korzystanie ze źródeł danych bez struktury

Teraz obsługujemy możliwość dodawania dokumentów bez struktury, których nie można używać do wyodrębniania pytań i odpowiedzi. Użytkownik może wybrać dołączenie lub wykluczenie zestawów danych bez struktury w interfejsie API GenerateAnswer podczas pobierania odpowiedzi na zapytanie. Nie obsługujemy zestawów danych bez struktury w usłudze ogólnie dostępnej. Jest to uwzględniane tylko w niestandardowym odpowiadaniu na pytania.

W tym samouczku Szybki start opisano sposób uzyskiwania odpowiedzi z bazy wiedzy przy użyciu narzędzia Postman.

Wymagania wstępne

  • Musisz mieć
    • Najnowsza wersja narzędzia Postman.
    • Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
  • Zasób usługi QnA Maker utworzony w witrynie Azure Portal. Pamiętaj nazwę zasobu Microsoft Entra ID, Subscription, QnA wybraną podczas tworzenia zasobu.
  • Przeszkolony i opublikowany baza wiedzy z pytaniami i odpowiedziami z poprzedniego przewodnika Szybki start skonfigurowany za pomocą metadanych i czatu chit.

Uwaga

Gdy wszystko będzie gotowe do wygenerowania odpowiedzi na pytanie z baza wiedzy, musisz wytrenować i opublikować baza wiedzy. Po opublikowaniu bazy wiedzy na stronie Publikowanie zostaną wyświetlone ustawienia żądania HTTP do generowania odpowiedzi. Na karcie Postman są wyświetlane ustawienia wymagane do wygenerowania odpowiedzi.

Konfigurowanie narzędzia Postman dla żądań

Ten przewodnik Szybki start używa tych samych ustawień dla żądania POSTman POST , a następnie konfiguruje kod JSON treści POST wysyłany do usługi w oparciu o to, co próbujesz wykonać zapytanie.

Użyj tej procedury, aby skonfigurować narzędzie Postman, a następnie przeczytaj każdą kolejną sekcję, aby skonfigurować kod JSON treści POST.

  1. Na stronie baza wiedzy Ustawienia wybierz kartę Postman, aby wyświetlić konfigurację użytą do wygenerowania odpowiedzi na podstawie baza wiedzy. Skopiuj następujące informacje do użycia w narzędziu Postman.

    Nazwisko Ustawienie Cel i wartość
    POST /knowledgebases/replace-with-your-knowledge-base-id/generateAnswer Jest to metoda HTTP i trasa adresu URL.
    Host https://YOUR-RESOURCE_NAME.azurewebsites.net/qnamaker Jest to host adresu URL. Połącz wartości Host i Post, aby uzyskać pełny adres URL generateAnswer.
    Authorization EndpointKey xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Wartość nagłówka do autoryzowania żądania na platformie Azure.
    Content-type application/json Wartość nagłówka zawartości.
    {"question":"<Your question>"} Treść żądania POST jako obiekt JSON. Ta wartość zmieni się w każdej poniższej sekcji w zależności od tego, co ma zrobić zapytanie.

    Ważne

    Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

  2. Otwórz narzędzie Postman i utwórz nowe podstawowe żądanie POST z opublikowanymi ustawieniami baza wiedzy. W poniższych sekcjach zmień kod JSON treści POST, aby zmienić zapytanie na baza wiedzy.

Filtrowanie odpowiedzi przy użyciu metadanych

W poprzednim przewodniku Szybki start metadane zostały dodane do dwóch par pytań i odpowiedzi w celu rozróżnienia między dwoma różnymi pytaniami. Dodaj metadane do zapytania, aby ograniczyć filtr tylko do odpowiedniej pary pytań i odpowiedzi.

  1. W narzędziu Postman zmień tylko kod JSON zapytania, dodając strictFilters właściwość z parą name/value klasy service:qna_maker. Treść JSON powinna być następująca:

    {
        'question':'size',
        'strictFilters': [
            {
                'name':'service','value':'qna_maker'
            }
        ]
    }
    

    Pytanie to tylko jedno słowo , sizektóre może zwrócić jedną z dwóch par pytań i odpowiedzi. Tablica strictFilters informuje odpowiedź, aby zmniejszyć tylko qna_maker odpowiedzi.

  2. Odpowiedź zawiera tylko odpowiedź spełniającą kryteria filtrowania.

    Następująca odpowiedź została sformatowana pod kątem czytelności:

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 68.76,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "service",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null
    }
    

    Jeśli istnieje para pytań i odpowiedzi, która nie spełnia terminu wyszukiwania, ale spełnia filtr, nie zostanie zwrócona. Zamiast tego zwracana jest ogólna odpowiedź No good match found in KB. .

Używanie właściwości zapytania debugowania

Uwaga

Nie zalecamy używania właściwości Debug dla żadnej zależności. Ta właściwość została dodana w celu ułatwienia zespołowi produktu rozwiązywania problemów.

Informacje debugowania pomagają zrozumieć, jak została określona zwrócona odpowiedź. Chociaż jest to przydatne, nie jest to konieczne. Aby wygenerować odpowiedź z informacjami debugowania, dodaj debug właściwość:

  1. W narzędziu Postman zmień tylko treść JSON, dodając debug właściwość . Kod JSON powinien mieć następującą wartość:

    {
        'question':'size',
        'Debug': {
            'Enable':true
        }
    
    }
    
  2. Odpowiedź zawiera odpowiednie informacje o odpowiedzi. W poniższych danych wyjściowych JSON niektóre szczegóły debugowania zostały zastąpione wielokropkiem.

    {
        "answers": [
            {
                "questions": [
                    "How do I share a knowledge base with others?"
                ],
                "answer": "Sharing works at the level of a QnA Maker service, that is, all knowledge bases in the service will be shared.",
                "score": 56.07,
                "id": 5,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": {
            "userQuery": {
                "question": "How do I programmatically update my Knowledge Base?",
                "top": 1,
                "userId": null,
                "strictFilters": [],
                "isTest": false,
                "debug": {
                    "enable": true,
                    "recordL1SearchLatency": false,
                    "mockQnaL1Content": null
                },
                "rankerType": 0,
                "context": null,
                "qnaId": 0,
                "scoreThreshold": 0.0
            },
            "rankerInfo": {
                "specialFuzzyQuery": "how do i programmatically~6 update my knowledge base",
                "synonyms": "what s...",
                "rankerLanguage": "English",
                "rankerFileName": "https://qnamakerstore.blob.core.windows.net/qnamakerdata/rankers/ranker-English.ini",
                "rankersDirectory": "D:\\home\\site\\wwwroot\\Data\\QnAMaker\\rd0003ffa60fc45.24.0\\RankerData\\Rankers",
                "allQnAsfeatureValues": {
                    "WordnetSimilarity": {
                        "5": 0.54706300120043716,...
                    },
                    ...
                },
                "rankerVersion": "V2",
                "rankerModelType": "TreeEnsemble",
                "rankerType": 0,
                "indexResultsCount": 25,
                "reRankerResultsCount": 1
            },
            "runtimeVersion": "5.24.0",
            "indexDebugInfo": {
                "indexDefinition": {
                    "name": "064a4112-bd65-42e8-b01d-141c4c9cd09e",
                    "fields": [...
                    ],
                    "scoringProfiles": [],
                    "defaultScoringProfile": null,
                    "corsOptions": null,
                    "suggesters": [],
                    "analyzers": [],
                    "tokenizers": [],
                    "tokenFilters": [],
                    "charFilters": [],
                    "@odata.etag": "\"0x8D7A920EA5EE6FE\""
                },
                "qnaCount": 117,
                "parameters": {},
                "azureSearchResult": {
                    "continuationToken": null,
                    "@odata.count": null,
                    "@search.coverage": null,
                    "@search.facets": null,
                    "@search.nextPageParameters": null,
                    "value": [...],
                    "@odata.nextLink": null
                }
            },
            "l1SearchLatencyInMs": 0,
            "qnaL1Results": {...}
        },
        "activeLearningEnabled": true
    }
    

Korzystanie z baza wiedzy testowych

Jeśli chcesz uzyskać odpowiedź z baza wiedzy testowej, użyj isTest właściwości body.

W narzędziu Postman zmień tylko treść JSON, dodając isTest właściwość . Kod JSON powinien mieć następującą wartość:

{
    'question':'size',
    'isTest': true
}

Odpowiedź JSON używa tego samego schematu co opublikowane zapytanie baza wiedzy.

Uwaga

Jeśli test i opublikowane baza wiedzy są dokładnie takie same, nadal może istnieć niewielka zmienność, ponieważ indeks testowy jest współużytkowany między wszystkimi baza wiedzy w zasobie.

Zapytanie dotyczące odpowiedzi na czacie

  1. W narzędziu Postman zmień tylko treść JSON na instrukcję kończącą konwersację od użytkownika. Kod JSON powinien mieć następującą wartość:

    {
        'question':'thank you'
    }
    
  2. Odpowiedź zawiera wynik i odpowiedź.

    {
      "answers": [
          {
              "questions": [
                  "I thank you",
                  "Oh, thank you",
                  "My sincere thanks",
                  "My humblest thanks to you",
                  "Marvelous, thanks",
                  "Marvelous, thank you kindly",
                  "Marvelous, thank you",
                  "Many thanks to you",
                  "Many thanks",
                  "Kthx",
                  "I'm grateful, thanks",
                  "Ahh, thanks",
                  "I'm grateful for that, thank you",
                  "Perfecto, thanks",
                  "I appreciate you",
                  "I appreciate that",
                  "I appreciate it",
                  "I am very thankful for that",
                  "How kind, thank you",
                  "Great, thanks",
                  "Great, thank you",
                  "Gracias",
                  "Gotcha, thanks",
                  "Gotcha, thank you",
                  "Awesome thanks!",
                  "I'm grateful for that, thank you kindly",
                  "thank you pal",
                  "Wonderful, thank you!",
                  "Wonderful, thank you very much",
                  "Why thank you",
                  "Thx",
                  "Thnx",
                  "That's very kind",
                  "That's great, thanks",
                  "That is lovely, thanks",
                  "That is awesome, thanks!",
                  "Thanks bot",
                  "Thanks a lot",
                  "Okay, thanks!",
                  "Thank you so much",
                  "Perfect, thanks",
                  "Thank you my friend",
                  "Thank you kindly",
                  "Thank you for that",
                  "Thank you bot",
                  "Thank you",
                  "Right on, thanks very much",
                  "Right on, thanks a lot",
                  "Radical, thanks",
                  "Rad, thanks",
                  "Rad thank you",
                  "Wonderful, thanks!",
                  "Thanks"
              ],
              "answer": "You're welcome.",
              "score": 100.0,
              "id": 75,
              "source": "qna_chitchat_Professional.tsv",
              "metadata": [
                  {
                      "name": "editorial",
                      "value": "chitchat"
                  }
              ],
              "context": {
                  "isContextOnly": false,
                  "prompts": []
              }
          }
      ],
      "debugInfo": null,
      "activeLearningEnabled": true
    }
    

    Ponieważ pytanie Thank you było dokładnie zgodne z pytaniem w konwersacji, usługa QnA Maker jest całkowicie pewna odpowiedzi (ocena 100%). Usługa QnA Maker zwróciła również wszystkie powiązane pytania oraz właściwość metadanych zawierającą informacje o tagu metadanych konwersacji.

Użyj wartości progowej i odpowiedzi domyślnej

Możesz zażądać minimalnej wartości progowej dla odpowiedzi. Jeśli próg nie zostanie osiągnięty, zostanie zwrócona domyślna odpowiedź.

  1. W narzędziu Postman zmień tylko treść JSON na instrukcję kończącą konwersację od użytkownika. Kod JSON powinien mieć następującą wartość:

    {
        'question':'size',
        'scoreThreshold':80.00
    }
    

    Baza wiedzy nie powinna znaleźć tej odpowiedzi, ponieważ wynik pytania wynosi 71%, a zamiast tego zwraca domyślną odpowiedź podaną podczas tworzenia baza wiedzy.

    Zwrócona odpowiedź JSON, w tym wynik i odpowiedź:

    {
        "answers": [
            {
                "questions": [],
                "answer": "No good match found in KB.",
                "score": 0.0,
                "id": -1,
                "source": null,
                "metadata": []
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

    Usługa QnA Maker zwróciła wynik 0, co oznacza brak pewności. Zwróciła również domyślną odpowiedź.

  2. Zmień wartość progu na 60% i ponownie zażądaj zapytania:

    {
        'question':'size',
        'scoreThreshold':60.00
    }
    

    Zwrócony kod JSON znalazł odpowiedź.

    {
        "answers": [
            {
                "questions": [
                    "How large a knowledge base can I create?",
                    "What is the max size of a knowledge base?",
                    "How many GB of data can a knowledge base hold?"
                ],
                "answer": "The size of the knowledge base depends on the SKU of Azure search you choose when creating the QnA Maker service. Read [here](../concepts/azure-resources.md) for more details.",
                "score": 71.1,
                "id": 3,
                "source": "https://learn.microsoft.com/azure/ai-services/qnamaker/troubleshooting",
                "metadata": [
                    {
                        "name": "link_in_answer",
                        "value": "true"
                    },
                    {
                        "name": "server",
                        "value": "qna_maker"
                    }
                ],
                "context": {
                    "isContextOnly": false,
                    "prompts": []
                }
            }
        ],
        "debugInfo": null,
        "activeLearningEnabled": true
    }
    

Użyj źródeł danych bez struktury.

Teraz obsługujemy możliwość dodawania dokumentów bez struktury, których nie można używać do wyodrębniania pytań i odpowiedzi. Użytkownik może wybrać dołączenie lub wykluczenie zestawów danych bez struktury w interfejsie API GenerateAnswer podczas pobierania odpowiedzi na zapytanie. Nie obsługujemy zestawów danych bez struktury w usłudze ogólnodostępnej. Jest ona obsługiwana tylko w niestandardowych odpowiedziach na pytania.

Następne kroki

Dowiedz się więcej o metadanych: