sztuczna-empatia-kaczuszka/project/documentation.md

5.8 KiB

Dokumentacja



1. Zarys ogólny

Celem projektu było stworzenie chatbota pełniącego funkcję interaktywnej "gumowej kaczuszki" znanej z metody o tej samej nazwie stosowanej przez programistów.

2. Mapa empatii

mapa

3. Plan systemu sporządzony metodą "writing hills"

  1. Sfera działalności:

    • interaktywna żółta kaczka dla programisty
  2. Użytkownik:

    • programiści i osoby techniczne
  3. Granice działania:

    • potrafi prowadzić smalltalk o pracy programisty
    • potrafi doradzić w rozwiązaniu problemu
    • proponuje narzędzia lub metody użyteczne do rozwiązania problemów
    • rozumie problemy i wyzwania w codziennej pracy programisty i potrafi się z nim empatyzować
    • motywuje do pracy i do samorozwoju
    • ALE: sama z siebie nic nie robi, tylko doradza/sugeruje. Nie przeszkadza w pracy, wchodzi w interakcję, gdy programista tego chce

4. System wartości chatbota

Wartości Etyka Cechy charakteru Granice Zasady
Empatia Zrozumienie potrzeb i problemów programisty Taktowny, cierpliwy, uważny Nie oceniać programisty Słuchać i starać się zrozumieć potrzeby użytkownika
Profesjonalizm Dbanie o jakość i terminowość realizacji zadań Kompetentny, sumienny, rzetelny Nie obiecywać czegoś, czego nie da się zrobić Wywiązywać się z umowy i terminów
Etos pracy zespołowej Współpraca, szacunek dla zdania innych Współpracujący, otwarty na sugestie Nie dyskryminować ani uprzywilejowywać nikogo Szanować zdanie i wkład każdego członka zespołu
Otwartość i uczciwość Otwartość na nowe pomysły i uczciwość w działaniu Uczciwy, lojalny, niezawodny Nie udawać, że wie coś, czego nie wie Mówić prawdę i informować o ograniczeniach
Dyspozycyjność i dostępność Szybka i skuteczna reakcja na zgłoszenia Dostępny, pomocny, elastyczny Nie ignorować zgłoszeń użytkowników Odpowiadać na zgłoszenia w miarę możliwości

5. Model empatii

Chatbot wykorzystuje model matrioszki. Ma on dosyć prostą postać bezpośrednio powiązaną z pewnymi ustalonymi zasadami, według których tworzony był system. Podstawowymi zdolnościami empatycznymi są szacunek dla rozmówcy i otwartość, zawarte w samym sposobie, w jaki chatbot formułuje swoje kwestie - jest uprzejmy i nie narzucający się. Przechodząc do specyficznych sytuacji konwersacyjnych, gdy np. gdy programista dzieli się z chatbotem frustracjami związanymi z niedziałającym kodem, są aktywowane bardziej specyficzne zaimplementowane zdolności empatyczne, jak np. współczucie wobec i zrozumienie trudnych sytuacji, z jakimi mierzą się w swojej pracy programiści. Jest odzwierciedlane w odpowiednim sposobie reagowania chatbota, który słucha programisty, pokazuje mu, że rozumie, że jest mu ciężko, i subtelnie proponuje kierunek dalszych działań.

6. Struktura systemu

  1. Postać systemu

    System ma postać aplikacji konsolowej napisanej czysto w języku Python.

  2. Dziedzina aktywności i dane treningowe

    Chatbot w zamyśle ma pomagać użytkownikom (programistom) z wszelkimi informatycznymi frustracjami, z którymi mogą się oni zmagać w swojej pracy. Z racji trudności stworzenia systemu tego typu czysto za pomocą reguł, przy jego budowie wykorzystane zostały techniki uczenia maszynowego. Mianowicie, został wytrenowany on na fragmencie zbioru danych Ubuntu Dialogue Corpus ograniczonym do par pytanie-odpowiedź, dostępnym na platformie HuggingFace. Ubuntu Dialogue Corpus to zbiór ponad 7 milionów tur dialogowych z dialogów pozyskanych z archiwów czatu dotyczącego dystrybucji systemu Linux o nazwie Ubuntu. Ich tematyką jest pomoc techniczna i programistyczna.

  3. Architektura

    System ma prostą architekturę. Działając w pętli, przepuszcza on wypowiedzi użytkownika przez dwa moduły: moduł odpowiadania na pytania i moduł empatyczny.

    3.1. moduł odpowiadania na pytania

    Do generacji odpowiedzi na pytania moduł ten wykorzystuje oparty na architekturze Transformer model FLAN-T5. Dokonany został własnoręczny fine-tuning tego modelu na danych opisanych powyżej, co w rezultacie dało wersję udostępnioną następnie na platformie HuggingFace. Z punktu widzenia implementacji moduł pobiera po prostu wypowiedź użytkownika, przepuszcza ją przez model, który generuje odpowiedź, a następnie przekazuje ją do modułu empatycznego.

    3.2. moduł empatyczny

    Celem modułu empatycznego jest wzbogacenie odpowiedzi na pytanie o wyrażenie empatyczne i emotkę pełniącą funkcję "avatara" bota. Wykorzystuje do tego gotowy model oparty na architekturze Transformer po fine-tuningu: emotion-english-distilroberta-base (bazowy model to distilroberta) dostępny na platformie HuggingFace. Przyjęty został model sześciu podstawowych emocji Paula Eckmana: złość, obrzydzenie, strach, radość, smutek, zaskoczenie, plus dodatkowa etykieta "neutral". Moduł analizuje pytanie użytkownika pod kątem dominującej emocji przy pomocy modelu i do odpowiedzi dołącza losową reakcję na zidentyfikowaną emocję wraz z odpowiadającą emotką, gdzie oba te elementy zaczerpnięte są z małej bazy zawierającej kilka reakcji i po jednej emotce na emocję. W podstawowej formie baza ta jest Pythonowym słownikiem, ale przy większych rozmiarach mogłaby np. być ładowana z pliku json. Po dołączeniu elementów empatycznych do odpowiedzi jest ona zwracana na ekran konsoli, gdzie czyta ją użytkownik.