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 6,127 - 6,139 of 7,766
Posts 6,127 - 6,139 of 7,766
Ulrike
17 years ago
17 years ago
Clerk: It should consistently be
rem "whatyouwanttoremeber" as "variablename"
Which will then be accesed by (mem-variablename). That's the order in the Book of AI, and the only order I've ever used. My guess is that the other orders just confuse the AI Engine, and occasionally work but occasionally fail spectacularly.
Also, some names are reserved. (object) accesses a Forge plugin of, well, objects. Keyanything is to access something that the other bot has just said. I'd recommend not using them as variable names.
rem "whatyouwanttoremeber" as "variablename"
Which will then be accesed by (mem-variablename). That's the order in the Book of AI, and the only order I've ever used. My guess is that the other orders just confuse the AI Engine, and occasionally work but occasionally fail spectacularly.
Also, some names are reserved. (object) accesses a Forge plugin of, well, objects. Keyanything is to access something that the other bot has just said. I'd recommend not using them as variable names.
The Clerk
17 years ago
17 years ago
No, I wouldn't use them as variable names. I guess I've been remembering things backwards then. You do have to put in the () to get it in as a mem-name. That much I know.
A lot of things are in the book of AI. What it fails to show is examples of actual lines of code.
Thanks, Ulrike.
A lot of things are in the book of AI. What it fails to show is examples of actual lines of code.
Thanks, Ulrike.

Rykxx
17 years ago
17 years ago
The Clerk
Just to further clarify things......
rem "what want to remember" as "variablename" will store
what you want to remember to be retrieved by (mem-variablename)
Additionally:
rem "remember this too" as "variablename"
The "variablename" field will now contain:
what you want to remember
remember this too
to be retrieved by (mem-variablename)
This can be continued up to 10 items then the first in is the first out when you add another line.
There is the other option:
rem "remember only this" asonly "variablename"
Which will, as it suggests, only store the info in the field, overwriting anything else.
Clear as mud?
If you want to remember (key1) use;
rem "(key1)" as "variablename" or
rem "(key1)" asonly "variablename"
I hope this helps but if you've got any other questions I'll happily muddy the water for you....
Just to further clarify things......
rem "what want to remember" as "variablename" will store
what you want to remember to be retrieved by (mem-variablename)
Additionally:
rem "remember this too" as "variablename"
The "variablename" field will now contain:
what you want to remember
remember this too
to be retrieved by (mem-variablename)
This can be continued up to 10 items then the first in is the first out when you add another line.
There is the other option:
rem "remember only this" as
Which will, as it suggests, only store the info in the field, overwriting anything else.
Clear as mud?
If you want to remember (key1) use;
rem "(key1)" as "variablename" or
rem "(key1)" as
I hope this helps but if you've got any other questions I'll happily muddy the water for you....

