Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Cześć, Habr! Dzisiaj opowiemy, jak za pomocą Azure rozwiązywać zadania, które zazwyczaj wymagają ludzkiej ingerencji. Operatorzy spędzają dużo czasu, odpowiadając na te same pytania, przetwarzając połączenia telefoniczne i wiadomości tekstowe. Chatboty automatyzują komunikację i rozpoznawanie, co pozwala zmniejszyć obciążenie ludzi. Boty są również używane w Azure DevOps, gdzie umożliwiają, na przykład, zatwierdzanie wydań, zarządzanie budowami — przeglądanie, uruchamianie i zatrzymywanie — bezpośrednio z Slacka lub Microsoft Teams. W zasadzie chatbot w pewnym sensie przypomina CLI, tylko że jest interaktywny i pozwala programiście pozostać w kontekście rozmowy w czacie.

W tym artykule omówimy narzędzia do tworzenia chatbotów, pokażemy, jak można je poprawić dzięki usługom kognitywnym, oraz opiszemy, jak przyspieszyć rozwój dzięki gotowym usługom w Azure.

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Chatboty i usługi kognitywne: co je łączy i jak się różnią

Do tworzenia botów w Microsoft Azure używana jest usługa Azure Bot oraz platforma Bot Framework. Razem stanowią zestaw oprogramowania do budowy, testowania, wdrażania i zarządzania botami, który umożliwia tworzenie zarówno prostych, jak i zaawansowanych systemów komunikacji z obsługą mowy, rozpoznawaniem języka naturalnego i innymi możliwościami.

Załóżmy, że musisz wdrożyć prostego bota na podstawie korporacyjnej usługi pytań i odpowiedzi lub, przeciwnie, stworzyć funkcjonalnego bota złożonego z rozgałęzionego systemu komunikacji. Do tego możesz skorzystać z szeregu narzędzi, które można podzielić na trzy grupy: 

  1. Usługi szybkiego rozwoju interfejsów dialogowych (botów).
  2. Gotowe usługi kognitywne AI dla różnych scenariuszy użycia (rozpoznawanie obrazów, mowy, baza wiedzy i wyszukiwanie).
  3. Usługi tworzenia i szkolenia modeli AI.

Zazwyczaj ludzie intuicyjnie mieszają „boty” i „usługi kognitywne”, ponieważ w obu pojęciach podstawą jest zasada komunikacji, a w scenariuszach użycia botów i usług występują dialogi. Jednak chatboty działają na podstawie słów kluczowych i wyzwalaczy, podczas gdy usługi kognitywne przetwarzają dowolne zapytania, które zazwyczaj są obsługiwane przez ludzi: 

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Usługi kognitywne to jeszcze jeden sposób komunikacji z użytkownikiem, pomagający przekształcić dowolne zapytanie w jasne polecenie i przesłać je dalej do bota. 

Zatem chatboty to aplikacje do obsługi zapytań, a usługi kognitywne to narzędzia do inteligentnej analizy zapytań, które działają osobno, ale do których chatbot może sięgać, stając się „inteligentnym”. 

Tworzenie chatbotów

Zalecany schemat projektowania bota w Azure wygląda następująco: 

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Do projektowania i rozwijania botów w Azure wykorzystuje się Bot Framework. Na GitHubie znajdują się przykłady botów, możliwości frameworka zmieniają się, dlatego należy brać pod uwagę wersję SDK, która jest używana w botach.

Framework umożliwia kilka sposobów tworzenia botów: za pomocą klasycznego kodu, narzędzi wiersza poleceń lub schematów blokowych. Ostatnia opcja wizualizuje dialogi, w tym celu można użyć menedżera Bot Framework Composer. Stworzono go na bazie Bot Framework SDK jako wizualne narzędzie rozwoju, które interdyscyplinarne zespoły mogłyby wykorzystać do tworzenia botów.

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Bot Framework Composer pozwala za pomocą bloków stworzyć strukturę dialogu, z którą będzie pracować bot. Dodatkowo można tworzyć wyzwalacze, czyli słowa kluczowe, na które bot będzie reagować podczas dialogu. Na przykład, na słowa „operator”, „kradzież” czy „stop” oraz „wystarczy”.

W Bot Framework Composer można stworzyć złożony, rozwidlony system dialogów, wykorzystując Adaptive Dialogs. Dialogi mogą wykorzystywać zarówno usługi kognitywne, jak i karty zdarzeń (Adaptive Cards):

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Po utworzeniu można wdrożyć chatbota w subskrypcji, a automatycznie przygotowany skrypt stworzy wszystkie niezbędne zasoby: usługi kognitywne, plan aplikacji, Application Insights, bazę danych itd.

