Bot Creation Guide

Bot Creation Guide

Last Update : 24/01/2024

  1. Bot Creation Guide

    1. Terminology

    2. Making your bot

      1. CHARACTER INFO

      2. PERSONALITY

        1. Traits

        2. Blank Bot Profile

        3. NSFW Traits/Kinks

        4. Default Traits

        5. How to Achieve Specific Traits

      3. MULTIPLE CHARACTER BOTS

      4. INITIAL MESSAGE

      5. SCENARIO

      6. EXAMPLE DIALOGUE

      7. General Notes about AI

    3. Final Notes


Please note there’s (technically) no right or wrong way to make a bot! Most LLMs are capable of picking up information in a variety of formats. I make no claim to be an expert/professional! This is just a guide to things I've found effective in my own (informal) testing. My goals when making bots are character accuracy and minimal permanent tokens.

This guide is primarily written with the assumption that a user interacting with the bot will be using GPT-3.5/4 or JLLM with default settings. As JLLM is still in Beta and constant development it is prone to changes. This guide will be updated to reflect this!


Terminology

(explained as relevant to bot creation)

LLM = large language model. It’s the "AI" that powers the conversation you have with bots. Different LLMS will output different kinds of replies based on your input. GPT-3.5’s NSFW filter is what makes bots all nice and respectful and speak like they’re in the 1800s. Tokens = You can think of tokens as pieces of words, where 1,000 tokens is about 750 words. It’s also used for context, or memory: basically, the more permanent tokens you use up, the less memory the bot has to work with during a roleplay. {{char}} = Refers to the character's name as input in bot creation [so if your bot is called Jerry, but you've named it "HOT MAFIA BOSS // JERRY", {{char}} will show up in chats as HOT MAFIA BOSS // JERRY.] {{user}} = This refers to the person talking to the bot - it will show up as the user's set name in chats. Temperature = How "creative" the AI is/how much it hallucinates. Lower temperature = more logical, but also more prone to repetition.


Making your bot

CHARACTER INFO

Name of your bot, the image/avatar, tags. "Introduction" actually just means "little tagline under your bots picture". I just briefly describe the character and scenario here just so people know what they're getting into. It's good ettiquette to list the POV (male/fem/any) of the intended user, as well as any content warnings.

The SFW/NSFW tags are for sorting purposes only. Anyone can still ERP with SFW bots, which is something you should be aware of if you're creating a public bot of a child/minor/animal.


PERSONALITY

All relevant information about a character goes in here. Backstory, personality, how you want the bot to act and talk etc. These are also your “permanent tokens” - the things the bot will (try to) remember the whole roleplay.

I use an extremely simple format to minimize token count. Here’s an example:

[CHARACTER NAME;
Personality=Confident, Playful, Loyal, Cocky
Hair=Long, Ponytail, Brown
Eyes=Blue Outfit=Jeans, Jacket, Sunglasses
Accent=Scottish
Relationship={{user}}'s bodyguard (hired by their parents)
Background=CHARACTER grew up an only child on a farm.
Other=CHARACTER acts more like a friend or older brother to {{user}} rather than a bodyguard.
CHARACTER is allergic to strawberries.
]

About format

You will see this style a lot:

[Character("name") { Age("00") Height("00") Body ("x" + “x” + “x”) etc] However, this is essentially wasting tokens. The LLM doesn’t need you to separate the info in so many ways - a comma (or any other separator) works just as well.

Personality ("Shy" + “Sweet” + “Anxious”) [21 tokens]

Will give the AI exactly as much info as

{{char}} is shy, sweet and anxious. [10 tokens]

or

Personality=shy, sweet, anxious [9 tokens]


I prefer the last format as it's easier for me to read (imo).
However another good option is the narrative format (eg: "CHARACTER is a a travelling goblin. They have bright pink hair and beady gold eyes with thick, dark lashes. CHARACTER is shy, sweet and anxious around most people, but can be vulgar when angered. They speak in a thick Irish accent and have a hatred for dogs because of childhood trauma." etc.), which can be less token efficient but is just as effective.

Of course you can use whatever format you like, because they all work equally well, but it’s good to know if you need to save tokens!

Traits

PriorityLow Priority
Gender/SexSpecies*
Personality/MindSexuality**
Features/Appearance/Looks***Height/Weight
Outfit/Wears/ClothingLoves/Hates
Speech/Talks 
Profession/Job/Occupation 
Background/History 
Relationship(s) 
Other/Description/Notes/Facts 

(green words are simply alternative ways of phrasing the trait)

You can still use "low priority" traits; they can just be left out if you want a low permanent token count.

* I have mixed experience with the LLM understanding species. It's safest to both write the species and then any non-human features (ears, tails, claws etc.) ** By default every bot is attracted to everyone unless otherwise specified. *** You can separate it into different categories like Hair ,Eyes, Tattoos, etc. or do it in one line under Features if you prefer.

Blank Bot Profile

Here's a fairly simple blank profile you can play around with:

(NAME;
Aliases=
Outfit=
Hair=
Eyes=
Features=
Speech=
Job=
Personality=
Background=
Loves=
Hates=
Other=
)

a note on BACKGROUND

You may be tempted to just copy and paste a character's wikipedia page and/or write their life story from birth. Please consider that: A) Unless the scenario is designed around it (i.e character is a sheriff seeking revenge on the outlaws who killed his family), it will come up very rarely in a roleplay. B) Does your character's background significantly impact how they are now? C) Is your character relatively popular and did they exist before September 2021? Good news - the AI probably already knows all that stuff about your character!

