ACE ne semble pas convenir non plus, mais je reste attaché à l'idée d'une interaction à base de langage naturel. L'idée du moment, c'est de détourner AIML de sa raison d'être originelle pour en faire un instrument de programmation qui sorte un peu de l'ordinaire. Ome est fondamentalement un univers d'agents logiciels. Imaginons.
Chaque agent a accès à une même base de "bon sens" commun à tous les agents partout dans le réseau P2P. Ce sens commun est fait de règles pattern-template qui se répandent de node en node à chaque connexion. Chaque utilisateur peut alimenter librement cette base, les redondances partielles n'ayant aucune importance.
Second élément, chaque agent conserve en lui un ensemble de phrases descriptives qui forment la représentation subjective qu'il se fait de la situation actuelle de son environnement, et de sa propre position dans cet environnement.
En guise de capteurs sensoriels, l'agent reçoit des phrases en provenance de son environnement, c'est à dire en provenance d'autres agents, exactement comme le chatbot reçoit des phrases de l'utilisateur avec lequel il converse. Seulement au lieu de générer une réponse, livrée immédiatement à l'interlocuteur dans le cas du chatbot, ces entrées vont générer des "pensées" pour ainsi dire, qui vont alimenter cette représentation subjective dont nous parlions dans le paragraphe précédent.
Le moteur AIML doit être modifié, car les règles doivent accepter comme gâchette non seulement une phrase, mais plutôt un ensemble de phrases, partageant éventuellement des variables libres, et qui, si elles sont toutes présentes, vont déclencher la production d'une pensée.
Chaque pensée ainsi produite sera immédiatement retraitée comme si elle provenait du capteur sensoriel de l'agent, ce qui est le cas finalement, puisque l'agent ne fait que sentir ce qui se passe en lui. Ces pensées re-senties peuvent donc à leur tour générer d'autres pensées. Et ainsi de suite.
En sortie, certaines pensées pré-définies déclenchent automatiquement un acte de l'agent vis à vis d'un élément, identifié, de son environnement.
Dans ce schéma, la programmation d'un agent consiste à lui fournir un stock personnel de règles de génération de pensées, et des phrases "mission" pour guider son action. Maintenant il faut poser quelques petits garde-fous, parce que même si l'approche sort de l'ordinaire, on veut que ce soit utilisable.
La première nécessaire limitation concerne la façon dont se propagent les règles de sens commun. Chaque utilisateur peut transformer une règle active de sens commun en inhibition. L'inhibition a le même contenu que la règle active dont elle est issue, mais elle a pour effet d'effacer cette règle active de tous les nodes sur lesquels elle s'installe. Son mode de propagation est légèrement différent : elle ne se propage que sur les nodes qui contiennent la règle dont elle est issue, à raison d'une par jour, et disparait après trois mois. La raison d'être des inhibitions est évidemment de permettre à chaque utilisateur de supprimer certaines règles de la base de sens commun.
Un autre garde-fou : les règles de sens commun ne peuvent à elles seules provoquer un acte de l'agent. Si une pensée d'action est sur le point d'être générée par une règle de sens commun, alors cette règle se transforme immédiatement en inhibition, qui commence à se propager. Sans cela, il deviendrait rapidement impossible de programmer efficacement un agent. Seul le stock personnel de règles actives de l'agent peut générer des pensées d'action.
Avec un tel système, même en tenant compte des garde-fous, il est bien sûr difficile de programmer des comportements complexes, et on n'est jamais totalement certain de ce qui va se passer à l'exécution. Cela dit, l'objectif est surtout de pouvoir donner des ordres simples aux éléments peuplant Ome, en langage naturel, et en privilégiant la dimension ludique de l'ensemble.