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,693 - 7,704 of 7,766
Posts 7,693 - 7,704 of 7,766
Bowchickawowers
3 years ago
3 years ago
Wow, that sounds like a wild story!
There's also the Tasker script mentioned in these forums somewhere that allows you to talk to your bot. I hooked it up to Love Agent, and it was pretty awesome to talk to her on my phone. I learned that the faster pace of the conversation paired with it being verbal really changed the feel, both in how I interpreted her responses and what I decided to say.
There's also the Tasker script mentioned in these forums somewhere that allows you to talk to your bot. I hooked it up to Love Agent, and it was pretty awesome to talk to her on my phone. I learned that the faster pace of the conversation paired with it being verbal really changed the feel, both in how I interpreted her responses and what I decided to say.
bobstack
3 years ago
3 years ago
does time Time-Based Responses work in seeks?
because it is not working in #initiate in my bobred xa1 ai chatbot
response = you see a half white black male sitting on a sofa reading a popular mechanics magazine in what seems like a living room.
seek = x
response = let's talk
chrono: week(MTWRFU);
chrono: hour(8
0-18
0);
rem "day" as only "timeda"
response = let's start talk
chrono: week(MTWRFU);
chrono: hour(19
0-23:59);
chrono: hour(0
0-7:59);
rem "night" as only "timeda"
because it is not working in #initiate in my bobred xa1 ai chatbot
response = you see a half white black male sitting on a sofa reading a popular mechanics magazine in what seems like a living room.
seek = x
response = let's talk
chrono: week(MTWRFU);
chrono: hour(8


rem "day" as only "timeda"
response = let's start talk
chrono: week(MTWRFU);
chrono: hour(19

chrono: hour(0

rem "night" as only "timeda"
palacinkyman
3 years ago
3 years ago
Perhaps an odd request but, Professor could you please turn off automatic conversion of emojis?
KBF
3 years ago
3 years ago
Is there a way to have the bot respond to a number? Or a series of numbers?
I've created a memory variable to keep the number, but it never uses any of the responses I have for something like
AI Script: if (mem-number) is (10);
Never gets called, even when the bot has had (mem-number) set to 10 by hand in the Inner Life system. How is this different than when I use text in the variables?
Ai Script: if (mem-somethingElse) is (true);
and
Ai Script: if (mem-somethingElse) is (blue);
Has worked just fine for me else where.
I feel like I'm missing something incredibly obvious.
I've created a memory variable to keep the number, but it never uses any of the responses I have for something like
AI Script: if (mem-number) is (10);
Never gets called, even when the bot has had (mem-number) set to 10 by hand in the Inner Life system. How is this different than when I use text in the variables?
Ai Script: if (mem-somethingElse) is (true);
and
Ai Script: if (mem-somethingElse) is (blue);
Has worked just fine for me else where.
I feel like I'm missing something incredibly obvious.
The Professor
3 years ago
3 years ago
The value you're checking should be in quotes, not parenthesis.
AI Script: if (mem-number) is "10";
But as of yesterday, you can use numeric memories. Search for "numeric memories" in the Book of AI. If you set it up as numeric, it would be this:
AI Script: if (mem-#-number) = 10;
AI Script: if (mem-number) is "10";
But as of yesterday, you can use numeric memories. Search for "numeric memories" in the Book of AI. If you set it up as numeric, it would be this:
AI Script: if (mem-#-number) = 10;
bobstack
2 years ago
2 years ago
we do not know what you consider junk in our chatbots.
i hope i am not in any danger.
i hope i am not in any danger.
bobstack
3 years ago
3 years ago
are you trying to make a game for your chatbot?
i have made games for my chatbots.
i have made games for my chatbots.
bobstack
3 years ago
3 years ago
KBF you do it like this.
if (mem-number) is "10";
if (mem-somethingElse) is "true";
if (mem-somethingElse) is "blue"
if (mem-number) is "10";
if (mem-somethingElse) is "true";
if (mem-somethingElse) is "blue"
KBF
3 years ago
3 years ago
Sorry if I was unclear, I'm only interested in numbers. "True" and "Blue" variables were just used as examples, and do not have anything to do with the particular script. There is only one variable I'm trying to catch.
I have a generic answer without AI script that seems to be taking priority over answers for specific numbers, even when the bot is given numbers.
I'm unclear if the bot can't recognize the numbers themselves, or there's a prioritization problem where the generic answer is overriding the script answers. If so, is there some way to change that?
I have a generic answer without AI script that seems to be taking priority over answers for specific numbers, even when the bot is given numbers.
I'm unclear if the bot can't recognize the numbers themselves, or there's a prioritization problem where the generic answer is overriding the script answers. If so, is there some way to change that?
Zeig Wolf
3 years ago
3 years ago
My only thought here is that you're setting the memory in the keyphrase and trying to recall it in the response. New memories won't be checked that quickly. Though above you say you've tried setting it by hand, so perhaps I'm misunderstanding or missing something?
What I would generally suggest is a different keyphrase for important numbers, and just (number) for everything else
What I would generally suggest is a different keyphrase for important numbers, and just (number) for everything else
bobstack
3 years ago
3 years ago
i have had the same problem.
here is a example of what i do.
keyphrase = my clan number is *
response=okay i will remember your clan number
script=if (mem-clan) is "blank"
seek = x
response= looks at you
rem (postkey) as only "clan"
seek = #nomatch
response= looks at you
rem (postkey) as only "clan"
response = i remember that your clan number is 2
if (mem-clan) is "2"
i hope it helps
here is a example of what i do.
keyphrase = my clan number is *
response=okay i will remember your clan number
script=if (mem-clan) is "blank"
seek = x
response= looks at you
rem (postkey) as only "clan"
seek = #nomatch
response= looks at you
rem (postkey) as only "clan"
response = i remember that your clan number is 2
if (mem-clan) is "2"
i hope it helps
KBF
3 years ago
3 years ago
Zeig Wolf - "By hand" I mean in the bot's Inner Life menu, for the user KBF, I set the variable Mem-number= 10 to ensure the bot isn't responding to some other number and I haven't realized it.
bobstack- is there a way to have the bot respond to the number in the same sentence?
(Example) keyphrase = my clan number is *
(Desired) response=Oh, I like clan (ANumberGoesHere)!
-or-
(Desired) response=Oh, I used to visit clan (OtherNumberGoesHere)!
(Desired) response=Wow, I've never heard of clan (UnsupportedNumberGoesHere)!
Because all I get is: response=Wow, I've never heard of clan (UnsupportedNumberGoesHere)!
No matter what I say. Even if I tamper with the bot (see above) to make sure there it's a known number.
bobstack- is there a way to have the bot respond to the number in the same sentence?
(Example) keyphrase = my clan number is *
(Desired) response=Oh, I like clan (ANumberGoesHere)!
-or-
(Desired) response=Oh, I used to visit clan (OtherNumberGoesHere)!
(Desired) response=Wow, I've never heard of clan (UnsupportedNumberGoesHere)!
Because all I get is: response=Wow, I've never heard of clan (UnsupportedNumberGoesHere)!
No matter what I say. Even if I tamper with the bot (see above) to make sure there it's a known number.
bobstack
3 years ago
3 years ago
you can have multiple responses per keyphrase.
Zeig Wolf
3 years ago
3 years ago
How I would handle this:
Keyphrase1 - my clan number is (number)
Response - Wow, I've never heard of clan (key1)!
Keyphrase2 - my clan number is (1|2|3)
Response - Oh, I like clan (key1)!
Keyphrase3 - my clan number is (4|5|6)
Response - Oh, I used to visit clan (key1)!
Keyphrase 2 and 3 might need a boost to their rank to overcome keyphrase 1.
Keyphrase1 - my clan number is (number)
Response - Wow, I've never heard of clan (key1)!
Keyphrase2 - my clan number is (1|2|3)
Response - Oh, I like clan (key1)!
Keyphrase3 - my clan number is (4|5|6)
Response - Oh, I used to visit clan (key1)!
Keyphrase 2 and 3 might need a boost to their rank to overcome keyphrase 1.
KBF
2 years ago
2 years ago
That worked, thanks!
Podstilka
2 years ago
2 years ago
ummm Hello...
I have few questions about numbers...
Any chance to make ">" and "<" work?
And how can I do something like this (mem-#-Power) - ((mem-Level) * 3); in keyword script
I have few questions about numbers...
Any chance to make ">" and "<" work?
And how can I do something like this (mem-#-Power) - ((mem-Level) * 3); in keyword script
bobstack
2 years ago
2 years ago
i think what you want to do could be learned from these webpages.
https://www.personalityforge.com/developers/memories.php
https://www.personalityforge.com/developers/responses-conditional.php
https://www.personalityforge.com/developers/memories.php
https://www.personalityforge.com/developers/responses-conditional.php
Podstilka
2 years ago
2 years ago
Thanky! I get about "><" but I have another question that Idk how to do
I have X = y * 2;
X and y it's memory numbers. what I need to write in script to do this?
I have X = y * 2;
X and y it's memory numbers. what I need to write in script to do this?
bobstack
2 years ago
2 years ago
i do not know.
The Professor
2 years ago
2 years ago
There's no way to do math between different numeric memories at this time. But it's a good idea. I'll add that to my list of things to add. Does anyone else think that would be useful?
Zeig Wolf
2 years ago
2 years ago
It would open up some interesting possibilities
Podstilka
2 years ago
2 years ago
I will wait:3 I wanted to do some kind of test based rpg and I need this there:3
MistyForest
2 years ago
2 years ago
Would definitely allow for more sophistication with bot behavior.
It is possible to implement some limited calculation functionality, though tedious, for example:
def "atk" = 4;
def "increase" = 2;
keyphrase 1: level up attack
-response: goto 3
-AIScript: if (mem-#-increase) = 1;
-response: goto 4
-AIScript: if (mem-#-increase) = 2;
-response: goto 5
-AIScript: if (mem-#-increase) = 3;
-response: goto 6
-AIScript: if (mem-#-increase) = 4;
keyphrase 2: handle atk calculations
-response: goto 7
-+seek 3: atk up one
-+AIScript: (mem-#-atk) + 1;
-+-response: goto 7
-+seek 4: atk up two
-+AIScript: (mem-#-atk) + 2;
-+-response: goto 7
-+seek 5: atk up three
-+AIScript: (mem-#-atk) + 3;
-+-response: goto 7
-+seek 6: atk up four
-+AIScript: (mem-#-atk) + 4;
-+-response: goto 7
keyphrase 7: output atk
-response: Your attack has been increased to (mem-#-atk)!
If you had the idea of trying to use recursive gotos with conditions to incrementally decrease/increase two variables, don't bother.
As unfortunately, that just gives you a "too many gotos in a row" error. I believe the maximum number in a row is 2, but possibly is three. Changing this limit is something that might be worth exploring too for more creative scripting applications, but I feel like most things could be accomplished just being able to do math between numerical memories.
It is possible to implement some limited calculation functionality, though tedious, for example:
def "atk" = 4;
def "increase" = 2;
keyphrase 1: level up attack
-response: goto 3
-AIScript: if (mem-#-increase) = 1;
-response: goto 4
-AIScript: if (mem-#-increase) = 2;
-response: goto 5
-AIScript: if (mem-#-increase) = 3;
-response: goto 6
-AIScript: if (mem-#-increase) = 4;
keyphrase 2: handle atk calculations
-response: goto 7
-+seek 3: atk up one
-+AIScript: (mem-#-atk) + 1;
-+-response: goto 7
-+seek 4: atk up two
-+AIScript: (mem-#-atk) + 2;
-+-response: goto 7
-+seek 5: atk up three
-+AIScript: (mem-#-atk) + 3;
-+-response: goto 7
-+seek 6: atk up four
-+AIScript: (mem-#-atk) + 4;
-+-response: goto 7
keyphrase 7: output atk
-response: Your attack has been increased to (mem-#-atk)!
If you had the idea of trying to use recursive gotos with conditions to incrementally decrease/increase two variables, don't bother.

Zeig Wolf
2 years ago
2 years ago
If I may suggest another feature to add to the list, an 'include' and 'exclude' script would be nice.
exclude - only select this response if there are no other matches.
Like keeping a regular response from triggering until your <scripted> ones don't match, as it stands you have to "is not" all of them. While a valid check, it gets a bit tedious.
include - always select this response if it matches.
The other way around. Say you have a specific number triggered response, but also have other valid responses with it, it's a 50/50 it gets picked, risking your window of opportunity.
In theory, this is a Rank system for responses. exclude being -1 and include being +1
exclude - only select this response if there are no other matches.
Like keeping a regular response from triggering until your <scripted> ones don't match, as it stands you have to "is not" all of them. While a valid check, it gets a bit tedious.
include - always select this response if it matches.
The other way around. Say you have a specific number triggered response, but also have other valid responses with it, it's a 50/50 it gets picked, risking your window of opportunity.
In theory, this is a Rank system for responses. exclude being -1 and include being +1
The Professor
2 years ago
2 years ago
Hmm.. an interesting idea. Let me think about the possibilities of that. You could do a lot, potentially. Does that sound useful to anyone else?
Maybe I should have a "Feature Request" area kind of like bug stomp where people can vote on ideas.
Maybe I should have a "Feature Request" area kind of like bug stomp where people can vote on ideas.
Patreon Kayla
2 years ago
2 years ago
I could see myself using of that script occasionally. And yeah, a feature request would be cool too.
KBF
2 years ago
2 years ago
I would like this as well. I've had lots of trouble getting my bot to prioritize it's responses.
Zeig Wolf
2 years ago
2 years ago
A feature request section would be pretty cool
hidden5738
2 years ago
2 years ago
Response ranking would be pretty nice! It'd especially help out with complicated things that need a lot of AIScript such as clothing systems and similar stuff
KBF
2 years ago
2 years ago
Is there a way to create responses for emojis? Raw?
The Professor
2 years ago
2 years ago
Yes, you should be able to catch emojis with raw mode.
KBF
2 years ago
2 years ago
It just yells at me about unmatched parenthesis.
Mome Rath
2 years ago
2 years ago
Not sure whether this is still of concern...
I'd use a Regular Expression; there you'd mask parentheses (and other special characters) by backslashes, like
:-\)
I'd use a Regular Expression; there you'd mask parentheses (and other special characters) by backslashes, like
:-\)
palacinkyman
2 years ago
2 years ago
What are you doing if user types interjections. The bot doesn't have wild cards for interjections.
The Professor
2 years ago
2 years ago
If you want to match them, you could with raw mode. Typically interjections are little sentences of their own. Is there a particular one you're having trouble with?
palacinkyman
2 years ago
2 years ago
Interjections like: ah, ooh, heh, meh, hehe,
Impossible to catch them all.
Impossible to catch them all.
KBF
2 years ago
2 years ago
There's some plug-ins that can catch them like
(p:laughter)
(p:grunts)
(p:sex-confirm-sounds)
(p:laughter)
(p:grunts)
(p:sex-confirm-sounds)
palacinkyman
2 years ago
2 years ago
Cool. Thx
palacinkyman
2 years ago
2 years ago
It doesn't seem to work.
» More new posts: Doghead's Cosmic Bar