Dodawanie wielu kategorii do bota często zadawanych pytań

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie projektu i tagowanie par odpowiedzi na pytania w odrębne kategorie z metadanymi
  • Tworzenie oddzielnego projektu dla każdej domeny
  • Tworzenie oddzielnego zasobu językowego dla każdej domeny

Podczas tworzenia bota z często zadawanymi pytaniami mogą wystąpić przypadki użycia, które wymagają obsługi zapytań w wielu domenach. Załóżmy, że zespół ds. marketingu w firmie Microsoft chce utworzyć bota pomocy technicznej klienta, który odpowiada na typowe zapytania użytkowników dotyczące wielu produktów Surface. Dla uproszczenia w tym miejscu będziemy używać dwóch często zadawanych pytań adresów URL, Surface Pen i Surface Earbuds w celu utworzenia projektu.

Tworzenie projektu z metadanymi specyficznymi dla domeny

Autorzy zawartości mogą używać dokumentów do wyodrębniania par odpowiedzi na pytania lub dodawania niestandardowych par odpowiedzi na pytania do projektu. Aby pogrupować te pytania i odpowiedzi na określone domeny lub kategorie, możesz dodać metadane.

W przypadku bota na urządzeniach Surface możesz wykonać następujące kroki, aby utworzyć bota, który odpowiada na zapytania dotyczące obu typów produktów:

  1. Dodaj następujące adresy URL często zadawanych pytań jako źródła, wybierając pozycję Dodaj adresy> URL źródłowe>, a następnie dodaj wszystkie po dodaniu każdego z poniższych adresów URL:

    Pióro Surface — często zadawane pytania
    Słuchawki Surface — często zadawane pytania

    Screenshot of add URL UI.

  2. W tym projekcie mamy pary odpowiedzi na pytania na dwa produkty i chcemy odróżnić je, abyśmy mogli wyszukiwać odpowiedzi między pytaniami i odpowiedziami dla danego produktu. Aby to zrobić, możemy zaktualizować pole metadanych dla par odpowiedzi na pytanie.

    Jak widać w poniższym przykładzie, dodaliśmy metadane z produktem jako kluczem i surface_pen lub surface_earbuds jako wartości wszędzie tam, gdzie ma to zastosowanie. Ten przykład można rozszerzyć, aby wyodrębnić dane z wielu produktów i dodać inną wartość dla każdego produktu.

    Screenshot of metadata example.

  3. Teraz, aby ograniczyć system do wyszukiwania odpowiedzi w określonym produkcie, należy przekazać ten produkt jako filtr w niestandardowym interfejsie API REST odpowiedzi na pytania.

    Adres URL przewidywania interfejsu API REST można pobrać z okienka Wdrażanie projektu:

    Screenshot of the Deploy project page with the prediction URL displayed.

    W treści JSON wywołania interfejsu API przekazaliśmy surface_pen jako wartość produktu metadanych. Dlatego system będzie szukać odpowiedzi tylko wśród par pytań i odpowiedzi z tymi samymi metadanymi.

        {
          "question": "What is the price?",
          "top": 3
        },
        "answerSpanRequest": {
          "enable": true,
          "confidenceScoreThreshold": 0.3,
          "topAnswersWithSpan": 1
        },
        "filters": {
          "metadataFilter": {
            "metadata": [
              {
                "key": "product",
                "value": "surface_pen"
              }
            ]
          }
        }
    

    Wartość metadanych można uzyskać na podstawie danych wejściowych użytkownika w następujący sposób:

    • Jawnie przejmij domenę jako dane wejściowe od użytkownika za pośrednictwem klienta bota. Na przykład, jak pokazano poniżej, możesz przyjąć kategorię produktu jako dane wejściowe od użytkownika po zainicjowaniu konwersacji.

      Take metadata input

    • Niejawnie zidentyfikuj domenę na podstawie kontekstu bota. Na przykład w przypadku, gdy poprzednie pytanie dotyczyło określonego produktu Surface, można go zapisać jako kontekst przez klienta. Jeśli użytkownik nie określi produktu w następnym zapytaniu, możesz przekazać kontekst bota jako metadane do interfejsu API generowania odpowiedzi.

      Pass context

    • Wyodrębnij jednostkę z zapytania użytkownika, aby zidentyfikować domenę, która ma być używana do filtrowania metadanych. Do wyodrębniania jednostek można użyć innych usług sztucznej inteligencji platformy Azure, takich jak rozpoznawanie jednostek nazwanych (NER) i język konwersacyjny.

      Extract metadata from query

Jak duże mogą być nasze projekty?

Do jednego projektu można dodać maksymalnie 50000 par odpowiedzi na pytania. Jeśli dane przekraczają 50 000 par odpowiedzi na pytania, rozważ podzielenie projektu.

Tworzenie oddzielnego projektu dla każdej domeny

Można również utworzyć oddzielny projekt dla każdej domeny i obsługiwać projekty oddzielnie. Wszystkie interfejsy API wymagają, aby użytkownik przekazał nazwę projektu, aby wprowadzić dowolną aktualizację projektu lub pobrać odpowiedź na pytanie użytkownika.

Po odebraniu pytania użytkownika przez usługę należy przekazać element projectName w punkcie końcowym interfejsu API REST, aby pobrać odpowiedź z odpowiedniego projektu. Adres URL można znaleźć na stronie Wdrażanie projektu w obszarze Uzyskiwanie adresu URL przewidywania:

https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

Tworzenie oddzielnego zasobu językowego dla każdej domeny

Załóżmy, że zespół ds. marketingu w firmie Microsoft chce utworzyć bota pomocy technicznej klienta, który odpowiada na zapytania użytkowników dotyczące produktów Surface i Xbox. Planują przypisać różne zespoły do uzyskiwania dostępu do projektów na urządzeniach Surface i Xbox. W takim przypadku zaleca się utworzenie dwóch niestandardowych zasobów odpowiedzi na pytania — jeden dla urządzenia Surface i drugi dla konsoli Xbox. Można jednak zdefiniować odrębne role dla użytkowników, którzy uzyskują dostęp do tego samego zasobu.