(Acest document este pentru referință istorică – l-am scris în 2005 și l-am publicat pe site-ul meu, acum dispărut, la http://agtivity.com/agdef.htm, dar ar trebui să mai aibă cel puțin o oarecare relevanță actuală.)
Pentru o gândire mai recentă pe această temă citiți aceste lucrări mai noi:
- Ce sunt autonomia și agenția?
- Entități inteligente: Principals, Agents, and Assistants
- Ce este un asistent digital inteligent?
Un agent software (sau agent autonom sau agent inteligent) este un program de calculator care lucrează în vederea atingerii unor obiective (spre deosebire de sarcini discrete) într-un mediu dinamic (în care schimbarea este norma) în numele unei alte entități (umane sau computaționale), posibil pe o perioadă extinsă de timp, fără supraveghere sau control direct continuu, și care prezintă un grad semnificativ de flexibilitate și chiar creativitate în modul în care încearcă să transforme obiectivele în sarcini de acțiune.
Un sistem de agenți software (sau un sistem multi-agent (MAS)) este un mediu de calcul (cum ar fi Web-ul sau o rețea de suprapunere a mediului de calcul de tip grid computing) în care agenții software individuali interacționează unii cu alții, uneori într-o manieră cooperantă, alteori într-o manieră competitivă și alteori în mod autonom, urmărindu-și obiectivele individuale, accesând resurse și servicii ale mediului și, ocazional, producând rezultate pentru entitățile care au inițiat acești agenți software.
O definiție mai simplă și mai structurată este de a spune că un agent software este un program de calculator care prezintă caracteristicile de agenție sau de agenție software.
Acealaltă entitate poate fi un om, un program de calculator tradițional, „moștenit”, un robot sau un alt agent software. Un agent software este similar cu un robot, dar operează în spațiul cibernetic, într-o rețea de calculatoare.
Un agent software este autonom sau cel puțin semiautonom, ceea ce înseamnă că poate îndeplini sarcini în urmărirea unui obiectiv cu un minim de supraveghere directă sau fără control direct , dar poate interacționa cu o altă entitate pentru a obține îndrumare sau rezultate de ieșire. Poate avea sau nu o interfață cu utilizatorul.
Un agent software ar putea fi, de fapt, interactiv sau conversațional, acționând în numele unei alte entități care nu este direct vizibilă pentru „utilizatorul” care interacționează cu agentul. Aceasta ar fi o analogie directă cu modul de lucru al agenților din lumea reală.
Un agent software ar putea avea nevoie de un nivel ridicat de „inteligență” pentru a face față unui mediu dinamic în care neprevăzutul este norma. Dar este, de asemenea, posibil să avem un agent software „prost” care lucrează în mod autonom pentru a îndeplini sarcini bine definite și care solicită supraveghere numai atunci când detectează condiții neașteptate.
Un agent software poate fi „mobil” și să se deplaseze sau să fie deplasat în rețea, dar un agent software poate fi, de asemenea, „static” și să-și desfășoare întreaga activitate pe un calculator gazdă din rețea, inclusiv să acceseze resurse care se află pe alte gazde decât gazda pe care se execută agentul.
Un agent interactiv sau conversațional poate fi, de fapt, doar un „asistent”, sub control direct și în numele aceluiași utilizator. Acesta ar fi un mod de operare mai puțin autonom, dar agentul interactiv ar putea fi eventual dirijat să plece și să atingă un anumit obiectiv și să lucreze într-un mod autonom în timp ce face acest lucru. Problema „agentului” este în principal măsura în care NU există o relație unu la unu între conversia dintre utilizator și agent și setul real de sarcini îndeplinite de presupusul agent. Un asistent face exact ceea ce i se spune. Un agent primește un obiectiv și are flexibilitate în ceea ce privește modul de realizare a acelui obiectiv.
Un agent poate fi un singur agent (un singur agent care îndeplinește o serie de sarcini pentru a atinge un obiectiv), o parte a unui ansamblu de agenți (o echipă relativ mică cu specializare între membrii echipei) sau o parte foarte mică a unei armade de agenți (un număr mare de agenți cu o cantitate semnificativă de paralelism chiar și pentru sarcini specifice). Chiar și un singur agent poate interacționa cu alți agenți care sunt responsabili față de o altă entitate. Ceea ce distinge un ansamblu de agenți și o armada de agenți este faptul că aceștia sunt responsabili față de o singură entitate.
Potem vorbi de o comunitate de agenți sau de o comunitate de agenți software sau de un sistem multi-agent în care mulți agenți independenți par cel puțin să coopereze (și/sau să concureze) în urmărirea unor obiective comune. Comunitatea poate fi limitată la membri planificați în prealabil sau poate fi deschisă și poate permite agenților arbitrari, externi, să se „alăture” comunității deschise de agenți software.
Un agent software poate funcționa la nesfârșit sau pe termen nelimitat, urmărindu-și continuu obiectivele, dar este, de asemenea, posibil ca o instanță a unui agent să se încheie odată ce obiectivele sale au fost îndeplinite sau nu mai sunt necesare.
Caracteristicile care sunt frecvent menționate ca fiind adecvate pentru agenții software includ: comportamente reactive, deliberative, orientate spre obiective, adaptative, autonome, de învățare, comunicative, competitive și colaborative.
Agenții software (și sistemele de agenți software) ar trebui să fie proiectate folosind o arhitectură modulară.
Agenții software reprezintă următorul pas evolutiv dincolo de obiecte și programe. Obiectele tind să fie pasive, cu un singur obiect activ la un moment dat, iar obiectele tind să fie „ascunse” în interiorul programelor. Programele tind să fie relativ statice, iar proiectarea unui calcul distribuit cu un număr nedeterminat de programe care colaborează nu este o sarcină ușoară. Agenții software oferă oportunități de paralelism și de colaborare între programe, și pe scară largă, și de a face acest lucru cu ușurință și într-un mod robust, fiabil, flexibil și sigur.
Pentru discutarea problemelor legate de definirea a ceea ce este sau nu este un agent, faceți clic aici.
Forme de agenți software
Ca urmare a faptului că nu există o definiție precisă a unui agent software, iată diferitele forme de agenți software pe care le-am identificat, până în prezent:
- Agent de sistem – o sarcină sau un demon care rulează continuu în fundal și care are, de obicei, un scop specializat, preprogramat..
- Agent de utilizator – interfața de utilizator din partea clientului pentru o aplicație de rețea sofisticată. De exemplu, browserul web pentru accesarea World Wide Web.
- Agent client – interfața utilizator pe partea clientului pentru o aplicație bazată pe server, cum ar fi un motor de căutare sau de căutare de oferte. Partea serverului este, de obicei, pur și simplu efectuarea unei căutări într-o bază de date care este întreținută în mod independent de o anumită formă de web crawler care monitorizează modificările aduse site-urilor web.
- Web Crawler – un program bazat pe server care scanează continuu sau periodic web-ul sau porțiuni selectate de web în căutarea de informații de interes. Acesta nu este cu adevărat un agent, deoarece nu acționează în numele unui utilizator discret, dar colectează date care pot fi utilizate pentru un public larg de utilizatori.
- Agent conversațional – un program interactiv care prezintă o interfață foarte ușor de utilizat și apoi execută sarcini specifice conform indicațiilor utilizatorului. Deoarece răspunde direct la solicitările utilizatorului, nu funcționează cu adevărat în mod autonom.
- Agent inteligent – un program care execută o sarcină sau urmărește obiective cu un minim de direcții specifice, folosind tehnici inteligente sau euristice, astfel încât utilizatorul este foarte impresionat de faptul că un calculator poate fi atât de inteligent. Un AI nu are nevoie să fie mobil, deoarece vasta gamă de informații de pe web poate fi accesată de la distanță.
- Agent mobil – un program autonom care migrează între sistemele gazdă în procesul de urmărire a unuia sau mai multor obiective. Un AM nu trebuie să fie cu adevărat inteligent, ci să aibă suficientă flexibilitate pentru a face față unui mediu în care lucrurile se pot schimba sau pot fi inaccesibile în orice moment.
- Sistem multiagent (închis) – un mediu de aplicații strâns integrat în care părți ale aplicației sunt parcelate în mini-programe care urmăresc sub-obiective.
- Sistem multi-agent deschis – un mediu de aplicație distribuit, slab integrat, în care programe construite independent (agenți) pot participa la interacțiuni structurate în care agenții au un grad semnificativ de interes comun (comunitate).
- Agent software suprem – un program extrem de inteligent și flexibil care poate acționa în mare parte la fel ca o persoană reală, dar constrâns în spațiul cibernetic. În plus, un USA are capacitatea de a se diviza în mod dinamic în subagenți care pot efectua subtasking-uri și pot opera în paralel cu orice grad de interacțiune. Un USA se poate, de asemenea, clona (sau, de preferință, poate fi clonat automat de către infrastructura de agenți) pentru a exploata paralelismul inerent al rețelei. Subagenții divizați sau clonați pot fi recombinați în orice moment, în funcție de funcția sau de performanța agentului global. Un USA poate interacționa, de asemenea, cu alți USA independenți (o comunitate de USA) pentru care USA nu are o conștientizare preprogramată. Se poate utiliza o gamă largă de limbaje de programare, tehnici de implementare și protocoale de comunicare. Fiecare USA este complet interoperabil cu orice alt USA, sub rezerva doar a controalelor administrative și a limitelor de resurse.
- Robot – un agent software inteligent care este mobil în lumea reală. Roboții nu se pot clona pe ei înșiși, în prezent, dar, în teorie, un robot POATE construi fizic copii ale lui însuși SAU cumpăra sau închiria roboți „goi” (sau coajă) (ala o mașină de închiriat). În teorie, un robot ar putea să se „transporte” într-o altă locație prin simpla achiziționare a unei cochilii goale într-o altă locație și apoi să își „încarce” starea software în acel alt robot „gol”. Robotul ar putea alege să elibereze cochilia originală sau ar putea folosi pur și simplu acest mecanism pentru clonare.
- Comunitate de roboți – roboți care pot interacționa în urmărirea unor interese comune.
- Robot/Agent hibrid – un robot care poate interacționa cu unul sau mai mulți agenți software sau un agent software care poate interacționa cu unul sau mai mulți roboți. Lucrurile devin cu adevărat interesante atunci când o comunitate de roboți interacționează cu o comunitate de agenți software! De asemenea, rețineți că un robot ar putea să își transfere starea software către un agent software și apoi să opereze în spațiul cibernetic CA ȘI CUM ar fi un agent software și apoi să își RETURNEZE starea înapoi către robot. Un agent software ar putea face opusul: să își transfere starea într-un robot fizic, să opereze robotul și apoi să își returneze starea înapoi în spațiul cibernetic. Un robot poate acționa ca și cum ar fi un agent software care utilizează accesul la distanță. Iar un agent software poate, de asemenea, să opereze un robot fizic direct din spațiul cibernetic, tot prin acces la distanță. De fapt, un singur agent software (sau o echipă de agenți) ar putea opera mai mulți roboți în aceleași locații sau în locații diferite, inclusiv să controleze interacțiunea acelor roboți.
Pentru o viziune și mai veche asupra subiectului, vezi lucrarea lui Stan Franklin și Art Graesser intitulată „Is it an Agent, or just a Program?”: A Taxonomy for Autonomous Agents.”
Vezi, de asemenea, articolul de pe Wikipedia pentru Software Agent.
.