Advanced: Special Symbols

For NovelAI's dataset, some symbols were consistently used to mark certain parts of stories. Using those tokens yourself when prompting for text generation, you can pull from those sorts of specific data.

> Arrowing

Using a "greater than" sign > as a right-pointing arrow in front of lines has many different uses that depend on the context in which it's used.
The most common one is for Text Adventure player commands, but it can also be used for general text messages, email quotes, or computer output. It usually has a space before the following text.

*Asterisking*

Having text surrounded by asterisks is used to indicate sound effects like *bang* or *Kaboom!*,
or to signalize certain vocalizations like *ahem* or *sigh*.
It can also be used to to emphasize speech like "Oh you know I just *love* chocolate milk."

<Chevronning>

By using the <less-than and greater-than> as chevrons, also known as angled brackets, instead of the usual "quotation marks", you can tag telepathic or other kinds of non-verbal dialogue, such as sign language or writing.
For example: <Be not afraid,> the creature's inner voice resonated inside my mind.

*** Dinkusing

The comically-named *** dinkus is used to determine scene or chapter breaks.
You can write a line with only *** in a story to make the AI "understand" that you want a skip for what comes next.

⁂ Asterisming

Dinkus' big brother asterism is used to indicate transitions into whole new stories.
Only use it in a line by itself if you want the next line to be the start of a different story, complete with different characters and plot. Useful for collections of mini-stories.
You can easily access this character through the right-click menu on NovelAI's text Editor.

{ Curly Bracing } Instructions

{ Curly Braces } with empty spaces padding the text in between them are used to determine direct instructions to the AI model.
This is covered extensively in the Special Modules page.

[ Spaced Bracketing ]

[ Square Brackets ] with empty spaces padding the text in between them can be used for a variety of cases:

1. The ATTG: [ Author: ; Title: ; Tags: ; Genre: ] and [ S: ] (model specific).
This can be used as an optional initializer for the story. ATTG is heavily associated with a new story, so keep it at the top if you don't want the AI to have long-term memory issues. The first row of Memory is a good place for it. Author and Title are the least useful and can be omitted if you want.

Exclusive to our Llama 3 Erato model, the [ S: X ] component can be added to the end of ATTG to specify a writing quality level, where X is a number from 1 to 5, corresponding to one to five star ratings. Two to four stars seem to be most effective.
Example: [ Tags: London, 1820s, dragons; Genre: steampunk, drama ][ S: 4 ]
(Proper nouns in upper case, everything else in lower case.)

2. Setting and switching scenes.
[ London, 1821 ], [ Woodstock, 1969, 22:30 ], [ New York, 1935, Night Club ], [ Monday, 8:00 A.M. ], [ Five Minutes Later ], and so on. These can be used anywhere, even in Author's Note.

3. Switching between character viewpoints.
[ John ], [ Batman ], etc. Won't work if the AI doesn't recognize it as a name. Can also be used in Memory to help the AI keep track of the protagonist.

4. Style tagging. (Krake, Clio, Kayra, and Erato only.)
Examples: [ Style: essay, nonfiction ], [ Style: verbose ], [ Style: poetry ], [ Style: text adventure ], [ Style: chat ], or even [ Style: SFW ] to make the AI more likely to stay clean.
These can be inserted even into AN without disrupting the story much.

