A guide to common botmaking mistakes

Despite how effectively free-form botmaking is, it is very, very possible to do things that would easily be classifiable as mistakes.
Here are a few.

(this is kind of a first draft if you're seeing it right now)

WHEN YOU ARE TESTING A BOT, ALWAYS LOOK AT THE CONSOLE or OTHERWISE VIEW WHAT YOU'RE SENDING TO THE LLM.

Not knowing how the sausage is made is responsible for every single mistake in this rentry, and rectifying that is the solution to (almost) all of them!

Examples of dialogue

The weirdest field. The ST docs do an okay job of explaining this, but it's important to note the following:
If you do not write the field

1
2
3
4
5
6
7
<START>
{{char}}: "Almost exactly like this," the guide says, gesturing with a hint of mischief in its eyes. 

It points around the text. "Note the <START> and the prefixes on each line. This splits the dialogue up into separate prompts."
{{user}}: also you can add user dialogue to demonstrate what should beget what
{{char}}: The guide sighs, slouching a little. Somehow. "Really, an entire rentry could be written on just this field."
{{user}}: check advancedcardwritingtricks on rentry, entry 10, if you want stronger guidance but that's out of scope and opinionated 

it will NOT SEND and you will be wasting your time, confused as to why nothing you put there matters.
This format strictness is mostly ST-specific, but the format is common and formatting like this should increase general compatibility.
(<START> isn't necessary for the first example, for what it's worth, but it also won't break anything.)

{{char}}

Despite examples of dialogue requiring you use {{char}} as the prefix and making it seem special, it is treated like this nowhere else.
If you were to write the line {{char}}'s name is Osaka, to the AI, that would look like Osaka's name is Osaka. As well, {{char}} should not speak for {{user}} simply looks like Osaka should not speak for Anon, which doesn't accomplish anything close to what you'd want.

The main use for {{char}} (outside of presets) is making it easy to rename your bot, as it's just a macro for the card name. Nothing more, nothing less.

Lorebooks

Lorebooks do not include the key they were triggered with, nor the title.
If your lorebook entry is something like

1
2
3
Name: Seraphina
Keys: Seraphina, Sera-chan
Content: Slut elf

when Seraphina is mentioned in context, all the LLM will see is Slut elf inserted randomly with no additional context.
Easily fixable, just make it something like Seraphina is a slut elf. in the content field.

The LLM does not know how the LLM works

If you are trying to figure out why a bot is or isn't doing something, you would be incredibly lucky to get a straight answer by asking it. LLMs are pure text prediction and do not have the ability to introspect on themselves -- they are not trained on their own training process, and anything they DO know about prompting is learnt from people talking about AI on the internet... before it released, meaning it will always be mildly out of date.

You will, unfortunately, just need to fuck around and find out.

Formatting

If most of your bot's description is over-shadowed by the "formatting," you're probably overdoing it. Whether it's [{{char}} bizarre_stuff(Like, This)] or just an over-nested XML document, you should instead be writing in a clear manner first and foremost.
You do not need any strong format for most models to understand what you are getting at. Sections like "appearance" and "personality" can be helpful for catching attention, but you can simply do anything from markdown headers to XML sections to Appearance: for that.

Edit
Pub: 17 Dec 2024 16:52 UTC
Edit: 18 Dec 2024 20:00 UTC
Views: 434