Description :
Pseudo-intelligence artificielle : rend votre bot intelligent (ou pas).
Pseudo-intelligence artificielle : rend votre bot intelligent (ou pas).
Changelog
Version 4.1.0 par MenzAgitat (02/04/2016)72 téléchargements
Correction : l'utilisation de certains caractères provoquait une erreur avec les commandes .forget .forgetword .countword et .seekstatement
Correction : la moulinette entrante supprimait parfois un nick en début de phrase alors qu'il était important pour le sens de la phrase.
Modification : amélioration du filtrage des nicks en début de phrase lorsqu'ils ne servent qu'à attirer l'attention de l'interlocuteur.
Modification : les fichiers du script se trouvent désormais dans le répertoire MegaHAL_Interface.
Modification : Une bonne partie des substitutions faites par les moulinettes (en entrée et en sortie) ont été supprimées car elles donnaient de mauvais résultats depuis la mise en place du système de substitution des nicks.
Modification : l'Interface MegaHAL ne touche désormais plus à l'encodage du texte.
Modification : l'affichage de l'aide utilise maintenant une file d'attente dédiée ayant une priorité nulle afin de ne pas engorger les autres files d'attente de l'Eggdrop.
Les messages contenus dans cette file d'attente ne s'afficheront que lorsque toutes les autres files d'attente sont vides.
Modification : les informations retournées par la commande .braininfo ont été condensées pour tenir sur 2 ou 3 lignes au lieu de 3 ou 4.
Modification : le paramètre substitute_by_interlocutor_nick_rate n'autorise désormais plus qu'une seule substitution par le nick de l'interlocuteur afin d'augmenter la pertinence des réponses.
Ajout : si le nick d'un utilisateur présent est cité en s'adressant à MegaHAL et que la substitution des nicks est activée, celui-ci pourra être réutilisé dans la réponse.
Diverses optimisations du code.
Version 1 par (26/12/2010)
122 téléchargements
Introduction :
Débuté en décembre 2007, le développement de ce script a maintenant atteint ses objectifs et je vous le livre enfin.
MegaHAL Interface est une interface pour le module MegaHAL développé par Zev ^Baron^ Toledano et modifié par Artix, d'après l'I.A. de Jason Hutchens.
Ce script ne fonctionnera correctement qu'avec la version 3.4 du module MegaHAL modifié par Artix (Artixed Edition 3) qui est fournie avec.
Si vous choisissez de ne pas utiliser la version fournie du module et que vous avez des problèmes, ne venez pas m'en parler.
Description :
Le but de cette interface est d'accroître le contrôle que vous avez sur MegaHAL et d'ajouter de nombreuses fonctionnalités et améliorations dont voici la liste :
- Tout est en français.
- Contrôle de l'I.A. par flags (donc par chan) :
+/-megahal : Active/désactive la possibilité d'utiliser MegaHAL sur un chan donné. Ce flag est prioritaire sur les autres flags.
+/-megahal_respond : Active/désactive les réponses du bot quand un mot mot-clé (son nick par exemple) est mentionné sur un chan donné.
+/-megahal_chatter : Active/désactive les réponses spontanées du bot sur un chan donné (c'est à dire sans qu'il soit sollicité).
+/-megahal_learn : Active/désactive l'apprentissage sur un chan donné.
Notez que ces flags sont tous désactivés par défaut si c'est la première fois que vous utilisez ce script.
Remarque : si le flag -megahal est appliqué sur un chan, les seules commandes publiques qui fonctionnent sont ".megahal on/off" et ".megahal_status"
- Caractères spéciaux utilisables en début de ligne :
& = apprentissage forcé + réponse forcée
% = n'apprend pas + réponse forcée
~ = apprentissage forcé + ne répond pas
$ = n'apprend pas + ne répond pas
Remarque : attention, & et ~ sont ultra-prioritaires et rien n'interdira au bot d'apprendre une commande par exemple; faites attention à qui vous donnez l'autorisation d'utiliser ces 2 symboles.
- Commande d'aide n'affichant que les commandes auxquelles vous avez droit en fonction de votre accès.
- nombreuses commandes publiques :
.aide_megahal affiche la liste des commandes spécifiques à MegaHAL
.megahal active/désactive l'I.A. sur un chan (contrôle le flag megahal)
.learn active/désactive l'apprentissage sur un chan (contrôle le flag megahal_learn)
.respond active/désactive la réponse de l'I.A. en cas de mot clé détecté (contrôle le flag megahal_respond)
.chatter active/désactive la libre expression (contrôle le flag megahal_chatter)
.replyrate affiche/modifie le taux de réponse libre
.keyreplyrate affiche/modifie le taux de réponse en cas de mot clé détecté
.forget demande à l'I.A. d'oublier une phrase
.forgetword demande à l'I.A. d'oublier un mot
.seekstatement vérifie si l'I.A. connait une phrase donnée
.countword vérifie si l'I.A. connait un mot donné et en compte toutes les occurrences
.learnfile demande à l'I.A. d'apprendre le contenu d'un fichier
.savebrain sauvegarde le cerveau
.reloadbrain recharge le cerveau
.reloadphrases recharge les phrases (depuis le fichier .phr)
.trimbrain effectue un élagage du cerveau
.lobotomy effectue un lavage de cerveau
.restorebrain restaure un backup du cerveau
.megahal_status affiche le statut de l'I.A. sur le chan en cours
.braininfo affiche des informations sur l'I.A.
.memusage affiche une estimation de la quantité de mémoire occupée par l'I.A.
.treesize affiche la taille d'une arborescence
.viewbranch affiche le contenu d'une branche de l'arborescence
- Régler à votre convenance les commandes et les autorisations pour chacune.
- Définir un délai pour l'activation de l'I.A. après la connexion de l'eggdrop au serveur afin de réduire l'encombrement des files d'attente.
- Choisir des mots clés qui provoqueront forcément une réponse. (variables acceptées)
- Exclure certains nicks/handles de l'apprentissage : MegaHAL n'apprendra jamais ce qu'ils disent.
- Exclure certais nicks/handles des réponses : MegaHAL ne leur répondra jamais.
- Définir une liste de mots (jokers acceptés) que l'I.A. ne doit jamais apprendre.
- Régler indépendamment le taux de réponse libre, le taux de réponse en réaction à un mot clé, et le taux d'apprentissage.
Les taux sont exprimés en %.
- Définir une longueur minimale en mots afin d'empêcher l'I.A. d'apprendre des phrases trop courtes.
- Choisir la longueur maximale en mots des réponses de MegaHAL (fonctionnalité d'origine du module).
- Apprendre APRES avoir répondu, afin que la réponse ne soit pas influencée par ce qu'il vient juste d'apprendre.
- Substituer le nick du bot par le nick de la personne à qui il répond selon un pourcentage de chances.
- Substituer les nicks des personnes présentes sur le chan par des symboles lors de l'apprentissage, puis les substituer à nouveau par des nicks de personnes présentes sur le chan lorsqu'ils seront réutilisés par l'IA. (à l'exceptions de certains nicks que vous pouvez choisir)
- Choisir la taille maximale du contexte (fonctionnalité d'origine du module).
- Mode surprise autorisant l'I.A. Ã prendre plus de libertés (fonctionnalité d'origine du module).
- Choisir quels caractères sont considérés comme fin de mot.
Exemple : les virgules même si elles ne sont pas précédées ou suivies d'un espace
- Choisir quels caractères sont considérés comme séparateurs de mots et ne seront par conséquent pas appris.
Exemple : les espaces
- Choisir quels caractères ne doivent pas être dissociés d'un mot.
Exemple : le trait d'union dans porte-monnaie
- Simuler le temps de frappe car un bot qui répond instantanément brise l'illusion.
- Empêcher l'I.A. d'apprendre le contenu des copier/coller et le flood en imposant un délai minimum entre 2 apprentissages venant de la même personne.
- Empêcher que l'I.A. envoie un flood de réponses (par exemple en réaction à un copier/coller dont chaque ligne mentionne le nom du bot) en imposant un délai minimum entre 2 réponses du bot à une même personne.
- Protection anti-flood afin d'empêcher que MegaHAL réponde plus de x fois en y secondes.
- Possibilité de faire taire le bot pendant un certain temps en lui demandant gentiment (ou pas).
- Les réponses de MegaHAL sont placées dans une file d'attente dédiée dont la taille maximum peut être contrôlée.
- Choisir la taille maximale du cerveau en nombre d'associations (également appelées nodes). (fonctionnalité d'origine du module)
- Modifier le temps imparti à la génération d'une réponse par MegaHAL (par défaut 1 seconde).
- Possibilité d'activer/désactiver le mode debug du module. Ce mode permet au module d'afficher des informations sur le contexte en cas de crash mais consomme plus de mémoire.
- Possibilité d'afficher aléatoirement une réponse double dont l'une des deux est une réponse neutre choisie aléatoirement dans une liste.
La deuxième réponse neutre peut intervenir avant ou après la réponse de MegaHAL. Voici un exemple :
<MenzAgitat> fais gaffe, je crois que t'es un bot.
<bot> ou pas
<bot> fais gaffe, t'es sur #boulets
- Mode débogage à plusieurs niveaux affichant des informations détaillées en partyline en ce qui concerne le fonctionnement de l'interface MegaHAL. Des codes couleur sont utilisés afin que le flot d'information soit facilement lisible (rend beaucoup mieux sur fond noir que sur fond blanc).
Voir la section paramètres pour des explications détaillées.
- Sauvegarde automatique du cerveau toutes les heures ainsi qu'avant un rehash / restart / ... , et optionnellement un die.
- Création automatique d'une copie de sauvegarde des bases de données de l'I.A. chaque jour à une heure définie.
- Procédure de désinstallation intégrée au script afin de lui garantir une désinstallation propre à chaque re-lecture.
- Suppression des balises "fin de couleur" (\017) que MegaHAL apprend par défaut.
- Empêche l'I.A. d'apprendre des commandes et de les réutiliser (vous pouvez définir des exceptions)
- Filtres d'apprentissages :
- éviter au maximum que le bot apprenne son propre nom afin d'éviter qu'il le réutilise à outrance
- éviter d'apprendre les <nick> dans les copier/coller
- éviter d'apprendre les timestamps dans les copier/coller
- personnifier le bot afin qu'il reconnaisse mieux quand on parle de lui et que ses réponses reflètent sa conscience de soi.
- éviter au maximum que le bot apprenne son propre nom afin d'éviter qu'il le réutilise à outrance
- Filtres sur les réponses :
- éviter au maximum que le bot utilise son propre nick dans ses phrases
- personnifier le bot afin qu'il reconnaisse mieux quand on parle de lui et que ses réponses reflètent sa conscience de soi.
- corriger certaines incohérences de langage récurrentes
- corriger certaines fautes grammaticales récurrentes
- corriger la casse de smileys qui ont besoin de capitales pour conserver leur signification
- corriger la casse des nicks des personnes présentes sur le chan (sans quoi Megahal met tout en minuscules)
- augmenter le réalisme des réponses par certaines astuces simples (comme par exemple remplacer "pourquoi" en début de phrase par "parce que" afin que le bot ne réponde pas "pourquoi" Ã "pourquoi").
- éviter au maximum que le bot utilise son propre nick dans ses phrases
- Log des réponses de MegaHAL dans les logs de chan de l'eggdrop. (en temps normal, l'eggdrop ne se log pas lui-même)
Mise en route :
Voici les commandes à taper pour activer complètement l'I.A. sur un chan :
.megahal on
(active la possibilité d'utiliser MegaHAL sur ce chan)
.learn on
(active l'apprentissage sur ce chan)
.respond on
(active la réponse de l'I.A. en cas de mot clé détecté)
.chatter on
(active la libre expression)
Ces commandes sont à taper sur le chan sur lequel vous désirez activer MegaHAL. Notez que .megahal on/off agit comme un interrupteur global, vous permettant d'activer/désactiver entièrement MegaHAL sur ce chan via une seule commande, mais que son utilisation ne change rien à l'état des 3 autres interrupteurs (learn, respond et chatter), qui nécessitent d'être activés indépendamment.
Si vous venez juste d'installer Interface MegaHAL et que votre bot possède déjà un brain, il est recommandé de lui effacer la mémoire (au moyen de la commande .lobotomy) afin de profiter pleinement des capacités de ce script.
Remarque importante :
Si vous utilisez des caractères spéciaux dans le nom de votre eggdrop, ce script pourrait ne pas fonctionner correctement étant donné qu'il effectue des recherches par regexp sur $::botnick. A l'origine, ce script n'a pas été réalisé dans le but d'être publié et le rendre totalement universel n'a jamais été mon intention.
Changelog :
- v3.1.0
- Correction des réglages par défaut des options megawc_boundary et megawc_glue : les caractères [ et ] n'étaient pas échappés.
- Correction de la doc, la variable DEBUGMODE ne PEUT PAS valoir juste 0, elle doit OBLIGATOIREMENT être une liste de 7 valeurs.
- Correction de l'option learn_exclusion_list qui ne fonctionnait pas dans certains cas.
- Ajout de la déclaration de package MegaHAL_Interface 3.1.0
- Suppression de l'intégration de MC.Respond
- Intégration de Responder (script du même auteur à télécharger séparément)
- La file d'attente de parole est maintenant gérée différemment et simule de façon plus réaliste le temps de frappe. Auparavant, les délais de réponse étaient calculés à partir d'un point de départ commun; ils sont maintenant indépendants et sont ajoutés les uns à la suite des autres.
- La commande .learnfile est maintenant plus bavarde et vous affiche un message de confirmation.
- Correction : la casse des nicks des personnes présentes sur le chan est maintenant corrigée même si l'option substitute_all_nicks est activée.
- Correction : lors d'une lobotomie, on s'assure que le fichier BRN existe bien avant d'effacer l'ancien fichier OLD.
Support :
Laissez vos commentaires / rapports de bugs ici : post support
Â