Niedawno brałem udział w hackatonie Regarding365, gdzie naszym celem było stworzenie rozwiązań dla firm zmagających się z komunikacją w czasie pandemii COVID-19. Jakiś czas po tym, moja przyjaciółka zadała mi pytanie o zbudowanie podobnego rozwiązania do tego, które zrobiłem podczas hackatonu. Rozwiązaniem było – chatbot QnA wykorzystujący program QnA Maker jako bazę danych. Jak to zrobić? Czytaj dalej!

Zasadniczo najważniejszą częścią tego postu jest screencast poniżej. Oglądając go, możesz nauczyć się budować rozwiązanie krok po kroku:

Podejścia QnA w PVA

Istnieją dwa sposoby budowania chatbota QnA za pomocą Power Virtual Agents. Pierwszym i najprostszym jest po prostu utworzenie zestawu tematów (Topics), w których frazy wyzwalające (trigger) są powiązane z konkretnym pytaniem i które mają tylko jeden węzeł w środku: Message, która wyświetla odpowiedź na to pytanie.

Ponadto, jeśli posiadasz stronę internetową, która wyraźnie posiada strukturę treści zbudowaną z pytań i odpowiedzi, możesz użyć funkcji „Suggest topics”:

  1. Kliknij link „Suggest topics”
  2. Wprowadź adres URL strony, którą chcesz użyć
  3. Potem „Add”
  4. I na koniec „Start” by rozpocząć przetwarzanie danych.

Po zakończeniu przetwarzania wszystkie znalezione pary QnA znajdą się w sekcji „Suggested”. Tutaj możesz wybrać, które chcesz dodać do listy istniejących tematów.

Drugie podejście wykorzystuje QnA Maker (https://www.qnamaker.ai/) jako źródło danych, a Power Automate jako middleware, który będzie spajać oba rozwiązania ze sobą.

Jak skonfigurować QnA Maker z PVA

Opiszę to tutaj krok po kroku. Musisz użyć 4 usługi.

Usługa platformy Azure

  1. Przejdź do https://portal.azure.com i utwórz nowy zasób. Powinieneś wyszukać „Cognitive Services” i poszukać „QnA Maker” w wynikach wyszukiwania.
  2. Wybierz tę usługę i utwórz ją.

QnA Maker

  1. Po utworzeniu usługi w Azure przejdź do https://www.qnamaker.ai/
  2. W wyświetlonym formularzu krok 1 jest tym, co już zrobiliśmy w punkcie nr 1 powyżej. Możesz spokojnie przejść do kroku 2 🙂
  3. W kroku 2 wybierz stworzoną usługę.
  4. Krok 3 – nazwij swoją bazę danych
  5. Krok 4 – zapełnij ją. Możesz wypełnić ją za pomocą danych z adresu URL witryny, która ma przejrzystą strukturę pytań i odpowiedzi lub z pliku.
  6. Wreszcie krok 5 – utwórz swoją bazę wiedzy.

Po udostępnieniu nowej bazy wiedzy i przejrzeniu wszystkich QnA kliknij przycisk „Save and train”, a kiedy to zrobisz – „Publish”:

Po opublikowaniu KB wyświetli wszystkie informacje związane z jej szczegółami. Pamiętaj o hoście i autoryzacji. Ponadto nad „hostem” w adresie URL POST można znaleźć identyfikator bazy wiedzy. Zachowaj tę informację również.

Power Automate

Teraz przejdź do Power Automate i stwórz nowy przepływ.

Pamiętaj! Przepływy, które można wywołać z Power Virtual Agents muszą być przechowywane w dowolnej solucji (w tym samym środowisku) ORAZ muszą być wyzwalane przez „Request” lub „When Power Virtual Agents calls a flow”.

W rozwiązaniu utwórz nowy, bardzo prosty przepływ:

  1. Użyj „When Power Virtual Agents calls a flow” jako wyzwalacza. Ustaw jedną zmienną wejściową, np. Question.
  2. Dodaj akcję „Generate answer”. Dane wejściowe:
    1. Knowledge Base ID – skopiowany z opublikowanych szczegółów KB
    2. Service Host – Host z opublikowanych szczegółów KB
    3. Endpoint Key – Autoryzacja z opublikowanych szczegółów KB
    4. Question – wprowadź formularz wyzwalacza
  3. Dodaj akcję „Return value(s) to Power Virtual Agents”, aby zwrócić znalezioną odpowiedź. Skonfiguruj jedną zmienną tekstową i jako jej wartość podaj: outputs('Generate_answer')?['body/answers'][0]['answer'].

Power Virtual Agents

Na koniec połącz wszystkie usługi razem. W swoim PVA dodaj nowy węzeł, którym będzie „Call an action”:

Z listy wybierz utworzony przepływ. Teraz podaj pytanie użytkownika jako zmienną wejściową, a następnie wyświetl użytkownikowi odpowiedź:

Podsumowanie

I w zasadzie to wszystko! W ten sposób możesz powiązać usługi, aby stworzyć prawdziwy chatbot QnA.

Możesz pójść nawet krok dalej. Jak pokazałem na filmie. Abyś mógł nie tylko wyświetlić pasującą odpowiedź, ale jeśli nie ma takowej, aby wysłać pytanie do pracownika i potem dodać nową parę do bazy danych. Tak, że DB faktycznie będzie rosnąć, gdy użytkownicy będą zadawać coraz więcej pytań. Opcje są nieograniczone!

A, jeśli chcesz dodać nową parę pytanie-odpowiedź do bazy danych za pomocą interfejsu REST API, zapoznaj się z tym zasobem: https://westus.dev.cognitive.microsoft.com/docs/services/5a93fcf85b4ccd136866eb37/operations/5ac266295da765

I to wszystko! Mam nadzieję, że ten post pomoże ci zbudować własne chatboty. Jeśli masz jakieś pytania – opublikuj je w komentarzach poniżej lub zadaj je za pośrednictwem formularza kontaktowego .