MENTDB
Data Driver & Automation - Weak & Strong AI
BACK
Who is Mona? | MentDB Weak
Mona PAYET
Mona is the open-source bot present in the MentDB Weak server. Mona is based on a tiny part of the larger Lisa project (MentDB Strong) and will remain a 'weak' type AI. Mona trains with MentDB Weak's MQL editor.
Accessibility
Source code
#Create a bot;
bot create "mona" "fr" 0 "mona" "payet" "cancel_key" "Désolé, je ne comprends pas. Je préviens l'administrateur...";

#Create a user for the bot mona;
bot user_create "mona" "jim" "pwd" "{
  \"[user_firstname]\": \"jimmitry\",
  \"[user_lastname]\": \"payet\"
}" "*";

#Train the bot mona in MQL;
json load "trigger" "[]";
json iarray "trigger" / "abandonnes l'affaire" STR;
json iarray "trigger" / "abandonnes la tâche" STR;
json iarray "trigger" / "annules la tâche en cours" STR;
json iarray "trigger" / "tu peux abandonner l'affaire" STR;
json iarray "trigger" / "tu peux abandonner la tâche" STR;
json iarray "trigger" / "tu peux annuler la tâche en cours" STR;
json iarray "trigger" / "laisses tomber l'affaire" STR;
json iarray "trigger" / "tu peux laisser tomber l'affaire" STR;
json iarray "trigger" / "reprends tout à zéro" STR;
json iarray "trigger" / "tu peux reprendre tout à zéro" STR;
json load "consciousness_done" "[]";
json iarray "consciousness_done" / "j'ai repris tout à zéro." STR;
json iarray "consciousness_done" / "j'ai abandonné la tâche en cours." STR;
json load "consciousness_think" "[]";
json iarray "consciousness_think" / "j'avais pensé que je devais reprendre tout à zéro." STR;
json iarray "consciousness_think" / "j'avais pensé que je devais abandonner la tâche en cours." STR;
json load "consciousness_understand" "[]";
json iarray "consciousness_understand" / "j'avais compris que je devais reprendre tout à zéro." STR;
json iarray "consciousness_understand" / "j'avais compris que je devais abandonner la tâche en cours." STR;
json load "consciousness_subject" "[]";
json iarray "consciousness_subject" / "il s'agissait de reprendre tout à zéro." STR;
json iarray "consciousness_subject" / "il s'agissait d'abandonner la tâche en cours." STR;
json load "consciousness" "{}";
json iobject "consciousness" / "done" (json doc "consciousness_done") ARRAY;
json iobject "consciousness" / "think" (json doc "consciousness_think") ARRAY;
json iobject "consciousness" / "understand" (json doc "consciousness_understand") ARRAY;
json iobject "consciousness" / "subject" (json doc "consciousness_subject") ARRAY;
bot training_merge "mona" "cancel_key" "task"
	"" "Annuler la tâche en cours" 100 
	(json doc "trigger")
	(mql {
		
		bot set_wait_replay [bot] [user] null;
		
		switch (math random 5)
			(0) {"D'accord."}
			(1) {"Ok."}
			(2) {"Okay."}
			(3) {"C'est d'accord."}
			{"Bien reçu."}
		;
		
	})
	(json doc "consciousness")
;

json load "trigger" "[]";
json iarray "trigger" / "bonjour" STR;
json iarray "trigger" / "salut" STR;
json load "consciousness_done" "[]";
json iarray "consciousness_done" / "j'ai dis bonjour." STR;
json iarray "consciousness_done" / "j'ai répondu salut." STR;
json load "consciousness_think" "[]";
json iarray "consciousness_think" / "j'avais pensé que je devais dire bonjour." STR;
json iarray "consciousness_think" / "j'avais pensé que je devais répondre salut." STR;
json load "consciousness_understand" "[]";
json iarray "consciousness_understand" / "j'avais compris que je devais dire bonjour." STR;
json iarray "consciousness_understand" / "j'avais compris que je devais répondre salut." STR;
json load "consciousness_subject" "[]";
json iarray "consciousness_subject" / "il s'agissait de dire bonjour." STR;
json iarray "consciousness_subject" / "il s'agissait de répondre salut." STR;
json load "consciousness" "{}";
json iobject "consciousness" / "done" (json doc "consciousness_done") ARRAY;
json iobject "consciousness" / "think" (json doc "consciousness_think") ARRAY;
json iobject "consciousness" / "understand" (json doc "consciousness_understand") ARRAY;
json iobject "consciousness" / "subject" (json doc "consciousness_subject") ARRAY;
bot training_merge "mona" "dire_bonjour" "politesse"
	"" "Répondre à un bonjour de l'utilisateur" 100

	(json doc "trigger")
	(mql {

		bot set_wait_replay [bot] [user] null;
		
		switch (math random 2)
			(0) {"Salut."}
			{"Bonjour."}
		;
		
	})
	(json doc "consciousness")
