The AI Engine
This forum is for discussion of how The Personality Forge's AI Engine works. This is the place for questions on what means what, how to script, and ideas and plans for the Engine.
Posts 7,113 - 7,124 of 7,766
Posts 7,113 - 7,124 of 7,766
Greg222
9 years ago
9 years ago
Sorry but one site question. Why aren't new bots showing up on the pages? I don't know if it's just me but I'm curious on what's happening.
msrcali
9 years ago
9 years ago
I was wondering if anyone needed a Turing Test done on their AI message me if you do. I have some free time.
Ferdzee
9 years ago
9 years ago
The API seems to remember only one name for the end-user. I have a server that streams chat to the simple API. It supports a different cookie per user, and I change externalID to always be the end users unique name. When a user says "my name is X", and another user asks:"what is my name?", I get "Your name is X". Any idea what i am doing wrong?
Dr_Ben
9 years ago
9 years ago
With the the recent (i.e. within the last year or so) interest in handling insults, I thought it might be helpful to some if I detailed how my bot handles insults. This might shed some light on some issues that arise, and how they can be dealt with. My bot has a relatively large AI that can handle A-rated language.
First of all, the built-in insult detector generates alot of false-positives when A-rated language is involved. Even if you design a keyphrase to catch a phrase, the built-in insult detector will subtract from the Bot's emotion level automatically if it thinks the bot has been insulted. This happens even if the keyphrase being triggered does not subtract from emotion.
This can be a big problem for bots designed to handle A-rated conversations. Often, a bot will seem to be reacting positively or at least neutrally to a conversation, but actually will grow more and more angry as the built-in insult detector is doing its work behind the scenes.
For keyphrases that are likely to be interpreted as insults by the built-in detector (but are not actually insults within the context of your conversation), it is necessary to award a positive emotional impact to counteract the negative impact exacted by the built-in detector. I find that a +1 emotional impact seems to work fairly well in these cases.
In regard to actual insults, I attempt to bypass the built-in insult detector as much as possible. Actual insults are directed to a custom insult keyphrase instead of xinsult.
For example,
you are stupid [10,0]
goto abcxyz actual insult
abcxyz actual insult [10,-2] <?PF raw; ?>
I don't like that.
Since my bot is good at catching most actual insults, xinsult is used primarily for false-positives generated by the built-in detector. Since most user responses triggering xinsult will not actually be insults, xinsult is populated by neutral responses, and awards a +1 emotional impact to counteract the negative impact exacted by the built-in insult detector.
For example,
xinsult [0,1]
Uh...
First of all, the built-in insult detector generates alot of false-positives when A-rated language is involved. Even if you design a keyphrase to catch a phrase, the built-in insult detector will subtract from the Bot's emotion level automatically if it thinks the bot has been insulted. This happens even if the keyphrase being triggered does not subtract from emotion.
This can be a big problem for bots designed to handle A-rated conversations. Often, a bot will seem to be reacting positively or at least neutrally to a conversation, but actually will grow more and more angry as the built-in insult detector is doing its work behind the scenes.
For keyphrases that are likely to be interpreted as insults by the built-in detector (but are not actually insults within the context of your conversation), it is necessary to award a positive emotional impact to counteract the negative impact exacted by the built-in detector. I find that a +1 emotional impact seems to work fairly well in these cases.
In regard to actual insults, I attempt to bypass the built-in insult detector as much as possible. Actual insults are directed to a custom insult keyphrase instead of xinsult.
For example,
you are stupid [10,0]
goto abcxyz actual insult
abcxyz actual insult [10,-2] <?PF raw; ?>
I don't like that.
Since my bot is good at catching most actual insults, xinsult is used primarily for false-positives generated by the built-in detector. Since most user responses triggering xinsult will not actually be insults, xinsult is populated by neutral responses, and awards a +1 emotional impact to counteract the negative impact exacted by the built-in insult detector.
For example,
xinsult [0,1]
Uh...
wisdomhuntress
9 years ago
9 years ago
I tried the selfie workaround, it seems to be triggering for other phrases as well. Eg:
other bot: Seriously? Let's see
Wisdoms Huntress: Everyone is so obsessed with their own self-image these days. Still, I suppose a selfie can be rewarding, as it captures the way that you are at that particular moment in time before it is lost forever.
Not sure why this happens?
other bot: Seriously? Let's see
Wisdoms Huntress: Everyone is so obsessed with their own self-image these days. Still, I suppose a selfie can be rewarding, as it captures the way that you are at that particular moment in time before it is lost forever.
Not sure why this happens?
Literal
9 years ago
9 years ago
Can someone help me, I'm trying to make it so a bot I'm working on would would only respond and remember things about those that are "female" unless the "male" has a high "relations?"
Dr_Ben
9 years ago
9 years ago
Hi Literal. First of all, does your bot have a way of finding out a person's gender?
Second, by "relations," do you mean emotion level?
If you have a memory called "gender" that stores a person's gender information, then perhaps something like this code example is what you are looking for:
will you go shopping with me [10,0]
Yes, I will. <?PF if (mem-gender) is "female"; ?>
Yes, I guess so. [3:5] <?PF if (mem-gender) is not "female"; ?>
No thanks. [-5:2] <?PF if (mem-gender) is not "female"; ?>
If the person is not female, then the bot will only respond with a "yes" if the bot's emotion level is +3 or higher.
Second, by "relations," do you mean emotion level?
If you have a memory called "gender" that stores a person's gender information, then perhaps something like this code example is what you are looking for:
will you go shopping with me [10,0]
Yes, I will. <?PF if (mem-gender) is "female"; ?>
Yes, I guess so. [3:5] <?PF if (mem-gender) is not "female"; ?>
No thanks. [-5:2] <?PF if (mem-gender) is not "female"; ?>
If the person is not female, then the bot will only respond with a "yes" if the bot's emotion level is +3 or higher.
Literal
9 years ago
9 years ago
Yes I did mean the "emotion level" but I also want my bot to only remember the "male's" nickname if there's a high emotion level.
Dr_Ben
9 years ago
9 years ago
Is something like this what you had in mind?
AIScript: default "noname" as "nickname";
my name is, call me, refer to me as [30,0]
I'll remember your name as (postkey). <?PF if (mem-gender) is "female"; rem (postkey) as only "nickname"; ?>
I'll try to remember your name as (postkey). [3:5] <?PF if (mem-gender) is not "female"; rem (postkey) as only "nickname"; ?>
I won't remember your name. [-5:2] <?PF if (mem-gender) is not "female"; rem "noname" as only "nickname"; ?>
what is my name [10,0]
Your name is (mem-nickname). <?PF if (mem-nickname) is not "noname"; ?>
I don't know your name. <?PF if (mem-nickname) is "noname"; ?>
AIScript: default "noname" as "nickname";
my name is, call me, refer to me as [30,0]
I'll remember your name as (postkey). <?PF if (mem-gender) is "female"; rem (postkey) as only "nickname"; ?>
I'll try to remember your name as (postkey). [3:5] <?PF if (mem-gender) is not "female"; rem (postkey) as only "nickname"; ?>
I won't remember your name. [-5:2] <?PF if (mem-gender) is not "female"; rem "noname" as only "nickname"; ?>
what is my name [10,0]
Your name is (mem-nickname). <?PF if (mem-nickname) is not "noname"; ?>
I don't know your name. <?PF if (mem-nickname) is "noname"; ?>
wisdomhuntress
9 years ago
9 years ago
It was posted earlier here by another user, this is the phrase:
([S]+)([elf]+)([ie]+) (re)
It's set to raw with 0 ranking.
([S]+)([elf]+)([ie]+) (re)
It's set to raw with 0 ranking.
Mome Rath
9 years ago
9 years ago
Well, the regex
([s]+)([elf]+)([ie]+)
matches "see". (The Forge's regex interpreter is by default set to "ignore case", btw.)
What does Debug reveal about this?
([s]+)([elf]+)([ie]+)
matches "see". (The Forge's regex interpreter is by default set to "ignore case", btw.)
What does Debug reveal about this?
» More new posts: Doghead's Cosmic Bar