5. Knowledge tagging. (Clio, Kayra, and Erato only.)
[ Knowledge: paradoxes ], [ Knowledge: anime in 90s ]. This prompts the model into talking about the indicated subject. Can be combined with Style-tagging (see #4) for various effects.
Examples: [ Knowledge: CRPGs; Style: blog post ], [ Knowledge: supernatural; Style: podcast, transcript ], etc.

6. Separating AN/Memory/LB from normal context.
Sometimes the AI can copy stuff from those hidden contexts verbatim, and having those surrounded by the spaced brackets can help avoid it. Although, that is rare to happen in the newer models such as Clio and Kayra, so you might not need this.

7. You can also use them as chapter titles like[ An Unexpected Quest ], [ The End of Many Things ], [ Into the Wastes ], [ Time Loop (3rd Restart) ], etc. Though the results can be unpredictable.
[ Prologue ] and [ Epilogue ] are notable in that these have somewhat consistent effect.
Should work its best when following a dinkus.

Note: For these uses, the square brackets should always be padded with space at the beginning and at the end of the text. Unspaced brackets have different usage, mostly appearing in footnotes and clarifications.

Goose Tip: Feel free to experiment with other uses, but beware of the placebo effect. Except for the above uses, you're likely to get better results without the brackets.

---- Horizontal Lining

A single line with only "four hyphens" ---- is used to indicate informational pieces of text, instead of normal storytelling.

For example, you can use it to dump info like

----
Elves are very proud.
They have pointy ears.
***

and then resume the normal prose storytelling with a dinkus ***,
or another horizontal line ---- if you're going to have another info entry.

You can also indicate categories for the information piece, by writing it by itself in the line right after the horizonal line, like for example:

----
Characters:
Sigurd, a strong warrior who wields a mighty sword.
Euterpe, a skilled bard who plays a tooty horn.
Goose, a handsome scholar full of valuable advice.
----
Glossary:
Infinibag: A magic pouch that can contain infinite items as long as they fit.
Xenoarchaeologist: A scientist that studies ancient relics of alien origins.
Peach Festival: A peach-themed festival that celebrates a bountiful harvest.
***

You can also add a ? to a category to "give the AI additional information" about things it tends to get wrong.
For example:

----
Snake
Type: animal, reptile
Legs?: None (squamous land tetrapods are legless)
***

Goose Tip: You can change the context settings' prefixes and/or suffixes to always include the ----. Just remember that the *** should only be used when going from info entries to normal storytelling.

Goose Tip: If you have a lot of ---- in your context, the AI may start using it by itself in its outputs.
I recommend biasing against or banning the token if you don't want that to happen.

==== or ====== Horizontal Barring (Model Specific)

Exclusive to Erato, making a horizontal bar with "four equals signs" like this ==== acts as a forum post separator, with a username typed below it to indicate the poster, and an optional thread name above it. For example:

Thread: Let's chat about AI!
====
Kurumuz

The horizontal bars can also be used as a separator for emails.

Exclusive to Clio and Kayra, making a horizontal bar with "six equals signs" like this ====== acts as a forum post separator, with a username typed below it to indicate the poster, and an optional thread name above it.
For example:

Thread: Let's chat about AI!
======
Kurumuz

As above, the horizontal bars can also be used as a separator for emails.

Wide spacing

There are two types of "wider than normal" space characters that are used in some places in the dataset.
Both of them can be easily typed if needed by selecting them in NovelAI's Editor right-click menu.

 En Spacing

 The en space () character is used for various text-in-text situations, such as quotes, letters, signs, etc.

 Em Spacing

 The em space () is used for poetry and music lyrics.

Goose Tip: An easy way to remember which fancy space is which, is by remembering that
the letter n is thinner than the letter m, so en space is the thinner one and em space the wider one.

─ LitRPGing

The character, technically called "Box Drawings Light Horizontal" but commonly referred to as the "LitRPG Line", is used at the start of lines to mark some LitRPG-specific text, such as character stats, attributes, and possessions. For example:

─ You gained a level in Dragoon! You earned the Class Perk: Dragon Slayer!
─ Dragon Slayer: your attacks deal bonus damage on reptile and aquatic targets.

You can easily access this character through the right-click menu on NovelAI's text Editor..

Noting: Experimental

On Clio and Kayra only, by writing the string

Notes:
-

in a new line at the bottom of your context, you can prompt the AI to generate some footnote-style tangents and observations related to the text preceding it.
It can be quite inconsistent and tends to make up some things at random, but can be used for fun.

Using the Instruct Module instead and asking for proper notes about what you want is recommended.

## Commenting out

This one is not really a symbol used for any specific reason in the dataset, but rather, a string of characters that has a function in the Editor text area itself.
You can use ## at the very start of a line to comment it out from the AI's context.
For example, you can have the text

Dwarves are very proud.
##just like the elves lol
They have large beards.

written in the Editor, the AI will only "see"

Dwarves are very proud.
They have large beards.

instead of the whole thing.
This can be useful for writing comments in Scenarios created for other people, or to keep notes for yourself in the middle of your story.

Keep in mind that the ## needs to be at the start of the line for it to be commented out. So if you want multiple lines commented out, you need the ## at the start of each one.
You can have an empty space after the ## if you want; it won't make a difference to the functionality.

%

This special symbol is only used for exported .scenario files. It allows you to set up placeholders that will be filled by a person when importing said .scenario file.
Here's how it works:

You start with a %{, then on each line after it, you create individual placeholders.
Each placeholder goes like this:
placeholder code[default value]:name of the placeholder:description of the placeholder
After that, you finish them off with a line with a single }, after which you can start the scenario's actual prompt.

Like so:

%{
1placeholder[Larry]:Your Name:Write your name.
2placeholder[geese]:What do you prefer?:cats/dogs
}

Having that on top of your prompt will ask people to fill placeholders according to their visible name and description, upon exporting your .scenario file. In alphabetical order.
If they don't fill in, it will default to the string inside the [square brackets].

Now, to actually use those terms inside the scenario, you need to write their set up placeholder codes on their appropriate spots using the ${} special symbol.
So the final thing would look something like this:

%{
1name[Larry]:Your Name:Write your name.
2animal[geese]:What do you prefer?:cats/dogs
}
Unce upon a time, there was a person named ${1name} who really liked ${2animal}.

You can also include those in your memory, author's note, and lorebook, even as keywords!
Furthermore, you if you don't want to do do the initial set up, you can just use these ${} codes, but the person importing won't get descriptions, just the code name.

That way, when the person loads the scenario, they'll get options to choose a name and pick between cats and dogs, and if they don't it will default to the name Larry and geese as their animal choice.
(The person importing can write anything to fill in the placeholders, you can only suggest multiple choices.)

The placeholder set up will be gone from the prompt when the importing is done, unless, when importing, you pick the option to Keep Placeholders.

Goose Tip: The placeholder codes themselves won't be showing in the final prompt, or have their tokens count towards the max token length. We recommend keeping them simple and identifiable, and also starting with a number, so you can better control the order in which they're filled.