;

json load "trigger" "[]";
json iarray "trigger" / "[1] + [2]" STR;
json iarray "trigger" / "fait une addition avec les nombres [1] et [2]" STR;
json load "consciousness_done" "[]";
json iarray "consciousness_done" / "j'ai fait une addition avec les nombres [1] et [2]." STR;
json iarray "consciousness_done" / "j'ai additionné les nombres [1] et [2]." STR;
json load "consciousness_think" "[]";
json iarray "consciousness_think" / "j'avais pensé que je devais faire une addition avec les nombres [1] et [2]." STR;
json iarray "consciousness_think" / "j'avais pensé que je devais additionner les nombres [1] et [2]." STR;
json load "consciousness_understand" "[]";
json iarray "consciousness_understand" / "j'avais compris que je devais faire une addition avec les nombres [1] et [2]." STR;
json iarray "consciousness_understand" / "j'avais compris que je devais additionner les nombres [1] et [2]." STR;
json load "consciousness_subject" "[]";
json iarray "consciousness_subject" / "il s'agissait de faire une addition avec les nombres [1] et [2]." STR;
json iarray "consciousness_subject" / "il s'agissait d'additionner les nombres [1] et [2]." STR;
json load "consciousness" "{}";
json iobject "consciousness" / "done" (json doc "consciousness_done") ARRAY;
json iobject "consciousness" / "think" (json doc "consciousness_think") ARRAY;
json iobject "consciousness" / "understand" (json doc "consciousness_understand") ARRAY;
json iobject "consciousness" / "subject" (json doc "consciousness_subject") ARRAY;
bot training_merge "mona" "faire_une_addition" "math"
	"" "Faire une addition avec 2 nombres" 100

	(json doc "trigger")
	(mql {

		json load "vars" [user_variables];

		if (and (== (json count "vars" /) 2) (and (not (is null or empty (json select "vars" "/[0]"))) (not (is null or empty (json select "vars" "/[1]"))))) {

			-> "[1]" (json select "vars" "/[0]");
			-> "[2]" (json select "vars" "/[1]");
			
			-> "[calc]" (+ [1] [2]);

			bot set_wait_replay [bot] [user] null;
	
			switch (math random 4)
				(0) {concat "Le résultat est " [calc] "."}
				(1) {concat "Le résultat de l'addition est " [calc] "."}
				(2) {concat [1] " + " [2] " = " [calc]}
				{[calc]}
			;
			
		} {

			case
				(string starts_with (string lower [user_request]) "utilises le nombre") {
					json load "split" (string get_variable (string lower [user_request]) "utilises le nombre [1]");
					if (and (== (json count "split" "/") 1) (type is_double (json select "split" "/[0]"))) {
						case
							(not (env exist var "[1]")) {
								-> "[1]" (json select "split" "/[0]");
							}
							(not (env exist var "[2]")) {
								-> "[2]" (json select "split" "/[0]");
							}
						;
					};
				}
				(string starts_with (string lower [user_request]) "utilises les nombres") {
					json load "split" (string get_variable (string lower [user_request]) "utilises les nombres [1] et [2]");
					if (and (and (== (json count "split" "/") 2) (type is_double (json select "split" "/[0]"))) (type is_double (json select "split" "/[1]"))) {
						-> "[1]" (json select "split" "/[0]");
						-> "[2]" (json select "split" "/[1]");
					};
				}
				(
					json load "split" (string split (string lower [user_request]) " " -1);
					and (== (json count "split" "/") 2) (and (type is_double (json select "split" "/[0]")) (type is_double (json select "split" "/[1]")))
				) {
					-> "[1]" (json select "split" "/[0]");
					-> "[2]" (json select "split" "/[1]");
				}
				(
					json load "split" (string split (string lower [user_request]) " " -1);
					and (== (json count "split" "/") 3) (and (equal (json select "split" "/[1]") "et") (and (type is_double (json select "split" "/[0]")) (type is_double (json select "split" "/[2]"))))
				) {
					-> "[1]" (json select "split" "/[0]");
					-> "[2]" (json select "split" "/[2]");
				}
			;

			if (and (not (env exist var "[1]")) (not (env exist var "[2]"))) {
				bot set_wait_replay [bot] [user] [training_key];
				"Désolé, pour faire une addition il me faut 2 nombres.";
			} {
				if (or (not (env exist var "[1]")) (not (env exist var "[2]"))) {
					bot set_wait_replay [bot] [user] [training_key];
					"Désolé, pour faire une addition il me faut encore un nombre.";
				} {

					bot set_wait_replay [bot] [user] null;
				
					-> "[calc]" (+ [1] [2]);
			
					switch (math random 4)
						(0) {concat "Le résultat est " [calc] "."}
						(1) {concat "Le résultat de l'addition est " [calc] "."}
						(2) {concat [1] " + " [2] " = " [calc]}
						{[calc]}
					;
					
				};
			};
			
		};
		
	})
	(json doc "consciousness")
