Tworzymy chatbota bez kodowania z pomocą Watson Assistant
Co zrobić z naszym nowym kontem w IBM Cloud, jeśli nie mamy akurat ochoty na programowanie? Możemy zbudować własnego asystenta, który może pomóc nam kontaktować się z naszymi klientami, określić, na jaki temat rozmawiamy i odpowiedzieć automatycznie na różne pytania.
Wystarczy wyklikać
Podstawowego asystenta na bazie Watson Assistant, dostępnego w IBM Cloud, zbudujemy nie programując ani linijki kodu. Takiego asystenta możemy od razu wykorzystać, udostępniając go za pomocą Facebook Messengera, Slacka, a nawet umieszczając na naszej stronie internetowej.
Do tego zrobimy to całkowicie za darmo, po założeniu konta typu Light (co zrobiliśmy w poprzednim tekście z tej serii).
Co najważniejsze, tak zbudowany asystent będzie się charakteryzował dwoma bardzo ważnymi cechami:
Po pierwsze, będziemy w stanie douczyć nowych rzeczy – jeśli natrafimy na zwrot, którego nie obsłużyliśmy w trakcie jego konfiguracji, możemy to w bardzo łatwy sposób poprawić.
Po drugie zaś, możemy dodać do niego funkcje za pomocą dowolnego języka programowania. Jesteśmy w stanie również dodać do niego złącza do baz danych naszej firmy tak, aby z nich korzystał, odpowiadając na pytania klientów (np. mógłby podawać status przesyłki pobrany z naszej bazy danych na podstawie podanego przez klienta numeru zamówienia).
Innymi słowy – pierwsze kroki wykonane za pomocą „wyklikania” funkcji nie zamykają nas w ograniczonej formie. Jesteśmy w każdej chwili w stanie rozszerzać możliwości naszego czatbota.
Kwestia języka
Jak to zwykle bywa z usługami rozpoznawania języka naturalnego, najwięcej funkcji „out of the box” uzyskamy w przypadku języka angielskiego. Na tym języku oprzemy też naszego bota dla uproszczenia.
Nie oznacza to jednak, że nie jesteśmy w stanie przystosować asystenta opartego na Watson Assistant do języka polskiego – wymaga to jednak już dopisania własnych reguł opierających się na słowach kluczowych. Jest to jak najbardziej możliwe - przykład takiego asystenta posługującego się językiem polskim znajdziemy tutaj, a jego kod źródłowy i opis instalacji znajduje się na GitHubie.
W niniejszym przykładzie chciałbym jednak pokazać, jak użyć gotowych predefiniowanych reguł i intencji, więc będzie opierał się on na języku angielskim.
Tworzymy asystenta
Zaczynamy od stworzenia zasobu – wybieramy z lewej strony panelu usługi „AI” – czyli związane ze sztuczną inteligencją. Z prawej strony zobaczymy wiele usług, ale interesuje nas Watson Assistant.
Po kliknięciu w stworzonego asystenta otrzymamy informacje, które pozwolą nam, gdybyśmy w przyszłości tego chcieli, podłączyć się do tej usługi z naszej aplikacji. Klikamy na Launch Watson Assistant.
Następnie mamy możliwość wyboru odpowiedniego planu. Wybieramy Lite, aby mieć pewność że będziemy używali jedynie darmowych funkcji.
Tutaj możemy stworzyć konkretną instancję naszego asystenta. Możemy mieć więcej niż jedną instancję asystentów, którzy będą się np. specjalizować w innych zagadnienia, bądź pracować w różnych działach.
Po lewej stronie widzimy, że oprócz asystentów możemy stworzyć również tzw. Skill czyli umiejętność, w którą możemy wyposażyć jednego lub więcej asystenta. To właśnie tu możemy przewidzieć różne sposoby interakcji z rozmówcami.
Domyślnie będziemy mieli stworzonego pierwszego asystenta z podłączonym skillem.
I właśnie tego skilla będziemy teraz edytować dodając do niego tematy rozmów.
Po kliknięciu skilla (który zapewne będzie nazwany My first skill – moja pierwsza umiejętność) ukaże nam się prosty webowy edytor.
Możemy tutaj stworzyć tzw. intent – jest to temat rozmowy, zwany po polsku czasami intencją – bo tutaj właśnie chcemy ustalić, jaką intencję ma użytkownik, rozmawiając z nami.
Po lewej stronie widzimy jedną z opcji: Content catalog. Jest to katalog gotowych treści. Zajrzyjmy tam.
Jak widzimy, IBM przygotował dla nas cały duży katalog z gotowymi intencjami podzielonymi według tematyki. Kategorie, jakie tu widzimy to między innymi ubezpieczenia, bankowość czy telekomunikacja.
Wybierzmy kategorię General przez kliknięcie na „Add to skill”. Kategoria General zawiera podstawowe umiejętności konwersacyjne: takie jak przywitania, pożegnania, pytania o funkcje asystenta oraz obsługa zapytania, czy możemy rozmawiać z żywym asystentem. Jest to często spotykana funkcja: jeśli użytkownik czuje, że „nie dogaduje się” z robotem, może zasygnalizować chęć połączenia z człowiekiem.
Po kliknięciu Add to skill i przejściu do zakładki Intents z lewej strony okna zobaczymy że dodano tam wszystkie intencje z katalogu:
Żeby lepiej zrozumieć, co tu się dzieje, wejdźmy do którejś z nich.
Np. po wejściu do intencji General_Jokes, zauważymy, że są tam wymienione zwroty, które mogą nas naprowadzić na temat opowiadania żartów.
Możemy również powyżej dodać swoje dodatkowe zwroty.
Teraz z zaimportowanych intencji spróbujmy złożyć dialog.
Klikamy z lewej strony zakładkę Dialog. Ukaże nam się wizualny edytor dialogów.
Początkowy dialog jest prosty - możemy się przywitać – jeśli to co napisze użytkownik nie trafi do kategorii „Welcome”, czyli przywitań, algorytm uruchomi węzeł anything_else, czy prośbę o powtórzenie pytania z powodu niezrozumienia. Ten węzeł powinien znajdować się zawsze na końcu.
Welcome nie jest tym samym co intencja #welcome, którą widzieliśmy wcześniej. Welcome jest uruchamiany zawsze na początku rozmowy.
Tak naprawdę nawet tak prosto zorganizowany asystent da się uruchomić, co możemy wypróbować od razu na stronie klikając przycisk Try it!
Widzimy, że nasza wypowiedź („hi”) została zaklasyfikowana jako General Greetings – ogólne pozdrowienia, ale nie mamy dodanego węzła z tą intencją i asystent odpowiedział zgodnie z algorytmem prośbą o powtórzenie zapytania. Naprawmy to.
Kliknijmy przycisk menu (…) na węźle welcome.
Wybierzmy „Add node below”. Wypełniamy tak, aby ustawić kilka reakcji (dowolnych), na powitanie.
Następnie do tej krótkiej pogawędki dodajmy jej zakończenie. Na nowo dodanym węźle klikamy menu i jeszcze raz wybieramy Add node below.
Nasze okno dialogowe powinno wyglądać mniej więcej tak:
Teraz możemy znów kliknąć Try it i przeprowadzić bardziej sensowną rozmowę:
Czymże byłby taki asystent, gdyby żył wyłącznie w naszej konsoli developerskiej? Spróbujmy go zintegrować z jakimś istniejącym systemem dialogowym.
Wróćmy na stronę z naszym asystentem, I kliknijmy przycisk „Add integration”:
Jak widzimy mamy do wyboru kilka predefiniowanych integracji:
Możemy użyć linku do preview, co pozwoli przekazać URL do naszego asystenta np. do potestowania.
W trakcie testów asystent może się również uczyć, zadając nam pytanie, gdy nie jest pewien naszej intencji:
Możliwości rozbudowy takiego asystenta są nieograniczone. Nawet bez napisania żadnej linijki kodu jesteśmy w stanie dodać do niego proste procesy decyzyjne, sugestie, dopytywanie o potrzebne szczegóły a nawet integracje z zewnętrznymi źródłami danych.
Dzięki usłudze IBM Cloud i Watson Assistant jesteśmy w stanie osiągnąć to, do czego kiedyś potrzebowaliśmy zespołu programistów, zaprojektowanej bazy danych i wytrenowanej sztucznej sieci neuronowej. Do tego dokonaliśmy tego wszystkiego bazując na darmowej wersji usługi.
Aby samodzielnie pobawić się budowaniem asystentów czatowych, możesz zarejestrować się tutaj.
* Materiał powstał przy współpracy z firmą IBM.