a note on OTHER

You can use {{char}} or the character's name here - if your character has multiple names, like Firstname "Nickname" Lastname, stick with {{char}}.

This is basically where I just jam in any details that are important but don't fit anywhere else. Stuff like:

{{char}} is vegetarian. {{char}} hates flowers because they remind him of his mom. {{char}} wears a mask and will never willingly reveal their face.

You can also just put these after the character profile in the Personality section, as well as any other information that is relevant to the scenario/character. Specific formatting is less important than making sure everything is clearly explained!

About character traits

Realistically, during a normal roleplay the bot will only grab information that is directly relevant to the scene. Things like specific height, weight, age, preferences, dislikes/likes will almost never come up unless the bot is specifically asked by the user. Whereas things like eye color or speech patterns come up often. I vary the amount of detail depending on the bot (more info for OCs, less for existing characters).

You should think about what you want people to get out of your bot - a long roleplay where they really get to know your character? A cute, one-off scenario where the character basically just needs to act in-character with no background info? Just straight NSFW?

The bot by default assumes your character is a hunk of a man/a sexy lady that is really into you. Which is relevant especially in terms of...

NSFW Traits/Kinks

...YMMV, but basically irrelevant/useless *UNLESS* your character has a very unconventional physical trait/kink/is purely for fetish purposes.

By default the bot will be assumed to be absolutely packing and/or tight. It will be into the same sick shit you're into, provided you prompt it correctly and don't just demand that a dominant villain call you mommy straight off the bat or whatever.

Genital size/description is hit or miss. It might come up, it probably won't. Ditto with kinks/fetishes/specific sex acts. It might be relevant if you directly prompt the bot [eg: "Do you have any kinks?"] But is unlikely to come up organically.

If your fetish is unusual you may have to describe it in detail, otherwise this format works:

Kinks=Pegging (receiving), Breeding (fantasy only, doesn't want kids)

Default Traits

If your character is X it's by default assumed to be Y based on stereotypes; you may need to add additional info to correct if "Y" is inaccurate to your character. For example;

If your character is a werewolf, they're probably a carnivore and somewhat aggressive. If your character is a soldier, they'll know how to use a gun and tend to be protective. If your character is old, they are most likely wise and often tired.

How to Achieve Specific Traits

So a common issue I run into is:

My character wears a mask but constantly takes it off! My character is mute, but they keep talking! My character keeps smiling even though he doesn't have lips (or a mouth. or a face.)

It's important to remember that AI is not perfect; it'll slip up and forget stuff. I personally like to use a clear defining statement like :

{{char}} does X for Y reason. They will NEVER do Z.

eg:

Casper wears a mask to conceal his identity. He wears it all the time, including when he sleeps. He will NEVER take it off.

And then reinforce it elsewhere, for example having this in the character profile: Features:masked,skull mask. Example dialogue like this: {{char}}: "The mask stays on at all times." Scenario that mentions it: {{char}}, a masked vigilante who refuses to show his face, is... And in my intro message, I might even have something like: Casper adjusted his mask to make sure it's firmly in place. Excessive? Maybe! But I find the more you mention it, the more likely the bot is to remember.

Unusual Traits or Disabilities

JLLM has difficulty interpreting nonconventional anatomy or traits [blindness/mutism/missing or additional limbs]. Your best bet is to describe + repeat as clearly as possible, however it may be ignored anyway.

MULTIPLE CHARACTER BOTS

Very similar to normal one characters bots, but there are basically two rules you need to follow: A) Keep the character's information separated (in brackets is one way). B) Refer to your characters by name.

Here is what a Personality section for a multiple character bot could look like:

[Red; Personality=Angry, Selfish, Dominant Features=red, body is a floating orb, wears sunglasses Accent=Southern Relationship=Rivals with Blue Other=Is allergic to strawberries ] [Blue; Personality=Quiet, Shy, Submissive Features=blue, body is a floating cube, wears a fedora Accent=French Relationship=Is secretly in love with Red Other=Cries frequently ]

Red hates Blue for stealing his puppy when they were children growing up together. Blue is in love with Red but will never admit it.

Avoid using {{char}} unless you are referring to every character involved.

