Software Agent (agent programowy)
Wstęp
Idea agenta oprogramowania jest nowa i najwięcej informacji o Software Agents można znaleźć głównie w Internecie. Źródła, z których korzystaliśmy pochodzą głównie ze stron uniwersytetów, które organizowały konferencje na temat Software Agents bądź też od różnych pracowników naukowych tychże uczelni. Oczywiście większość informacji przedstawiana jest w języku angielskim i jak to zazwyczaj bywa przy tłumaczeniu tekstów specjalistycznych pojawiają się problemy z doborem polskich odpowiedników do specjalistycznych zwrotów angielskich. Tak popularny termin jak Software Agent może być przetłumaczony na język polski jako: Agent Programowy oraz Agent Oprogramowania. Z takimi tłumaczeniami można się spotkać najczęściej i takich tłumaczeń będziemy używać zamiennie w naszym referacie. Jednak wiele firm produkujących lub zajmujących się agentami oprogramowania wymyśla własne nazwy dla swoich produktów np. web-bot, bot (skrót z angielskiego robot), asystent, pomocnik itd. Wszystkie te nazwy odnoszą się do jednej: Software Agent a różnica pomiędzy konkretnymi nazwami uwidacznia się w specyficznych funkcjach, jakie pełni dany agent lub asystent. Celem takiego rozległego nazewnictwa jest również zmylenie klienta, że dany produkt jest czymś innym bądź lepszym niż produkt konkurencji. Jest to chwyt marketingowy. Skoro mamy już nazewnictwo za sobą możemy zająć się teraz tym, czym jest agent oprogramowania.
Co to jest agent oprogramowania?
Teraz zajmiemy się wyjaśnieniem, czym są agenci oprogramowania i jak powinni być używani. Agenci oprogramowania różnią się między sobą nie tylko pod względem budowy, ale również zastosowania, specjalizacji oraz użyteczności. W literaturze i w sieci można się spotkać z takimi oto definicjami Agentów oprogramowania:
Agenci to pseudo ludzie przebywający cały czas on-line
Agenci to pewna forma lub reprezentacja sztucznej inteligencji
Agenci to inteligentni asystenci zdolni do ciągłej pracy
Agenci to negocjatorzy
Inne punkty widzenia
Wszystkie definicje różnią się między sobą. Jedna wnosi coś nowego, czego brakuje w drugiej, ale zapomina o innych aspektach. Teraz omówimy pokrótce te definicje, aby lepiej wyjaśnić ich zakres:
Agenci to pseudo ludzie przebywający cały czas on-line
W tej definicji agentów utożsamia się z prawdziwymi ludźmi. Takie podejście skutkuje tym, że przypisuje się agentom programowym cechy ludzkie i np. mówi się, że Agent 1 wysłał Agentowi 2 e-mail ponieważ czuł się do tego zobowiązany, Agent 2 poczuł potrzebę zawiadomienia administratora o problemie. Yoav Shoham wymyślił nawet język programowania stanów mentalnych agenta poprzez logikę. Język ten nazywa się AGENT-0 i jest bardzo podobny do języka Prolog. Tego typu agenci nadają się do zadań w których więcej wymaga się „myślenia” niż działania.
Agenci to forma reprezentacyjna sztucznej inteligencji
Agenci oprogramowania mogą także służyć jako abstrakcja dla wizualizacji i strukturalizowania coraz bardziej skomplikowanych systemów komputerowych. Odpowiednio wyposażeni w wiedzę agenci mogą prowadzić negocjacje przy zamówieniach materiałów do produkcji, zarządzać procesem produkcyjnym oraz w porozumieniu z agentami odbiorców uzgadniać szczegóły dostaw gotowych produktów, jednocześnie automatyzując wystawianie rachunku. Wszystko to może dziać się z wykorzystaniem najnowszych technologii multimedialnych np.: rozpoznawanie mowy przez agenta lub graficzna reprezentacja twarzy wirtualnego agenta.
Agenci to inteligentni asystenci zdolni do ciągłej pracy
Ta definicja agenta oprogramowania wypływa z zadań jakie agent powinien wykonywać. Ma on pełnić rolę sekretarki i prywatnego doradcy. Agent traktowany jako asystent może być wykorzystywany do przeglądania list oraz grup dyskusyjnych w poszukiwaniu ważnych informacji. Może również przeszukiwać całą sieć a więc zająć się rzeczami na, które użytkownik nie chciałby tracić cennego czasu. W tej kategorii mieści się również tak zwany Interface Agent (agent interfejsu). Jest to znany z popularnego edytora tekstu MS Word,Asystent MS Office czyli „spinacz”. Interface Agent pozwala na szybsze opanowanie nowej aplikacji i przyzwyczajenie do nowych nawyków. Służy zawsze pomocą korzystając ze skromnej bazy wiedzy o programie.
Agenci to negocjatorzy
Agenci zdolni są do inteligentnego działania a więc również do podejmowania niezależnych decyzji na cudzy rachunek. Grupa agentów może współpracować ze sobą aby osiągnąć cel jaki wyznaczyli im ich użytkownicy. Jak to bywa w negocjacjach cele są w najlepszym wypadku rozbieżne jeżeli nie sprzeczne. Tacy agenci mogą być wykorzystywani do planowania spotkań bądź negocjowania cen akcji. Bardzo prosty przykład agenta negocjatora można znaleźć na polskim portalu Allegro, który zajmuje się aukcjami internetowymi. Agenci negocjują pomiędzy sobą bez wiedzy i poleceń użytkownika, którego interesuje tylko efekt końcowy. Zamiast samemu tracić czas na żmudne negocjacje można poświęcić czas inteligentnego agenta, który zrobi to za nas (prawdopodobnie) lepiej a na pewno szybciej i sprawniej.
Wiemy już, że każda z tych definicji agenta oprogramowania traktuje go z innego punktu widzenia. Ale czym tak naprawdę są agenci oprogramowania. Inteligentni agenci są nową klasą oprogramowania, która działa w imieniu i na zlecenie użytkownika. Odpowiednio zaprogramowane mogą służyć do realizacji dowolnych zadań. Przykładami ich zastosowań jest znajdowanie i filtrowanie informacji, automatyzacja skomplikowanych zadań oraz przez połączenie wiedzy wielu agentów rozwiązywanie skomplikowanych problemów.
Generalną zasadą działania agentów oprogramowania jest delegacja zadań. Agenci oprogramowania mają autonomicznie realizować zadania w imieniu użytkownika. Muszą mieć możliwość komunikowania się z użytkownikiem, aby otrzymać niezbędne instrukcje jak i dostarczyć rezultatów swojej pracy. Istnieją dwa podejścia do budowania systemów opartych na agentach oprogramowania. Można wykorzystać pojedynczego agenta realizującego określone zadanie lub wprowadzić wieloagentowy system. Pojedynczy agent komunikuje się wyłącznie z użytkownikiem i musi dostarczyć całej funkcjonalności dla programu. Jest to podejście łatwiejsze do zrealizowania, jednak nieodpowiednie dla bardziej skomplikowanych zadań.
W systemach wieloagentowych w których wiele agentów współpracuje ze sobą dla realizacji celów trudnych lub niemożliwych do wykonania dla pojedynczego agenta komunikacja musi odbywać się nie tylko pomiędzy użytkownikiem i agentem, ale także pomiędzy agentami. Oto jak może wyglądać podział agentów:
Cechy agenta oprogramowania
W naukach o sztucznej inteligencji, systemach ekspertowych, systemach wspomagania decyzji można znaleźć wiele przykładów programów pełniących funkcje agenta oprogramowania jednak nie będącymi agentami oprogramowania. Czasami trudno rozróżnić agenta oprogramowania od zwykłego inteligentnego lub pół inteligentnego programu. Aby móc odróżnić agenta oprogramowania od innego inteligentnego programu należy poznać najważniejsze cechy agenta oprogramowania:
Agenci raczej angażują się w dialogi niż tylko przyjmują komendy aczkolwiek gramatyka ich języka oraz słownictwo mogą być ograniczone bądź odmienne od naszego.
Agenci mogą komunikować się nie tylko z użytkownikiem ale również między sobą, wymieniając się danymi i prowadząc dialogi.
Agenci są inteligentni i autonomiczni (działają niezależnie), odpowiadają na skomplikowane pytania w sposób właściwy dla zadanego problemu.
Agenci mogą się rozwijać poprzez zdobywanie nowej wiedzy. Jako, że agenci posiadają własną pamięć mogą również zbierać dane o swoich użytkownikach i reagować w miarę spontanicznie dostosowując swoje zachowanie i odpowiedzi do wywołującego ich użytkownika.
Agenci monitorują środowisko w jakim działają.
Agenci powinni być dostępni w każdej chwili kiedy użytkownik będzie ich potrzebował.
Agenci działają zazwyczaj w sieci a więc ich działanie może mieć efekty lokalne jak i globalne. Jeżeli agent ma zbyt wiele działań globalnych do wykonania poziom abstrakcji ulega znacznemu rozmyciu.
Można jeszcze dodać iż w kategoriach programowania agenta można traktować jako obiekt. Obiekt taki posiada następujące cechy:
Komunikatywność ( potrafią komunikować się z innymi agentami i/lub użytkownikiem)
Kontrola ( ich zachowanie jest zdeterminowane przez akcje które mogą podjąć)
Podejmowanie decyzji ( mogą przeprowadzać wnioskowanie i podejmować decyzje)
Autonomiczne działanie ( nie wymagają zewnętrznej pomocy do działania)
Trwałość ( przetrzymują informację o własnym stanie)
Agent jako obiekt wykorzystywany do abstrakcji działania systemu zapewnia następujące mechanizmy wspomagające tę abstrakcję:
Kapsułkowanie polegające na ukrywaniu wewnętrznych informacji przez agenta. Podobnie jak w podejściu obiektowym inni agenci mogą komunikować się z nim poprzez odpowiednio sformułowane komunikaty,
Modularność i możliwość łatwego ponownego użycia wynikające z autonomii działania agenta, łatwości jego skopiowania i oddzielenia jego ciała od maszyny na jakiej jest wykonywany,
Odporność systemu na błędy będąca wynikiem autonomiczności agenta. System zbudowany z wielu niezależnych komponentów nie uszkodzi się nawet jeśli jeden lub kilka jego komponentów ulegnie uszkodzeniu,
Skalowalność pociągająca za sobą niższe koszty rozbudowy systemu,
Możliwość wykonywania zadań wielu agentów w jednym czasie gwarantowana przez autonomiczne działanie agentów,
Możliwość zdalnego działania, znakomicie ułatwiająca budowę systemów rozproszonych.
Podział agentów oprogramowania
Rys.1 Typologia agentów
Jest to podział agentów ze względu na możliwość uczenia się, zdolności do współpracy i samodzielnego działania. Współpracujący agenci to agenci charakteryzujący się autonomią działania oraz zdolnością do współpracy z innymi agentami w celu realizacji celów. Są używani do rozwiązywania rozproszonych problemów w sytuacji w której pojedynczy zcentralizowany agent byłby nieprzydatny. Bardzo ważnym aspektem tworzenia tych agentów jest dobrze zdefiniowany język komunikacji między agentami. Obecnie może to być na przykład KQML (Knowledge Query and Manipulation Language), Agent Communication Language.
Agenci interfejsu powinni charakteryzować się autonomią działania oraz zdolnością do uczenia się aby skutecznie realizować zadania użytkownika. Ta klasa agentów jest implementowana w postaci asystentów, pomocników współpracujących z użytkownikiem i służących mu pomocą. Współpracujący agenci uczący się mogą dostosowywać się do zmian otoczenia oraz działania innych agentów dzięki zdolności uczenia się. Z uwagi na istotne znaczenie środowiska na ich działania nie są oni w pełni autonomiczni. Sprytni agenci to jednostki posiadające zdolność do uczenia się i komunikacji z innymi agentami, jednocześnie zachowując autonomię działania.
Budowa agenta oprogramowania oraz zasada działania
Do pisania agentów oprogramowania używa się specjalistycznych języków do tego stworzonych oraz tradycyjnych języków programowania. Poniższa tabela przedstawia najpopularniejsze dostępne języki do tworzenia agentów:
Agent type(s) |
Language Class |
Example(s) |
Collaborative agents |
Actor Languages |
Actors |
|
Agent-oriented programming languages |
Agent-0 Placa |
Interface agents Information agents Mobile agents |
Scripting languages |
TCL/Tk Safe-TCL Safe-Tk Java Telescript Active web tools Python Obliq April Scheme-48 |
Reactive agents |
Reactive languages |
RTA/ABLE |
Aby przybliżyć strukturę budowy agenta oprogramowania należałoby się posłużyć przykładem. W naszym referacie wykorzystaliśmy projekt RESTINA (Reusable Environment for Task-Structured Intelligent Networked Agents) pochodzący z instytutu robotyki na Carnegie Mellon University.
Moduł komunikacji i koordynacji przyjmuje oraz interpretuje wiadomości i zgłoszenia od innych agentów.
Moduł planowania na wejściu przyjmuje zbiór celów i zadań z, których generuje plan wykonania.
Moduł terminów używa planu wykonania zadań do zarządzenia wykonania odpowiedniego zadania w odpowiednim czasie.
Moduł wykonania monitoruje cały proces i zapewnia, że podjęte są odpowiednie kroki aby cały proces został właściwie wykonany.
Schemat budowy agenta można zobaczyć na rysunku:
Rys.2 Schemat budowy RESTINA
Cały system RESTINA składa się z czterech typów agentów:
Agenci interfejsu - zajmują się interakcją z użytkownikiem (system wejścia / wyjścia)
Agenci zadań - pomagają użytkownikom wykonywać i planować zadania, wymieniają się informacjami z innymi agentami
Agenci informacji - dostarczają dostęp do heterogenicznych źródeł informacji w sposób inteligentny.
Średni agenci - ułatwiają kontakt agentom potrzebującym usług dostęp do agentów świadczących usługi.
Rys.3 Powiązania pomiędzy agentami w systemie RESTINA
Zastosowanie agentów.
Zadania lub aplikacje w których agent może asystować użytkownikowi są wirtualnie nieograniczone: filtrowanie i przetwarzanie informacji, zarządzanie pocztą, ustalanie spotkania, środowiska do nauki on - line, inteligentne systemy wspomagania decyzji.
Oto trzy przykłady „agentów jako osobistych asystentów”:
The Do-I-Care Agent:
KIMSAC
COACH
Do-I-Care Agent:
Agent ten używa technicznych I społecznych mechanizmów odciążających obciążenie miejsc zawierających interesujące nowe informacje i zbiory w sieci. DICA monitoruje strony w sieci wcześniej znalezione przez użytkownika agenta aby być przygotowanym na wszelkie zmiany. Następnie porównuje te zmiany z modelem użytkownika, klasyfikuje je jako potencjalnie interesujące lub nie, i dostarcza raportów użytkownikowi o interesujących zmianach. Ponieważ agent skupia się raczej na zmianach znanych stron niż na odkrywaniu nowych, prawdopodobieństwo, że informacja znaleziona będzie interesująca maleje.
Kimsac
Kimsac jest projektem badań europejskich zawierającym obszar technologii agenta. Zwykli użytkownicy „zwyczajnego” komputera oraz serwisy telekomunikacyjne są przytłoczone w dwojaki sposób: wybór najbardziej odpowiedniego serwisu, w pewnym okresie czasu zaspakajającego ich potrzeby; po wyborze serwisu, trudność użytkowania tego serwisu.
KIMSAC został stworzony do rozwiązywania tych problemów pokazując potrzebę pewnej formy mediacji pomiędzy użytkownikiem a serwisami. Mediacja ta została wymyślona przez KIMSAC w analogiczny sposób jak sekretarka osobista.
COACH
COACH (COgnitive Adaptive Computer Help) modeluje zachowanie użytkownika oraz używa interfejsu do dostarczania aktywnej I przystosowanej pomocy. COACH został dostosowany do środowisk specjalistycznego oprogramowania, a także do interfejsów systemów ogólnego przeznaczenia, i jest dołączany jako standardowa część systemu operacyjnego IBM OS/2 nazwanego WarpGuide.
Zastosowanie agentów w e - commerce.
Możliwe że najbardziej obiecującym obszarem zastosowań agenta jest e - commerce. Wielu agentów „sklepowych” istnieje w sieci zwalniając ludzi z najbardziej czasochłonnych czynności procesu kupna, takich jak znalezienie produktu, negocjacja ceny. Przykładami są: PersonaLogic oraz Firefly, które to pomagają ludziom znaleźć produkty zaspokajające ich potrzeby. PersonaLogic pozwala użytkownikom określić listę cech produktu, a następnie pokazuje listę produktów odpowiednich do wymagań.
Agenci oprogramowania pozwalają na uniknięcie przeładowania informacją oraz dużych wydatków jakie mogą być związane z każdym ze stadiów procesu kupna. Tworzy to możliwości rozwoju nowych rynków, takich jak rynek tanich dóbr konsumenckich. Jednakże nadal sposób w jaki agenci oprogramowania prowadzą negocjacje jest daleki od doskonałości. Konieczne do rozwiązania problemy to zarządzanie dwuznaczną zawartością, personalizacja ustawień agenta, złożone zadania oraz zmieniające się otoczenie. Problemy te mogą zostać częściowo zniwelowane wprowadzeniem standardów zarówno w technologii agentów jak i przeprowadzania transakcji biznesowej i jej składników. Być może w przyszłości to właśnie agentom oprogramowania zostanie powierzone formowanie i zmiana koalicji między podmiotami dla realizacji kontraktów tak aby trwały one tylko tak długo jak to jest konieczne.
Być może w przyszłości ludzie zauważą więcej korzyści z inteligentnych agentów, które będą rozumiały ich specyficzne potrzeby.
VisitorBot
VisitorBot jest agentem programowym który planuje spotkania z badaczem(który często udziela rozmów). Agent ten rozprowadza rozmowę i akceptuje prośby o spotkanie z rozmówcą. Następnie rozprowadza plany outline wypełnione przez osoby rezerwujące czas z badaczem. W końcu po otrzymaniu przygotowanego przez użytkownika limitu czasu, agent generuje i rozprowadza plan spotkania z gościem.
Agenci jako menadżerowie poczty
ISCREEN.
Pozwala on aby słowo kluczowe stwarzało regułę i oferuje prostą analogiczną symulację, w której użytkownik może przetestować wiadomość, zaś w odpowiedzi system stosuje swoje reguły i wyjaśnia po angielsku, co powinno zostać zrobione. Poczta jest filtrowana przy pomocy kombinacji logicznych wyrażeń boolean, określonych na różnych polach. ISCREEN może wykryć różne konflikty pomiędzy regułami i zapytać użytkownika o priorytety. Użytkownik może użyć organizacyjnych wyrażeń np. menadżer, które rozwiąże system opierając się na bazie danych Prolog Corporate Directory. Użytkownik systemu X.500 Directory System Agent oferuje te same możliwości oparte na standardzie międzynarodowym.
System poczty TAPESTRY współpracuje z pocztową bazą danych (jako opozycja do pliku poczty), który jest zapytywany przez istniejący język zapytań.
INFORMATION LENS dostarcza różne typy wiadomości, które mogą wchodzić do filtrujących reguł (np. kiedy przybędzie wiadomość typu raport sprzedaży tygodniowej, skieruj ją do ...), lub może stać się argumentem dla innych akcji (np. otwarcie programu komputerowego). To zbliża integrację poczty z innym agento-podobnym zachowaniem, ale głębsza integracja możliwa będzie wtedy, gdy zrealizowane zostaną reguły oparte na menadżerze poczty analogiczne do monitorowania bazy danych (tak jak pokazano w TAPESTRY), to jest bardziej ogólna architektura agenta, która może rozważać menadżera poczty jako specjalny przypadek.
Agenci programowi mogą być postrzegani jako jednostki wspierające ludzkich użytkowników i mające zdolność poradzenia sobie z problemem samodzielnie w celu osiągnięcia celów lub asystowania działaniom użytkowników.
Źródła:
Henryk Sroka, Wpływ rozwoju Internetu i Agenta Softwarowego na SWD, Inteligentne systemy wspomagania decyzji w zarządzaniu. Transformacje systemów, AE Katowice 1997
Hyacinth Nwana, Michael Wooldridge, Software Agent Technologies
Philip R. Cohen, Adam Cheyer, Michelle Wang, An Open Agent Architecture
Stan Franklin, Art Graesser, Is it an Agent, or just a Program?: A Taxonomy for Autonomous Agents
Pattie Maes, R. H. Guttman, A. G. Moukas. Agents that buy and sell
Selker, T. (1994) COACH: A teaching Agent that Learns, Communications of the ACM, 37 (7), 92-99.
2/14
Sprytni
agenci
Współpracujący agenci uczący się
Agenci interfejsu
Współpracujący agenci
Autonomia działania
Uczenie się
Współpraca