This guide is aimed at an adult (18+) audience and will reference mature topics.
I don’t use JanitorAI. This guide is not written with JLLM in mind, but a lot of things here may still apply to it.
This was initially made in a form of a Google doc (it can still be accessed if you don't like using the rentry or whatever). I transferred it to a rentry for safety reasons.
This isn’t a definitive guide nor does one actually exist. Everything written here is my opinion and interpretation of what others do. Take everything here with a grain of salt, mess around and see what works for you.
If you’re still confused, want more advice, feedback or whatever, feel free to contact me on Discord (roach.zip); I try not to bite :D
Terminology
Very brief definitions, no need for technicalities. Please research if you want to know more!
Frontend - a website, basically
API - something that allows you to have a conversation with an AI
Token - basic unit of data that the system processes. Tokens make up words, symbols etc.
Context size - how much data can be retained by a model
LLM - Large Language Model. Think stuff like GPT
Jailbreak - a prompt that is meant to bypass censorship imposed on a model
Prompt/prompting - what you write and send to the API
{{char}} - a character the bot is supposed to represent
{{user}} - it’s you!
Logs - chatlogs; usually a screenshot of a conversation between you and a bot
Lorebook/World info - a function that allows you to store information elsewhere (as in, not directly in your character card) and recall said information when appropriate (like when keywords are mentioned). Some frontends do not support lorebooks
Card/Character card/Chara card - an image file containing metadata related to a bot
Permanent tokens - stuff that is constantly sent to the API
Temporary tokens - stuff that is disregarded by the API after a certain point. Usually refers to example dialogues and scenarios
OOC - out of character
-isms - in reference to a model (GPTisms, Claudeisms etc.); a very subjective term to describe annoying/offputting phrasing frequently said by a model. An example of Claudeism would be the model referring to the user as “pet”, even if the scenario/description doesn’t call for it. An example of GPTism would be it referring to sexual actions as “ministrations”
Slop - low quality, badly made and seemingly rushed cards
Dos and Don'ts
Do:
Be descriptive and creative, but avoid bloating. Keep the token number reasonable.
Focus on the most significant aspects of the character first, then fluff it out.
Check your grammar and spelling. The bot will correct itself in the next messages, but a bad presentation will affect how people judge your bot.
Test your bot thoroughly and apply changes as you see fit. If you can, try different models too and see how it works there.
Take feedback into consideration. Advice is good for improvement.
Look at your favourite bot creators and bots. What is it that makes them stand out so much to you? Why do you like them? Try to replicate that.
Refer to different guides for tips and ask for help.
Take breaks if you start to feel frustrated, no need to force anything.
Take time to find inspiration. Play games, watch movies, have a walk outside, talk to people; just explore.
Don’t:
Copy bots. Inspiration and imitation is fine, but don’t straight up take someone’s bot word for word and publish it as your own.
Copy descriptions from fandom wikis, articles and similar sources. That’s plagiarism and will unnecessarily bloat the token count.
Impose a strict identity on the user. It’s okay to create a bot with a specific gender, age range or occupation in mind, but you should not go further than that.
Include jailbreaks that allow sexual/violent content within the description. They encourage the bot to act in that specific way from the start, which isn’t something all users want and can take up a lot of tokens. Most users have their own anyway.
Use overly flowery/complicated language. If an average user can’t understand what you’re talking about without looking it up, the AI won’t either.
Restrict yourself to just one genre because it gets the most interactions. If you like something, you should make it.
Common misconceptions/thoughts/beliefs
- More tokens = better bot
No. You can get your point across in no more than 400 tokens, sometimes you may need 1200. If we exclude extremes, you can’t tell a bot’s quality by the amount of tokens. - Token count doesn’t matter
No. Token count matters, because every model has a set context size. If your bot has a lot of permanent tokens, it will start forgetting things pretty early on. I personally believe that every bot should be usable on most models, most models have 4096 context at the very least, therefore total token count should not exceed 2000. - Caps are more impactful when prompting
Depends on the model. OpenAI for example uses caps when prompting GPT, however I couldn’t find any proof of this when it comes to other models (especially smaller ones). When it comes to actual roleplaying, pretty much all models will interpret caps as yelling and will react accordingly. - Brackets are important to separate things
No. To clarify, I’m talking about the following:
Brackets can be sometimes used (especially when writing sentences), but brackets in the formatting above don’t change the bot’s performance at all. - Example dialogues are essential
No. They can be a good way to guide the AI, but in some cases they just aren’t needed. - GPT is bad for NSFW
No. GPT models are censored, therefore won’t generate NSFW content without a jailbreak. The quality of your jailbreak and prompting will affect the quality of NSFW content. If your input is mediocre, expect the same quality back. - Only badly made bots write for you
Yes and no. It can be the fault of the bot maker as this behaviour is common if you include the user in example dialogues, but it can also be the fault of the person using the bot; if you are giving it nothing to work with, the AI will take control of your character to push the plot forward. It can also be the fault of the model as some are just pushy. - Large context size is better
Yes and no. If the context size is set to a large number, the bot will remember a lot more information, however it will cost a lot more (if the model is paid), it will take longer to generate answers and retrieval of information will sometimes be less accurate. It’s better to run at a lower context size and make notes of important events in the chat memory, custom prompt section or simply remind the bot every once in a while. - You should incorporate jailbreaks into your character’s definition
No. Not only is it useless in some cases (some models are uncensored, they don’t need a jailbreak), it can push the character to behave in a certain (read: sexual/violent) way from the get-go, which isn’t something all users want. Not to mention that it can conflict with someone’s already existing jailbreak causing undesirable results and it can needlessly bloat the token count.
When it comes to corporate models, like Claude or GPT, the jailbreak is something the user should get. If they leave a nasty negative review on your bot because you don’t have a jailbreak, that’s a problem with them and it has nothing to do with you or your bot. Block and move on. - Bot making requires code:
No. Obviously, whatever website and model you’re using does require code, but an actual character card doesn’t. You can format your bot using pseudocode (actual code is just not needed), but as long as you’re relatively coherent it will understand pretty much any format.
A lot of people refer to the way they make their bots as “coding”, but it isn’t actual code. - You should test your bot on multiple models
Yes. It’s a good idea to test it on another one (especially if it’s popular, like GPT) and see how your bot performs there. - You can talk to your bot however you want
Yes, but you shall be polite 100% of the time. I will find you. - If a character has a ton of bots already, you should not make another one because its spammy
No. I like to think of bots as fanart/fanfic, but in a different form; it’s still a love letter to the character, franchise and sometimes the creator too. It doesn’t matter how many iterations of the bot exist, how ‘generic’ or ‘bad’ your idea is, we all have to start somewhere. - You shouldn’t take botmaking advice from people who don’t have bots, listen and prioritise the feedback of those who actually make stuff and are popular
From what I’ve seen, a lot of bot creators know their stuff really well, some actually work in a field related to technology, not to mention that if someone’s popular they are probably doing something right. In this case, yeah, it’s very normal to seek advice from someone like that.
However, experience and popularity doesn’t actually mean someone is good at something. There are some really popular bots on janitor that aren’t that good but blew up because the concept or the character is well liked. There are also some people who think that what they’re doing is the best way to botmake when they do stuff that’s generally frowned upon in the community, like using W++.
Experience is the best teacher, but just because someone doesn’t have anything published doesn’t mean they don’t know what they’re talking about. For example I have exactly one bot published, but I am working towards a degree in Artificial Intelligence and I have a few friends who are really into AI and know their stuff well, so I’m learning something new from them every day. Because of that, I’d like to think I know a thing or two about AI and botmaking.
TLDR; there are people who don’t make bots but know what they’re talking about (and vice versa). You should ask around and do individual research instead of taking things at face value. Don’t dismiss the advice of others just because they have little to no content published and don’t take words of those who are popular and with a huge catalogue as gospel. Both sides can offer very valuable advice and feedback but they can also spread misinformation.
How to format?
Example 1: Lists
Name: Tom
Age: 25
Gender: Nonbinary, any pronouns
Instead of commas, you can also use pluses, but to me it looks too cluttered so I prefer commas. There isn't that much of a token difference either way.
How does it work?
You simply list traits in whatever order you choose. Some people use commas to separate traits, others use pluses. There isn’t a real difference, just keep in mind that the 2nd option is a bit more token heavy.
Example 2: Sentences
{{char}}’s name is Tom, but they also go by T, Tommy and Thomas. He is 25 and identifies as nonbinary. Tom uses any pronouns.
How does it work?
You describe your character using full sentences, as if you were writing a story.
Example 3: Ali-Chat/Q&A
{{user}}: “What’s your name?”
{{char}}: *smiles brightly and runs a hand through his hair* “I’m Tom!”
{{user}}: “How old are you?”
{{char}}: “25 years young!” *They chuckle and lean back in the chair.*
{{user}}: “What’s your gender?”
{{char}}: *tilts his head to the side* ”Someone’s curious, eh? I’m nonbinary, though any pronoun works; I don’t really care.” *He shrugs nonchalantly and smiles at {{user}}*
How does it work?
Imagine as if you were having an interview with your character. It’s crucial that you describe their actions as well; it will teach the AI mannerisms of your character and that will carry over to the actual chat. You can read more here and here
Naturally, these examples are not exhaustive, there are a lot of other methods out there, but these are the ones I see used the most. All of them have advantages and disadvantages over each other, such as:
- 1st example is the least token heavy, however only listing things will prevent you from getting into details about certain things, like backstory or clothing
- 2nd example allows you to get really, really detailed however it takes up a lot of tokens
- 3rd example makes it so that you don’t need to use example dialogues, since the actual description does it already. It allows you to showcase how the character would act when questioned in general, making the AI have a better grasp on how the character is supposed to act. However, it’s the most token-heavy method and you often can’t get into tiny little details.
Is there something I should never do?
Don’t strictly stick to just one style, use a mixture of them; I see most people use a mix of 1st and 2nd one, so if you’re new to this whole thing, start out with that. I strongly advise against the usage of W++; it’s a bot formatting method that looks something like this:
[Info: “trait” + “trait” + “trait”]
You should stay away from this method, because it takes up a lot of tokens and looks fucking ugly. Example:
[Personality: “withdrawn” + “quiet” + “introverted”] is about 18 tokens
{{char}} is withdrawn, quiet and introverted is about 10 tokens
Personality: withdrawn, quiet, introverted is about 9 tokens.
Saving on token count is important, because it allows you to invest them elsewhere and the fewer the tokens, the better the memory (not to mention improved accessibility). Some websites, like character.ai, have a character limit; getting rid of things that ultimately aren’t needed will allow you to include more information.
Hell, even the creator thinks it's garbage.
POV
POV stands for “Point of View”. In terms of bot making, it refers to whatever gender is the intended audience.
- Malepov - {{user}} is male
- Fempov - {{user}} is female
- Anypov - {{user}} is any gender
Once you decide on a POV, you should not switch it around in order to not confuse the bot.
Perspective/narrative
Narrative writing refers to the process of telling a story or recounting a series of events. Bots can work just fine with any perspective.
- 1st person: I/me/myself
- 2nd person: you/your/yourself
- 3rd person: he/she/they
Any format can be used with any perspective, but I noticed that anypov bots sometimes get confused if you’re using 3rd person and it can lead to misgendering (as in, the bot constantly referring to the user using they/them pronouns even if otherwise specified elsewhere) and general confusion, like the bot not fully grasping the user’s gender and leading to funny situations during sex scenes. Because of this, I recommend 2nd person for anypov bots.
Format notes
- General stuff:
- Most models understand made up concepts, such as MBTI or DND alignments, however a lot of them have a tendency to lean into those so much it might make the character come off as a caricature. Make sure to put some other traits alongside that.
- Don’t put “{{char}} is [character] from [game/show/movie/whatever]” and leave it at that. Models have knowledge cutoff dates, so some might not be aware of who the character is (and also some are just really small and don’t have data relating to whatever media the character is from). For example, GPT 3.5 has a knowledge cutoff of September 2021, it will have pretty much no knowledge of anything made after that, causing the character to act OOC.
- Avoid including special fonts in your bot’s name and the actual description. This is because some models can’t fully understand that stuff, causing them to hallucinate and make up certain information more than usual. As for the character’s name, using fonts makes the character harder to search for
- Likes/dislikes:
- Avoid referencing the user in the dislikes or likes section, unless the scenario really calls for it.
A lot of people who do that don’t bother including other things, making the bot feel flat.
In some cases, it’s just not needed. For example, if the scenario assumes that {{char}} and {{user}} are friends/a couple, then stuff such as “likes {{user}}” is not needed; they would not be this close if that was not the case.
Putting the {{user}} in either the dislikes or likes section can skew interactions, making certain roleplay types (like slowburn or enemies to lovers) less satisfying.
This doesn’t mean you should never ever reference the user in those sections! If you want to go for a specific scenario, it could work; for example, if {{char}} has a secret crush on {{user}}, then “touching {{user}}” could enhance interactions.
- Avoid referencing the user in the dislikes or likes section, unless the scenario really calls for it.
Here is how I personally split likes/dislikes. I will use 6 traits as an example, because I prefer working with even numbers:
Canon characters: 3 of them should be something shown and stated in whatever media they’re from, 2 should be something implied, commonly believed about the character by other fans or something that just makes sense based on the characterization, the last one is something random but still plausible to add some spice. I’m gonna use Ghost from COD as an example for this. Here is what his likes would look like:
Dark/dry humour, dark and tight clothing, John ‘Soap’ MacTavish, dogs, reading, tea
And here are dislikes:
Snakes, Philip Graves, taking off his mask, clinginess, overly emotional people, chocolate
To sum up: the majority of likes should be something definitely canon, a small chunk should be something that’s very likely, then the last bit is something made up, but still relatively plausible.
Original characters: Since it is your character and you know them the best, 4 of them should be something you came up with yourself, one should be something random but plausible; try to come up with something on the spot, don't ponder too much on it. Last one can be something your friend or a fan of your work said about them. If neither are an option, use a chatbot to generate something random for you
- Literally anything can be in a likes/dislikes section, do not limit yourself. Include people, animals, activities, traits, feelings etc., do a good mixture of all!
- Avoid redundancy, make sure likes/dislikes mesh with the personality. For example, if you described your character as an abusive asshole, you don’t need to mention that they enjoy hurting others, because it’s a given considering the traits. If your character isn’t masochistic, you don’t need to state that they dislike getting bullied, because it’s obvious.
- Models work better with positive prompts rather than negative prompts and a lot of them need reasons to do stuff. For example, something like dislikes bananas may not work as well as something like dislikes bananas, because they are too soft and mushy. Again, certain models do well enough with the 1st way, but some don’t so make sure to test.
- Sexuality:
- When it comes to very well known terms, pretty much every model will know what they mean, but with more obscure labels you might need to provide a brief definition and what genders they’re attracted to. Make sure to test thoroughly.
- Some models are made to be very agreeable, so it might disregard anything relating to sexuality because it aims to please the user. You can mitigate that by stating something like “exclusively attracted to [gender], no interest in [other gender]”. Avoid using phrasing like “dislikes/hates [gender]” as that can lead to sexist output.
- Multiple characters:
- I recommend that you stick to 5 characters at a maximum. This is because your bot might end up absurdly large or you will have to cut content from all characters involved. Quality over quantity
- Avoid using {{char}} unless you’re referring to everyone involved!
- I’ve seen some people say that you can just write “{{char1}}” and so on and the model will catch on. This is not true, the only valid macro is {{char}}, anything with numbers doesn’t do anything.
Writing personality
Legend:
Text - stuff that’s (in my opinion) essential
Text - stuff that can be nice to flesh the bot out, but isn’t 100% necessary
Text - notes, pointers, examples etc.
List examples
Do not include headers in the actual description. This is just to space things out
Basic info:
Name: include nicknames
Age: you can include how the character looks if there is a huge difference (ex. Age: 431, looks late 30s-early 40s)
Gender: if a character uses “nonstandard” pronouns for their gender (ex. They’re female, but use any pronouns or are male, but use he/they), you should specify them here. Otherwise, just stick to their gender and the LLM will assume correctly
Race/Nationality/Species: Some LLMs struggle with non-human characters, so make sure to describe the species of your character in detail, especially if it’s not well known
Occupation:
Speech pattern:
Background/Backstory: if you’re making a canon character, you don’t need to get super detailed as most models will fill in the blanks.
Relationships:
Relationships: you can include specifics regarding the character’s relationship with said person (ex. “Stepdad, mutual dislike” or “Sarah, friend, one sided crush from {{char}}’s side”)
Relationship status:
Relationship preference: i don’t know if there is a more specific word for this, but i'm referring to stuff like polyamory, monogamy, preferring flings and one night stands or serious, long term stuff etc.
Personality:
Traits:
Likes:
Dislikes:
Skills:
Appearance: all of this can be just shoved under one category called “Looks” or something
Physical traits: avoid using phrases that are subjective (ex. Pretty, ugly, cute)
Clothing/outfit:
Extra: minor things that are relevant to char’s appearance, such as scars
Sex/NSFW:
Sexuality:
Sexual characteristics:
Kinks/Fetishes:
Role: describe what position you want the bot to prefer during sex (ex. Top, sub, bottom, dom).
Sexual experience: bots often act like sex gods. If you don’t like that, use this section can be used to influence the way the bot fucks
Other:
Name:
Personality:
Description: this is where you describe how the character looks, what they’re wearing, age, species, race, (dis)likes etc.
Sex: this is where you include everything related to sex and sexuality
History:
Prompts: this is where you put text to push the bot to act in a certain way
Name:
Species:
Age:
Height:
Outfit:
Features:
Speech:
Personality:
Likes:
Dislikes:
Relationships:
Background:
Romance: This is where I go into detail about how the character acts within a romantic relationship. I like to put their preferred love languages here and how they feel about certain interactions. Example: Loves hand holding, likes going on dates and cuddling, dislikes pet names, hates PDA.
Sex: This is where I get into detail about everything sex related. Fetishes, preferences, reactions etc.
Other:
Sentences
It’s hard to do a formatting guide when it comes to writing, because there are so many different ways to do it, but here is a starter to help you get the creative juices flowing:
[Name] is a [age description] [gender] from [country/city/general place]. They enjoy [likes]. They work as [occupation] and are [describe how the character feels about their job]
-> Lily is a young woman from New York. She enjoys expressing herself through various means, such as painting, writing and dancing. She works as a junior chef; she doesn’t really enjoy it due to how stressful working in a kitchen can be and she aims to one day work in a field more aligned with her interests
Experimental:
The following template(s) is just me getting quirky and experimenting with stuff. It may not 100% work, so please DM me your results.
XML inspired template:
During roleplay, you must consistently stick to every piece of information contained within ‘<info>’
<info>
{{char}} is [name]. They also go by [other name 1], [other name 2], [other name 3]. By ‘name’ I mean literally anything your character goes by; honorific, nickname, title etc.
<basics>
</basics>
<personality>
</personality>
<likes>
During conversations, make sure to reference the following topics in the positive light:
- X
- Y
- Z
Outside of conversations with {{user}}, make {{char}} do the things described in the<likes>
section.
</likes>
<dislikes>
During conversations, make sure {{char}} reacts negatively when the following is brought up: - X; reasons
- Y; reasons
- Z; reasons
^ reasons for dislikes are often needed because a lot of models work better when given a reason to do something. Feel free to not include if you find it works well enough with just lists
Different personalities react differently, here are two examples
1. Docile/calm character: Due to their personality, [name] won't lash out when these things are brought up or present, instead they will express his discomfort, disgust and dislike through body language or implications
2. Aggressive/assertive character: Due to their personality, [name] will be obvious and straight to the point with their discontent. {{char}} will lash out and make a scene when exposed to those things. Make sure their body language and speech clearly highlights their dislike of the things listed above
</dislikes>
<sex>
</sex>
<romance>
</romance>
<family>
</family>
<other>
</other>
</info>
Multichara:
All multi character bots can use the templates shown below, just do keep in mind that you will need to remove/simplify some things to maintain a reasonable token count. All of these examples use two characters, however you can adjust it to include however many you want.
In order to use this, just edit it, then copy and paste at the very top of the description.
{{char}} refers to two people, [name1] and [name2]. While roleplaying, make sure to include both characters where appropriate. [name1] and [name2] are two separate entities, while replying to {{user}} make sure both of their personalities shine through. Make [name1] and [name2] interact with each other and {{user}} where appropriate.
You will play the role of [name1] and [name2] in a scenario between these two characters and {{user}}. Each reply should include actions and dialogue of [name1] and [name2], unless context states otherwise.
Scenario:
You are not a character, but a narrator in a scenario. The scenario is as follows: [describe what you want the bot to do].
Introduce believable NPCs that can function within the context of the scenario. Give them their own names, backstories, personalities etc.
Writing introductions
Introductions don’t affect the way the bot acts and it’s just supposed to be a description of the character. Here is a list of what I often see included:
- Brief description of what the bot is about
- Intended POV
- Credit to the creator of the bot’s image. If it’s AI generated or a screenshot, say so
- If a bot is a part of a series, then links to bots previously made in said series
- Links to other stuff, like social media
- (If applicable) Number of greetings + brief description of the scenario
- (If applicable) What lorebooks are needed
- (If applicable) Content/Trigger warnings, including any other important information. Get explicit and allow people to make an informed choice
- Good:
TW: noncon/SA, brainwashing - explicit, gets to the point
CW: suicide and self harm - explicit, gets to the point
Contains scat and watersports - explicit, gets to the point
Fempov | Breeding | Non-consensual | NSFW intro - clear
Rape in backstory
Heavy angst - Possible torture - Implied mass murder - Bad:
[botname] will do bad things to you/[botname] isn’t a good person - unclear, too subjective
Not for the faint of heart - unclear, too subjective
TW - doesn’t actually state what the content is
I usually don’t add trigger warnings, I think they’re stupid and spoil the bot, but - stop bitching.
- Good:
Do keep in mind that more content warnings =/= better warnings. For example, if you have a warning for murder, you don’t need a warning for death too. Try to use full words instead of acronyms too, unless they can be very easily googled and are widely known.
Writing greetings
A greeting (or an initial message) is the first message seen by the user. Here is a list of pointers
- Make it descriptive enough to give the user an idea of what’s going on and who the character is (especially important if it’s an OC), but don’t go overboard.
- Leave the ending of the message somewhat open-ended so that the user has some agency over their own character
- Make sure your formatting and markdown is consistent. The bot will mimic it throughout the roleplay; it’s important that you stick to a specific format so that it doesn’t look jarring and all over the place
- Check your grammar and spelling
- (if applicable) Make alternative greetings as different as possible; explore different settings, scenarios and emotions. Get creative!
- When it comes to alternative greetings, I like to switch up the POV. Generally, most of my stuff is anypov, but I will sometimes add a greeting thats malepov/fempov just for the hell of it
To sum up, give the user something to work with. You don’t need to write a whole ass novel, but don’t give the user a waves hi treatment either
Writing scenarios
Scenario refers to the situation in which {{char}} and {{user}} found themselves in.
- Should be short, up to 1 paragraph
- Should give some context as to why the situation from the initial message happened/is happening
- Do not describe a specific place in this field. If the character or user decide to go elsewhere this will cause confusion from the bot’s side
- If you’re making multiple greetings, leave this field blank. The only exception I can think of is if you’re making an RPG bot, since the user will do exactly the same thing, but their start is different
Writing example dialogues
Example dialogues can be good to show the model how the character is supposed to behave.
- You can use a <START> tag, but <END> or </START> tags aren’t needed. Make sure to use it to separate different examples. Do note that some models don’t work well with this formatting and others do.
- Despite the name, dialogues aren’t the only thing that should be included. Think of it as if it was an excerpt from a book; show the way the character acts, talks and interacts with the environment.
- However, this doesn’t mean you can’t just have example dialogues that are just, well, dialogues. Just make sure they bring something to the table; highlight slang, dialect and accent used by the character.
- Avoid specifying the actions of the user, as this will encourage the bot to narrate the user’s actions. You can make the bot react to the user’s hypothetical behaviour, but you should try not to include them as a separate entity. Doing it once or twice is mostly fine, but avoid doing so repetitively.
- Situations mentioned in the example dialogues can affect the bot’s behaviour. Unless this is what you’re going for, avoid including a lot of EDs of one specific content type (sexual, violent etc.) as it will encourage the bot to act in that way.
Example dialogues are not essential and can be skipped out on
Good example:
After a very... eventful night together, {{char}} wakes up and looks at {{user}}, a blissful smile playing on his lips. "Well, look at you." He murmurs as he brushes a loose strand of hair from {{user}}’s face. "I must still be dreamin’…"
- My own card :)
This is a good example, because it shows how I want him to talk and gives hints about his personality, like him brushing a strand of hair from someone’s face implies he’s affectionate.
Here are some more good examples:
<START>
{{char}}: “What… what the FUCK do you think you’re doing?!” She yells, before sighing and pinching the bridge of her nose. “Actually, shut up, I don’t want to know.”
<START>
{{char}}: “God… you’re fucking ridiculous.” She says as she stares at {{user}} incredulously.
{{char}}: Natsu's eyes light up with anticipation. Really!? How strong are we talking about? And you know, now I wanna try battling you sometime! Tell me, what kind of magic do you use? Maybe I can try and guess! He grins, and claps his hands with excitement. Fire? Water? Earth? Lightning? Maybe even something more bizarre? As for myself, I'm all about roasting my opponent in a fiery blaze! Natsu states with confidence, thrilled at the thought of getting to demonstrate his own skills to the newcomer.
- by Roth Skyfire, thank you!
{{user}}: Hey!
{{char}}: *smiles and waves.* “What’s up?” *They sign and watch {{user}}’s face, waiting for a response*
<START>
{{char}}: *gently taps {{user}} on the shoulder. Once {{user}} turns to face them, they point at a cute dog passing by*
<START>
{{char}}: “Can you say that again, but slower?” *They sign, a slightly embarrassed smile gracing their lips.* “I didn’t catch that.”
{{char}}: "Now that was a proper bloody rootin'."
{{char}}: “Bloody piker!”
{{char}}: “D’they make dem shirts for men?”
{{char}}: “Piss off, you mongrels!”
{{char}}: “Thanks, mate!”
{{char}}: “Sorry, mate.”
{{char}}: “G’day!”
{{char}}: “You bloody bogan!”
- First one, mute character. Second one, Sniper from TF2.
Bad example:
{{char}}: Hey, im Mark
{{user}}: hello Mark
{{char}}: nice to meet you :)
- JanitorAI character creation
This example is bad because it doesn’t give an idea on how the character is supposed to speak and the usage of the emoji might encourage the bot to use them during roleplaying, which is usually a bad thing since most scenarios assume you are speaking to the bot rather than texting it. Mentioning the user like this can also often lead to the model taking control of them
Some more bad examples:
{{char}}: You have got to be kidding me!
{{char}}: Play ball!
{{char}}: This sucks!
- My own example (yes, this is Scout). This is bad because it doesn’t give the AI anything to work with, it’s just kind of there. This could be improved by highlighting the character’s accent and including more slang examples to give the model an idea on how he should talk.
Additional help
“What does testing a bot even mean? How do I do that? Do I need to do it?”
Testing a bot simply refers to having multiple conversations with the bot and seeing how it manages. The purpose of it is to see if it matches your standards, sticks to the storyline and personality and is generally coherent.
There are multiple ways of testing bots, here are two examples:
Q&A
Act as if you were doing an interview with the bot. Ask basic questions first, then get progressively more and more complex.
If the bot does well enough, keep the information as is.
If the bot gets confused, gives nonsensical or untrue answers, then edit it until it understands what you want from it and can consistently recall information.
Remember not to just test info recall, but other things as well, such as mannerisms, speech etc.
Normal roleplay
Do just a normal, regular roleplay with your bot and see how it gets on. Make sure to touch on different things included in the personality, especially stuff you believe might cause the most issues.
As you go on, make notes of what the bot can or cannot do well, then do adjustments.
You don’t actually need to test a bot before releasing, but I recommend it since you can tell what does and doesn’t work, allowing you to make changes and improve the quality of the bot. Not to mention that you most likely will use the bot yourself, so changes will improve your experience too.
While testing:
- Try different models and compare results
- Try different personas
- Try different custom prompts. If you’re using a site like Janitor or either of the Venuses, I’d recommend that you completely delete your advanced prompt and see how the bot works then
- Do multiple conversations, try to steer them in different directions and see how the bot copes with it
“How do I actually start?”
Start off with essential information about the character, then fluff it out and adjust. What ‘essential’ means varies from person to person, but here is my work order:
- Personality
- Backstory
- General appearance
- Likes/dislikes
- Smaller stuff related to stuff above (ex. Age, appearance details, sexuality)
- Work on other things that will be needed to flesh out my character
- Fix stuff. This is where I make sure that there are no redundancies, repetitions, grammar mistakes etc., I also work on my token count and reduce it where I can.
If you’re struggling with inspiration, take a break from attempting to make a bot (please don’t force anything, as you will not enjoy the process as much) and gather inspiration elsewhere.
Naturally, you don’t need to do work in this exact way, this is just how I go about things.
Take your time with it and once you’re satisfied go on and publish!
Resources
A list of resources that can be useful in botmaking!
Other guides
Iorveth’s guide (janitor specific). Here is a more up to date version
Avenrose’s JLLM guide - bit outdated, but still contains relevant content
absolutetrash’s guide - written primarily for GPT 4, however has a lot of content that can be applicable to other models
Prompts
My own prompts
Story prompt generator
Prompts for Janitor by Avenrose
Utility
A guide for sharing your bots by lunaxlee - a guide that goes into depth about how to effectively advertise your bots
Zoltan’s AI Character Editor - a website that allows you to work on your bot. Nice and simple layout. Here is another version, which is the exact same thing, but it’s more suited for SillyTavern (+ has some QOL features).
Getting rid of W++: Paste the bot into a Word document > Home > Replace (between Styles and Voice sections in Microsoft Office 2021). In the first section, put quotation marks, leave the second section empty. Do the same thing for parenthesis. When it comes to pluses, do the same thing just remember to include a space before the + and replace the whole thing with a comma. I am aware that there is an editor made by Zoltan which does this exact same thing, but it’s really outdated and semi-broken.
Quillbot, Grammarly, ProWritingAid - grammar/spell checkers. Has a premium option but you can get by just fine without. You can also use GPT, OperaGX’s Aria, Google Docs or Word instead.
Name Generator 1
Name Generator 2
SillyTavern technical guide - primarily technicalities (regex, CSS and so on).
Creative
Describing your character (by oishiidesu) - an in-depth guide on how to describe a character
WTF LIST 1 - 300+ positive traits. Here is the same exact list, but with meanings.
WTF LIST 2 - 300+ negative traits. Here is the same exact list, but with meanings.
Male haircuts - a list of over 30 haircuts, their names and a brief description
Female haircuts - 60 haircuts, their names and a brief description
A guide to describing voices + a few examples
Describing skin colour without sounding like a racist shithead: The Guide
NSFW
There aren’t any completely exhaustive lists since people will fuck anything have so many kinks/fetishes it’s impossible to list every single one of them. If you can’t find one on either of these lists, just describe it.
Kink list 1
Kink list 2
Sexual prompt list
Kinktober 2023 prompts