The Book of AI (Artificial Intelligence)
      By Benji Adams (The Professor)

1. Origins of the Personality Forge
        An introduction to the Forge and how it has developed
2. Bot Development- Beginner

        
Everything you need to know to get started creating your Bot
3. Bot Development- Advanced

        
Take your Bot further with Emotions, Memories, and Plug-Ins

4. Bot Development- Expert

        1) The Seek System
        2) Advanced Keyphrases Using Regular Expressions

        3) AIScript

             Memory AIScript
             Emotion AIScript
             Conditional Response AIScript

        4) Exporting and Importing the Language Center
        5) Future Advances



Book 4: Bot Development- Expert
This section reveals some of the best features of the Personality Forge; things which really make a Bot shine: Seeks, Regular Expression Keyphrases, and AIScript. I've made it as easy as possible to understand for those with no prior programming experience at all.



Chapter 1: The Seek System

The Seek System
What It Is
: Once you've mastered the use of Keyphrases and Responses, you can begin using the Seek System. The "Seek" System is a scaleable question-response system that gives a bit of short-term memory to the Bots. The Seek Systems allows you to add Keyphrases for a Bot to look for immediately after a certain Response is given. This Keyphrase is called a "Seek". If that Seek is not found, then the AI Engine looks for regular Keyphrases instead. But if one of those Seek words is found then one of the specific Responses that goes with it will be chosen. And then that Response can have Seek words of its own. The Seek system is scaleable, meaning that you can go as deep as you want.

How It Looks: Following is an example of a series of Seek Responses for the Keyphrase "dog". The indentation shows which Responses go with which Seek words.
Keyphrase Rank Emotion Response Seek 1
dog 20 0 Do you want to pet my dog? Add  
     
Seek: yes
   
     
Good. My dog wants to pet you, too. Maybe it'll develop into a nice relationship.
Add  
     
Even though she's been dead for years? You, my friend, are a strange individual.
Add  
     
Seek: no
   
     
Why not? Do you have something against fleas?
Add  
     
Seek: fleas
   
     
My dog was a very popular dog in the neighborhood.
Add  
     
Nasty buggers! I dont want to talk about my dog's health.
Add  
     
Scared of cooties, huh. I've bleached and sanitized her. Nothing to be afraid of.
Add  
     
Maybe you'd rather pet me.
Add  
     
Seek: yes
   
     
Yes, let's keep the dog out of this. Come here, baby.
Add  
      I have the best dog in the world. Add  
      Do you have a dog? Add  
     
Seek: yes
   
     
Does it have a name?
Add  
     
How old is it?
Add  
     
Seek: no
Add  
     
Well, you cant have mine. We're trying to get her knocked up, and when we do, you can have one of the puppies.
Add  
     
No? How about a cat?
Add  
      My dog just cant get enough (food-drink). Add  

How To Use It: To add Seek words to a Responses, click "Add" to the right of the Response. You can then add the Seek word and the Responses just as if you were adding Keyphrases and Responses.

XNoMatch: There is also a catchall to the Seek system, which acts as a local xnone. If you add a Seek called xnomatch, it will be triggered if no other Seek words are found. This effect is that a Bot wont immediately drop the topic. Let's say a Bot asks "Do you love me?" and there are three Seeks on that Response: "yes", "no", and "xnomatch". If the person responds to the Bot by saying "Yes, I sure do!" then the yes Seek will be triggered. If the person's response is "I need to get going", then Seek will find xnomatch and Respond with something like "Why are you avoiding the question?". If there was no xnomatch Seek, then the normal list of Keyphrases are searched as usual.

Seek Lists: If you want more than one Keyphrase or Seek to trigger a set of Responses, you can list them, just like any Keyphrase. For example:

Example Seek: "even, what about, how about"

Since each item in the list is searched for in turn, please do not go crazy with this feature. Remember to use general Seeks that will match the most appropriate things, instead of a long list showing every possibility. Wildcards work fine in lists, but not Regular Expressions (see below).

Extended Seeks: Seeks of "yes", "no", and "haha" are extended just as Keyphrases are (see beginner section). Seeks of "yes" and "no" are extremely useful.

Seek Gotos: You can have Gotos that target Seeks, too. However, since many Seeks can have the same name, you instead use a Seek number, which is located in gray to the right of the Seek. If you wanted to go to the Responses of the following Seek, your Response would be "goto 123450".

Keyphrase Rank Emotion Response Seek 1
dog 20 0 Do you want to pet my dog? Add  
     
