Biblographie par Elena Ivankina
DEA I3

 

 

Le WEB regorge des sites consacrées aux langages de communication et d'échanges d'information entre les agents, nous sommes loin des les avoir tous visités et n'avons pas la prétention de tous les recenser, néanmoins une partie de ces sites n'a pas pu échapper à notre attention et c'est cette parie que nous allons essayer de présenter. On précise au passage que la partie francophone est totalement inexistante dans ce domaine tous les sites recensés seront donc anglophones .

Dans cette bibliographie nous somme resté dans un registre assez large et nous allons présenter un ensemble de sites ou de pages particulières dont le sujet sont les ACL ce qui englobe généralement les notions comme KIF, KQML, OIL, DAML etc. La bibliographie s'organise de la façon suivante. En premier lieu on fait une courte et générale présentation du domaine. Elle ne présentera pas de sujets spécifiques tels que ontologie ou sémantique de différents langages, mais seulement les termes et les concepts généraux qui permettront d'introduire le sujet et d'intéresser (peut-être) le lecteur. En suite on présentera la bibliographie elle même classée par thèmes, avec quelques commentaires pour la plupart des pages recensées.

Les agents ont besoin d'interagir et de communiquer les uns avec les autres et leur environnement doit leur permettre de coopérer et de partager la connaissance. Pour cela un langage commun ou compréhensible par tous est nécessaire. Il n'existe pas de langage commun reconnu, en revanche pour pouvoir répondre à ces besoins un langage doit procéder certaines caractéristiques. En particulier il est important de faire la distinction entre les langages de communication qui expriment les actes de communication et les langages à contenu qui expriment une information à propos d'un domaine.

Ainsi le concept de logiciels basés sur la communication des agents soulève un certain nombre de questions:
· Quel est le langage de communication approprié
· Comment construire les agents capables de communiquer dans ce langage
· Quelle est l'architecture propice à la communication