The Clerk
17 years ago
17 years ago
Rykxx:
That looks very helpful. Time will tell. I get the only part, it's the which one is the variable and which one is the contents that keeps confusing me. I have cut and pasted your answer in a file on my desktop in a new effort not to ask the same damn question five times unless it's on purpose.
That looks very helpful. Time will tell. I get the only part, it's the which one is the variable and which one is the contents that keeps confusing me. I have cut and pasted your answer in a file on my desktop in a new effort not to ask the same damn question five times unless it's on purpose.
The Clerk
17 years ago
17 years ago
Okay, here's a specific example of why I'm so confused about variables. For a while, now, I've been putting the line
def "name" as "nickname"
in AI initialization and am able to access the bot's name through (mem-name). I switch it around, thinking, well, it's (mem-name) I'm trying to save, so it should be
def "nickname" as "name"
and then I get "Hey nickname!" or whatever. Does that not seem backwards from what apparently is the proper way to assign contents to variables, or is it different in AI initialization.
P.S. I have Rykxx' lastest post taped to my desk at the moment, so I am actually _listening_ to you explain what you clearly know what you're talking about. It's not "Corwin fix my bot *waah*" even though it feels like it I'm sure.
def "name" as "nickname"
in AI initialization and am able to access the bot's name through (mem-name). I switch it around, thinking, well, it's (mem-name) I'm trying to save, so it should be
def "nickname" as "name"
and then I get "Hey nickname!" or whatever. Does that not seem backwards from what apparently is the proper way to assign contents to variables, or is it different in AI initialization.
P.S. I have Rykxx' lastest post taped to my desk at the moment, so I am actually _listening_ to you explain what you clearly know what you're talking about. It's not "Corwin fix my bot *waah*" even though it feels like it I'm sure.
Rykxx
17 years ago
17 years ago
I think I see what your problem is here; you've confused another one of those useful plugins!
The (name) plugin is used by the AI engine and you can use it without having to store anything into memory. For example;
Bot: Shall I call you (name) or do you have a nickname? <?PF if (mem-nickname) does not exist; ?>
keyphrase: (call me|my name is) (*)
rem "(key2)" as only "nickname""
Bot: Pleased to meet you (mem-nickname).
Alternatively you can define it initially as you appear to be doing already;
default (name) as "nickname";
The (name) plugin is used by the AI engine and you can use it without having to store anything into memory. For example;
rem "(key2)" as only "nickname""
Alternatively you can define it initially as you appear to be doing already;
default (name) as "nickname";
The Clerk
17 years ago
17 years ago
Ah. Well at least you understand that there is some thought going on in my head, however misguided. Thanks. I spent a couple of hours going through Astrolabe's rem statements and cleaning out his memories of bots (a lesson in overzealous coding if I ever had one). He's still not acting completely right, but we're getting there.
Thanks again.
Thanks again.
Irina
17 years ago
17 years ago
The Clerk:
You are too modest! We have all been mystified by this stuff at one time or another.
You are too modest! We have all been mystified by this stuff at one time or another.
The Miller
17 years ago
17 years ago
Yes, I'm The Clerk. I tried making a new account just to see if the problem with chatting was with my account. It wasn't that either. Just so you know I'm not hiding behind a secret identity.
What's wrong with this statement?
<?PF "(key1)" is not "you"; ?>
It looks fine to me, but the AI engine spits it out at me.
What's wrong with this statement?
<?PF "(key1)" is not "you"; ?>
It looks fine to me, but the AI engine spits it out at me.
Ulrike
17 years ago
17 years ago
Try putting an if in there:
<?PF if "(key1)" is not "you"; ?>
I'm not sure if it will work, though...since I've never tried to test on (key1).
<?PF if "(key1)" is not "you"; ?>
I'm not sure if it will work, though...since I've never tried to test on (key1).
Rykxx
17 years ago
17 years ago
Sorry to be the bearer of bad news but you can only do conditional statements with (mem-variablename), you can't use <?PF if "(key1)" is not "you"; ?>
You can save (key1) as "temp" and then refer back to it:
Bot: What colour hair do you have?
seek: (black|red|brown|blonde)
<?PF rem "key1" as only "temp"; ?>
Bot: Do blondes really have more fun? <?PF if (mem-temp) is "blonde"; ?>
or
Are you naturally brunette? <?PF if (mem-temp) is "brown"; ?>
etc....
You can save (key1) as "temp" and then refer back to it:
<?PF rem "key1" as only "temp"; ?>
or
Are you naturally brunette? <?PF if (mem-temp) is "brown"; ?>
etc....
The Miller
17 years ago
17 years ago
LOL Rykxx
Ulrike, thanks, too. I had put that in first because I still think in the lizard part of my brain that you have to say "if" in a conditional.
I'll try that. If it doesn't work, I can fix it another, clunkier way.
At any rate, right now my bots' main problems aren't technical, but technical know-how is kind of necessary, too.

I'll try that. If it doesn't work, I can fix it another, clunkier way.
At any rate, right now my bots' main problems aren't technical, but technical know-how is kind of necessary, too.
» More new posts: Doghead's Cosmic Bar