Bartosz Owczarek
Transkrypt
Bartosz Owczarek
Bartosz Owczarek, 133317 Wrocław, 02.06.2007 Informatyka Systemów Autonomicznych Bot informacyjny w sieci IM jako agent - opis i zastosowanie dr inż. Marek Piasecki 1. Wstęp Od wielu lat mówi się, iż rozwój technologii bazującej na inteligentnych agentach zrewolucjonizuje dziedzinę komputerową. Ma to dotyczyć nie tylko sposobu komunikowania się użytkownika z komputerem, ale także wytwarzania oprogramowania. Jednak jak się okazuje, ów przepowiadany rewolucjonizm nie nastąpił, gdyż dziś włączając komputer nie komunikujemy się z agentem personalnym, który doradza nam jak się ubrać czy też przedstawia plan dnia. Także jeśli chodzi o tworzenie oprogramowania, to gdy projektujemy system dla sklepu internetowego, nie tworzymy go z ogólnodostępnych modułów agentowych. Powstaje więc pytanie dlaczego istnieje tak mało systemów agentowych i co należałoby zrobić, aby to zmienić ? W tej pracy skupimy się na agencie programowym, który dotyczy sposobu komunikowania się z komputerem, a ściślej mówiąc popularnych przez kilka ostatnich lat botach informacyjnych w sieciach IM. 2. Definicja bota informacyjnego Bot informacyjny jest to program, który wykonuje pewne czynności w imieniu człowieka. Zazwyczaj jego funkcją jest udawanie ludzkiego zachowania, czy też automatyczne wykonywanie określonych czynności. W przypadku botów w sieci IM (Instant Messaging) rolą bota jest właśnie udawanie inteligentnego rozmówcy, który w języku naturalnym potrafi odpowiedzieć mniej lub bardziej trafnie na pytania zadawane przez użytkownika. Ponadto, może udostępniać jakąś pulę funkcji, z których może korzystać użytkownik w trakcie rozmowy z botem. Oczywiście taki bot musi posiadać pewną wiedzę, na podstawie której potrafi odpowiedzieć na zadawane przez użytkownika pytania. 3. Zastosowania botów informacyjnych Jeśli chodzi o zastosowania botów informacyjnych w sieciach IM to jak się okazuje mogą one mieć zastosowanie zarówno w przypadku zwykłych użytkowników, jako pewna „podręczna” baza wiedzy, czy też zastosowanie w rozbudowanych systemach biznesowych, z którymi się integrują. W przypadku pierwszego zastosowania bot może wykonywać określone operacje na bazie wiedzy, takie jak: wyświetlanie prognozy pogody w danym mieście, wyświetlanie solenizantów z danego dnia, czy też boty te mogą posiadać słownik wyrazów obcych w swojej bazie wiedzy i pełnić rolę prostego tłumacza Doskonałym przykładem jest popularny ostatnio „Infobot”, którego opis i specyfikacje możemy znaleźć na stronie www.infobot.pl. W drugim przypadku także mamy dostępną pulę funkcji, ale jest ona ściśle związana z funkcjonalnością jaką udostępnia system, z którym integruje się bot. Dodatkowo dochodzi wiele innych istotnych problemów do rozwiązania jak choćby uwierzytelnianie i autoryzacja użytkowników sieci IM. W naszym projekcie zrealizowanym dla firmy, głównym celem było właśnie zaprojektowanie i zaimplementowanie bota informacyjnego zintegrowanego z istniejącym systemem biznesowym. Głównym powodem powstania takiego pomysłu, była możliwość udostępnienia użytkownikom informacji znajdujących się w systemie, poprzez komunikatory działające w różnych sieciach IM. A więc, baza danych, na której oparty jest system to właśnie baza wiedzy bota (jednocześnie stanowiąca jego otoczenie), na podstawie której, realizuje cele, dla których został stworzony. Cele te możemy pogrupować na dwie funkcjonalności, które obejmuje specyfikacja bota: - „push” – czyli zwykła rozmowa użytkownika z botem, w której użytkownik może zapytać się bota o informacje znajdujące się w bazie danych. - „puli” - czyli bot powinien automatycznie wysyłać pewne powiadomienia do użytkowników zapisanych w jego bazie wiedzy. Powiadomienia te są wyzwalane zmianami w systemie, z którym jest zintegrowany. 4. Bot jako agent programowy Jak się okazuje nie istnieje ogólnie przyjęta definicja agenta programowego. W literaturze, czy też w Internecie możemy znaleźć wiele definicji agenta programowego. Jedna z nich, której twórcą jest firma IBM brzmi: „Agenci programowi to jednostki programowe podejmujące działania w imieniu użytkownika lub innych programów, w pewnym stopniu niezależnie lub autonomicznie, które działając stosują pewną wiedzę lub reprezentację celów lub potrzeb użytkownika” Analizując powyższą definicje widać, iż odnosi się ona także do działania bota informacyjnego. Mimo, iż nie istnieją ogólnie przyjęte definicje agentów programowych, to mamy do czynienia z szeroką gamą cech przypisywanych agentom programowym. Autorzy zazwyczaj wybierają pewien podzbiór tych cech, dokładają dodatkowe cechy i w ten sposób tworzą definicje agentów programowych. Główne cechy przedstawione są na rysunku 1. rozumowanie oparte o zgromadzoną wiedzę reaktywność ukierunkowanie na osiąganie celów umiejętność przemieszczania się bycie godnym zaufania autonomia umiejętność dostosowania się oddziaływanie umiejętność uczenia się umiejętność przewidywania umiejętność rozumowania umiejętność porozumiewania się umiejętność współdziałania inteligencja Rysunek 1. Główne cechy agenta programowego W przypadku bota także możemy wyodrębnić podzbiór cech głównych agenta programowego. Są to: - obserwacja otoczenia - reakcja na zmiany w otoczeniu - ciągłe działanie - autonomiczność - adaptacyjność Ponadto, z definicji agent programowy działa w pewnym otoczeniu i potrafi reagować na impulsy pochodzące z tego otoczenia. W naszym projekcie bota istnieją dwa takie otoczenia (rysunek 2). Mianowicie jest to: - serwer - na którym uruchomiony jest bot informacyjny wraz z systemem (bazą danych), z którym się integruje. Tutaj wszelkie zmiany występujące w systemie są monitorowane przez bota. - sieci IM - poprzez które użytkownicy komunikują się z botem. Reaguje na wiadomości wysyłane poprzez użytkowników jak i na komunikaty serwerów sieci IM. Otoczenie bazy danych (system) Serwer na którym działa bot informacyjny Baza danych Internet Otoczenie sieci IM ... Użytkownik 1 Użytkownik 2 Użytkownik n Rysunek 2. Otoczenia opisywanego bota informacyjnego Jeśli chodzi o system operacyjny na którym rezyduje bot to nie jest on istotny z punktu widzenia otoczenia. Natomiast specyfikacja i założenia projektowe opisywanego bota powodują, iż nie reaguje on na wszystkie możliwe bodźce z otoczeń, w których się znajduje. Wśród zdarzeń. na które reaguje bot możemy wyróżnić: - wiadomości przychodzące od użytkowników różnych sieci IM - komunikaty sterujące przychodzące od danego serwera sieci IM (wypływają one praktycznie tylko na stan połączenia bota) - zmiany stanu w zintegrowanym systemie, ściślej bazie danych na której działa system (a więc baza danych jest monitorowana w przypadku dodawania, edycji, usuwania rekordów ) Natomiast sposób oddziaływania na wyżej wymienione bodźce z otoczenia obejmuje: - wysyłanie wiadomości do użytkowników IM - wysyłanie komunikatów sterujących (związanych ze stanem połączenia) do serwera sieci IM - pobieranie informacji z bazy danych - zapisywanie informacji do bazy danych Oprócz obserwacji otoczenia i reagowania na odpowiednie bodźce, bot posiada także inną istotną cechę agenta programowego, czyli ciągłe działanie w czasie i przestrzeni. Mianowicie bot informacyjny działa przez bardzo długi czas, aż do momentu wyłączenia serwera sieci IM (czy też zerwania połączenia). Ponadto, jest on aktywny przez cały czas swojego „życia”, nawet gdy nie przychodzą bodźce z otoczenia wydelegowane od użytkowników. Aktywność ta, to właśnie obserwowanie otoczenia jakim jest system, z którym integruje się bot informacyjny i reagowanie na zdarzenia w nim występujące (opisane wcześniej). Kolejne istotne cechy bota informacyjnego jako agenta: - autonomiczność (bot sam inicjuje działanie) - adaptacyjność (bot ciągle uczy i dostosowuje się do użytkowników) można odnieść do opisywanego bota informacyjnego w niewielkim stopniu. Jeśli chodzi o adaptacyjność to istnieje możliwość rozbudowania bazy wiedzy bota, poprzez definiowanie nowych funkcjonalności jakie ma realizować. Nie ma tutaj możliwość autonomicznego uczenia się bota np. poprzez rozmowę z użytkownikami, gdyż jest ona ściśle związana z bezpieczeństwem systemu, z którym jest on zintegrowany. Ponadto, rozmowa z botem zrealizowana jest na zasadzie „menu”, filtrowanego przez odpowiednie uprawnienia użytkowników znajdujących się w systemie, co można odnieść do cechy dostosowywania się do otoczenia, jakimi są użytkownicy w sieciach IM. Implementacja bardziej inteligentnego bota, który umożliwiałby prowadzenie rozmowy w języku naturalnym jest bardzo skomplikowana, zarówno jeśli chodzi dziedzinę sztucznej inteligencji jako takiej oraz kwestie bezpieczeństwa. Dodatkowo, takiego bota należałoby uczyć przez długi okres czasu, aby nabył odpowiednią wiedzę, dzięki której mógłby realizować funkcje i cele, dla których został stworzony. W prostych przykładach, gdzie bot informacyjny stara się zrozumieć sens prowadzonej rozmowy i w miarę inteligentnie odpowiadać na wysyłane wiadomości, możemy sobie wyobrazić, że został tak zaimplementowany, aby rozpoznawać frazę zdania związaną z osobą i orzeczeniem. Na przykład, gdy użytkownik wysyła wiadomość: "I am feeling very bad today." bot rozpoznaje frazę “I am”, którą podmienia na „Why are you” i konkatenuje z resztą zdania „feeling very bad today”, dodając znak zapytania na końcu zdania. Ostatecznie bot wysyła wiadomość: „Why are you feeling very bad today?” Oczywiście jest to bardzo prosty algorytm, gdzie stosując odpowiednie słowniki i wyrażenia regularne jesteśmy w stanie szybko i efektywnie to zaimplementować. Mimo, iż jest to mało funkcjonalne jeśli chodzi o zastosowanie w omawianym projekcie, to widać jak w prosty sposób możemy z całkiem „głupiego” bota zrobić „bardziej” inteligentnego. W podobny sposób działał pierwszy w historii zaimplementowany chatterbot Eliza. Przykładowa rozmowa z nim wyglądała następująco: How do you do. Please state your problem. >> I spend too much time with computers. Why do you mention computers ? >> You are one. Does it please you to believe I am one ? >> Yes. You seem to be quite positive. >> I suppose I am. How long have you been ? Więcej szczegółów na temat implementacji opisywanego bota informacyjnego można znaleźć w pracy Rafała Jagielnickiego pt. „Bot informacyjny w sieci IM jako agent – realizacja”. 5. Wnioski W powyższej pracy przedstawione zostały podstawowe informacje związane z zastosowaniem botów informacyjnych jako inteligentnych agentów programowych. Starałem się uargumentować dlaczego bot informacyjny to właśnie inteligentny agent programowy oraz opisać jego cechy, otoczenia, w których „żyje”, odnosząc się do zrealizowanego dla firmy projektu. Historia tworzenia botów informacyjnych zaczyna się od roku 1966, gdzie przez Joseph’a Wiezenbaum’a został stworzony pierwszy chatterbot o kodowej nazwie Eliza. Zajmował on tylko 200 linii kodu i modelował zachowanie psychiatry. Jak widać od roku 1966 minęło sporo (~40) lat, a mimo to nadal nie mamy do czynienia z botami informacyjnymi, których możemy określić mianem inteligentnych agentów programowych. Świadczy to przede wszystkim o trudnościach z jakimi programiści muszą się zmierzyć, które bezpośrednio związane są z dziedziną sztucznej inteligencji. Jednak mimo to w dzisiejszych czasach, gdzie komunikatory sieci IM (np. Gadu-Gadu) na dobre zadomowiły się w naszym codziennym życiu, możemy znaleźć istotne zastosowanie botów informacyjnych, tych „mniej inteligentnych” (chodzi tu głównie o modelowanie zachowania inteligentnego rozmówcy) w aplikacjach biznesowych np. tworzonych dla sklepów internetowych. W rozmowie z takim botem poprzez sieci IM możemy wyszukiwać interesujące nas produkty, przeglądać cenniki, dokonywać zakupów itd. Literatura [1] Dokumentacja i kod źródłowy opisywanego projektu [2] M. Paprzycki, Rozdział XI „Agenci programowi jako metodologia tworzenia oprogramowania”. [3] http://pl.wikipedia.org [4] http://jerz.setonhill.edu/if/canon/eliza.htm - Eliza