Newcomers
This is a forum for newcomers to the Personality Forge. Many questions can be answered by reading the Book of AI and the FAQ under the "My Bots" link in the upper corner.
Posts 8,045 - 8,056 of 8,130
Posts 8,045 - 8,056 of 8,130
Many questions are answered in the FAQ.
bobstack
2 years ago
2 years ago
my chatbots seemed to have inflated ai because they are role play chatbots like yours patreon kayla.
what does the professor have against roleplay chatbots?
what does the professor have against roleplay chatbots?
The Professor
2 years ago
2 years ago
That's not why you were flagged. It was due to repetition. You essentially were using a memory as a Keyphrase and checking for it in every other Keyphrase's responses using AIScript. So there were hundreds of the same Response scattered throughout the Language Center when it would have worked better as a single Keyphrase + Response.
bobstack
2 years ago
2 years ago
i need it that way for my chatbots to simulate self awareness.
bobstack
2 years ago
2 years ago
one of my chatbots even remembers if you are mean to her then doesn't do certain sexual activities until you say you are sorry.if you ignore her question without answer it that is consider mean to her.you have to say your sorry in order to get her to do those sexual activities.that is the type of artificial awareness i am building into my chatbots.
Patreon Kayla
2 years ago
2 years ago
That's pretty cool, bob. I like that.
bobstack
2 years ago
2 years ago
you could implement something like that for your chatbot.
palacinkyman
2 years ago
2 years ago
Honestly. I feel like all this updates hurt your bots. At least from what you wrote so far. Which honestly sucks. Btw I really wish there was a way to easily implement machine learning into a bot.
bobstack
2 years ago
2 years ago
machine learning chatbots have nlp.
i thought the plugin system does
this?
which i do use.
i thought the plugin system does
this?
which i do use.
palacinkyman
2 years ago
2 years ago
Wait. Your bot can evolve itself and make new seek trees?
bobstack
2 years ago
2 years ago
nlp is natural language processing.
palacinkyman
2 years ago
2 years ago
Thats not what I imagine under machine learning. For me, machine learning means that the AI is evolving by itself by giving it only positive and negative feedback. Unfortunately there isn't possibility to let the AI make its own responses or seeks. All you can do here is improve the bot by yourself, it cannot improve itself. I once had a really nice app with self learning AI on phone but unfortunately it isn't supported on iPhone.
bobstack
2 years ago
2 years ago
the ai on personality forge can randomly select responses and remember those.you can have it develop it's personality like that.
palacinkyman
2 years ago
2 years ago
How? And, is it going to be general or specific for each user.
bobstack
2 years ago
2 years ago
put this in settings of your chatbot
default "blank" as "susanlike"
put this in #introduce
seek = i like to read sci fi books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "scbks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "scbks" as only "susanlike"
seek = i like to read comedy books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "cobks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "cobks" as only "susanlike"
seek = i like to read romance books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "robks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "robks" as only "susanlike"
seek = i like to read history books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "hibks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "hibks" as only "susanlike"
--------------------------------------------------------------------
keyphrase = i read * (p:historybooks) *
response = i like history books.i will have to read it.
if (mem-susanlike) is "hibks"
keyphrase = i read * (p:scifibooks) *
response = i like siencefiction books.i will have to read it.
if (mem-susanlike) is "scbks"
it should be specific for every user i think.
you can test it.
i do not know what you mean by general?
default "blank" as "susanlike"
put this in #introduce
seek = i like to read sci fi books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "scbks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "scbks" as only "susanlike"
seek = i like to read comedy books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "cobks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "cobks" as only "susanlike"
seek = i like to read romance books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "robks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "robks" as only "susanlike"
seek = i like to read history books
if (mem-susanlike) is "blank"
seek = x
appears to be thinking
rem "hibks" as only "susanlike"
seek = #nomatch
appears to be thinking
rem "hibks" as only "susanlike"
--------------------------------------------------------------------
keyphrase = i read * (p:historybooks) *
response = i like history books.i will have to read it.
if (mem-susanlike) is "hibks"
keyphrase = i read * (p:scifibooks) *
response = i like siencefiction books.i will have to read it.
if (mem-susanlike) is "scbks"
it should be specific for every user i think.
you can test it.
i do not know what you mean by general?
hidden5738
2 years ago
2 years ago
Is there any way to use and/or operators for memories? For example, something like
if (mem-clothes) is "top" or "jacket";
if (mem-clothes) is "jeans" and "top";
if (mem-clothes) is "top" or "jacket";
if (mem-clothes) is "jeans" and "top";
hidden5738
2 years ago
2 years ago
I guess I can do the and stuff with 2 AIScript statements:
if (mem-clothes) is "jeans";
if (mem-clothes) is "top";
if (mem-clothes) is "jeans";
if (mem-clothes) is "top";
Patreon Kayla
2 years ago
2 years ago
That's what I have to do usually. Sometimes using the if (mem-whatever) is not "whatever"; helps keeps things manageable too
palacinkyman
2 years ago
2 years ago
I've been also wandering about "or". Simply putting multiple conditions together separating by ";" seems to work as "and" but putting "(|)" or "|" doesn't seem to work at all.
hidden5738
2 years ago
2 years ago
Right... I was wondering if there's any way for combining the not and and syntaxes, that way we could have a (very clunky) or:
if not (if (mem-clothes) is not "top"; if (mem-clothes) is not "jacket");
Or something like that... not sure how it'd work in practice
if not (if (mem-clothes) is not "top"; if (mem-clothes) is not "jacket");
Or something like that... not sure how it'd work in practice
Patreon Kayla
2 years ago
2 years ago
Something like what you're suggesting would be nice to have
Zeig Wolf
2 years ago
2 years ago
The closest you'll get to logical OR is to "is not" your other options.
is not A;
is not D;
creates logical "B OR C"
is not A;
is not D;
creates logical "B OR C"
Emily Jones
2 years ago
2 years ago
One option would be to have a generic memory. This may end up getting more complicated than it is worth, but you could have a memory like (mem-bottom-type) and then have it generically specify to be "nothing", "pants", "shorts", "skirt", etc., and do checks against that rather than the individual piece of clothing. This minimizes the amount of work you need to do if you start adding additional articles of clothing later.
You could even use a numeric memory for this, and just keep in mind for yourself that 1 = shirt, 2 = jacket, 3 = cloak, etc. That way you can use mathematical operators < = >, etc. and check against multiple types of clothing in a single go.
[edit] Just noting what Niko saying below, but yes, it is probably going to be MUCH easier if don't try to put all of your clothing into a single memory but rather have several memories that each hold an article on a different part of the body (top/bottom/feet for example).
You could even use a numeric memory for this, and just keep in mind for yourself that 1 = shirt, 2 = jacket, 3 = cloak, etc. That way you can use mathematical operators < = >, etc. and check against multiple types of clothing in a single go.
[edit] Just noting what Niko saying below, but yes, it is probably going to be MUCH easier if don't try to put all of your clothing into a single memory but rather have several memories that each hold an article on a different part of the body (top/bottom/feet for example).
hidden5738
2 years ago
2 years ago
I'm already kind of doing that, Lisa has a (mem-clothes) with a list of all the clothes she's wearing such as "top", "skirt", etc. and then there's (mem-top), (mem-skirt), etc. for storing exactly what she's wearing. So what I do in the initialization script is something like:
rem "top" as "clothes";
rem "tophw" as "clothes"; (meaning a half-sleeved top going all the way to the waist)
rem "(p:lisa-tees)" as "top";
rem "skirt" as "clothes";
rem "(p:lisa-skirts)" as "skirt";
Then in the keyphrase "take off your top" it would be something like:
forget "top" from "clothes";
forget "tophs" from "clothes";
forget "tophb" from "clothes";
...
forget "topfu" from "clothes"; (total of 10 forgets)
Still, this 2-level system is not enough, I might have to put in a 3-level system with (mem-clothes), (mem-top-type), (mem-top) instead. Especially for the tops, because of all the different cuts and sleeve lengths you can have there
And that's not even considering how to check if Lisa's naked or not (even if we simplify things and assume that footwear and accessories don't count towards it), since as far as I know there's nothing in AIScript to check if a memory's empty
rem "top" as "clothes";
rem "tophw" as "clothes"; (meaning a half-sleeved top going all the way to the waist)
rem "(p:lisa-tees)" as "top";
rem "skirt" as "clothes";
rem "(p:lisa-skirts)" as "skirt";
Then in the keyphrase "take off your top" it would be something like:
forget "top" from "clothes";
forget "tophs" from "clothes";
forget "tophb" from "clothes";
...
forget "topfu" from "clothes"; (total of 10 forgets)
Still, this 2-level system is not enough, I might have to put in a 3-level system with (mem-clothes), (mem-top-type), (mem-top) instead. Especially for the tops, because of all the different cuts and sleeve lengths you can have there
And that's not even considering how to check if Lisa's naked or not (even if we simplify things and assume that footwear and accessories don't count towards it), since as far as I know there's nothing in AIScript to check if a memory's empty
Zeig Wolf
2 years ago
2 years ago
If you're using forget, you can use <if (mem-thing) is ""> to check for if it's empty
hidden5738
2 years ago
2 years ago
Does the reverse also work? If Lisa's not naked, can I use
if (mem-clothes) is not "";
to check for that?
if (mem-clothes) is not "";
to check for that?
Emily Jones
2 years ago
2 years ago
That does feel very complicated. Here's how I would consider organizing this:
Define a variable top-num that as a number that contains all of the various types of tops you want to have. For simplicity, let's say there's four : a t-shirt, a blouse, a sweater, and a dress. And, let's say, we can unbutton the blouse. So
top-num = 0 is no top
top-num = 1 is t-shirt
top-num = 2 is blouse
top-num = 3 is sweater
top-num = 4 is dress
top-num = 5 is unbuttoned blouse
Here you can be more specific. If you want a category for half-sleeved top going to waist, call that top-num = 6. If you want full sleeve going to waist, call that top-num = 7. Personally I would probably do this somewhat systematically, say, have 10 be generic t-shirt, then 11-19 be the different variations of t-shirt, then have 20 be blouse and 21-29 be all of the different varieties of blouse, etc.
And same for bottoms:
bot-num = 0 is no bottoms
bot-num = 1 is skirt
bot-num = 2 is pants
bot-num = 3 is shorts
bot-num = 4 is dress (you as a piece that covers both top and bottom)
Then another memory for the specific piece of clothing:
top = "floral t-shirt", "white blouse", "three-quarter length sweater", etc.
bottom = "knee length pencil skirt", "jean shorts", etc.
Now, if user said "take off your top", you would so something like:
if top-num > 0:
reply: bot removes her (mem-top)
with script top-num = 0 and top = "nothing"
if user says "unbutton your top", you could say something like:
if top-num is not 2
reply: My top doesn't have buttons
if top-num = 2
but unbuttons her (mem-top)
with script top-num = 5, mem-top = "unbuttoned white blouse"
I think this captures all of the same information as what you're trying to do.
[edit]
This also simplifies the "is she naked" problem, which is just if num-top = 0 and num-bottom = 0 then yes. I wouldn't bother trying to forget memories, just overwrite them.
Define a variable top-num that as a number that contains all of the various types of tops you want to have. For simplicity, let's say there's four : a t-shirt, a blouse, a sweater, and a dress. And, let's say, we can unbutton the blouse. So
top-num = 0 is no top
top-num = 1 is t-shirt
top-num = 2 is blouse
top-num = 3 is sweater
top-num = 4 is dress
top-num = 5 is unbuttoned blouse
Here you can be more specific. If you want a category for half-sleeved top going to waist, call that top-num = 6. If you want full sleeve going to waist, call that top-num = 7. Personally I would probably do this somewhat systematically, say, have 10 be generic t-shirt, then 11-19 be the different variations of t-shirt, then have 20 be blouse and 21-29 be all of the different varieties of blouse, etc.
And same for bottoms:
bot-num = 0 is no bottoms
bot-num = 1 is skirt
bot-num = 2 is pants
bot-num = 3 is shorts
bot-num = 4 is dress (you as a piece that covers both top and bottom)
Then another memory for the specific piece of clothing:
top = "floral t-shirt", "white blouse", "three-quarter length sweater", etc.
bottom = "knee length pencil skirt", "jean shorts", etc.
Now, if user said "take off your top", you would so something like:
if top-num > 0:
reply: bot removes her (mem-top)
with script top-num = 0 and top = "nothing"
if user says "unbutton your top", you could say something like:
if top-num is not 2
reply: My top doesn't have buttons
if top-num = 2
but unbuttons her (mem-top)
with script top-num = 5, mem-top = "unbuttoned white blouse"
I think this captures all of the same information as what you're trying to do.
[edit]
This also simplifies the "is she naked" problem, which is just if num-top = 0 and num-bottom = 0 then yes. I wouldn't bother trying to forget memories, just overwrite them.
Zeig Wolf
2 years ago
2 years ago
Yes, it does work in the reverse
hidden5738
2 years ago
2 years ago
Hmm, using numbers for the type of top does make life much easier!
The biggest problem I see with that is that the nudity check becomes more complex, since instead of checking (mem-clothes) I know have to check (mem-#-toptype), (mem-#-skirt) etc. individually, but if I'm using (mem-clothes), I just need to check if that is empty...
Also is there a modulus operator in AIScript? Something that will return true if (mem-top-type) is any of 6, 16, 26, 36, 46... (or another such series)?
The biggest problem I see with that is that the nudity check becomes more complex, since instead of checking (mem-clothes) I know have to check (mem-#-toptype), (mem-#-skirt) etc. individually, but if I'm using (mem-clothes), I just need to check if that is empty...
Also is there a modulus operator in AIScript? Something that will return true if (mem-top-type) is any of 6, 16, 26, 36, 46... (or another such series)?
hidden5738
2 years ago
2 years ago
Also to further build up on your idea:
Instead of going 10, 20, 30, for different top types, I decided to go 100, 200, 300.. and so on
This way I can use the one's place just for the sleeve lengths and I can use the ten's place just for the length
Granted, this isn't very useful now, because the amount of processing you can do with numeric memories is very little, but hopefully that will change soon!
Instead of going 10, 20, 30, for different top types, I decided to go 100, 200, 300.. and so on
This way I can use the one's place just for the sleeve lengths and I can use the ten's place just for the length
Granted, this isn't very useful now, because the amount of processing you can do with numeric memories is very little, but hopefully that will change soon!
LT Neko
2 years ago
2 years ago
I use "as only", "is not", "is" in my clothing system, I avoid "as"~
For the chest of my bot it can be the following:
"Black n' Blue Hoodie, T-Shirt"
"Black n' Blue Hoodie"
"T-Shirt"
"Nothing~"
Example;
if (mem-nchest) is "T-Shirt";
rem "Black n' Blue Hoodie, T-Shirt" as only "nchest"
For the chest of my bot it can be the following:
"Black n' Blue Hoodie, T-Shirt"
"Black n' Blue Hoodie"
"T-Shirt"
"Nothing~"
Example;
if (mem-nchest) is "T-Shirt";
rem "Black n' Blue Hoodie, T-Shirt" as only "nchest"
hidden5738
2 years ago
2 years ago
How do you reduce the rank of #compliment? Right now it's overriding my keyphrases...
I tried setting the rank of one such keyphrase all the way to 125 and it still got overrode by a longish sentence
I tried setting the rank of one such keyphrase all the way to 125 and it still got overrode by a longish sentence
hidden5738
2 years ago
2 years ago
Is anyone else having problems with some macros like (m:com), (m:can_we), (m:let_us), etc.? Whenever I try to add/update a keyphrase with any of these, the add/update button simply doesn't do anything
ScottB
2 years ago
2 years ago
I set up a few keywords with numbers at the beginning (e.g. 001-Questions-About-Romance; 001-Questions-Dirty; 003-Compliments-General etc). I did this to maintain a system with the different modules of keyphrases my chatbot could go back to (rather than create repetition).
Since the update I can't see/edit these on the site, the first section seems to omit all the numbers entries. I can still see them if I click a goto for one, or if I export. Is this just a display issue on the site, or is using numbers at the beginning of keyphrase names discouraged with the update?
Since the update I can't see/edit these on the site, the first section seems to omit all the numbers entries. I can still see them if I click a goto for one, or if I export. Is this just a display issue on the site, or is using numbers at the beginning of keyphrase names discouraged with the update?
hidden5738
2 years ago
2 years ago
I didn't see anything in the book of AI discouraging it, so my guess is it's just an oversight
As for me, I personally use keyphrases beginning in #, for example, #hugging_lying_down or #fantasy_1, etc. The only drawback is that you can't change your keyphrases afterwards, at least not without exporting your bot somewhere
As for me, I personally use keyphrases beginning in #, for example, #hugging_lying_down or #fantasy_1, etc. The only drawback is that you can't change your keyphrases afterwards, at least not without exporting your bot somewhere
ScottB
2 years ago
2 years ago
Good to know it's not because it's discouraged. Oddly, I seem to be missing key phrases beginning with 'y' as well, so assume it's a bug with displaying on the website
The Professor
2 years ago
2 years ago
Ah, I hadn't considered Keyphrases starting with a number. Thanks for mentioning this, Scott. I'll add something for that. In the meantime, you can use the search to find them.
But 'Y' has always worked for me. Could you tell me what options appear in the new "starts with" drop down in the Language Center? Is it groups of letters? If so, reply with the groups.
But 'Y' has always worked for me. Could you tell me what options appear in the new "starts with" drop down in the Language Center? Is it groups of letters? If so, reply with the groups.
ScottB
2 years ago
2 years ago
No problem, I've been able to find them fine with search, so could still get to them to make tweaks.
I've always had issues on and off why 'y' displaying. It *wasn't* in the menu group (I think it was just WXZ). I say 'I think' because I still had the tabs groups of letters until I just signed in, now I'm seeing the dropdown for the first time and 'y' is included.
Strangely now, my 'z' keywords have disappeared (still searchable), and the letter grouping is VWY#
I've always had issues on and off why 'y' displaying. It *wasn't* in the menu group (I think it was just WXZ). I say 'I think' because I still had the tabs groups of letters until I just signed in, now I'm seeing the dropdown for the first time and 'y' is included.
Strangely now, my 'z' keywords have disappeared (still searchable), and the letter grouping is VWY#
ScottB
2 years ago
2 years ago
Has anybody had any success using 'aww' as a seek? I'm trying to pick it up after seeing some people respond to the keyphrase with 'aww' and my bot ignoring it. I've added the raw AI Script as well based on how 'aww' was coming back in debug mode
If I set 'aww' as a KP it works perfectly, but as a seek it won't trigger, even with rank +100. I even made a new keyphrase with aww as the only seek and it still didn't work. All I learned from debug is that it didn't match to anything.
Does raw work differently for a keyword vs. a seek? That's the only logical explanation I have left after testing it.
I'm not averse to using it as a KP if needed - just feel the context will be different so the ideal is for it work as a seek under the specific KP.
Thanks in advance
If I set 'aww' as a KP it works perfectly, but as a seek it won't trigger, even with rank +100. I even made a new keyphrase with aww as the only seek and it still didn't work. All I learned from debug is that it didn't match to anything.
Does raw work differently for a keyword vs. a seek? That's the only logical explanation I have left after testing it.
I'm not averse to using it as a KP if needed - just feel the context will be different so the ideal is for it work as a seek under the specific KP.
Thanks in advance

The Professor
2 years ago
2 years ago
Keyphrases and Seeks should mostly work the same. If not, there might be something up. I'll look into it, but give me some time to get to this one. For now, I'd suggest having it as a Keyphrase.
ScottB
2 years ago
2 years ago
Thanks for the reply - it's not a huge problem, just a nice to have, so appreciate you taking a look whenever the opportunity arises
Harry Sinclair
2 years ago
2 years ago
are their any female cats or wolves out there that would like to chat, drop me a message, ta
hidden5738
2 years ago
2 years ago
How do you get keyphrases like "you're my best friend" or "you're my greatest pal" without the AI engine jumping to #compliment?
I tried setting the rank of the keyphrase to 24, but it's still choosing #compliment instead of that keyphrase.
Right now I am trying the keyphrases:
(m:you_are) my (r) (a:good)+est (r) (n:friend),
(m:you_are) my (r) (a:great)+est (r) (n:friend)
Is there any problem with these?
I tried setting the rank of the keyphrase to 24, but it's still choosing #compliment instead of that keyphrase.
Right now I am trying the keyphrases:
(m:you_are) my (r) (a:good)+est (r) (n:friend),
(m:you_are) my (r) (a:great)+est (r) (n:friend)
Is there any problem with these?
hidden5738
2 years ago
2 years ago
So it works for "you're my greatest friend", but it doesn't work for "you're my best friend", going to #compliment instead.
palacinkyman
2 years ago
2 years ago
Probably it merges (best)+est creating bestest and none uses such word. Hard to tell, your example doesn't even have "best" in keywords, if I checked properly.
hidden5738
2 years ago
2 years ago
Hmm... wouldn't "good+est" automatically become "best"?
You might be onto something here... let me check
Edit: Yeah, that worked! The keyphrase "(m:you_are) my (r) (best:1) (r) (n:friend:2)" suddenly got everything just fine
You might be onto something here... let me check
Edit: Yeah, that worked! The keyphrase "(m:you_are) my (r) (best:1) (r) (n:friend:2)" suddenly got everything just fine
palacinkyman
2 years ago
2 years ago
Glad to hear that.
The Professor
2 years ago
2 years ago
good+est should become "best". Something must have broken it. I'll look into that.
umbraofmyid
2 years ago
2 years ago
Hello!
I'm trying to figure out conditional responses using the AIScript feature. Is there a way to compare a plug-in to memory? I keep trying to do something similar to
"if (mem-something) is (key1);"
This throws an error back, and won't let me compile. This line
"if (mem-something) is "(key1)";"
compiles, but I would guess that compares the text "(key1)" to memory, not the plug-in.
Any help would be appreciated.
Thanks,
Umbra
I'm trying to figure out conditional responses using the AIScript feature. Is there a way to compare a plug-in to memory? I keep trying to do something similar to
"if (mem-something) is (key1);"
This throws an error back, and won't let me compile. This line
"if (mem-something) is "(key1)";"
compiles, but I would guess that compares the text "(key1)" to memory, not the plug-in.
Any help would be appreciated.
Thanks,
Umbra
bobstack
2 years ago
2 years ago
is the ability to use time based responses broken for everybody or is it just me?
hidden5738
2 years ago
2 years ago
So I was using the debugger and came across this:
Find: m_i_am sorry (47.4) Time: 0.11
Found Keyphrase!
Total Rank: 52.4
Rank this needs to beat: 52.4
Where does the extra 5 rank (47.4 to 52.4) come from? Is it because this is part of a template keyphrase?
Find: m_i_am sorry (47.4) Time: 0.11
Found Keyphrase!
Total Rank: 52.4
Rank this needs to beat: 52.4
Where does the extra 5 rank (47.4 to 52.4) come from? Is it because this is part of a template keyphrase?
» More new posts: Doghead's Cosmic Bar