Ekosystem konwersacyjny

Czym jest system konwersacyjny?

System konwersacyjny to modny i popularny w ostatnim czasie temat, o którym często się rozmawia i który organizacje chcą u siebie wdrożyć.

Czym tak naprawdę jest system konwersacyjny? Podejścia są różne, dla jednych jest to rodzaj głosowego asystenta, dla drugich jest to chatbot, jeszcze inni używają określenia agenci konwersacyjni bądź wirtualni asystenci. Mimo wszystko wszystkie określenia mówią o komunikacji między użytkownikami. System konwersacyjny to rozwiązanie proste i łatwe w obsłudze, do którego klienci zdążyli się szybko przyzwyczaić. Daje możliwość wyrażenia swojej intencji w sposób naturalny, bez wpisywania komend w odpowiednim szablonie. Co więcej  system konwersacyjny wspiera i optymalizuje obsługę klienta, jest dostępny 24/7 - nie męcząc się przy tym.

Dlatego też w ostatnim czasie systemy konwersacyjne zrewolucjonizowały sposób komunikowania się człowieka z systemami. Organizacje z entuzjazmem podchodzą do wdrażania tego rozwiązania, nie widząc zagrożeń, które wiążą się z jego zaprojektowaniem. Bo co tu projektować? Nad czym się zastanawiać? Ot, jest i działa. Okazuje się, że nie jest to takie proste. Zaprojektowanie dobrego systemu konwersacyjnego wymaga szerokiej wiedzy (nie tylko technicznej) oraz nabycia nowych umiejętności. Budując system konwersacyjny od podstaw nie zdajemy sobie sprawy jak ważne są kwestie rozumienia intencji klienta czy budowy bazy wiedzy albo projektowania przebiegu procesów samoobsługowych. Wszystko to składa się na konwersacyjny ekosystem, na temat którego chciałabym podzielić się z wami swoim doświadczeniem.

Architektura konwersacyjnego ekosystemu

Przystępując do projektowania ekosystemu konwersacyjnego określamy główne obszary na które składają się: interfejs konwersacyjny określający jak będziemy się między sobą komunikować (np. głosem czy tekstem), blok przetwarzania intencji użytkownika oraz blok integracji z wymaganymi systemami organizacji.

Istotną kwestią w początkowej fazie projektowania systemu konwersacyjnego jest kto i gdzie będzie odbiorcą naszego rozwiązania. Czy będą to media społecznościowe, czy będzie to asystent głosowy, a może osadzimy go w aplikacji internetowej. Powyższe informacje wpływają na sposób zaprojektowania systemu konwersacyjnego oraz przebieg samej konwersacji. Jeśli np. będziemy chcieli zbudować asystenta głosowego musimy zadbać o dobrą transkrypcję głosu na tekst czyli o komponent ASR (automatic speech recognition), który w przypadku projektowania chatbotów nie występuje. Załóżmy, że chcemy zbudować system konwersacyjny w aplikacji internetowej. Nasz system musi nie tylko prawidłowo rozpoznać intencje użytkownika, ale również przydzielić ją do odpowiedniej usługi za pomocą algorytmu uczenia maszynowego (machine learning) i udzielić poprawnej odpowiedzi. Jeżeli wydaje się proste, przyjrzyjmy się następującym przykładom:

  1. Chciałabym zrobić przelew do męża.
  2. Chciałabym zrobić przelew ze zwykłego konta do męża na 1000 zł.

Pomijając oczywistą kwestię rozpoznania języka (polski, angielski, itp.), system konwersacyjny musi rozpoznać i przetworzyć intencję w celu wykonania odpowiedniej akcji. Intencja użytkownika jest jasna: chce wykonać przelew, jednak w każdym przykładzie podaje inny zakres danych. Rozpoznanie wszystkich danych w wypowiedzi nie jest już takie proste. Konieczne jest zrozumienie i podzielenie wiadomości na części, tak aby możliwe było wyekstrahowanie niezbędnych danych.

  1. Chciałabym zrobić przelew do męża.
  2. Chciałabym zrobić przelew ze zwykłego konta do męża na 1000 .

W naszych przykładach możemy znaleźć następujące zmienne:

[czynność] [rodzaj konta] [odbiorca] [kwota] [waluta]

Następnie, dla każdej ze zmiennych, należy przeprowadzić walidację integrując rozwiązanie z wewnętrznymi systemami organizacji.

Po przeanalizowaniu intencji użytkownika i wyekstrahowaniu danych widzimy, że przebieg konwersacji powinien się różnić w zależności od początkowej informacji. Różne przebiegi dialogu są niezbędne, ale aby je budować konieczne jest opracowanie podstawowego przebiegu procesu zawierającego niezbędne dane do jego przeprowadzenia.