On compare souvent l'ingénierie de logiciels basées sur les agents à la programmation orientée objet. Comme des objets les agents fournissent une interface basée sur les messages, indépendante de la structure interne de base de données. Mais dans un système orienté objet le sens des messages peut varier d'un objet à un autre (c'est la propriété de polymorphisme), alors que dans un système multi-agent les agents utilisent un langage commun avec des sémantiques indépendantes de l'agent (le même message aura toujours le même sens indépendamment du contexte)

Le langage de l'implémentation, l'architecture et l'application ont une influence sur le design de ACL. Quand une application multi-agent est complexe elle doit fournir une représentation de son environnement, l'historique, les buts puisqu'un agent doit agir de façon autonome ce que un ACL leur permet de faire.

Il existe deux approches pour la création d'un ACL, l'approche procedurale et déclarative. L'approche procedurale est basée sur l'idée de communication doit être représentée comme un échange de directives procedurales, les langages de scripte (TCL, JavaScript, AppleEvents etc.) sont basés sur cette approche. Ils permettent au programmes de transmettre non seulement de simples commandes individuelles, mais des programmes entiers. Par contre les scriptes proceduraux sont difficiles à fusionner, il est difficile de créer un grand script qui a des différents buts à la fois.
L'approche déclarative sur laquelle on va se baser, part du principe que la communication est mieux représentée par un échange des déclarations (définitions, suppositions, affirmations, axiomes etc.)
Pour être utilisable un langage déclaratif doit posséder certaines caractéristiques
· Il doit être suffisamment expressif pour conduire l'information de types très variés
· Etre compact et concis (dans la mesure de raisonnable)
· Assurer la communication avec d'autre langages sans trop monter en charges
Pour répondre à ses besoins le ARPA Knowladge Sharing Effort a défini les composantes du langage de communication entre les agents (ACL). Le Knowladge Sharing Effort est un consortium pour le développement et les améliorations de bases de connaissances partagées et réutilisables, et des systèmes basés sur la connaissance. Et c'est avec le KSE que l'histoire des ACL commence.

Le KSL a été crée dans les années 1990 par l'Agence de Recherches Avancées dans la Défense du Ministère de la Défense Américain, dans lequel participait une douzaine de chercheurs aussi bien universitaires que industriels. Le but de cette organisation était de développer une technologie, une méthodologie et des outils logiciels pour une connaissance partagée et réutilisable dans le design, l'implementation, et l'exécution. Le KSE est parti de l'idée que pour partager la connaissance il faut un langage commun et s'est centré sur la définition d'un tel langage. Dans le model KSE un système est une base de connaissances virtuelle qui échange les propositions utilisant un langage qui exprime des attitudes variées et complexes et le terme d'origine était des " attitudes propositionnelles " . Ces attitudes étaient composé de relation entre trois entités :
· Un agent
· Une proposition orientée contenu (par ex. " il pleut ")
· Et un ensemble fini des attitudes qu'un agent peut avoir (croire, espérer, déclarer etc.)
De plus le terme d'agent n'était pas celui d'origine, mais s'y applique. Avec le temps ses concepts ont été développées et de nouvelles caractéristiques s'y sont rajoutées.
Ainsi un ACL standard inclue un vocabulaire de messagerie, un "langage logique" interne et un langage "linguistique" externe.
Un ACL standard d'ARPA KSE contient trois parties:
· Un vocabulaire à partir duquel les messages sont composés
· Un langage logique interne utilisant le vocabulaire, ce langage interne est connu sous le nom de KIF (Knowledge Inerchange Format)
· Un langage externe dans lesquels le formalisme du langage interne est traduit, ce langage s'appelle KQML (Knowlage Query and Manipulation Language)

La distinction entre le langage interne et externe reflète la nature du langage humain. Nos déclarations ont une forme logique mentalement non ambigu et indépendante du contexte, ce qui est en suite transcrit en forme linguistique. Cette forme est concise, ambiguë et dépendante du contexte. Ainsi un message ACL est l'expression KQML dont les arguments sont des termes de KIF est composé des mots du vocabulaire ACL. Le vocabulaire d'ACL est listé dans un dictionnaire avec les mots appropriés pour les applications courantes. Chaque mot a une description en anglais et une annotation formelle (écrite en KIF). Mais ce dictionnaire n'oppose pas une seule manière de description, il contient des ontologies pour chaque domaine.

En ce qui concerne le Knowledge Inerchange Format, c'est une version de FOPC (First Order Predicate Calculus) avec de différentes extensions pour étendre son expressivité. Alors que le Knowlage Query and Manipulation Langage sert à préciser la syntaxe KIF qui a besoin de connaissances implicites et contextuelles. Le KQML a été développé comme partie de KSE.

ACL fournit une couche linguistique ou l'information contextuelle est implicitement définie, elle devient explicite après la traduction en KIF. Le critère de validité de l'agent est comportemental. Une entité est un agent uniquement s'il communique correctement dans un langage de communication des agents. Cela veut dire qu'il doit être capable de lire et écrire des messages ACL et ce qui veut dire que l'entité en question doit respecter les contraintes comportementales implicites dans le sens de ces messages. Les contraintes spécifiques associées aux messages dérivent du contenu du message et les principes généraux du comportement des agents. Ces principes sont la vérité (un agent doit toujours dire la vérité), autonomie, engagement etc.

Et enfin l'architecture des système multi-agent est souvent constitué des groupes d'agents la communication s'effectuant entre les groupes, et non pas directement entre les agents. Chaque groupe possède un facilitator, donc au lieu de discuter les uns avec les autres les agents communiquent avec leur facilitator local, à l'aide de leurs documents ACL. Si le logiciel n'est pas basé sur cette architecture on implémente une couche logicielle avec un traducteur qui traduira les messages sortants du logiciel classique en ACL et vice versa. Une autre possibilité consiste à implémenter une couche de wrappeur qui transforme le code source du programme afin qu'il puisse convenir au système multi-agents.
Il faut remarquer que le concept de facilitators et de communication entre entité distinctes n'est pas neuf . Par exemple les programmes d'assistance aux répertoires facilitent l'interoperation entre les logiciels, en fournissant au programmes la possibilité de savoir lequel d'entre eux peut rediriger une requête et lequel serait intéressé par une information donnée. Les gestionnaires des objets distribuées (CORBA, OLE, DSOM) fournissent une transparence de localisation pour les systèmes orientées objet, routent les messages sans que l'expéditeur sache l'emplacement de l'objet destinataire. Les borkers automatiques (Publish et Subscribe, DDE, BMS, Tooltalk etc.) en plus de calculer un programme approprié pour recevoir un message, mais font suivre ce message, gèrent les erreurs qui apparaissent, et quand cela est nécessaire retourne la réponse à celui qui l'a envoyé. Mais l'approche plus sophistiquée des systèmes basées sur les agents vient des facilitators. Les agents utilisant les ACL peuvent mieux exprimer leurs besoins et leurs capacités. Pour gérer les incompatibilités d'écriture les facilitators peuvent traduire un message d'un vocabulaire à l'autre. Pour cela ils décomposent les messages en sous messages et les envoient aux différents agents. Quand cela est nécessaire ils peuvent combiner plusieurs messages. Pour avoir de telles capacités les facilitators actuels prennent un sérieux avantage par rapport aux technologies de raisonnement automatique développés en Intelligence Artificielle ou Bases de Données .


Beaucoup de sites web ont une approche généraliste de systèmes multi-agent Par exemple : http://agents.umbc.edu/ est un site où l'on peut trouver toutes les informations nécessaires sur les agents, et particulièrement les agents web. Précisément certaines parties traitent de FIPA, KQML et on peut y trouver des articles plus aux moins récents sur le sujet et obtenir des informations sur tout les domaines liés aux agents.
On voudrait attirer attention sur un article recensé sur ce site à l'adresse suivante : http://www.csee.umbc.edu/~jklabrou/publications/ieeeIntelligentSystems1999.pdf Agent Communication Languages : The Current Landscape, par Yannis Labrou, Tim Finin, et Yun Peng, University of Maryland, Baltimore County, 1999 Cet article fait un très bon résumé de la problématique de systèmes multi-agents et plus particulièrement leur communication, on peut y trouver également un peu de historique, de comparaisons entre langages différents (KQML et FIPA ACL) les projections vers l'avenir des ACL, ainsi une description relativement détaillée et présentée de façon très pédagogique des KIF, KQML etc.
A l'adresse http://piano.stanford.edu/concur/language/ on trouve une description assez brève de langages de communication entre les agents Dans le même registre l'article Software Agents écrit par Michael R. Geneserth Logic Group Computer Science Departement Stanford University et Steven P. Ketchpel Computer Science Departement Stanford University présenté sur http://logic.stanford.edu/sharing/papers/agents.ps traite très bien du sujet de communication en décrivant les piliers qui nous sont connu : KQML, KIF etc.
Sur le site http://www.timestocome.com/javaai/aicommunication.html on trouve des informations supplémentaires sur les systèmes multi-agents, mais aussi un certains nombre de liens vers quelques sites de référence dans le domaine que nous allons présenter ici en partie.
Sur le site http://www.firstmonday.dk/issues/issue2_3/ch_123/ on trouve l'article de Björn Hernmans, Intelligent Software Agents on the Internet où est présenté un inventaire des agents web, l'histoire, la communication, leur perspectives, les logiciels commercialisés, l'architecture à adopter etc. Ainsi qu'une bibliographie WEB très complète.
Le lien http://www.infoloom.com/gcaconfs/WEB/ts1273/tp1273.HTM présente des renvois vers les documents consacrés au KIF, ACL, KQML, et FIPA ACL
Pour d'autres informations sur les ACL : http://infoeng.ee.ic.ac.uk/~malikz/surprise2001/kt197/article2/main.html

LES ORGANISMES DE STANDARDISATION
Nous avons déjà cité le ARPA Knowladge Sharing Effort qui a participé au développement des ACL, mais on pourrait également parler de FIPA (Foundation for Intelligent Physical Agent) qui standardise et développe la technologie basée sur les agents, son site web officiel se trouve à l'adresse http://www.fipa.org/ mais on retrouve les références et les articles sur cette organisation sur la plupart des sites consacrées aux systèmes multi-agent.
En ce qui concerne le KSE on trouvera des informations dessus sur http://www-ksl.stanford.edu/knowlege-sharing/README.html , ainsi qu'un recueil des articles et des liens consacrés au partage de connaissances http://www-ksl.stanford.edu/knowledge-sharing/papers/index.html

KQML
Le KQML est de facto un standard dans les ACL, un langage et protocole d'échange d'information et de connaissances. C'est en même temps un format de messages et un protocole de redirection de celles-ci, on peut trouver de l'informations à ce sujet sur http://www.cs.umbc.edu/kqml , à voir également un article de James Mayfield, Yannis Labrou, Tim Finin, Processings on the IJCAI Workshop on Intelligent Agents II : Agent Theories, Architectures, and Language, Evaluation of KQML as an Agent Communication Language (1996) sur http://citeseer.nj.nec.com/mayfield96evaluation.html ou l'on peut également trouver tous les articles relatifs à cet article et aussi globalement sur la question de KQML

KIF
Le KIF est un format syntaxique particulier semblable à LISP, basé sur le calcul de prédicat de première ordre. On peut y définir les objets, fonctions relations, règles etc., mais ce n'est pas un langage de programmation, pour en savoir plus http://www.cs.umbc.edu/kse/kif/ , http://logic.stanford.edu/kif/ , sur chacune de ses pages on peut trouver d'autre liens sur les articles et projets relatifs à ce sujet

AUTRES LANGAGES ET PROTOCOLES
En plus de ce que l'on a pu dire sur les ACL on peut rajouter que FIPA a développé sa propre spécification de ACL le FIPA ACL on peut trouver la totalité des descriptions et de spécification de ce langage en version 2 sur le site de FIPA à l'adresse suivante : http://www.fipa.org/specs/fipa00003/OC00003A.html, bien que cette version soir obsolète, le document fourni une bonne présentation de ce langage.
Parmi les protocoles de communication entre le agents on remarque le SACP (Simple Agent Communication Protocol), qui a pour but de permettre une implémentation et compréhension rapide, et inclus toutes les fonctionnalités classiques de ce types de protocoles (requêtes, messages etc.), tous les langages de requêtes peuvent y être incorporés et cela va de SQL à KQML, à visiter sur http://davidreilly.com/sacp/overview.html
En ce qui concerne les langages de contenu pour la communication entre les agents on utilise souvent le XML et toutes ses dérivées et particulièrement ses extensions tels que DAML ou OIL ou DAML+OIL, toutes les informations OIL sont disponibles à l'adresse http://www.ontoknowledge.org/oil/ , les informations sur DAML sont disponibles sur le site officiel http://www.daml.org. Sur ces deux sites sont disponibles des informations sur l'architecture, la sémantique, l'ontologies et autres caractéristiques de ses langages, ainsi que de nombreux liens sur les articles de recherches etc. par exemple sur le site de DAML on trouve un article sur toutes les spécifications de DAML+OIL sur http://www.daml.org/2001/03/reference.html
Dans un autre registre sur le site http://www.cs.ruu.nl/people/rogier/files/atal2000.pdf on peut trouver un article sur la communication inter agent, Generaliased Object-Oriented Concepts for Inter-Agent Communication, de Rogier M. van Eijk, Franc S. de BOER, Wiebe van der Hoek et John-Jules CH. Meyer de Utrecht University, Department of Comuter Science

APPLICTIONS COMMERCIALES
Parmi les applications commerciales, les ACL sont utilisés dans l'environnement distribué, on constate également un grand nombre de projets web dans ce domaine et particulièrement dans le secteur de commerce électronique ainsi qu'un certain rapprochement avec les technologies objet par exemple le site de jFIPA propose des solutions de communication entre les agents basés sur la technologie Java http://www.jfipa.org , un projet commercial CommerceNet est également développé par l'université de Stanford, on peut trouver à l'adresse http://cit.stanford.edu/cit/commercenet.html une description par Arthur M. Keller de l'architecture et plus généralement de la technologie (multi-agent) qui est utilisée pour la partie catalogue de ce projet.
Un autre document sur le même sujet se trouve sur http://www-db.stanford.edu/pub/keller/1994/cnet-cat-arch.pdf toujours par Arthur M. Keller, mais aussi Michael R. Geneserth, Narinder P. Singh, Mustafa A. Syed, mais l'information plus complete à ce sujet est disponible sur http://www.commerce.net Une autre vision de la communication entre les agents est disponible sur le site http://www.webdevelopersjournal.com/articles/agent_communication.html Les recherches dans le domaine des ACL se fait également par les entreprises par exemple par Emorphia, sur le site http://www.emorphia.com/index.htm

Dans cette bibliographie nous avons essayé de présenter une introduction générique du domaine des langages de communication entre les agents, en suite nous avons présenté une bibliographique qui s'y réfère, en sachant que quasiment chacun de ses sites comporte sa propre bibliographie qui compléterait sans doute notre approche.