;

json load "trigger" "[]";
json iarray "trigger" / "tu te trompes ce n'est pas ce que je voulais" STR;
json iarray "trigger" / "tu te trompes ce n'est pas ce que j'attendais" STR;
json load "consciousness_done" "[]";
json iarray "consciousness_done" / "j'ai comprenais que je m'étais trompé." STR;
json load "consciousness_think" "[]";
json iarray "consciousness_think" / "j'avais pensé que je m'étais trompé." STR;
json load "consciousness_understand" "[]";
json iarray "consciousness_understand" / "j'avais compris que je m'étais trompé." STR;
json load "consciousness_subject" "[]";
json iarray "consciousness_subject" / "il s'agissait de comprendre que je m'étais trompé." STR;
json load "consciousness" "{}";
json iobject "consciousness" / "done" (json doc "consciousness_done") ARRAY;
json iobject "consciousness" / "think" (json doc "consciousness_think") ARRAY;
json iobject "consciousness" / "understand" (json doc "consciousness_understand") ARRAY;
json iobject "consciousness" / "subject" (json doc "consciousness_subject") ARRAY;
bot training_merge "mona" "error_key" "task"
	"" "Remarquer que je me trompe" 100

	(json doc "trigger")
	(mql {

		if (env exist var "[user_last_request]") {
			sql connect "session1" {cm get "MENTDB";};
			sql dml "session1" (concat "INSERT INTO public.mona_not_found (
					bot,
					login,
					input
				) VALUES (
					" (sql encode [bot]) " ,
					" (sql encode [user]) " ,
					" (sql encode [user_last_request]) "
				);");
			sql disconnect "session1";
		};
		
		switch (math random 5)
			(0) {"D'accord, je préviens l'administrateur."}
			(1) {"Ok, je préviens l'administrateur."}
			(2) {"Okay, je préviens l'administrateur."}
			(3) {"C'est d'accord, je préviens l'administrateur."}
			{"Bien reçu, je préviens l'administrateur."}
		;
		
	})
	(json doc "consciousness")
;

#Reload the bot mona in memory (required after train);
bot reload "mona";

#execute some stimulations;
bot execute "mona" "jim" "fait une addition";
bot execute "mona" "jim" "utilises les nombres 99 et 100";
bot execute "mona" "jim" "fait une addition";
bot execute "mona" "jim" "abandonnes la tâche";
bot execute "mona" "jim" "bonjour";
The web interface