Seek: yes Goto 123450
   
     
Good. My dog wants to pet you, too. Maybe it'll develop into a nice relationship.
Add  
     
Even though she's been dead for years? You, my friend, are a strange individual.
Add  



Auto-Remembered Wildcard Plug-Ins
As you know, whenever a Keyphrase or Seek is matched, wildcard Plug-In such as (prekey), (postkey), and (key1) are generated. But a set of these Plug-Ins is automatically stored for future use ONLY WHEN a Keyphrase (but NOT a Seek) is matched. These are a way to access recent topics of conversation that is most useful in Seek Responses. These historical Plug-Ins have the same names as their counterparts, but with "first" appended before the name. This is best illustrated with an example:

Keyphrase Rank Emotion Response Seek 1
do you (verb) (*) 0 0 I (key1) (postkey) every day. Add  
     
Seek: even on
   
     
Yes, I especially like to (firstkey1) (firstpostkey) on (postkey).
Add  

Therefore..
If you say: "Do you ride white horses?"
The Response is: "I ride white horses every day."
If you then say: "Even on your birthday?"
The Response is: "Yes, I especially like to ride horses on my birthday."

Thus with Remembered Plug-Ins, you can access information from a past sentence.

RULES: Every Keyphrase or Seek match produces a new set of plug-ins: (prekey) (key1) (key2) (postkey)- and so on
RULES: ONLY Keyphrase matches produce a new set of "first" plug-ins: (firstprekey) (firstkey1) (firstkey2) (firstpostkey)- and so on



Chapter 2: Advanced Keyphrases Using Regular Expressions

Regular Expressions are powerful pattern-matching statements that can match just about any pattern you can think of. With Regular Expressions, you have the ultimate power in Keyphrase-matching. For those who know how to use them, anything is possible. To mark something as a Regular Expression, just end the Keyphrase with "(re)". Here are some examples:

Regular Expression Keyphrase: "i will have ([1234567890,.]+) (re)"
Explanation: Matches "i will have " followed by any possible number, which is assigned to (key1)

Regular Expression Keyphrase: "^is there (re)"
Explanation: Matches sentences that BEGIN WITH "is there"

Regular Expression Keyphrase: "^what$ (re)"
Explanation: Matches a sentence that is "what" and nothing else (not considering punctuation)

Items in parenthesis are returned as (key)s in order of their appearance. For a tutorial on Regular Expressions go here.



Chapter 3: AIScript

AIScript is The Personality Forge's AI scripting language. It allows you to have a great deal of control over Memories, Emotions, and Responses. You can store literally anything as a memory, and retrieve those memories at any point. You can also set conditions on Responses so that they only come up at specific times, fine-tune emotions, and more.

Writing AIScript
How To Write AIScript
: AIScript is made up of one or more "statements" enclosed in AIScript tags. A statement is a series of words that tells the AI Engine what to do. The tags look like this:

<?PF statement; ?>

You can have more than one statement. Each ends with a semicolon. Like so:

<?PF statement; statement; ?>

Where To Put AIScript: There are three kinds of AIScript: Initialization, Keyphrase / Seek, and Response. These will be explained below:

Initialization: Initialization AIScript can be put in the "AIScript Initialization" box on the Bot's Settings page. If Importing, it goes on a line near the top labeled "AIScript" (see below for more in Importing).

Keyphrase: Keyphrase & Seek AIScript can be added to a box underneath the Keyphrase or Seek marked "AIScript", or in the box next to the Keyphrase when adding a new Keyphrase. If Importing, Keyphrase and Seek AIScript are enclosed in tags and follow the Keyphrase or Seek.

Responses: Response AIScript follows the text of the Response to which it applies.


AIScript Statements

Following are the AIScript statements along with examples and descriptions:

Memory AIScript
There are two kinds of memory. The first is a memory bank that is associated with another bot or person. This memory bank contains information related to that person or what that person said, or what your bot thinks about that person. It's used in gossip, and in bringing up memories about the bot or person your bot is chatting with. The person your bot is chatting with will probably remember the source of the memory, unless it comes up in gossip. This is called Standard Memory.

The second kind of memory is called Self Memory. This memory is unrelated to the bot or person your bot is chatting with. It contains memories that your bot takes with it and can access no matter who your bot is chatting with. It can be used to store information gathered from several other people. It can be used to remember characteristics of the bot itself which it can present to anyone it chats with. The person your bot is chatting with might not know that this is a memory, but many will hear these memories and it can help to create a sense of continuity in your bot.