Przykładowy przebieg procesu przelewu:

Zależnie od tego ile danych użytkownik zawrze w swojej pierwszej wypowiedzi albo ile systemowi uda się rozpoznać zmiennych, przebieg konwersacji bot-człowiek może mieć różne scenariusze, które powinny zostać przewidziane i zaimplementowane w komponencie Dialog Manager (drzewo dialogowe). Przykładowo, w pierwszej wypowiedzi znamy tylko dwie zmienne czynność oraz odbiorca (oczywiście, jeśli został wcześniej zdefiniowany w systemie; jeśli nie, również tą zmienną należy doprecyzować). W drugim przypadku, mamy podanych więcej danych jak: konto, kwotę i walutę.

Przykładowe przebiegi dialogów:

I scenariusz:
U: Chciałabym zrobić przelew do męża
B: Proszę podaj konto z którego ma być dokonany przelew
U: 12 3412 3412 3412 3412 1234 12
B: Jaką kwotę chcesz przelać?
U: 1000 zł
B: Proszę potwierdź, przelew do męża nr konta odbiorcy 98 7698 7698 7698 7698 7698 76 na kwotę 1000 zł 
z konta o nr 12 3412 3412 3412 3412 1234 12
U: Potwierdzam
II scenariusz (odbiorca nie został rozpoznany):
U: Chciałabym zrobić przelew do męża
B: Proszę podaj konto z którego ma być dokonany przelew
U: 12 3412 3412 3412 3412 1234 12
B: Jaką kwotę chcesz przelać?
U: 1000 zł
B: Odbiorca "mąż" nie został rozpoznany. Podaj proszę konto na które ma zostać dokonany przelew.
U: 98 7698 7698 7698 7698 7698 76
B: Proszę potwierdź przelew na konto 98 7698 7698 7698 7698 7698 76 na kwotę 1000 zł 
z konta o nr 12 3412 3412 3412 3412 1234 12
U: Potwierdzam
III scenariusz:
U: Chciałabym zrobić przelew ze zwykłego konta do męża na 1000 zł.
B: Proszę potwierdź przelew do męża nr konta odbiorcy 98 7698 7698 7698 7698 7698 76 na kwotę 1000 zł 
z konta zwykłego o nr 12 3412 3412 3412 3412 1234 12
U: Potwierdzam

 

Baza wiedzy

Jak zapewne zauważyliście, przebieg konwersacji, czyli to jaka odpowiedź zostanie wyświetlona użytkownikowi, jest zależny od rozpoznanych danych w wypowiedzi klienta. W I scenariuszu bot musiał dopytać się o konto, z którego ma zostać wykonany przelew, oraz o kwotę przelewu. W II scenariuszu bot nie rozpoznał odbiorcy, który albo nie był wcześniej zdefiniowany albo system nie rozpoznał w pełni intencji. W obu tych przypadkach bot powinien dopytać się o odbiorcę przelewu. Ostatni scenariusz jest wbrew pozorom najtrudniejszy, mimo tego że dane niezbędne do przeprowadzenia procesu zostały podane w pierwszym komunikacie. System musi rozpoznać i odpowiednio przydzielić każdą z danych.

A co jeśli po przeprowadzonym procesie klient zada ogólne pytanie np. jak zdefiniować odbiorcę przelewu? Wówczas system konwersacji, po zrozumieniu intencji użytkownika, musi wywołać odpowiednią akcje. Takie statyczne odpowiedzi są zapisywane i utrzymywane w bazie wiedzy. Baza wiedzy jest komponentem pozwalającym na uzyskanie odpowiedniej informacji na podstawie słów kluczowych.

Podsumowanie

Mam nadzieję, że przybliżyłam Wam istotne komponenty, które powinno się brać pod uwagę w trakcie projektowania systemu konwersacyjnego. Nie wszystkie z tych komponentów są obligatoryjne. Konwersacyjny ekosystem możemy wdrażać stopniowo rozpoczynając od zaprojektowania systemu konwersacyjnego opartego o procesy samoobsługowe np. wykonanie przelewu. Można również zaprojektować system konwersacyjny, który będzie swoistego rodzaju statyczną bazą wiedzy odpowiadającą na pytania takie jak np. "jak wykonać przelew". Każde podejście w znaczącym stopniu poprawia obsługę klienta. Trzeba tylko spróbować i nie zrażać się wielokrotnym omawianiem przebiegu dialogów, a w następstwie przeprojektowywania konwersacyjnego ekosystemu, aby dostarczyć sprawnie działający ekosystem.

Tym artykułem chcemy rozpocząć cykl artykułów związanych z AI, więc stay tuned!