(Ez a dokumentum történelmi hivatkozás – 2005-ben írtam, és a már nem létező honlapomon tettem közzé http://agtivity.com/agdef.htm címen, de még mindig van némi aktualitása.)
A témával kapcsolatos újabb gondolatokért olvassa el ezeket az újabb tanulmányokat:
- Mi az autonómia és az ügynökség?
- Intelligens entitások: Principals, Agents, and Assistants
- What Is an Intelligent Digital Assistant?
A szoftverügynök (vagy autonóm ügynök vagy intelligens ügynök) olyan számítógépes program, amely egy dinamikus környezetben (ahol a változás a norma) egy másik entitás (emberi vagy számítógépes) nevében, esetleg hosszabb időn keresztül, folyamatos közvetlen felügyelet vagy ellenőrzés nélkül dolgozik célok (szemben a diszkrét feladatokkal), és jelentős mértékű rugalmasságot, sőt kreativitást mutat abban, ahogyan a célokat cselekvési feladatokká kívánja alakítani.
A szoftverügynök-rendszer (vagy multiügynök-rendszer (MAS)) olyan számítási környezet (mint például a web vagy egy grid számítási környezet overlay hálózata), amelyben az egyes szoftverügynökök kölcsönhatásba lépnek egymással, néha kooperatív módon, néha versengő módon, néha pedig önállóan követik egyéni céljaikat, hozzáférnek a környezet erőforrásaihoz és szolgáltatásaihoz, és esetenként eredményeket produkálnak a szoftverügynököket kezdeményező entitások számára.
Egy egyszerűbb, strukturáltabb definíció szerint a szoftverügynök olyan számítógépes program, amely az ügynöki vagy szoftverügynökség jellemzőit mutatja.
A másik entitás lehet egy ember, egy hagyományos, “örökölt” számítógépes program, egy robot vagy egy másik szoftverügynök. A szoftverügynök hasonló a robothoz, de a kibertérben, egy számítógépes hálózaton működik.
A szoftverügynök autonóm vagy legalább félautonóm, ami azt jelenti, hogy egy cél elérése érdekében feladatokat tud végrehajtani, minimális közvetlen felügyelet vagy közvetlen irányítás nélkül , de kölcsönhatásba léphet egy másik entitással, hogy útmutatást vagy kimeneti eredményeket kapjon. Lehet, hogy rendelkezik felhasználói felülettel, de lehet, hogy nem.
A szoftverügynök valójában lehet interaktív vagy beszélgető, egy másik entitás nevében eljáró, az ügynökkel kölcsönhatásba lépő “felhasználó” számára közvetlenül nem látható. Ez közvetlen analóg lenne azzal, ahogyan a valós világban az ügynökök működnek.
Egy szoftverügynöknek magas szintű “intelligenciával” kell rendelkeznie ahhoz, hogy kezelni tudja a dinamikus környezetet, amelyben a váratlan a norma. De lehetséges egy “buta” szoftverügynök is, amely autonóm módon dolgozik, hogy jól meghatározott feladatokat hajtson végre, és csak akkor kér felügyeletet, ha váratlan körülményeket észlel.
A szoftverügynök lehet “mobil”, és mozoghat vagy mozgatható a hálózaton belül, de a szoftverügynök lehet “statikus” is, és végezheti minden munkáját a hálózat egyetlen központi számítógépén, beleértve az olyan erőforrásokhoz való hozzáférést is, amelyek nem azon a központi számítógépen vannak, amelyen az ügynök fut.
Egy interaktív vagy társalgási ügynök valójában csak “asszisztens” lehet, közvetlen irányítás alatt és ugyanazon felhasználó nevében. Ez egy kevésbé autonóm működési mód lenne, de az interaktív ügynököt esetleg lehet utasítani, hogy menjen el és érjen el valamilyen célt, és közben autonóm üzemmódban dolgozzon. Az “ügynöki tevékenység” kérdése leginkább az, hogy milyen mértékben NEM áll fenn egy az egyben a felhasználó és az ügynök közötti átalakulás és az állítólagos ügynök által végrehajtott feladatok tényleges halmaza között. Egy asszisztens pontosan azt teszi, amit mondanak neki. Egy ügynök kap egy célt, és rugalmasan dönthet arról, hogyan éri el ezt a célt.
Egy ügynök lehet egyetlen ügynök (egyetlen ügynök, aki egy sor feladatot végez egy cél elérése érdekében), lehet egy ügynökegyüttes része (egy viszonylag kis csapat, a csapat tagjai közötti specializációval), vagy egy ügynökarmada nagyon kis része (nagyszámú ügynök, jelentős párhuzamossággal még bizonyos feladatokhoz is). Még egyetlen ágens is kölcsönhatásba léphet más ágensekkel, amelyek valamilyen más entitásnak felelősek. Az ágensegyüttest és az ágensarmadát az különbözteti meg, hogy egyetlen entitásnak tartoznak felelősséggel.
Beszélhetünk ágensközösségről, szoftverügynökök közösségéről vagy multiágens rendszerről, amelyben sok független ágens legalábbis látszólag együttműködik (és/vagy verseng) a közös célok elérésében. A közösség korlátozódhat előre megtervezett tagokra, de lehet nyitott is, és megengedheti tetszőleges, külső ágensek “csatlakozását” a szoftverügynökök nyílt közösségéhez.
Egy szoftverügynök futhat örökké vagy korlátlan ideig, folyamatosan a céljait követve, de az is lehetséges, hogy az ügynök egy példánya megszűnik, amint a céljait elérte, vagy már nincs rá szükség.
A szoftverügynökök esetében gyakran említett tulajdonságok a következők: reaktív, deliberatív, célorientált, adaptív, autonóm, tanuló, kommunikatív, kompetitív és kollaboratív viselkedés.
A szoftverügynököket (és a szoftverügynök-rendszereket) moduláris felépítéssel kell tervezni.
A szoftverügynökök a következő evolúciós lépést jelentik az objektumok és programok után. Az objektumok általában passzívak, egyszerre csak egy objektum aktív, és az objektumok általában “el vannak rejtve” a programokon belül. A programok általában viszonylag statikusak, és egy elosztott számítás megtervezése meghatározhatatlan számú együttműködő programmal nem könnyű feladat. A szoftverügynökök lehetőséget kínálnak a párhuzamosságra és a programok közötti együttműködésre, méghozzá nagy léptékben, méghozzá egyszerűen, robusztus, megbízható, rugalmas és biztonságos módon.
Az ügynök fogalmának meghatározásával kapcsolatos kérdések megvitatásához kattintson ide.
A szoftverügynökök formái
Mivel a szoftverügynöknek nincs kemény definíciója, az általam eddig azonosított szoftverügynökök különböző formái a következők:
- Rendszerügynök – egy folyamatosan futó háttérfeladat vagy démon, amelynek általában egy speciális, előre programozott célja van.
- Felhasználói ügynök – egy kifinomult hálózati alkalmazás ügyféloldali felhasználói felülete. Például a világháló elérésére szolgáló webböngésző.
- Ügyfélügynök – egy kiszolgálóalapú alkalmazás, például egy keresőmotor vagy egy üzletkereső ügyféloldali felhasználói felülete. A szerveroldal általában egyszerűen adatbázis-keresést végez egy olyan adatbázisban, amelyet a weboldalak változásait figyelő valamilyen webkúszó által függetlenül karbantartott adatbázisban.
- Webkúszó – olyan szerveralapú program, amely folyamatosan vagy időszakosan pásztázza a webet vagy a web kiválasztott részeit az érdeklődésre számot tartó információk után kutatva. Ez nem igazán ügynök, mivel nem egy különálló felhasználó nevében jár el, hanem olyan adatokat gyűjt, amelyek a felhasználók széles köre számára felhasználhatók.
- Beszélgető ügynök – olyan interaktív program, amely egy nagyon felhasználóbarát felületet jelenít meg, majd a felhasználó utasításai szerint meghatározott feladatokat hajt végre. Mivel közvetlenül a felhasználó kéréseire válaszol, valójában nem működik önállóan.
- Intelligens ügynök – olyan program, amely minimális konkrét utasítással, intelligens vagy heurisztikus technikák alkalmazásával olyan feladatot hajt végre vagy célokat követ, hogy a felhasználót nagyon lenyűgözi, hogy egy számítógép ilyen okos lehet. Az IA-nak nem kell mobilnak lennie, mivel a világhálón található információk széles skálája távolról is elérhető.
- Mobil ügynök – olyan autonóm program, amely egy vagy több cél követése során gazdarendszerek között vándorol. Egy MA-nak nem kell igazán intelligensnek lennie, de kellő rugalmassággal kell rendelkeznie ahhoz, hogy megbirkózzon egy olyan környezettel, amelyben a dolgok bármikor megváltozhatnak vagy elérhetetlenek lehetnek.
- (Zárt) Multi-ügynök rendszer – szorosan integrált alkalmazási környezet, amelyben az alkalmazás egyes részeit részcélokat követő mini-programokra osztják szét.
- Nyílt többügynökös rendszer – lazán integrált, elosztott alkalmazási környezet, amelyben egymástól függetlenül felépített programok (ügynökök) vehetnek részt strukturált interakciókban, amelyekben az ügynökök jelentős mértékben közösek (közösség).
- Végső szoftverügynök – rendkívül intelligens és rugalmas program, amely hasonlóan képes viselkedni, mint egy valódi ember, de a kibertérre korlátozva. Ezenkívül az USA képes dinamikusan alügynökökre osztani magát, amelyek részfeladatokat végezhetnek és párhuzamosan működhetnek, tetszőleges mértékű interakcióval. Az USA klónozhatja is magát (vagy lehetőleg az ügynök-infrastruktúra automatikusan klónozza), hogy kihasználja a hálózatban rejlő párhuzamosságot. A felosztott vagy klónozott alügynökök bármely ponton újrakombinálhatók, ha az a teljes ügynök funkciója vagy teljesítménye szempontjából megfelelő. Egy USA olyan más, független USA-kkal (USA-k közösségével) is kölcsönhatásba léphet, amelyekről az USA-nak nincs előre programozott tudása. A programozási nyelvek, megvalósítási technikák és kommunikációs protokollok széles skálája használható. Minden USA teljesen interoperábilis minden más USA-val, csak az adminisztratív ellenőrzés és az erőforráskorlátok függvényében.
- Robot – intelligens szoftverügynök, amely a valós világban mobil. A robotok ma még nem klónozhatják magukat, de elméletileg egy robot fizikailag képes lehet másolatokat készíteni magáról VAGY “üres” (vagy héj) robotokat vásárolni vagy bérelni (ala autókölcsönző). Elméletileg egy robot “elszállíthatná” magát egy másik helyre egyszerűen úgy, hogy egy másik helyen szerez egy üres burkolatot, majd “feltölti” a szoftverállapotát a másik “üres” robotba. A robot dönthet úgy, hogy kiüríti az eredeti burkolatot, vagy egyszerűen ezt a mechanizmust használja klónozásra.
- Robotközösség – olyan robotok, amelyek közös érdekek mentén képesek együttműködni.
- Hibrid robot/ügynök – olyan robot, amely képes együttműködni egy vagy több szoftverügynökkel, vagy egy szoftverügynök, amely képes együttműködni egy vagy több robottal. A dolgok akkor válnak igazán érdekessé, ha egy robotokból álló közösség kölcsönhatásba lép egy szoftverügynökökből álló közösséggel! Vegyük észre azt is, hogy egy robot átadhatja szoftverállapotát egy szoftverügynöknek, majd a kibertérben úgy működhet, mintha szoftverügynök lenne, majd visszaadhatja állapotát a robotnak. Egy szoftverügynök megteheti az ellenkezőjét: átviheti az állapotát egy fizikai robotba, működtetheti a robotot, majd visszaadhatja az állapotát a kibertérbe. Egy robot távoli hozzáférést használva úgy cselekedhet, mintha szoftverügynök lenne. És egy szoftverügynök is működtethet egy fizikai robotot közvetlenül a kibertérből, szintén távoli hozzáférést használva. Valójában egyetlen szoftverügynök (vagy ügynökök csapata) több robotot is működtethet ugyanazon vagy különböző helyeken, beleértve a robotok interakciójának irányítását is.
A témával kapcsolatos még korábbi nézeteket lásd Stan Franklin és Art Graesser “Is it an Agent, or just a Program?” című tanulmányában: A Taxonomy for Autonomous Agents.”
Szintén lásd a Wikipedia szócikkét a Software Agent-ről.