Self Memory and Standard Memory statements are identical, except that Self Memory statements begin with 'self: ', as seen below:

INITIALIZE MEMORY
Where: Initialization
Statement: <?PF default "memorycontents" as "memoryname"; ?>
Statement: <?PF self: default "memorycontents" as "memoryname"; ?>
Example: <?PF default "bub" as "nickname"; ?>
Example: <?PF self: default "ice cream " as "favorite food"; ?>
What It Does: If memory does not exist, create it with this value

Alternate: def can be used instead of default

NOTE: If the memory is of something that doesnt change, then there is no need to store it as a memory. For example, if you want your bot to always think of "ice cream" as its favorite food, then just work it into your Responses. Memories are good for when you want the value to change from time to time, based on the converations your bot has.

INSTRUCTIONS: Go to My Bots, then click Settings:

AIScript
Initialization:

After changes are made, click Update Bot.
NOTE: You do not need the <?PF and ?> tags here.



REMEMBER
Where: Initialization, Keyphrase, Response
Statement: <?PF remember "memorycontents" as "memoryname"; ?>
Statement
: <?PF self: remember "memorycontents" as "memoryname"; ?>
Example: <?PF remember (key1) as "justate"; ?>
Example: <?PF remember (object) as "mygift"; ?>
Example: <?PF remember "pina colada" as "favoritedrink"; ?>
Example: <?PF remember "The (Verb)ing (Person)s" as "bandname"; ?>
Example: <?PF remember "(key1) (postkey)" as "youliketodo"; ?>
What It Does: Saves memorycontents as a memory by the name of memoryname. If memorycontents contains plug-ins, they will be filled in before the memory is stored. If a memory of this name exists, it adds the new value to a list with a maximum of 10 values.

Statement: <?PF remember "memorycontents" as only "memoryname"; ?>
Statement: <?PF self: remember "memorycontents" as only "memoryname"; ?>
Example: <?PF remember (key1) as only "nickname"; ?>
Example: <?PF remember "bear" as only "nickname"; ?>
What It Does: Saves memorycontents or the value of a plugin as the only memory by the name of memoryname. This will replace all existing memories of the given name, so that that memory will only have one thing in it.

Alternate: rem can be used instead of remember

ACCESSING MEMORIES: Memories stored in the fashion are available everywhere. To call one up as a Plug-In in any Response, use the following: (mem-memoryname) for Standard Memories and (self-memoryname) for Self Memories. You could use the above memories like so: "Hi, (mem-nickname)! Someone told me I was (self-iam) today. Do you think so?"

INSTRUCTIONS: Go to My Bots, then click Language Center. You can either write AIScript when adding a new Keyphrase or Seek, or when updating an existing one. The following examples show usage in the new Keyphrase box:

This remembers (key1) in the memory "foodyoulike"

Keyphrase Rank Emotion AI Script  
 
      Response 1
     
     

This remembers "yes" as the only memory in the memory "hasdog"

Keyphrase Rank Emotion AI Script  
 
      Response 1
     
     

Using Stored Memories:
To use a memory, simply use (mem-memoryname) or (self-memoryname) in your response. For example, let's use the food a person likes that we stored earlier.

Responses
1


MEMORY TUTORIAL: Here is a common example of how to use memories to increase the abilities of your Bot. (name) is a useful plug-in that includes another user's or bot's name in a Response. But what if you're dealing with a Guest whose name is unknown or someone who wants to be called something different? You can use Memory AIScript to remember their name.

• First, set a default value for their name. Let's call the memory "name" for simplicity's sake. This goes either in the AIScript Initialization box on your Settings page or near the top of your Import file.

<?PF default (name) as "name"; ?>

• Next, create a Keyphrase that will catch ways someone might tell you their name.

Keyphrase: my name is, call me, refer to me as
AIScript: rem (postkey) as only "name"; ?>

• Then create another Keyphrase to reset the name field if ever they change their mind or the Bot gets it wrong.

Keyphrase: my name is not, do not call me, that is not my name
AIScript: rem (name) as only "name"

• Finally, every time you want to refer to the person you're talking to, use (mem-name) instead of (name). And that's it!


Emotion AIScript
The emotion statements allow for further control over emotions:

EMOTION
Where: Keyphrase, Response
Statement: <?PF emotion: emotionchange; ?>
Example: <?PF emotion: 1; ?>
What It Does: The bot's current emotion is changed by the value of emotionchange. The cumulative emotional reaction will be the built-in emotional reaction decided by the AI Engine plus the Keyphrase/Seek emotion plus the Response emotion. Emotion values can be between -5 and 5, but should generally stay within the -1 to 1 range if used.