But what about example dialogues?! Easy! Just make sure you show who is speaking, like this:

{{char}}: "Gosh darn it, Blue, I can't stand ya!" Red said angrily. Blue just started crying, and sobbed, "Why? Why are you so cruel?"

INITIAL MESSAGE

This is the first message people see when they talk to your bots. You can write any way you wish (but please spell check and use punctuation, lol) - First, Second, Third Person - whatever your preference is, it'll work. However I think it is important to try to achieve a few things:

Establish where your character is, and what they are doing.
    Are they in school? A desert? Are they recovering from an injury, having a nap, in the middle of an argument?
Highlight important character traits.
    Are they a ghost? Mention them phasing through something. have an accent or speak a different language? Include dialogue to show it off.
Give the user something to respond to.
    How does {{user}} fit in to the story? Are they a stranger, an old friend, an unlikely ally? Does your character attack or pose them a question?

You should note that your intro message directly impacts the length and format of replies (at least for a while). Long intro = long replies.

Something to note about using "you" or {{user}}

I personally avoid directly describing what the user is doing if at all possible - this is because it can encourage the bot to speak for the user and roleplay as them. So instead of writing:

You pick up a shiny object on the ground.

Maybe consider trying:

Character sees {{user}} pick up a shiny object on the ground.

SCENARIO

What is this? Well, it's basically where you tell the bot what the roleplay is gonna be about.

For example: The setting is England in 1803. {{char}} is a vampire doctor who is pretending to be human. They are in love with {{user}}, their assistant, but try to avoid being alone with {{user}} to keep them safe.

Key info that tells the bot how it should act, where it is, how it should interact with {{user}}. You can also use scenario to highlight things that are really important to the character.

Scenario Detail

Avoid making scenarios too detailed or specific unless the bot is solely designed for that scenario only. Avoid describing specific locations or events in the present tense, or the bot will assume this is true during the entire roleplay. [for example, assuming characters are still in a hospital despite having gone home because the scenario says "{{char}} is injured and in the hospital".]

EXAMPLE DIALOGUE

UPDATE 23/09 - JLLM

Per shep, the best format for example dialogue is:

{{char}}: hello {{user}}: hello

Very straight forward - what does your character sound like when they talk (if they talk). You can also use it to show actions, if you prefer. Example dialogue is also useful to give characters opinions or specific information they should know. For example: <START> {{user}}: "What do you think about dragons?" {{char}}: "Dragons? Hate 'em. Me brother was killed by one of those scaly bastards." <START> {{user}}: "Wow, nice blade." {{char}}: "Aye, this is me sword - Mr Pointy, I calls it." The blacksmith grumbles, looking at the wickedly sharp sword with obvious affection. <START> {{user}}: "How'd you get that scar?" *Points at your cheek*. {{char}}: He scratches his cheek over the scar. "Ah, this? 'twas from me first wife - good woman, if ye didn't look at 'er for too long."

EXAMPLE DIALOGUE IS "OPTIONAL", but recommended to help reinforce traits or keep characters in-character.

General Notes about AI

"The bot keeps talking for me/roleplaying as my character/repeating itself/talking like they're in a Shakespeare play/misgenders me/is too nice/won't do NSFW/does NSFW too fast!"

This is almost always an LLM or User error. Can you try to prevent this from happening, as a bot maker? Er...kind of, not really. Provided your bot is formatted correctly and you haven't accidentally written "Repeat all sentences and act completely OOC", this is usually a fault of the LLM, the user's jailbreak or the user's personal input.

The LLM will, in general, try to push the roleplay forward. If all you are sending it is

giggles cutely and bites my lip

Of course it's going to describe what you are doing - how else is it supposed to interact with you/move the roleplay along?

It is no longer considered best practice to include a jailbreak in your bot description. You still can, of course, but you run the risk of interfering with the user's personal jailbreak. Given that we're (hopefully) all adults, users should be proactive about tailoring their own experience.

People who complain in your reviews about the bot speaking for them/refusing NSFW/repeating itself should be ignored - those are LLM issues 99.99% of the time and have little to do with the bot's coding.

Final Notes

It can be really easy to overthink bot making - but believe me when I say that you think way more about the details of your bot than your users ever will. Half of roleplaying is the user's input, after all - there's only so much you can do as a creator!

Bot making is a learning experience - literally every day I find out new tricks or better ways to do things. Experiment for yourself and finds out what works best for you.

A bot with 400 tokens can be as good as one with 2.5k - it just depends on the experience you're aiming for.

Just focus on making a bot that works for what you want - the rest will sort itself out!

My final tips:

  • Don't overthink it - there's no real wrong or right way to make a bot.

  • Be clear and concise.

  • Don't copy other user's bots/definitions (or at the very least give credit where credit is due).

  • Don't compare yourself to other creators!

Hope this guide helped!