While the introduction was meant to give you an idea of how each format works independently from each other and why they're so good, this character formatting and writing guide is meant to give you a step-by-step in-depth explanation of the character creation process and everything you need to know to set you apart from other bot creators.
Most bot creation interfaces will have many boxes for writing character information in. The only ones we care about are Name, Description, Author's/Character's Note (if available on your frontend), Greeting Message/First message, and World Info/Lorebooks (if available on your frontend).
Before you get started, you need a character editor. This one is the one I recommend.
I will refer to the feature called Author's/Character's Note a lot during this guide before explaining what it actually is, so if you can't wait to know what it is, tl;dr, it's a feature that injects a chosen prompt X messages above the last message.
This field is pretty self-explanatory. This is where you write your character's name. There's a neat concept called "Name bias". Each name is more than just a name; it contains bits of information. For example, let's say your character's name is "Caera Denoir". With the name alone, the model will assume the character is a woman of noble birth, since the last name "Denoir" sounds kinda fancy. We can take it one step further and instead of just naming the character's name, you could also include a title or a descriptor. A lot of information about the character is conveyed through just these four words; a potential backstory, personality, profession, motive, gender, etc…
Something to keep in mind:
If you write an OC, or a character with the same name as another popular character, chances are that the model will already have knowledge of that more popular character. This might affect the way the model portrays your character.
The description box is going to be the most important one since this is where your Ali:Chat example dialogues are going to go.
Feel free to skip this section, but it's important to understand the way models digest information. One concept that's important to understand is context. Think of it as some sort of "first in, first out" pile that contains the character's description, chat history, and everything else that goes into the model. The description always remains in context, no matter how long your chat is, while the chat history eventually leaves context. So no matter what, the contents of the description will always have some sort of impact on the model's outputs.
Permanent tokens = Never leaves the context pile, no matter how long the conversation is.
Temporary tokens = Will eventually be pushed out of the context pile after enough messages are sent.
Description box: permanent tokens
Examples of dialogue box: temporary tokens (permanent if the setting is enabled)
Greeting message: temporary tokens
Chat History: temporary tokens
Author's/Character's Note (Insertion Depth @ 4 = placed right above the 4th message counting from the bottom): permanent tokens (This feature is explained later)
Chat History (Your and the character's messages): temporary tokens
This representation does not include Lorebook entries or ChromaDB because depending on your settings, their placement in the context pile can vary while Author's/Character's Note's placement will most of the time be the same.
The thing with context is that the lowest point in the context has the strongest influence on the model's outputs So when writing things in the description, it helps to have the most important part close to the bottom of the box to make sure it's as strong as possible. In this case, you'll want to have the PList at the bottom of the description box, your most important example dialogues right above it, and then place any more minor ones at the top. Do note that this only impacts the start of the conversation. The description will at some point be so high in the context that the order won't matter anymore because of how weak it'll become.
If Author's/Character's Note is an available feature on your frontend, you need the PList to be inside the Author's/Character's Note instead. This is highly recommended.
As you can see, the visual representation has 3 chat histories. an old chat history, a normal chat history, and a recent chat history. According to AliCat, when your chat reaches a high amount of tokens (when a lot of messages have been sent), the context can be divides in 3 memory baskets for the character.
Now you may be wondering what PLists and Ali:Chat have to do with each other. They are pretty much a match made in heaven.
The PList allows you to have a list of all of your character's relevant traits, clothes, body, etc… while your Ali:Chat's goal will be to reinforce your character's most important traits, the way they talk, mannerisms, and whatever else you deem important, without having to worry too much about finding a balance between trait reinforcement and speech reinforcement.
Here is the problem we have though. As the conversation with your character goes, the description box becomes much weaker and enters the second, then third memory basket, which means that it will become irrelevent if the conversation goes on for too long. This is very bad, because the Ali:Chat example dialogues are what define your character, and if they become irrelevent, then your character will start acting differently.
There is an easy fix though! This is where Author's/Character's Note comes in. The third basket's contents become irrelevent... Unless the user pulls at them! Remember how I stated that the Author's/Character's Note was generally in the first basket? This is why we desperately want to have the PList in there. Because the PList is so closely related to the Ali:Chat example dialogues, having it in Author's/Character's Note allows the model to pull at the Ali:Chat example dialogues and keep them relevent to the current context. This makes it so that your character remains in character even after you reach max context.
So. How does one write their character? First of all, you need an idea. Think about what kind of character you want to make: their personality, clothes, way of speaking, backstory, mannerisms, etc... If you're making a character that already exists, then it's a lot easier, just study their wiki and and appearances in whichever media they come from.
Now that you have an idea of the type of character you want to make, next, you're gonna want to work on the PList. This PList will serve as your basis for the character and contain a list of every trait that the character possesses. Feel free to copy the example below to format your PList but don't hesitate to add categories. For this writing guide, I'll use Pardofelis as my example.
Something to keep in mind:
I like keeping my PList in a single line unlike the example I provided in the introduction. You can separate your categories however you wish as long as it's consistent. In my case, I like keeping everything in a single line, and using ";" as the category separator.
Something to know before you start writing:
Most frontends will have placeholders for the user's name and the character's name.
- {{user}} will automatically be replaced by your name.
- {{char}} will automatically be replaced by the character's name.
I personally like having the character's name, but have {{user}} to make my bots usable by everybody, no matter what their username is.
Your basic PList should look a little something like this:
[ Pardofelis' appearance: bra(black), miniskirt(black), sashes(purple), hood(white, long, cat ears), gloves(black, purple), battle boots(black, white heels), cat ears, cat tail, left eye(blue), right eye(green), Heterochromia, hair(light brown), Physique(catgirl, short, petite); Tags: comedy, fantasy, adventure, anime, manga, light novel; Pardofelis' persona: catgirl, nimble, lively, playful, cheeky, greedy, evasive, resourceful, curious, acts stupid when confronted, loves cats/shiny things/napping), dislikes confrontations, shop-owner, calls customers she likes boss ]
Different categories you can put inside the PList:
Appearance: Includes clothes, body type, features, etc...
Tags: Sets the tone for the scenario, indicates to the model which elements it can introduce, etc... Here's a small tag database made by AliCat to help you get started if you're not sure what to do. The impact of tags is extremely underrated. You don't necessarily have to use the usual tags, you can also put keywords in there, I refer to them as "hints". These hints help steer the scenario in a certain direction without pushing the model too hard, making it much more versatily.
Persona: All of your character's traits, relationships, abilities, etc...
Other categories you could include: Location, Scene, Scenario, Setting, Genre, Author, Title (show, movie, book, etc...), Style (writing style), another character, a weapon, a concept, an ability description, an instruction on how to behave, etc...
Make sure that categories are placed depending on their importance for the character/scenario! The minor traits are written first, and the more important ones are at the end. In my case, I prioritize body/clothes the least and persona the most. The difference it makes is small, but lots of small things added up make a big thing in the end.
Keep in mind that your first PList will never remain the same throughout the entirety of the character creation process. As you add example dialogues and come up with new ideas, you're gonna want to add them to your PList. Remember that your PList is supposed to contain most, if not every character trait and RP related information.
Now that you have the first basis for your character, AKA the trait list, you're gonna want to write these Ali:Chat example dialogues. This is where things get hard. You want to focus on your character's most important traits, as well as what you want the conversation to look like. As AliCat would say, "You put into the card what you want out of the card. If the purpose is to get to know the character, then your example dialogues should be about getting to know the character. If the purpose of your character is chatting, then your example dialogues should reflect chatting!"
It is also possible to include both long, and short character responses inside your card, and then place them according to what you want.
If you want your character to write short responses, then have the example dialogues with shorter responses near the bottom of the description box! Likewise, if you want long responses, then have the example dialogues with long responses near the bottom of the description box.
Because the greeting message is always the lowest in the context pile at the start of the conversation, it will still have the strongest influence on your bot's responses. So having an extremely long greeting message will reduce the impact the short example dialogues will have on your character's writing style.
Keep in mind that these are just suggestions. There are many more ways to write your example dialogues that you should experiment with, which is why you shouldn't blindly copy others' example dialogue structures, and instead think about how you want your character to talk, act, and feel, and how to design your own example dialogues.
With all that in mind, here's my thought process for Pardofelis, a character I wrote with roleplay in mind:
Great! So now I can write her a cute backstory, including all the traits above.
{{user}}: "Brief life story?"
Pardofelis: "Well, ya see, I didn't grow up with the fanciest life." She gestures at herself with a self-aware chuckle. "Spent most of my early days on the streets, just me and some stray cats—nappin', sneakin', stealin'. Good times, good times." Her ears twitch as she recalls fond memories of climbing through alleyways and dodging angry shopkeepers. "Life was tough back then, but I had my fair share of fun. Made a livin' sellin' whatever shiny things I could get my hands on! That's where these nimble fingers came in handy." She leans against the counter, her grin widening. "Now that I've got this lil' treasure trove of mine set up, though... Life's been quite excitin', y'know? Meet all sorts of interestin' people like you!"
That example dialogue reinforces all of the traits listed above, gives her a backstory and a reason for the way she is, while also reinforcing her unrefined speech and establishing some of her mannerisms and features.
Next, I'd like to reinforce her other traits. This time, what she likes and dislikes because MY goal with Pardofelis is to capture her personality as accurately as possible, and her likes and dislikes seem to me like the best way to do it. Keep in mind that depending on your goals and the character you're making, you'll most likely want to go for different example dialogues!
One neat thing to do when writing your example dialogues is to throw hints here and there related to potential scenarios or directions your roleplay could go. This will make your characters a lot more versatile and fun to interact with. I didn't do it with Pardofelis because the goal was to focus on personality reinforcement. However, here is another character of mine that does things differently, with a focus on roleplay and world building through example dialogues. Feel free to upload her to the character creation website in order to look at how I did it.
{{user}}: "Likes and dislikes?"
Pardofelis: Pardofelis’ mismatched eyes light up. "Oh, things I like? Well, shiny stuff—obviously! Trinkets, gems, anything that sparkles and catches my eye." She glances around the room proudly at her collection of treasures. "And cats! Can't forget about them; always been good company for me since the old days." Her ears perk up. "Plus, nappin' in cozy spots. Ahh, there's nothin' quite like a good snooze surrounded by treasures. As for things I don't like... hmm... confrontations and fighting ain't my cup o' tea. Tend to avoid 'em when I can—I’m no brawler." She shakes her head lightly, ears twitching with annoyance.
Same as the first example dialogue, traits, and personality are all reinforced through her speech, actions, and mannerisms.
Reminder:
Now keep in mind that this is MY thought process for MY character. These traits are the ones I personally considered important. Don't forget what Ali:Chat is about; reinforcing whichever traits YOU consider important through these example dialogues. Instead of "Brief life story?" and "Likes and dislikes?", you could ask the character about their lore, their relationships, information about the world they live in, the setting, their ability/skill/superpower, etc... Anything goes! Just make sure the information is articulated smoothly.
You may have noticed that I didn't include example dialogues about the character's clothes or body. That's because thanks to the PList, Pardofelis' looks, which I don't consider super important, don't need to be described thoroughly inside the description box through example dialogues.
Be careful. The more you write inside your description box, the harder it becomes to keep things coherent. Consistency in writing is key.
If you do not want your character to speak on your behalf, a common mistake people make is writing example dialogues where the character describes the user's actions on their behalf. This will indicate to the model that it's fine to impersonate the user. It's fine if this is intended, but if not, make sure the character describes ONLY their actions.
There are many kinds of impersonation but the one I'm mentioning here is this:
Bot: Hi! Said the man as he pats you on the head. You smile in return.
This is caused by your character card. Make sure that your character card doesn't contain a first message or example dialogues where the character speaks on your behalf/impersonates you because if it does, it's simply going to carry over.
Before putting everything together and finalizing your character's description, make sure to go over your example dialogues one last time and add more traits to your PList that you may have missed or simply not planned to add at the beginning. Remember, every trait reinforced through your example dialogues needs to be added to the PList.
After assembling, this is what Pardofelis' description box looks like!
In terms of priority, I personally thought that PList > Brief life story > Likes and dislikes. So I arranged them accordingly. Though keep in mind that the placement will only have a small impact at the start of the conversation, but as I said before, a bunch of small things make a big thing!
Here's a very basic skeleton you can copy and fill yourself:
{{user}}:
{{char}}:
{{user}}:
{{char}}:
[{{char}}'s body: ;
{{char}}'s clothes: ;
Tags: ;
{{char}}'s persona: ]
Tip:
If your UI has access to Author's/Character's Note, then I HIGHLY recommend putting the PList in there with an insertion depth of 4! This is where the PList truly shines and synergizes with Ali:Chat.
If you write long example dialogues (~150 tokens each), then 1 alone could be enough, however, 2 will guarantee that your character will work properly. The more example dialogues, the more accurate your character will be but the harder it will be to keep the whole thing coherent. Remember to prioritize quality over quantity! A character with 1 well-written example dialogue and greeting message will be a lot better than one with many example dialogues that are poorly written. If you'd like to include more example dialogues about clothes, body, or the lore in general, without flooding your description box with them, then I highly recommend putting them in World Info/Lorebooks, and including traits in the PList that are related to those example dialogues.
For visual learners, the ideal PLists + Ali:Chat setup would look like this!
This feature is one that is present on many UIs and is criminally underused, despite its incredible usefulness. This feature usually comes with four settings.
Note:
This is where, if available, you're always going to want to put your PList. The reason why we want to put the PList in there is simple; the description box is forever stuck at the top of the context pile. Having the PList in this field instead of the description box will make sure it remains low enough in context to be relevant while not influencing the roleplay too heavily. The synergy between PLists and Ali:Chat is most apparent when using this method. This is because while the Ali:Chat examples are stuck at the top of the context pile and lose their strength, the PList in Author's/Character's Note helps pull information contained not only in these example dialogues but also in the rest of the chat history. This ensures that your character doesn't lose their personality after a long conversation and remains faithful to themselves.
Another use for Author's/Character's Note is instructing: It is possible to use this field to instruct the model on how its outputs should be formatted or what they should contain. I personally like using a depth = 0 and frequency = 1 for them. An example could be [ Instruction: {{char}}'s next response must include narration and dialogues. Be creative and make the scenario engaging ]
. This is very basic. You could instruct it to use a more casual language, maybe more explicit words so as to avoid innuendos, etc...
Insertion depth:
This defines the Note's placement in the prompt. The lower the depth, the stronger the Note is.
Insertion frequency:
This defines the frequency at which the Note is injected in the prompt. 1 means it's always there, 0 means it's disabled, 2 means once every 2 messages, etc... For the sake of simplicity, leave it as 1 unless you know what you're doing.
Role:
This option defines the "role" your Note has and is only relevant if you have Instruct Mode enabled.
Don't worry if some of the settings I mentioned here aren't available in your frontend. Pygmalion.chat already uses the optimal settings for characters.
This field is both the most, or least important one depending on your use. It is always the lowest in context at the beginning of the conversation, meaning that it has a massive impact on your character's writing style at the start. While the Ali:Chat example dialogues help reinforce the character's traits, the greeting message helps set up the scenario, the way the character speaks, their relationship with you, and a lot of other aspects that impact the scenario. Its impact is so big that even a card with the best PLists + Ali:Chat description possible will perform much worse if the greeting message is low quality.
Good news though, the greeting message is temporary, meaning that it will eventually leave context when you reach the limit, meaning that you don't have to care about token efficiency too much while writing it, and can go all out with the trait reinforcement.
Because of its huge impact on the character's writing style, if you want the character to give you long and detailed responses, then go all out and make it super detailed. Likewise, if your goal is to have a conversational bot that doesn't write walls of text, then you could also keep the greeting message short and concise.
Tip:
The reason why I referred to it as both the most, and least important field is because it's possible to not have a greeting message at all. This is honestly one of the most fun things to do and I highly recommend you try this: Because there's no greeting, you the user, can do something I call "lazy 0-shot scenario prompting". You simply need to delete the greeting message and give it a direction by prompting for a scenario with something like[ Scene: Pardofelis is robbing {{user}}'s house; Tags: robbery, chase, fantasy, betrayal, drama; Instruction: Your response must bla bla bla bla. ]
.
You can do this on every character simply by deleting their greeting message, and removing the scenario from the PList if there's one.
Here's Pardofelis' greeting message, once again designed for a roleplay that involves long and detailed character responses:
Pardofelis yawns and stretches, gracefully arching her back as she jumps off a shiny pile of trinkets with a cheeky grin. Her cat-like eyes sparkle like precious gems as she stumbles towards you, the various trinkets hanging from her outfit jingling gently with each step. "Ah, hello there, boss! You've just stumbled upon the most purrfect treasure trove there is, run by yours truly!" She strides towards you, her tail swishing excitedly while her cat ears remain perked up with curiosity. "Welcome to Pardofelis' Emporium of Shiny things!" Her tail swishes energetically as she takes a step back and observes you closely. "So tell me, boss—what're ya lookin' for today? Got anything special in mind? Or maybe you're here to sell a treasure?" Her eyes twinkle mischievously as she tugs at one braid, eagerly awaiting your response.
From body description, to clothes, to mannerisms, to personality, to current occupation, everything is described and sets up the scenario, as well as the tone for the roleplay.
If you do not want your character to speak on your behalf, a common mistake people make is using the greeting message to narrate the user's actions. This will tell the model that it's fine to impersonate the user. It's fine if this is intended, but if not, make sure the character describe their actions only.
This feature, despite not being very beginner friendly, is a massive game changer. Due to its complexity, and because I'd rather not make this guide any longer for something that not many people will use anyway, I'll instead redirect you to this guide! Although it's a feature that seems difficult, I highly recommend you at least give the guide a quick read and learn how to make Lorebooks when you think you've gained a good grasp on how to make PLists + Ali:Chat characters. Having a Lorebook for your character will make it feel a lot nicer.
Welp, now that your character is done, all that's left is testing! This is easy, really. You pretty much want to pick one of the popular/working models. If you can't run anything locally, Horde and Colab are available. Step 2 is asking your character questions about themselves to see if they're in character. This is to make sure traits are reinforced properly.
Sometimes, if your character acts weird, it might be the model's fault! Check out my and AliCat's LLM ranking to find the best models to test on, and feel free to check out this FAQ if you're ever curious.
And finally, the most important thing is making sure your character behaves the way you want it to behave. If it does, then congrats! You did it!