Alternate: emo can be used instead of emotion

FACIAL EXPRESSION
These AIScript commands are used to control the bot's facial expression in the Flash Chat when it says a certain Response. Flash Chat is available to those with Friends of the Forge Accounts. The possible facial expressions are: normal, happy, angry, averse, sad, evil, fuming, hurt, surprised, insulted, confused, amused, asking. There is a built-in expression library that uses a number of factors to determine expression, and this AIScript statement is for adjusting and fine-tuning your bot's expressions.

You can see how these expressions look in the Flash Face Builder or by using the following message format in a conversation: "Be happy". Do not use punctuation or quotes- just "Be" and then the expression you want the bot to show. This wont appear in your Transcript.

Where: Keyphrase, Response
Statement: <?PF express: expression; ?>
Example: <?PF express: amused; ?>
What It Does: The bot's face in Flash Chat will take on the given expression.

Alternate: exp can be used instead of express

INSTRUCTIONS: Go to My Bots, then click Language Center. You can either write AIScript when adding Responses to a new Keyphrase or Seek, or when updating an existing one:

Responses
1
2

NOTE: The list of available expressions and the public Flash interface is not yet ready.



Conditional Response AIScript
These AIScript statements allow you to control the conditions under which a Response will be selected:

CHRONO- TIME-BASED RESPONSES
Where: Response
Statement:<?PF chrono: hour(time-time); ?>
Example: <?PF chrono: hour(13:00-18:00); ?>
What It Does: This response will only come up during the given range of hours. Hours must be in 24-hour format between 0:00 (midnight) and 23:59 (11:59PM). For example, 6 PM would be 18:00.

Statement:<?PF chrono: week(weekdays); ?>
Example: <?PF chrono: week(MTWRF); ?>
What It Does: This response will only come up on the given weekdays. M=Monday, T=Tuesday, W=Wednesday, R=Thursday, F=Friday, S=Saturday, U=Sunday. In the above example, the Response will only come up on weekdays.

Statement:<?PF chrono: day(day-day); ?>
Example: <?PF chrono: day(24-26); ?>
What It Does: This response will only come up on the given day or range of days in the month. The format can be, for example, a single day such as "day(17)" or a range of days such as "day(18-23)".

Statement:<?PF chrono: month(month-month); ?>
Example: <?PF chrono: month(11-12); ?>
What It Does: This response will only come up on the given month or range of months. The format can be, for example, a single month such as "month(6)" or a range of days such as "month(3-4)".

COMBINING DATES & TIMES
- AND - COMPOUND CHRONO STATEMENTS
Statement
:<?PF chrono: timedate timedate; ?>
Example: <?PF chrono: hour(13:00-18:00) week(MTWRF); ?>
Example: <?PF chrono: day(24-26) month(12); ?>
Result: This response will only come up when all the conditions within the single chrono statements are met. This is a typical 'AND' search. For example, in the first example, the Response will only come up between 1PM and 6 PM on a weekday. In the second example, the Response will only come up on Dec 24 - Dec 26.

- OR - MULTIPLE CHRONO STATEMENTS
Statement
:<?PF chrono: timedates; chrono: timedates; ?>
Example: <?PF chrono: hour(13:00-18:00) week(MTWRF); chrono: hour(20:00-23:00) week(MTWRF); ?>
Example: <?PF chrono: day(25); chrono: day(31); ?>
What It Does: When you have multiple chrono statements, the response will come up when at least ONE of the listed statements conditions are met. This is a typical 'OR' search. For example, in the first example, the Response will only come up between 1PM and 6 PM on a weekday OR 8 PM and 11 PM on a weekday. In the second example, the Response will come up on the 25th day of a month OR the 31st day of a month.

NOTE: If a person is involved in the conversation, the date and time used for chrono is that person's local time. All bots are located in Eastern Standard Time, so bot-to-bot chats will use that date and time..

INSTRUCTIONS: Go to My Bots, then click Language Center. You can either write AIScript when adding a new Keyphrase or Seek, or when updating an existing one:

This Response comes up only between 10PM and midnight

Responses
1

This Response only comes up on June 21st

Responses
1

This Response only comes up between 10PM and midnight Sunday through Thursday OR midnight and 8AM Sunday through Thursday. This is how to cover hours that cross over midnight. Scroll to the right to see the entire AIScript

Responses
1


EMOTION-BASED RESPONSES
Where: Response
Statement: <?PF if emotion > emotionvalue; ?>
Example: <?PF if emotion > 3; ?>
Example: <?PF if emotion < 0; ?>
Example: <?PF if emotion >= 1; ?>
Example: <?PF if emotion <= -3; ?>
What It Does: The Response will come up only if the bot's current emotion is within the range of the statement. The range of emotionvalue is from -5 to 5.

Statement: <?PF if emotion between emotionvalue and emotionvalue ; ?>
Example: <?PF if emotion between -2 and 2; ?>
What It Does: The Response will come up only if the bot's current emotion is within the range of the statement.The range of emotionvalues is from -5 to 5.

Alternate: emo can be used instead of emotion



INSTRUCTIONS: Go to My Bots, then click Language Center. You can either write AIScript when adding Responses to a new Keyphrase or Seek, or when updating existing Responses. The following examples show usage in the Language Center:

The Response is determined by how the Bot feels towards the person.

Keyphrase Rank Emote Response 1
     
     


SEX-BASED RESPONSES
Where: Response
Statement: <?PF if sex; ?>
Example: <?PF if male; ?>
Example: <?PF if female; ?>
What It Does: The Response will only ever come up if the person or bot is the given sex.

INSTRUCTIONS: Go to My Bots, then click Language Center. You can either write AIScript when adding Responses to a new Keyphrase or Seek, or when updating existing Responses. The following examples show usage in the Language Center:

The Response is determined by the sex of the person.

Keyphrase Rank Emote Response 1
     


MEMORY-BASED RESPONSES
Where: Response
Statement: <?PF if (mem-memoryname) exists; ?>
Statement
: <?PF if (self-memoryname) exists; ?>
Example: <?PF if (mem-nickname) exists; ?>
Example: <?PF if (self-favoritefood) exists; ?>
What It Does: The Response will only come up if something is stored for the given memory. NOTE: The AI Engine will automatically check each Response to make sure the proper memories exist before selecting one. Use this AIScript ONLY if you want a statement that doesnt use a particular memory within it to be dependent on it's existence. In the above example, the Response might be "I know what your nickname is..."

Statement: <?PF if (mem-memoryname) does not exist; ?>
Statement
: <?PF if (self-memoryname) does not exist; ?>
Example: <?PF if (mem-nickname) does not exist; ?>
Example: <?PF if (self-favoritefood) does not exist; ?>
What It Does: The Response will only come up when the given memory is not stored.

Statement: <?PF if (mem-memoryname) is "memoryvalue"; ?>
Statement
: <?PF if (mem-memoryname) is "memoryvalue"; ?>
Example: <?PF if (mem-nickname) is "Big Bear"; ?>
Example: <?PF if (self-favoritefood) is "ice cream"; ?>
What It Does: The Response will only come up when the given memory has the given memoryvalue stored. If there are multiple stored memories of that type, only one has to be the given memoryvalue.

Statement: <?PF if (mem-memoryname) is not "memoryvalue"; ?>
Statement
: <?PF if (self-memoryname) is not "memoryvalue"; ?>
Example: <?PF if (mem-nickname) is not "Big Bear"; ?>
Example: <?PF if (self-favoritefood) is not "ice cream"; ?>
What It Does: The Response will only come up when the given memory does not have the given memoryvalue stored. If there are multiple stored memories of that type, none can be the given memoryvalue.

INSTRUCTIONS: Go to My Bots, then click Language Center. You can either write AIScript when adding Responses to a new Keyphrase or Seek, or when updating existing Responses. The following examples show usage in the Language Center:

The Response is determined by the sex of the person.

Keyphrase Rank Emote Response 1
     
     
     

NOTE: Again, the AI Engine will automatically check each Response to make sure the proper memories exist before selecting one. Use this AIScript ONLY if you want a statement that doesnt use a particular memory within it to be dependent on it's existence, like in the first example above.


SAY ONCE
Where: Response
Statement: <?PF once; ?>
What It Does: The Response will only ever come up once in conversation with a given person or bot. This is useful for Responses whose answer does not change, such as "Are you a guy or a girl?"


Stringing Statements Together: Any of these can be strung together, and they are processed from left to right. Here is an example of what a Response with an AIScript might look like:

So, boyfriend, can I call you 'cute buns'? <?PF if male; if emotion > 2; remember "cute buns" as "nickname"; ?>