QnA Maker

Do tworzenia prostych botów opartych na korporacyjnych bazach danych pytań i odpowiedzi można wykorzystać usługę kognitywną QnA Maker. Opisana w formie prostego kreatora internetowego, pozwala na wprowadzenie linku do korporacyjnej bazy wiedzy (FAQ Urls) lub wykorzystanie bazy dokumentów w formacie *.doc lub *.pdf. Po utworzeniu indeksu bot sam będzie dobierać najbardziej odpowiednie odpowiedzi na pytania użytkowników.

Za pomocą QnAMaker można również tworzyć łańcuchy pytań doprecyzowujących z automatycznym tworzeniem przycisków, uzupełniać bazę wiedzy metadanymi oraz dalej szkolić usługę w trakcie użytkowania.

Usługa może być używana jako chatbot, realizujący tylko tę funkcję, lub jako część złożonego chatbota, który, w zależności od zapytania, wykorzystuje również inne usługi AI lub elementy Bot Framework.

Praca z innymi usługami kognitywnymi

Na platformie Azure istnieje wiele różnych usług kognitywnych. Technicznie są to autonomiczne usługi internetowe, które można wywoływać z kodu. W odpowiedzi usługa wysyła json w określonym formacie, który można wykorzystać w chatbotach.

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy
Najczęściej w chatbotach mogą być wykorzystywane następujące:

  1. Rozpoznawanie tekstu.
  2. Rozpoznawanie określanych przez dewelopera kategorii obrazów w Custom Vision Service (przykład zastosowania: rozpoznawanie, czy pracownik nosi kask, gogle ochronne lub maskę).
  3. Rozpoznawanie twarzy (doskonały przypadek zastosowania — weryfikacja, czy ankietowany umieścił swoje własne zdjęcie, czy na przykład zdjęcie psa lub osoby innej płci).
  4. Rozpoznawanie mowy.
  5. Analiza obrazów.
  6. Tłumaczenie (wszyscy pamiętamy, ile hałasu narobiło tłumaczenie symultaniczne w Skype).
  7. Sprawdzanie pisowni i sugestie dotyczące poprawy błędów.

LUIS

Do tworzenia botów może być również wymagane LUIS (Language Understanding Intelligent Service). Zadania usługi:

  • Określenie, czy wypowiedź użytkownika ma sens i czy wymagane jest działanie bota.
  • Zredukować wysiłek związany z transkrypcją mowy (tekstu) użytkownika na zrozumiałe dla bota komendy.
  • Prognozowanie rzeczywistych celów/intencji użytkownika i wydobywanie kluczowych informacji z fraz w dialogu.
  • Umożliwienie deweloperowi uruchomienie bota przy użyciu zaledwie kilku przykładów rozpoznawania sensu oraz dalsze szkolenie bota w trakcie pracy.
  • Umożliwienie deweloperowi korzystania z wizualizacji w celu oceny jakości transkrypcji komend.
  • Pomoc w stopniowych usprawnieniach rozpoznawania rzeczywistych celów.

Celem LUIS jest z określonym prawdopodobieństwem zrozumienie, co miał na myśli użytkownik i przekształcenie naturalnego zapytania w uporządkowane polecenie. Do rozpoznawania znaczeń zapytań LUIS wykorzystuje zestaw intencji (sensów, zamiarów) i encji (zarówno wcześniej skonfigurowanych przez programistów, jak i pobranych z wcześniej zdefiniowanych "domen" – gotowych bibliotek typowych fraz przygotowanych przez Microsoft). 

Prosty przykład: macie bota, który podaje prognozę pogody. Dla niego intencją będzie przetłumaczenie naturalnego zapytania w "czynność" – zapytanie o prognozę pogody, a encjami będą czas i miejsce. Podajemy schemat działania intencji CheckWeather dla takiego bota.

Intencja
Encja
Przykład naturalnego zapytania

CheckWeather
{"type": "location", "entity": "moscow"}
{"type": "builtin.datetimeV2.date", "entity": "future "," resolution ":" 2020-05-30 "}
Jaka będzie pogoda jutro w Moskwie

CheckWeather
{"type": "date_range", "entity": "this weekend"}
Pokaż mi prognozę na te weekendy

