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.
General Symbols
The following symbols are used in both for English and Japanese.
*** Dinkusing
The *** 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.
## 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.
Special Symbols for Japanese Text
The following applies specifically when using Llama 3 Erato to write Japanese text.
Story Header
The ATTG and overall spaced bracketing formats are not used in our Japanese storytelling dataset. Instead, the following block is included at the beginning of the story:
[タイトル:(物語のタイトルを入れます。)]
[ジャンル:(物語の全体的なジャンルを入れます。)]
[タグ:(物語に適用するタグを全角スペース区切りで入れます。)]
[あらすじ:(物語の概略をここに入れることができます。)]
Each part can be left out as desired. The brackets are half-width brackets, and the colon is a half-width character as well. あらすじ may span multiple lines within the pair of brackets. Ideally, the lines are given in the order shown above, but variations may work as well.
If you would like to get suggestions for genres or tags, based upon the title of your story, you can try prompting the model in this way:
[タイトル:普通の物語]
[ジャンル:
Or like this:
[タイトル:普通の物語]
[ジャンル:文芸(コメディー)]
[タグ:
Note that the AI will not generate the opening square bracket ([) on its own when Ban Bracket Generation is enabled, so if you use this to generate the genre and tags, you will have to either disable the option temporarily or, most likely, edit the text to start the [ジャンル: and [タグ: lines yourself.
Once you have your story header set up, you put it at the top of your Memory to ensure that the AI always keeps it at the beginning of the story context.
Chatroom styled stories use a slightly different header, which is described in the Chat Format page.
For chapter titles, you can use any kind of characters that seem fitting, such as, for example, full-width brackets (【】).
---- Horizontal Lining
While not used in our Japanese storytelling dataset, the model should understand that the horizontal line made of four hyphens ---- is used to indicate that the following is an informational piece of text, instead of normal storytelling. This may be useful for providing information about the world or characters in your story. After the informational pieces of text, switch back to regular storytelling by using a ***. For example:
[タイトル:魔王はもう倒れた件]
[ジャンル:異世界転移]
[タグ:勇者 エルフ]
[あらすじ:勇者として異世界に召喚された武志とエルフの姫の物語]
----
勇者
名前: 武志
職業: 剣士
異世界に召喚された勇者。
----
エルフ姫
名前: エルフィア
職業: 魔法使い
***
If you use a Lorebook, you can set up this kind of layout by creating your Lorebook entries inside a Category, enabling Create Subcontext on the Subcontext tab, setting the Suffix to \n***\n and then setting the Prefix on the Placement tab of each entry you create to ----\n.
Furigana
The NovelAI UI does not currently support the rendering of furigana properly yet. However, the model can output and understand it. It is formatted using three special tokens: <|rubycover|>, <|rubystart|> and <|rubyend|>. When Ban Bracket Generation is enabled, the AI will never generate <|rubycover|> on its own, but if you use it in your prompt, it can complete the furigana for you. This can sometimes produce interesting results. For example, prompting like this:
必殺技「<|rubycover|>
Might produce an output like this:
必殺技「<|rubycover|>三連撃<|rubystart|>トリプルアタック<|rubyend|>」
Of course, it can also be used for more traditional purposes, like giving the reading for a name.
No [ Spaced Bracketing ]
This does not apply to Japanese text, but it warrants special mention. The reason for adding the spacing at the start and end in English text is that English word tokens often start with a space. For example, the is a different token than the and many words only have the token variant with the space character in front. This is not the case for Japanese. For that reason, it is not recommended to use spacing like this when writing in Japanese.
Special Symbols for English Text
The following symbols and formatting are used in the English part of our dataset and may or may not apply to Japanese. You can try them out and see what happens.
> 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.
⁂ 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 ]
Note: As mentioned above, adding the extra spacing does not apply to Japanese text.
[ 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: ].
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.
Example: [ Tags: London, 1820s, dragons; Genre: steampunk, drama ]
(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, and Kayra 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 and Kayra 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.
====== Horizontal Barring
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
The horizontal bars can also be used as a separator for emails.
In Erato, only four equals signs are used for this purpose: ====
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.