AIML

L'Artificial Intelligence Meta Language (AIML) est un langage dérivé de XML utilisé pour gérer la connaissance des avatars et bots (robots virtuels). Ce langage utilise une vingtaine de balises de base.

 Le AIML a été développé par Richard Wallace entre 1995 et 2002.
(wikipedia : source)

Vous souhaitez installer votre Bot sur un site, vous trouverez les balises du language ci-dessous.

Rendez vous sur www.pandorabots.com pour :

créer les noms de votre Bot.
créer la liste des questions & réponses
Installer d'autres fichiers de connaissances AIML
Personnaliser le comportement de votre Bot
Tester le Bot avec l'URL
Insérer votre Bot dans la page de votre site (html ou Flash)
Les Balises AIML
Exemples d'entrée de connaissance

<topic name="THEME1">
<category>
<pattern>QUESTION 1 *</pattern>
<template>REPONSE BOT...
<random>
  <li>CHOIX 1</li>
  <li>CHOIX 2</li>
  <li>CHOIX 3</li>
</random>
<srai>Commentaire sur Q1 </srai>
</template>
</category>
</topic>
Cet exemple permet de renter une question <pattern> avec un choix de réponses multiples <li>

Une question alternative est ajoutée <srai>

<topic> permet de grouper un bloc de connaissance dans un thème.

<srai> renvoit vers un autre bloc donnant par exemple plus d'infos sur la question 1
<categorie>
<pattern>REPONSE 1</pattern>
<that>QUESTION 1</that>
<template>c'est la bonne réponse</template>
</categorie>

<categorie>
<pattern>AVIS2</pattern>
<that>REPONSE BOT</that>
<template>DOMMAGE</template>
</categorie>

Il est possible d'anticiper un choix de réponse avec <that>

Ici, le Bot avait lancé précédemment une question1, et l'utilisateur a répondu par reponse1..
Le Bot affiche alors finalement "c'est la bonne réponse"
<category>
<pattern>COMMENT VAS TU</pattern>
<template><think><set name="cava">ok</set></think>
<random><li>je vais très bien. </li><li>je fonctionne avec des paramètres normaux.</li></random>Merci <get name="name"/>. </template></category>
Introduction de <THINK> et <SET>

<THINK> permet de cacher une instruction, exemple ne pas afficher le nom d'une variable
<SET> permet de mémoriser le nom d'une variable.
La balise <set> sera exploitée par la balise <condition> et <li>
<category><pattern>AU REVOIR</pattern>
<template><random>  <li>Au revoir <get name="name"/>. </li>  <li>Salut <get name="name"/>. </li>  <li>@+ <get name="name"/>. </li> </random><srai>deconnecte</srai></template></category>
Introduction de <get name="name"/>
permet d'afficher le nom du visiteur s'il l'avait signalé à quel est ton nom par exemple.
Le nom est stocké dans la  variable "name"
<categorie>
<pattern>COMMENT T  APPELLES TU</pattern>
<template>Je m'apelle <bot name="botname"/>.</template>
</categorie>

Vous pouvez définir des variables sur le serveur hébergeant votre Bot, et les utiliser dans votre code. Vous pouvez en changeant la variable, modifier toutes les phrases contenant <bot name="....."/>
<category>
<pattern>POSE MOI UNE QUESTION</pattern>
<template><think><set name="topic">Quiz</set></think>
<random>
<li>Albert Einstein était il physicien ou biologiste</li>
</random> </template></category>
Quiz a été placé en topic. Cela permet de catégoriser un thème de sujet, et même d'anticiper par la suite les réactions du visiteur selon ce thème spécifique.
<category>
<pattern>_physicien</pattern>
<that>Albert Einstein était il physicien ou biologiste</that>
<template>Bravo. Albert Einstein était un physicien</template>
</category>
La réponse _ physicien se rapporte uniquement à la réference donnée par <that>
Vous pouvez créer un 2è choix avec <template> Faux....</template>
Si la réponse est du genre "oui il était physicien et..." il faudrait alors * physicien *
<topic name="Quiz">
<category><pattern>ENCORE</pattern><template><srai>pose moi une question</srai></template></category>
<category><pattern>UNE AUTRE</pattern><template><srai>pose moi une question</srai></template></category>
<category><pattern>ENCORE UNE AUTRE</pattern><template><srai>pose moi une question</srai></template></category>
</topic>

<topic name="Quiz"> anticipe les réactions de l'utilisateur dans le topic Quiz uniquement.

Sans cela, répondre par encore une autre pourrait dérouter le Bot incapable de savoir de quel sujet  il en retourne.
<category>
<pattern> Quel est mon nom ? </pattern>
<template>
<condition name="name">
<li value="*"> Ton nom est <get name="name"/></li>
<li> Tu ne me l'as pas encore dit. <srai>toc toc </srai> </li>
</condition>
</template>
</category>
Utiliser la fonction <condition> pour fixer des conditionnelles.

<condition> peut s'appuyer sur l'existence de variables <get name="name"/>et de l'entrée d'une donnée * sous la forme de value.

<srai>toc toc </srai> renvoit vers bonjour, quel est ton nom ?
<category><pattern>SUIS UN HOMME</pattern>
<template><condition name="genre"  value="homme">Oui <get name="name"/>.Tu es un homme.  </condition> <condition name="genre"  value="femelle">Non <get name="name"/>. Tu es une femme. </condition> <condition name="genre"  value="">Je l'ignore. Es tu un homme ou une femme? </condition> </template>
</category>
Ici, le Bot répond à la question "suis je un homme "
Si le genre avait déjà été signalé (variable genre),
le Bot répondra "Tu es + genre".
A défaut, le Bot dira par exemple Tu es une personne.
<category><pattern>ET TU AS VU *</pattern> <that>J'ai vu le film * </that>
<template> </template>Non, je n'ai pas vu <star/> mais je peux dire que <thatstar index="1"/> est vraiment bien! </template>
</category>
Ici le bot répond à la question "Et tu as vu *" après avoir dit juste avant "j'ai vu le film *"
Vous pouvez utiliser un éditeur de texte basique comme notepad, et enregistrer votre code en formatage utf8

Plus d'informations sur l'usage des balises AIML

Tout comme le HTML, il existe des logiciels permettant de coder proprement le language AIML.
Je propose  GaitoBot AIML Editor |
Pour les questions, utiliser le Forum
Vous souhaitez apporter une contribution sur cette page, rédigez vos codes sur la page wiki ci-dessous :