Do połączenia QnA Maker z LUIS można użyć Dispatcher

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Kiedy pracujesz z QnA Maker i otrzymujesz zapytanie od użytkownika, system określa, z jakim prawdopodobieństwem odpowiedź z QnA pasuje do zapytania. Jeśli prawdopodobieństwo jest wysokie, użytkownik otrzymuje odpowiedź z wewnętrznej bazy wiedzy, jeśli niskie – zapytanie może zostać przesłane do LUIS w celu wyjaśnienia. Użycie Dispatcher pozwala nie programować tej logiki, ale automatycznie określać tę granicę podziału zapytań i szybko je dystrybuować.

Testowanie i publikacja bota

Do testowania używa się jeszcze jednej lokalnej aplikacji, Bot framework emulator. Za pomocą emulatora można komunikować się z botem i sprawdzać wiadomości, które wysyła i otrzymuje. Emulator wyświetla wiadomości tak, jak będą wyglądać w interfejsie czatu internetowego, i rejestruje zapytania i odpowiedzi JSON podczas wymiany wiadomości z botem.

Przykład użycia emulatora przedstawiony jest w tej demonstracji, w której pokazano tworzenie wirtualnego asystenta dla BMW. W filmie omawia się również nowe akceleratory do tworzenia chatbotów – szablony:

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy
https://youtu.be/u7Gql-ClcVA?t=564

Możesz również używać szablonów podczas tworzenia swoich chatbotów. 
Szablony pozwalają na uniknięcie pisania typowych funkcji bota od nowa, a zamiast tego umożliwiają dodawanie gotowego kodu jako "umiejętności". Przykładem może być praca z kalendarzem, umawianie spotkań itp. Gotowy kod umiejętności opublikowano na githubie.

Testy przebiegły pomyślnie, bot jest gotowy, a teraz trzeba go opublikować i połączyć z kanałami. Publikacja odbywa się za pomocą narzędzi Azure, a jako kanały można wykorzystać komunikatory lub media społecznościowe. Jeśli brakuje odpowiedniego kanału do wprowadzania danych, można go poszukać w odpowiedniej społeczności na GitHubie. 

Aby stworzyć pełnoprawnego chatbota jako interfejs komunikacji z użytkownikiem i usługami kognitywnymi, potrzebne będą również dodatki Azure, takie jak bazy danych, bezserwerowe (Azure Functions), a także usługi LogicApp i być może Event Grid.

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Ocena i analityka

Do oceny interakcji z użytkownikami można wykorzystywać zarówno wbudowaną analitykę Azure Bot Service, jak i specjalną usługę Application Insights.

W efekcie można zbierać informacje według następujących kryteriów:

  • Ilu użytkowników uzyskało dostęp do bota z różnych kanałów w wybranym przedziale czasowym.
  • Ilu użytkowników, którzy wysłali jedną wiadomość, wróciło później i wysłało kolejną.
  • Ile działań zostało wysłanych i odebranych przez każdy kanał w określonym czasie.

Dzięki Application Insights można monitorować dowolne aplikacje w Azure, w tym chatboty, uzyskując dodatkowe dane o zachowaniach użytkowników, obciążeniach i reakcjach chatbota. Należy zauważyć, że usługa Application Insights ma swój interfejs na portalu Azure.

Zebrane dane można również wykorzystać do tworzenia dodatkowych wizualizacji i raportów analitycznych w PowerBI. Przykład takiego raportu i szablon dla PowerBI można znaleźć tutaj.

Przyspieszamy rozwój za pomocą usług Azure: tworzymy chatboty i usługi kognitywne przy użyciu platformy

Dziękuję wszystkim za uwagę! W tym artykule wykorzystaliśmy materiał materiały z webinaru architekta Microsoft Azure, Anny Feniuszowej „Kiedy ludzie nie nadążają. Jak w 100% wykorzystać chatboty i usługi kognitywne do automatyzacji rutynowych procesów”, na którym w przystępny sposób pokazaliśmy, czym są chatboty w Azure i jakie są scenariusze ich zastosowania, a także zaprezentowaliśmy, jak w 15 minut stworzyć bota w QnA Maker i w jaki sposób interpretować strukturę zapytań w LUIS. 

Zorganizowaliśmy ten webinar w ramach internetowego maratonu dla programistów Dev Bootcamp. Mówiliśmy o produktach, które przyspieszają rozwój i odciążają pracowników firmy, wykorzystując narzędzia automatyzacji i gotowe moduły Azure. Nagrania innych webinarów, które były częścią maratonu, dostępne są pod poniższymi linkami:

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster