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.

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:
- Usługi szybkiego rozwoju interfejsów dialogowych (botów).
- Gotowe usługi kognitywne AI dla różnych scenariuszy użycia (rozpoznawanie obrazów, mowy, baza wiedzy i wyszukiwanie).
- 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:

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:

Do projektowania i rozwijania botów w Azure wykorzystuje się . Na GitHubie znajdują się , 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 . Stworzono go na bazie Bot Framework SDK jako wizualne narzędzie rozwoju, które interdyscyplinarne zespoły mogłyby wykorzystać do tworzenia botów.

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 . Dialogi mogą wykorzystywać zarówno usługi kognitywne, jak i karty zdarzeń (Adaptive Cards):

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.

Najczęściej w chatbotach mogą być wykorzystywane następujące:
- Rozpoznawanie tekstu.
- Rozpoznawanie określanych przez dewelopera kategorii obrazów w Custom Vision Service (przykład zastosowania: rozpoznawanie, czy pracownik nosi kask, gogle ochronne lub maskę).
- 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).
- Rozpoznawanie mowy.
- Analiza obrazów.
- Tłumaczenie (wszyscy pamiętamy, ile hałasu narobiło tłumaczenie symultaniczne w Skype).
- Sprawdzanie pisowni i sugestie dotyczące poprawy błędów.
LUIS
Do tworzenia botów może być również wymagane (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ć .

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, . 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:

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 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.

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źć .

Dziękuję wszystkim za uwagę! W tym artykule wykorzystaliśmy 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:
-
Omówimy ewolucję i nowe możliwości usługi Azure DevOps. Szczegółowo przeanalizujemy wszystkie pięć jej podstawowych składników oraz to, jak usługa wspomaga organizację przemysłowego rozwoju oprogramowania. Prowadzący — Włodzimierz Gusarow, Microsoft MVP.
Zastanawiamy się, jak wdrożyć podejście „build as code” dla dowolnych języków programowania, korzystając z multi-staged YAML pipelines. Prowadzący — Włodzimierz Gusarow, Microsoft MVP.
Dyskutujemy, jak opracować strategie przechowywania kodu źródłowego oprogramowania, jak używać systemów kontroli wersji z pomocą Azure Repos. Prowadzący — Włodzimierz Gusarow, Microsoft MVP.
Zapoznajemy z metodami zarządzania open source podczas rozwoju oraz praktycznym zastosowaniem narzędzia WhiteSource. Mówimy o wykrywaniu luk w komponentach open source oraz zapewnieniu zgodności licencyjnej za pomocą WhiteSource. Prowadzący — Diana Lisbaron, Director of Sales WhiteSource, oraz Daria Oreszkina, Web Control, oficjalny dystrybutor WhiteSource w Rosji.
Źródło: habr.com
