
Ostatnio pracuję nad chatbotem, korzystając z aplikacji Google Dialogflow. Niniejszy artykuł zawiera kilka moich uwag dotyczących Dialogflow i chatbotów. Opisuję w nim też sposób, jak stworzyć prostego chatbota za pomocą platformy Dialogflow.
Co to jest Dialogflow?
Jak podaje Wikipedia:
Dialogflow (wcześniej Api.ai, Speaktoit) to należąca do Google firma tworząca technologie interakcji człowiek–komputer oparte na rozmowach w języku naturalnym. Firma (jeszcze jako Speaktoit) zyskała rozgłos dzięki opracowaniu Asystenta — wirtualnego pomocnika w smartfonach z systemami Android, iOS i Windows, który wykonuje zadania i odpowiada na pytania użytkowników w języku naturalnym. Speaktoit stworzył również silnik przetwarzający język naturalny, który wykorzystuje kontekst rozmowy, np. historię konwersacji, lokalizację czy preferencje użytkownika.
DialogFlow to całkiem niezłe narzędzie, żeby nauczyć się, jak tworzyć chatboty, które później można zintegrować z witrynami czy aplikacjami.
Dlaczego warto wybrać Dialogflow?
Jest kilka powodów:
- CenaJeśli chcesz się po prostu nauczyć, jak stworzyć chatbota, lub nie masz wielu użytkowników, to wersja standardowa jest oferowana całkowicie bezpłatnie. Jak widać poniżej
- Łatwa integracja z wieloma kanałami
Dialogflos zapewnia integrację jednym kliknięciem z najbardziej popularnymi komunikatorami, np. Facebook Messenger, Slack, Twitter, Kik, Line, Skype, Telegram, Twilio czy Viber, a nawet z niektórymi asystentami głosowymi, jak Google Assistant, Amazon Alexa i Microsoft Cortana.
- Przetwarzanie języka naturalnego (ang. natural language processing, NLP)
W porównaniu do niektórych platform, które opierają działanie na wstępnie zdefiniowanych pytaniach (jak np. Chatfuel), Dialogflow może zapewnić lepsze doświadczenia użytkownika dzięki NLP. Agenci DialogFlow całkiem nieźle sobie z nim radzą.
Jak działają chatboty?
Oto poszczególne kroki:
- Użytkownik wysyła wiadomość tekstową/głosową do urządzenia lub aplikacji.
- Aplikacja/urządzenie przesyła wiadomość do Dialogflow.
- Wiadomość jest kategoryzowana i dopasowywana do odpowiedniej intencji (intencje są definiowane ręcznie przez twórców w Dialogflow).
- Określane są kolejne działania dla każdej intencji w realizacji (webhook).
- Kiedy Dialogflow znajdzie daną intencję, element webhook wykorzystuje zewnętrzne interfejsy API, aby znaleźć odpowiedź w zewnętrznych bazach danych.
- Zewnętrzne bazy danych odsyłają żądane informacje do elementu webhook.
- Webhook wysyła sformatowaną odpowiedź do intencji.
- Intencja generuje użyteczne dane zgodnie z różnymi kanałami.
- Użyteczne dane wysyłane są do wyjściowych aplikacji/urządzeń.
- Użytkownik otrzymuje odpowiedź tekstową/obrazkową/głosową.
Jak stworzyć pierwszego chatbota?
Utwórz agenta
- Jeśli jeszcze nie masz konta Dialogflow, utwórz je. Jeśli masz konto, zaloguj się.
- Kliknij opcję Utwórz agentaw panelu nawigacyjnym po lewej stronie i wypełnij pola.
- Podaj nazwę i ustaw języka agenta. Następnie kliknij przycisk Zapisz.
Utwórz intencję
Intencja łączy to, co mówi użytkownik, z tym co, robi agent. Pierwsza intencja będzie dotyczyć pytania użytkownika o pogodę.
Aby utworzyć intencję:
- Kliknij ikonę plusa obok intencji. Zauważysz, że w agencie są już jakieś domyślne intencje. Na razie je zostaw.
- Wpisz nazwę intencji. Nazwa może być dowolna, ale powinna być intuicyjna i oznaczać to, co intencja ma za zadanie osiągnąć.
- W sekcji Frazy szkoleniowe wpisz przykłady tego, o co użytkownik mógłby zapytać. Ponieważ tworzysz agenta pogodowego, to warto zawrzeć pytania o lokalizacje i różne godziny. Im więcej przykładów podasz, tym więcej stworzysz sposobów zadania przez użytkowników pytań, które zostaną zrozumiane przez agenta. Wpisz takie przykłady:
- Jaka jest pogoda
- Jaka będzie pogoda
- Prognoza pogody
- Jaka jest dzisiaj pogoda
- Pogoda na jutro
- Prognoza pogody na jutro w San Francisco
W ostatnich trzech przykładach zauważysz, że słowa „dzisiaj” i „jutro” są podświetlone jednym kolorem, a „San Francisco” podświetlone jest drugim. To oznacza, że zostały one odnotowane jako parametry przypisane do istniejących obiektów systemowych: data i miasto. Te parametry daty i miasta pozwalają Dialogflow na zrozumienie innych dat i miast, które użytkownik może wypowiedzieć, a nie tylko „dzisiaj”, „jutro” i „San Francisco”.
- Kliknij opcję Zapisz
Dodaj odpowiedź
Teraz dodasz podstawowe odpowiedzi do intencji, aby uniknąć niezręcznej ciszy po zadanym pytaniu. Jak już wspominaliśmy, odpowiedzi dodane do intencji nie wykorzystują danych zewnętrznych. Będą one dotyczyły tylko tych informacji, które agent zebrał na podstawie żądania użytkownika.
Jeśli jesteś na innej stronie, wróć do intencji „pogoda”, klikając Intencje, a następnie intencję „pogoda”.
- Dodaj wiersze tekstu w sekcji Odpowiedź analogicznie jak w przypadku Fraz treningowych:
- Przykro mi, nie wiem, jaka jest pogoda
- Nie jestem pewny, jaka będzie pogoda w dniu $data
- Nie wiem, jaka będzie pogoda w dniu $dataw $geo-miasto, ale mam nadzieję, że będzie piękna!
Można zauważyć, że dwie ostatnie odpowiedzi odnoszą się do obiektu za pomocą elementów zastępczych wartości. W miejsce $data zostanie wstawiona data z zapytania, a miejsce $geo-miasto zostanie wstawione miasto.
Odpowiadając, agent bierze pod uwagę zgromadzone wartości parametrów i wykorzystuje odpowiedź, która zawiera te wartości. Na przykład jeśli zapytanie zawiera jedynie datę, agent skorzysta z drugiej odpowiedzi z listy.
- Kliknij opcję Zapisz
Przetestuj
W konsoli po prawej stronie wpisz zapytanie. Powinna być ona nieco inna od przykładów podanych przez Ciebie w sekcji Fraz treningowych. To może być coś w stylu „Jaką jutro będziemy mieć pogodę w Denver”. Po wpisaniu zapytaniu kliknij „Enter/Return”.
- Odpowiedź — pokazuje stosowną odpowiedź z podanych
- Wybrana odpowiedź oparta jest na podanych przez Ciebie w zapytaniu wartościach (np. podając tylko datę, agent powinien odpowiedzieć za pomocą opcji zawierającej jedynie datę).
- Intencja — pogoda ponownie pomyślnym wyzwalaczem intencji.
- Parametr — podane przez Ciebie w zapytaniu wartości, powinny zostać odzwierciedlone w stosownej odpowiedzi.
Podstawowa realizacja (webhook)
W zależności od potrzeb możesz zdefiniować niestandardowy element webhook, aby korzystał z zewnętrznych interfejsów API i uzyskiwał dodatkowe dane z zewnętrznych baz danych. Webhook może być napisany w języku Python lub Node.js. Może być przechowywany na serwerach w chmurze, np. Heroku, AWS i Google Cloud Platform, a także na serwerach lokalnych. Wybierz swój ulubiony język programowania i serwer: https://dialogflow.com/docs/getting-started/basic-fulfillment-conversation
Integracja z kanałami
Dialogflos zapewnia integrację jednym kliknięciem z najbardziej popularnymi komunikatorami i asystentami głosowymi. Integrację można przeprowadzić w kilka sekund. Możesz wybrać ulubione kanały i postępować zgodnie z oficjalnym przewodnikiem po integracji, który znajdziesz na stronie internetowej Dialogflow. Zobacz: https://dialogflow.com/docs/integrations/
Podsumowanie
Dzięki temu artykułowi wiesz już, co to jest Dialogflow, znasz niektóre z zalet tej platformy i wiesz, jak działają chatboty w ramach Dialogflow i jak utworzyć swojego pierwszego chatbota. Dziękuję za jego przeczytanie. W przypadku jakichkolwiek pytań, skontaktuj się ze mną.
Materiały referencyjne