(Tento dokument je historický – napsal jsem ho v roce 2005 a publikoval na svých dnes již neexistujících webových stránkách na adrese http://agtivity.com/agdef.htm, ale měl by být stále alespoň trochu aktuální.)
Pro novější úvahy na toto téma si přečtěte tyto novější dokumenty:
- Co je autonomie a agentura?
- Inteligentní entity:
- Co je inteligentní digitální asistent?
Softwarový agent (nebo také autonomní agent či inteligentní agent) je počítačový program, který pracuje na dosažení cílů (na rozdíl od diskrétních úkolů) v dynamickém prostředí (kde je změna normou) jménem jiné entity (lidské nebo počítačové), pokud možno po delší dobu, bez trvalého přímého dohledu nebo kontroly, a vykazuje značnou míru flexibility a dokonce kreativity v tom, jak se snaží transformovat cíle do akčních úkolů.
Systém softwarových agentů (nebo víceagentový systém (MAS)) je výpočetní prostředí (například web nebo překryvná síť výpočetního prostředí grid), ve kterém spolu jednotliví softwaroví agenti vzájemně komunikují, někdy kooperativně, někdy konkurenčně a někdy autonomně sledují své individuální cíle, přistupují ke zdrojům a službám prostředí a příležitostně vytvářejí výsledky pro subjekty, které tyto softwarové agenty iniciovaly.
Jednodušší a strukturovanější definice říká, že softwarový agent je počítačový program, který vykazuje znaky agentství nebo softwarového agentství.
Druhou entitou může být člověk, tradiční, „starší“ počítačový program, robot nebo jiný softwarový agent. Softwarový agent je podobný robotovi, ale působí v kyberprostoru, v počítačové síti.
Softwarový agent je autonomní nebo alespoň poloautonomní, což znamená, že může plnit úkoly při sledování cíle bez minimálního přímého dohledu nebo přímého řízení , ale může interagovat s jiným subjektem, aby získal pokyny nebo výstupní výsledky. Může, ale nemusí mít uživatelské rozhraní.
Softwarový agent může být ve skutečnosti interaktivní nebo konverzační, jednající jménem jiné entity, což není přímo zřejmé „uživateli“, který s agentem komunikuje. To by byla přímá analogie toho, jak pracují agenti v reálném světě.
Softwarový agent může potřebovat vysokou úroveň „inteligence“, aby se dokázal vypořádat s dynamickým prostředím, v němž je neočekávané normou. Je však také možné mít „hloupého“ softwarového agenta, který pracuje samostatně, aby splnil přesně definované úkoly, a vyžaduje dohled pouze tehdy, když zjistí neočekávané podmínky.
Softwarový agent může být „mobilní“ a pohybovat se nebo být přesouván po síti, ale softwarový agent může být také „statický“ a vykonávat veškerou svou práci na jednom hostitelském počítači v síti, včetně přístupu ke zdrojům, které jsou na jiných hostitelích než na hostiteli, na kterém je agent spuštěn.
Interaktivní nebo konverzační agent může být ve skutečnosti pouze „asistentem“ pod přímou kontrolou a jménem téhož uživatele. Jednalo by se o méně autonomní režim činnosti, ale interaktivnímu agentovi by případně mohlo být nařízeno, aby odešel a dosáhl nějakého cíle a pracoval při tom v autonomním režimu. Otázka „agentství“ spočívá především v tom, do jaké míry NENÍ vztah jedna ku jedné mezi konverzí mezi uživatelem a agentem a skutečným souborem úkolů, které údajný agent vykonává. Asistent dělá přesně to, co se mu řekne. Agentovi je dán cíl a má flexibilitu, pokud jde o způsob, jak tohoto cíle dosáhnout.
Agent může být jednotlivým agentem (jeden agent vykonávající řadu úkolů k dosažení cíle), součástí souboru agentů (relativně malý tým se specializací mezi členy týmu) nebo velmi malou částí armády agentů (velký počet agentů se značnou mírou paralelismu i pro konkrétní úkoly). I jednotlivý agent může interagovat s jinými agenty, kteří jsou odpovědní nějakému jinému subjektu. To, co odlišuje soubor agentů od armády agentů, je, že jsou odpovědní jediné entitě.
Můžeme hovořit o komunitě agentů nebo komunitě softwarových agentů či multiagentním systému, v němž mnoho nezávislých agentů alespoň zdánlivě spolupracuje (a/nebo soutěží) při sledování společných cílů. Komunita může být omezena na předem naplánované členy, nebo může být otevřená a umožňovat libovolným, externím agentům, aby se „připojili“ k otevřené komunitě softwarových agentů.
Softwarový agent může běžet věčně nebo neomezeně dlouho a nepřetržitě sledovat své cíle, ale je také možné, aby instance agenta skončila, jakmile jsou jeho cíle splněny nebo již není potřeba.
Mezi vlastnosti, které jsou často zmiňovány jako vhodné pro softwarové agenty, patří: reaktivní, deliberativní, cílové, adaptivní, autonomní, učící se, komunikativní, konkurenční a kolaborativní chování.
Softwaroví agenti (a systémy softwarových agentů) by měli být navrhováni s využitím modulární architektury.
Softwaroví agenti jsou dalším vývojovým krokem za objekty a programy. Objekty mají tendenci být pasivní, přičemž v daném okamžiku je aktivní pouze jeden objekt, a objekty mají tendenci být „ukryty“ uvnitř programů. Programy bývají relativně statické a navrhnout distribuovaný výpočet s neurčitým počtem spolupracujících programů není snadný úkol. Softwaroví agenti nabízejí možnosti paralelismu a spolupráce mezi programy, a to ve velkém měřítku, a to snadno a robustním, spolehlivým, flexibilním a bezpečným způsobem.
Pro diskusi o otázkách souvisejících s definicí toho, co je nebo není agent, klikněte zde.
Formy softwarových agentů
Jelikož neexistuje pevná definice softwarového agenta, uvádím různé formy softwarových agentů, které jsem dosud identifikoval:
- Systémový agent – nepřetržitě běžící úloha nebo démon na pozadí, který má obvykle specializovaný, předem naprogramovaný účel.
- Uživatelský agent – uživatelské rozhraní sofistikované síťové aplikace na straně klienta. Například webový prohlížeč pro přístup k celosvětové síti.
- Klientský agent – uživatelské rozhraní na straně klienta pro serverovou aplikaci, jako je vyhledávač nebo vyhledávání obchodů. Na straně serveru se obvykle jednoduše provádí vyhledávání v databázi, která je nezávisle udržována nějakou formou webového crawleru, který sleduje změny na webových stránkách.
- Webový crawler – program založený na serveru, který nepřetržitě nebo periodicky prohledává web nebo vybrané části webu a hledá informace, které ho zajímají. Ve skutečnosti se nejedná o agenta, protože nejedná jménem diskrétního uživatele, ale shromažďuje data, která mohou být použita pro širokou skupinu uživatelů.
- Konverzační agent – interaktivní program, který představuje velmi přívětivé uživatelské rozhraní a poté provádí specifické úkoly podle pokynů uživatele. Protože přímo reaguje na požadavky uživatele, ve skutečnosti nepracuje samostatně.
- Inteligentní agent – program, který vykonává úkol nebo sleduje cíle s minimem konkrétních pokynů, přičemž používá inteligentní nebo heuristické techniky s tím, že na uživatele velmi zapůsobí, že počítač může být tak chytrý. IA nemusí být mobilní, protože k obrovskému množství informací na webu lze přistupovat vzdáleně.
- Mobilní agent – autonomní program, který migruje mezi hostitelskými systémy v procesu sledování jednoho nebo více cílů. MA nemusí být skutečně inteligentní, ale musí být dostatečně flexibilní, aby se vypořádal s prostředím, ve kterém se věci mohou kdykoli změnit nebo být nedostupné.
- (Uzavřený) víceagentový systém – úzce integrované aplikační prostředí, ve kterém jsou části aplikace rozděleny na miniprogramy, které sledují dílčí cíle.
- Otevřený víceagentový systém – volně integrované, distribuované aplikační prostředí, v němž se nezávisle zkonstruované programy (agenti) mohou účastnit strukturovaných interakcí, v nichž mají agenti značný stupeň společného zájmu (společenství).
- Ultimátní softwarový agent – extrémně inteligentní a flexibilní program, který může jednat podobně jako skutečný člověk, ale omezeně v kyberprostoru. USA má navíc schopnost dynamicky se dělit na dílčí agenty, kteří mohou plnit dílčí úkoly a pracovat paralelně s libovolným stupněm interakce. USA se také může klonovat (nebo nejlépe být automaticky klonován agentovou infrastrukturou), aby využil přirozený paralelismus sítě. Rozdělené nebo klonované dílčí agenty lze v libovolném okamžiku rekombinovat, pokud je to vhodné pro funkci nebo výkonnost celého agenta. USA může také komunikovat s jinými nezávislými USA (společenství USA), o nichž nemá předem naprogramované povědomí. Lze použít širokou škálu programovacích jazyků, implementačních technik a komunikačních protokolů. Každý USA je plně interoperabilní s každým jiným USA, podléhá pouze administrativní kontrole a omezením zdrojů.
- Robot – inteligentní softwarový agent, který je mobilní v reálném světě. Roboti se dnes nemohou klonovat, ale teoreticky by robot MOHL fyzicky vytvářet kopie sebe sama NEBO si kupovat či pronajímat „prázdné“ (neboli skořápkové) roboty (ala půjčovna aut). Teoreticky by se robot mohl „přepravit“ na jiné místo jednoduše tak, že by si na jiném místě pořídil prázdnou skořápku a do tohoto jiného „prázdného“ robota by „nahrál“ svůj softwarový stav. Robot se může rozhodnout uvolnit původní skořápku nebo může jednoduše použít tento mechanismus pro klonování.
- Komunita robotů – roboti, kteří spolu mohou komunikovat při sledování společných zájmů.
- Hybridní robot/agent – robot, který může komunikovat s jedním nebo více softwarovými agenty, nebo softwarový agent, který může komunikovat s jedním nebo více roboty. Věci začínají být opravdu zajímavé, když komunita robotů interaguje s komunitou softwarových agentů! Všimněte si také, že robot by mohl přenést svůj softwarový stav na softwarového agenta a pak operovat v kyberprostoru, JAKO BY BYL softwarovým agentem, a pak vrátit svůj stav zpět robotovi. Softwarový agent by mohl postupovat opačně: přenést svůj stav do fyzického robota, provozovat robota a pak vrátit svůj stav zpět do kyberprostoru. Robot může jednat, JAKO BY BYL softwarovým agentem, pomocí vzdáleného přístupu. A softwarový agent může také ovládat fyzického robota přímo z kyberprostoru, rovněž pomocí vzdáleného přístupu. Ve skutečnosti může jeden softwarový agent (nebo tým agentů) ovládat více robotů na stejném nebo různých místech, včetně řízení interakce těchto robotů.
Ještě starší pohled na toto téma viz článek Stana Franklina a Arta Graessera s názvem „Is it an Agent, or just a Program?“:
Také viz článek na Wikipedii o softwarovém agentovi.
Také viz článek na Wikipedii o softwarovém agentovi.