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

17 years ago #6127
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.

17 years ago #6128
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.

17 years ago #6130
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" as only "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)" as only "variablename"

I hope this helps but if you've got any other questions I'll happily muddy the water for you....

17 years ago #6131
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.

17 years ago #6132
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.

17 years ago #6133
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";

17 years ago #6134
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.

17 years ago #6135
The Clerk:

You are too modest! We have all been mystified by this stuff at one time or another.

17 years ago #6136
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.

17 years ago #6137
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).

17 years ago #6138
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....

17 years ago #6139
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.


Posts 6,127 - 6,139 of 7,766

» More new posts: Doghead's Cosmic Bar