Slopmaking Advice

XML

XML good. See the docs. I'm not arguing from experience or anything, the docs just say it.

See hitogami's work, momoura's work or koikoikoihat's work for examples of how to use XML to section your card. In particular, note that choosing any of <APPEARANCE>, <appearance> or <Appearance> is fine, and including text outside of any XML tags in the description is also fine.

In doubt you can validate your XML wherever. Just remember to surround your text in root tags like <char></char> before copying and pasting it.

XML good pt. 2

{{char}} should ideally be just your character's first name. This:

  • saves tokens for free (zero cost)
  • makes <{{char}}> valid XML

Do not cargo cult

Botmaking in chub is 90% cargo culting. I'll reason around Claude for this: what basically exists for the Claude message API is

  • a system prompt
  • a message history between you and assistant
  • a prefill (which is sent as part of the message history)

Remember: for Claude, this is what exists (plus temperature and stop sequences and some other funny numbers which are irrelevant to the convo). You can see exactly what's being sent to the LLM in ST's console logging. You can also just read the docs. Most of your preset is going to do work taking the card fields and, in some way, injecting them into the system prompt.

{{char}}? Text-replaced with the name of the card. Means nothing in particular to the LLM.

Alternate greetings? To Claude, that just changes the content of the first assistant message in the history (ignoring goofy stscript stuff for a second).

Lorebooks? Raw text that's dynamically injected somewhere (usually the system prompt).

Personality, scenario, the main prompt, the jb field? It all gets melded together into the system prompt (unless, of course, your preset is doing some really wacky stuff, or your lorebooks inject themselves as user/assistant messages or whatever). Some of it may or may not be prefaced like "{{char}}'s main personality traits are: {{personality}}". The personality field might also just get dropped raw somewhere random. You're kinda fucked regarding this, so you probably want to just use the description for everything (except, maybe, things that belong in the main prompt).

So, when you see something like

  • {{char}} is Melanie

That probably just gets converted to "Melanie is Melanie" in the system prompt.

And if you see something like

  • {{char}} is not a character, but a scenario

That probably just gets converted to "Futa Anthro High School is not a character, but a scenario." Which may or may not be good to have on the system prompt, because the user's preset might say something like

  • Write good. Roleplay as the character {{char}}

But if your preset does not do this you can also just write scenarios normally without jumping through hoops and explaining that {{char}} is actually the narrator or something. knickknack's lamplighter is a good example (although it's tuned for GPT-4) and frozenvan's gimmick character union is another good example.

Anyway, the point is, presets are scary, I'm stupid, just see what's being sent to the LLM in the console.

You are (probably) not immune to the placebo effect

When you have a flash of inspiration and change something in a preset or a card, you might get this strong impression that output has substantially improved/worsened or changed in some way.

This could just be placebo.

I'm not judging, I've done this like 50 distinct times. I have no solution for this, it just sucks.

Other advice

A list of other advice has been compiled here

Edit
Pub: 14 Apr 2024 14:58 UTC
Edit: 26 Aug 2024 00:45 UTC
Views: 3525