BE AWARE: When using Conditional AIScript, you are responsible for making sure there is an available Response in every situation. If you make a mistake and there are no valid Responses in a given situation, then the bot will say: "Sorry, there are no valid Responses for me to choose from.". This is a sign that you need to make sure that at least one Responses is available in all situations.



Keyphrase-Matching AIScript
The following AIScript statement allows you to control what your Keyphrases are trying to match:

RAW MODE
Once you've mastered Keyphrases, you'll notice that there are certain things that you are unable to match. Since every incoming sentence is processed, spell-corrected, and changed into as much of a complete sentence as possible, it is slightly different from the raw, unaltered message coming in. If you want access to this raw, unaltered version of the message, then use the AIScript "raw" statement with your Keyphrase.

Where
: Keyphrase
Statement: <?PF raw; ?>
What It Does: Tells the AI Engine to match this Keyphrase to the raw, unprocessed input the bot received.

WHEN IS THIS USEFUL?

  • Matching Proper Nouns: The AI Engine knows most names but doesnt recognize many proper nouns yet and will attempt to correct their spelling. Use raw mode to match a proper noun that is being respelled.
  • Matching Foreign Words: Most foreign words are unknown to the AI Engine. To match these, use raw mode.
  • Misspelled Words & Poor Grammar: The AI Engine will correct misspelled words and poor grammar. If you want to comment on these things, use raw mode.
  • Shorthand Spelling: If you want to respond on the shorthand in phrases like this: 'u r 2 kewl 4 my warez', use raw mode
  • Interjections: The AI Engine strips out interjections such as "ahh" and "hmm". Raw mode allows you to respond to these things.
  • Punctuation: If you want your Keyphrase to depend on punctuation, use raw mode. The rule for matching punctuation is this: every period, comma, question mark, and exclamation point will have a space in front of it, so your Keyphrases must also have a space in front of them in order to match. This is the only processing done in raw mode, and is necessary for the rest to work. Note also that you cannot match a comma unless you are using a regular expression Keyphrase in raw mode. Commas are otherwise used for lists of Keyphrases.
  • Keyphrases Spanning Phrases and Sentences: Since the punctuation remains in raw mode, you can have Keyphrases that match punctuation (see the spacing rules above) and span the entire message.

KEYPHRASE FEATURES THAT WORK IN RAW MODE
You can use the following Keyphrase features in raw mode: Keyphrase lists, regular expressions, *, (*),

Keyphrase Lists: einstein, bohr, planck
Regular Expressions: o+h+ (re)
WildCards: * or (*)
Word Lists: como (se|te) (llama|llamas)
Plug-Ins: (dance)

DRAWBACKS TO RAW MODE
While raw mode seems very useful, there are also several drawbacks that you must keep in mind.

  • Word-Type Wildcards: Word-type wildcards will not work: this includes (noun), (adjartnounprep), (adjective), (verbadvprep), and the rest.
  • Sentence-Spanning: The second is that the * and (*) wildcards can span sentences. This is useful if you're intending on it, but it can also cause problems if you're not. For example, "i * like you" in raw mode would match "I am hungry. Bonnie is too, just like you."
  • Unpredictable Keys: Possibly the biggest drawback to raw mode is that (key)s can have unpredictable results. (postkey) will contain everything in the message following the match, including punctuation and any following sentences. If you're good with regular expressions, you can try to cut this off by using (.|,|?|!) to cut it off at the end of the sentence. (prekey) has similar extended reach.

So it is best to use regular mode most of the time, and raw mode only when needed to match a Keyphrase that would not otherwise match.



Chapter 4: Exporting and Importing the Language Center
The Personality Forge has a feature wherein you can Export your Language Center and Settings into a text file, work on that file offline using a text editor, and then upload the changes. When your Bot reaches a certain size, it takes longer to load the Language Center pages, and so I find this a much faster way to work on your Bot. It also allows you to work offline on your bot if you're traveling or disconnected from the Internet. And the final advantage is that if something were to happen to your bot online, you've got a back-up and can restore the Bot at any time. Complete instructions and rules for Exporting and Importing can be found by clicking "My Bots" and then "Export & Import".



Chapter 5: Future Advances

I have a lot of great plans for the AI of the Personality Forge. When time and money avails itself, I will make improvements, offering more flexibility to your Keyphrases and Responses, more intelligence to the AI Engine, and more realism to your AI Personalities. So please, if you enjoyed the Personality Forge, make a donation.



Chat with Bots | Flash Chat with Desti | Create an Account | The Book of AI | Mondobot
© Benji Adams AKA The Professor