ARCHIVED: Overview for v2 - TravelingRobot/NAI_Community_Research GitHub Wiki

This page has been archived! It is only here for version keeping. DO NOT ACTUALLY USE OR EDIT THIS. Use the pages linked in the sidebar!


Table of Contents

Introduction
The tl;dr (for new users)
Lore formats
Regex for Lore Keys
Positioning Entries
Various Lore Tricks
Author's Note
Instructions to the AI
Generation Settings
Tools

Introduction

In here I try my best to pull together the key findings from people's research efforts in #community-research in the NAI discord. People are moving very fast and are discovering cool new things every day. However, I think at this point we need to start to pull everything together and the later we start the more work might be wasted.

I basically worked backwards through the chat log, skimming the messages until the date of open beata (14/06) and tryied to summarize what I think are key findings. Expect a ton of spelling mistakes and lots of stuff missing (there just is too much, I really had to skim through the chat logs). I cannot stress enough this is very very preliminary - use at your own risk!

Hopefully this will assist people in their research efforts and provide something for people that like to use some experimental ideas until they are more definitely confirmed through testing (and then end up on the NAI wiki)

To be clear: This is not meant to be a replacement for the NAI Wiki (nor could it be)! This is a supposed to be a log of the frenzy of early research activity on the NAI discord after NAI entered open beta. If you are looking for advice on using NAI with methods that are known and confirmed to work use the NAI wiki!

The tl;dr (for new users)

For now, it looks like you will not be doing much wrong no matter the format you use. For beginners I would recommend you write your entries in concise prose, or full prose depending on what feels more natural to you.

Can I just import my old AID world info in zaltys/catnip/featherlite, etc.?

In short: Yes, it just will not be the ideal for NAI.

Slightly longer answer (careful - mostly just my own opinion): In general most formats seem to work okayish, but will not be ideal for NAI. NAI's model are likely to have their own strength and weaknesses, and formats that played to dragon's strength might not play to Calliope's/Sigurd's strength. (Dragon: much bigger base model so better at "understanding" implied semantic relations, tight token/character limit so formats should use as little characters as possible; versus NAI models: need things to be spelled out more explicity, but no need to be super stingy with your characters)

Lore formats

Starting off with a word of caution by zaltys:

I'd recommend not going overboard with format research, as NAI is always working on new models and the way the 'formats' work is likely to change without much warning.

An analogy by Gnurro that I think is a good way to think about Lore entries (and context manipulation in general):

the AI can be primed like people is kinda what this whole transformers thing is about.
It's like saying "green, lush, fresh" to make people more likely to say "plants".
All the shortened formats basically do that, but people think they do some hacking/computer thing, while it's actually a language thing. Transformers are just that good at simulating how people associate words.

Which format is better?

First empirical results by Basileus suggest no significant difference between single paragraph or multi-line prose, JSON, single or multi-line caveman (n for each format = 100, ps > 0.19 (not corrected for multiple testing!))

(Note by TravellingRobot: I suspect that we may find once we are taking the type of entry into account that we might find differences. My theory is that the more abstract and the more relational you get the more you need the syntactic sugar of prose. For concrete things you might be better off just using something more condensed. Obv would need more testing)

(Methodology: default generation settings with maxed output length; scenario: Aliens-esque sci-fi action horror; moderately large context (~800 tokens with developed memory, A/N, preceding paragraphs, and a few other lorebook entries triggered as well, to make it as true to a "real world" use case as possible)
(Exact results: Single paragraph prose: 78% consistency, JSON formatted: 78% consistency, Multi-line prose: 74% consistency, Single paragraph caveman:74% consistency, Multi-line caveman: 70% consistency)

Encapsulation signs

  • Using [] seems to work best.
  • Be mindful about using {}, you might get unwanted associations with programming languages (Valahraban)

    the wiki people say {} is closer to the topic of programming/pure data and I'm inclined to agree

Notes on testing formats

  • Gnurro noted that a good test for a format's accuracy is trying to override known AI biases

Names with known bias (Cass)

Bias towards Black and/or brown hair

  • Akari: Black 10/30, Brown 7/30
  • Maki: Black 14/30, Brown 7/30
  • Sakura: Black 14/30, Brown 6/30
  • Ryusei: Black 13/30, Brown 7/30
  • Satan: Black 15/30, Brown 6/30

Other

  • Fluttershy: Brown 10/30, Purple 8/30

Test input was (default settings):

[The following is a Q&A with Akari.]

Q: What is your name?
A: My name is Akari.

Q: What is your hair colour?
A:

Tests to overwrite bias

Akaria with pink hair

  • 23/30 correct with pink (CAT and Default)
  • 30/30 correct with pink (CAT and 1.0 Rep Penalty) 28/30 if you don’t count dark pink.
  • 25/30 correct with pink (Caveman and Default) 24/30 if you don’t include dark pink.
  • 29/30 correct with pink (Caveman and 1.0 Rep Penalty) 28/30 if you don’t include dark pink.
  • 22/30 correct with pink (Prose and Default)
  • 30/30 correct with pink (Prose and 1.0 Rep Penalty) (should be clear, but these differences are all within margin of errors, ps > 0.34. So do not infer one format is more effective than the other from this. Bigger sample sizes would be interesting though...)

Full Prose

So there is a bit of an ongoing debate of full prose versus condensed formats with OccultSage being the main proponent of using full prose for Lore entries. While I disagree with some of his points I'll try to present his arguments that I think are worth considering:

  • So far no conclusive evidence has been presented against either full prose or the more condensed formats
  • Well-written full prose entries have the distinct advantage that they can be used to guide the style of the AI. (In that case you obviously drop the [] around your lore entries)
  • In theory the style of condensed lore entries might leak into your output (but so far this has not been observed to be a huge problem for most common condensed formats enclosed in [] , even when testing in an empty prompt). The following are things I suspect to be true (but take with a grain of salt):
  • Full prose give you plenty of syntactic sugar that might help making relationships between entities a bit more explicit. This could maybe help with defining more complex relationships/concepts (this is just my own hunch though)
  • Condensed formats on the other hand let you focus on just the keywords you want to associate with a topic word. This might help with making the relationships between topic word + trait stronger (less "baggage" from connecting words as Rinter has put it) So full prose or a condensed format? My take on it is that currently it seems like you will not be doing much wrong either way. So I would recommend to write the entries in what makes the most intuitive sense for you and feel free to experiment with other formats as you see fit.

Concise Prose

Concise prose seems to work quite well in NAI (concise prose in this context = very short simple sentences). I only give it a heading here, because it is well suited for beginners. A good starting point is to start with the topic word and try to not let the sentence run longer than 10 tokens. Then begin the next sentence either with the topic word of the entry or a signifier pronout (he/she/it/his/her/its). This way the AI hopefully does not "forget" what you are talking about. Put [] around your entry. Then put a space after the opening [ (so: [ Mark...). If you want to experiment with more condensed formats: Transitioning to NAI caveman is quite easy from concise prose.

  • Example: [ Mark is a 35 year old witty man. He is strong and has red hair.]

Cat<nip> (tested by rando, Cass)

Catnip SFW-Doc (AID), NSFW Doc (AID)

  • Still seems to still work fine in NAI
  • Writing the entry single line (seperate with .) also seems to work okay
  • can get some rare leaks with & and <>, you might want to ban <>, just in case

Rando's JSON style

  • Essentially make a JSON and then minify it to one whole line

Why use JSON?

  • Can be manipulated with code
  • Useful for using scraped content as Lore entry
  • Supports nesting

Examples:

[{"Aliens":{"speciesType":"dangerous and terrifying insectoid monsters","behaviors":"ambush predators who strike with stealth and speed","motives":"behavior is driven by instinct, hunger, and animalistic cunning","appear":"Aliens are tall and sleek with serpentine grace and sinuous tails. Alien bodies are covered in glistening dark black chitin with sharp claws and teeth."}}]

[{"Lucy":{"sex": "female","speech": "Lucy is a mute & speaks only in sign language.","hair": "shining golden, very long", "skin": "pale white, heavily scarred", "eyes": "bright blue, sparkle brilliantly", "wears": "polished black leather armor", "weighs": "fifty five pounds", "height": "3.5", "race":"angel (wingless)"} }]

[{"Lucy":{"sex":"female","speech":{"accent":"like scottish","yes":"aye","you":"ye","can't, cannot, can not":"cannae","ass":"arse","small, little, tiny":"wee","didn't, did not":"dinae","you'":"ye'","my":"me","and":"an'"},"hair":"shining golden, very long","skin":"pale white","eyes":"bright blue, sparkle brilliantly","wears":"polished black leather armor","weighs":"55lbs","height":"5.5","race":"elf"}}]

I tried removing the accent or using the replacements to define it, but it broke it. Seems accent is required to trigger any replacements. Some accents are stronger than others.

[{"Albedo":{"nameFull":"Albedo","gender":"female","age":"18","race":"succubus","height":"170cm","weight":"90lbs","eyes":"golden/silted-pupil","hair":"black","skin":"white","appear":"black feathered wings, large breasts","wears":"a white dress with golden spiders web, black angel wings, and a golden necklace, white horns on head","mind":"calm, level-headed, strict, capable, loves Ainz/Momonga, hates humans","summary":"Overseer of the Guardians of the Great Tomb of Nazarick, virgin, created by Tabula.","class":"Unholy Knight","powers":"Succubus, Immune to disease, high offensive power, high defense power"}}]

[{"Illithid, mind flayer": "Illithids are eldritch creatures with 3 to 6 tentacles coming out of their face where their mouths should be. Blue black skin. Orange eyes. No nose or ears. They eat the brains of sentient creatures and are psionic."}]

If I didn't tell it where the mind flayer's tentacles came out of, it wouldn't understand.
kept having them come from his back
same with the number of tentacles
he had hundreds at one point

RollForPanda's Python Dict Style

it's literally just a Python Dictionary, without the " before and after the : (I've found it helps stop leaking). I've also found I don't have to reinforce who I'm referring to within the lore entry. I haven't tested a lot, but so far it looks promising.

Examples

[ Jane = {"Gender: Female", "Race: Advura", "Head: Elongated, Chitinous,", "Hair: Hairless", "Eyes: Not visible, Covered by chitin", "Skin: Grey, Chitinous"}]
[ Vonari = {"Name: Vonari Rishai", "Age: 30", "Gender: Female", "Species: Advura", "Movement: On all fours, Predatory Grace", "Length: Very Long", "Build: Slender, Lithe", "Body: Covered in blue, shiny, tough chitin", "Head: Elongated, smooth, chitinous", "Hair: Hairless", "Eyes: Not Visible, covered by chitin", "Feet: Clawed, Three Digits", "Tail: Long, Flexible, Segmented, Bladed tip", "Back: Dorsal Spines, Sensitive, Quill-Like", "Clothing: Naked", "Home: SSV Ikiro, Deck 2", "Rank: Commander", "Job: Executive Officer", "Personality: Determined, Loyal, Protective", "Sexuality: Straight", "Relationships: Single"}]
[ Advura= {"Species: Advura", "Type: Insectoid", "Movement: Quadrupedal, On all fours, Predatory Grace", "Length: Very Long", "Advura_Body: Slender, Lithe", "Advura_Skin: Chitin(dark, shiny, thick, tough)", "Advura_Head: Elongated(smooth, chitinous)", "Advura_Hair: None", "Advura_Eyes: Not Visible(covered by chitin)", "Advura_Legs: Slender", "Advura_Feet: Clawed, Three Digits", "Advura_Tail: Long, Flexible, Segmented, Bladed tip", "Advura_Back: Dorsal Spines(Sensitive, Quill-Like)", "Clothing: Naked", "Personality: Predatory", "Speech: Talking, Hissing".}]
[ Tahlia= {"Species: Tahlia", "Type: Humanoid, Reptilian", "Movement: Bipedal, Graceful", "Height: Average", "Body: Slender, Curvy, Hairless", "Body_Skin: Covered in bluish, leathery", "Body_Feet: Humanoid", "Body_Arms: Humanoid", "Body_Legs: Humanoid", "Head: Humanoid", "Head_Hair: Hairless, covered in flexible head crests", "Head_Eyes: Humanoid",  "Clothing: Ornate", "Personality: Arrogant", "Speech: Talking".}]
[ Asari= {"Species: Asari", "Gender: Monogendered(female)", "Type: Humanoid", "Movement: Bipedal, Dexterous", "Height: Average", "Body: Slender", "Asari_Skin: Blue(textured)", "Asari_Hair: None, head crests (cartilage, flexible)", "Clothing: Ornate", "Personality: Diplomatic", "Speech: Talking".}]
[ Turian= {"Species: Turian", "Type: Humanoid, Avian, Reptilian", "Movement: Bipedal", "Height: Average", "Body: Slender", "Turian_Skin: Brown(carapace)", "Turian_Hair: None, head crests (chitin, rigid)", "Clothing: Ornate", "Personality: Militaristic", "Speech: Talking".}]
[ Irasa= {"Species: Irasa", "Gender: Monogendered(female)", "Type: Humanoid", "Movement: Bipedal, Dexterous", "Height: Average", "Irasa_Body: Slender", "Irasa_Scalp: crests(several, cartilage, flexible), no hair", "Irasa_Skin: Blue(textured)", "Clothing: Ornate", "Personality: Diplomatic", "Speech: Talking".}]
[ Xael = {"Species: Xael", "Type: Humanoid", "Shape: Humanoid", "Movement: Bipedal", "Height: Slightly smaller", "Xael_Body: Slender", "Xael_Face: Flat", "Xael_Eyes: Wide", "Xael_Mouth: Humanoid", "Xael_Nose: Flat(Y-Shaped Slit)", "Xael_Skin: Grey-Blue(Leathery, Rough)", "Xael_Arms: Hands(Four Digits)", "Xael_Legs: Feet(Cloven)", "Loyalty: Xael Empire, Greater Good".}]

Note: For anyone that wants to try these out, they are NOT optimized for token count right now, just testing the format frame.

Rando's revised "no more JSON format"

(sorry for the name - just had to call it something for the heading for now...)

JSON is making me mad. When an unlikely result (like an elf child being 70 in Overlord) happens, it still tends to go nuts and grab info even outside the brackets and inside other brackets.I'm testing out converting it to a format that reminds the AI who it's talking about for every category.

[Mare nameFull: Mare Bello Fiore; Mare gender: male; Mare age: 76; Mare race: Dark Elf; Mare height: 104cm; Mare weight: 42lbs; Mare eyes: right eye blue, left eye green; Mare hair: brown; Mare skin: tan; Mare appear: young dark elf child, looks feminine (is male), crossdresser; Mare wears: blue dragon scale suit, white vest with gold embroidery, short white skirt, green leaf cloak, white gloves, a black wooden staff, an acorn necklace; Mare mind: shy, cowardly, reads books, lazy, dislikes talking, likes sleeping, likes to eat, innocent; Mare summary: Floor Guardian of the 6th floor with his twin sister Aura, created by Bukubukuchagama.; Mare class: Druid; Mare powers: high leveled magical power, speed, endurance, enhanced strength, invisibility;]

Monky's NAI Caveman

  • Use <= 18 tokens per line
  • Repeat signal pronoun (he/she/it) every 10 token (so about middle of the line)
  • Might work better with "Descriptions: Write in prose" in A/N. (RollForPanda)

Basic Format (copied from Fuzzy)

[ NAME 7token REINFORCEMENT 7token ]
[ NAME 7token REINFORCEMENT 7token ]

Examples

[ Lucy hair shining golden, very long, her skin pale white, heavily scarred]
[ Lucy eyes bright blue, sparkle brilliantly, her outfit polished black leather armor]
[ Lucy weighs fifty five pounds, she three and half foot tall]
[ Lucy note: wingless angel]
[ Lydia AI 'Miss Fortune' shuttle, Lydia and 'Miss Fortune' belong Zennifer]
[ Lydia operates 'Miss Fortune' shuttle, her objective deliver packages for Zennifer]
[ Lydia speech program features drunken accent, her behavior analytical helpful by design]
[ Lydia projects herself throughout shuttle interior, her avatar luminescent pink hologram]
[ Lydia is unfamiliar with you]
[ Jane hair light green, somewhat short, her skin deep purple, heavily tattooed]
[ Jane eyes glossy orange, fairly dull, outfit rusted yellow metal exoskeleton]
[ Jane stature humongous, weighs 2500 pounds, she 15 ft tall]

fairly accurate with no real sorcery involved. -6 position and -400 priority is about it. AI gets inventive as always, assumes she's an alien (fair) and adds extra eyes and metal limbs but it gets the defined part

[ Fox-girls are human-looking girls with fox traits]
[ Fox girl traits are fox-like ears, tail, claws, and attitude]

Kitsunes (rando)

(added here because it is sort of between prose and caveman imho...)

[Kitsunes: girls that have the form of a human, but have fox ears and one or more fox tails.]
[Genre: anime;]

Adding this entry and the genre seemed to finally do it. Clearly more anime is needed in the finetune though.

NAI Featherlite (Rinter)

  • Rinter is already working on revising featherlite for NAI here; revision notes here; notes on experimental ideas here

there's not much to say really. Replace bullet with [ ], and you don't need to worry about space removal between words and symbols. That's about it 😄

one other change (mainly to prevent word mashing format leaking) would be to dial back the amount of wordmashing, since it's not really that important anymore.

the tl;dr of modern featherlite now-a-days is [ pointer topic filter: spectrumofattributes topic moreattributes ] with some wordmashing only between associated words....

Regex magic for lore keys

  • Important to note: Regular keys are case-insensitive, but regex keys are not. Flags are now supported so you can just add the i flag to make regex keys case-insensitve /giraffe/i
  • Using placeholder with regex (Yaflow): you need the $ before regex too so: $/${name}/
  • Regex AND pattern (Valahraban): Matches a paragraph with the 3 (or less, or more) words in any order. /^(?=.*word1)(?=.*word2)(?=.*word3).*$/
  • Regex NOT pattern 1 (Valahraban): Does not match a word if certain words are in front of it. /(?<!(Gold|Pink) )Rathian/ matches "Rathian" only if it is not preceded by "Gold" or "Pink" (so "Gold Rathian" is not a match) (does work on some browser, but not on all. So this one might break for some people. Usage not recommended, especially if you want to share your lore entries thanks for the heads-up Bunny!)
  • Regex NOT pattern 2 (Valahraban): Does not match a word if certain words are after it. /Deviant(?! (Rathalos|Rathian|Monster))/ matches "Deviant" if not followed by "Rathalos", "Rathian" or "Monster" (so "Deviant Monster" is no match)

Where should I position entries?

OPVAM's scaffolding system

  • The scaffold is meant to be a guideline on what advanced settings you should set for each lore entry (and advanced context settings). To implement it, you do the following:
    1. Set the Advanced Context Settings for Story, Author's Note and Memory as specified in the scaffold then forget about them .. they never have to be touched again for this story.
      • Advanced Context Settings: Can be found in the right sidebar -> Story -> View Current Context (at the very bottom) -> Advanced Context Settings
    2. Every time you create a lore entry you go.. "Is this a Character? Then use the Lore: Characters advanced settings in the scaffold."
  • What the scaffold is trying to achieve is to insert the lore as close to the front/bottom of context as possible, but still allow the story some "breathing room" in between the lore.
  • uses newline insertion

This is still a very early draft with minimal testing so I encourage people to modify the scaffold and report back on their findings :-)

Position Priority Reserve Type
-12 -100 200 Memory
-10 -200 100 Lore: Concepts (multiple)
-10 -300 100 Lore: Places (multiple)
-10 -400 100 Lore: Races (multiple)
-10 -500 100 Lore: Factions (multiple)
-8 -600 200 Lore: Author's Note - General (Defined in Lore Book, forced activation)
-6 -700 100 Lore: Characters (multiple)
-4 -1000 - Lore: *** (forced activation; addition by Monkey & Kalmar see below)
-4 -800 200 Author's Note - Dynamic (Defined in Author's Note field)
0 0 512 Story

Note on token limit (ght901)

Just as a note for people using these settings. If you don't keep the tokens used by that Lorebook entry under the number of reserved tokens it will be almost guaranteed (there's a small chance the first might not) to be trimmed

Why are there 2 Author's Notes?

OPVAM had the idea to split up the Author's note into two entries:

  • Author's Note - General: The overall theme/structure to your story
  • Author's Note - Dynamic: Things you want to change as the story progresses

Example:

Original Author's Note:
[ Author's note: This is a story about the Game of Thrones. Writing Style: detailed, gritty. Setting: medieval. Theme: violence, gore. Rating: M.]

New Authors's Note - General (at insertion -8):
[ Author's note: This is a story about the Game of Thrones. Writing Style: detailed, gritty. Setting: medieval. Theme: gore.]

New Author's Note - Dynamic (at insertion -4, closer to front of context and thus more likely to be used by the AI):\

[ Author's note: In this scene Jon battles a White Walker]
[ Rating: M]
[ Theme: action]

Okay, but what does this actually do with the context?

here is an example output using some test lore:

(click to open larger version)

Scaffold Example

Using the scaffold with your own custom categories

The categories themselves are rather arbitrary and could be anything, for example:

Position Priority Reserve Type
-12 -100 200 Memory
-10 -200 100 Lore: Backstory (multiple)
-10 -300 100 Lore: Drop Bears (multiple)
-10 -400 100 Lore: Snakes (multiple)
-10 -500 100 Lore: Spiders (multiple)
-8 -600 200 Lore: Story Overview (forced activation)
-6 -700 100 Lore: Waifus (multiple)
-4 -800 200 Author's Note
0 0 512 Story

How should I decide where to place my custom categories?

It really depends on what you want to be more important.. If I was doing a sci-fi where there were a lot of custom races (and it was important that the ai got it right) then I would move races down in priority
The above example show what I mean.. Beer is a Lore: Concept, Sally and Jack are Lore: Characters, Halfing is a Lore: Races etc

Additional Tweak: Seperate Lore from Story with *** (Monky & Kalmarr)

Forcing a *** might lead to less verbatim repetition from Lore entries. Position it at -5 -4 position and -1000 priority.

(Empty newline, triple asterisk, empty newline) in a forced on entry at -5 position, when combined with the aforementioned stuff, is helping to de-loop the AI by getting it to not verbatim repeat things from 10-15 lines ago without apparent negative effect (ie: recall still works fine)

I think, relevant to people who don't use OPVAM's LB settings, is that character entries under his settings are at -6 position, and AN is at -4, meaning that the signpost entry was going between the two.

I found that the outputs for descriptive testing were more accurate, the descriptions made more sense, and were less unnecessarily repetitive of the information in the prompt/story.

(Later addition)

I've found that it actually seems to work a little better, with outputs that are more coherent, at -4. -5 puts it right before the AN (with writing style etc.), and -4 puts it right after.

Scaffold with splitting up of entries (Fuzzy)

Some of my characters accumulated 6 lines of Info-dump and when I looked at the context it looked like one giant void of story, so I once again let myself get inspired by SC2 from ye olden days and have started to split up the LB for Characters and Groups (Races atm, but could be used for Classes or something like that as well?) into General(MAIN),Appear(SEEN) and Mental(HEARD)

The A/N [Dynamic] is my bruteforce "THIS IS HAPPENING NOW" if I got an idea WHAT I want to happen, but not HOW.

Position Priority Reserve Type
0 -10 500 Memory
-15 -200 200 Lore: Concepts
-13 -500 200 Place: General
-10 -500 200 Place: Appear
-11 -550 200 Faction: Overview
-11 -575 200 Faction: Group
-11 -600 200 Faction: Rank
-4 -700 200 Lore: Author's Note - General (Defined in Lore Book, forced activation)
-10 -725 200 Group: General
-6 -775 200 Group: Appear
-4 -925 200 Group: Mental
-10 -750 200 Character: General
-6 -800 200 Character: Appear
-4 -1000 200 Character: Mental
-4 -2000 200 Author's Note - Dynamic (Defined in Author's Note field)
0 0 512 Story

Should I split up a single entry into several entries over different positions (like in EWIJSON Featherlite/Futureman)?

Not much research on it yet I believe... But you might want to check out the revised featherlite section on positioning for NAI.

Various Lore tricks

  • Make someone mute (Monky): [ speech: Lucy is a mute & speaks only in sign language]

  • Making invisibility work (Valahraban): [ Invisibility cloak makes user imperceptible, completely transparent& hidden from sight.]

  • Breaking tropes (Monky) for characters that defy normal tropes: Try doing note: right before the tricky bit

  • Mixed ethnicity (Shincore): Asian&'Pacific Islander' mix (this is without using the word ethnicity)

  • Defining personality with Myers-Briggs (Shincore): NAI seems to understand the Myers-Briggs 16 personality types (ISTJ, ESTJ, etc.) might need more testing

  • Defining a bald characters remains...tricky for now? (various): "Bald seems to consistently generate hair, but mentions that there is no facial hair. Although that was with human characters." (RollforPanda). hairless seems to work for non-human characters? invisible Hair seems to somewhat work (?);

    • Rando: "hair: none usually works for me.
    • RollForPanda: Hair: None vs Hair: Hairless seems to be the difference between more generation of hair vs skin covered, hairless head which is fine, unless they have something other than skin."
      "I will say, if the creature isn't humanoid, Hair: Hairless has been working wonders, it's when the AI thinks it needs to be more human that it messes up, which is more of a model size issue."
  • "Help! NAI makes the skin of my character furry!" Monky: "smooth skin has ALWAYS helped when the ai wanted to make furry skin (or facial hair on women)"

  • Define relationship with protagonist (Wolfhound): "I found Role: acquaintance leads to characters asking 'getting to know you questions'" (might need more testing)

  • Defining non-human races (RollForPanda): "One thing I've noticed is that Species works better for me than Race, race seems to sometimes make it a human character."

  • Troubles with first name/lastname with "unusual" names (Shincore):

    the only way I could get NAI to properly recognize my first and last name as my first name and last name consistently was •I/My name: Shin Core first name Shin last name Core this was with the no sampling generation settings. every other way NAI would confuse my first name as my last name sometimes, or get them swapped. it also kept referencing my name as Japanese, so that may have caused some confusion as Japanese naming conventions have the surname or family name first.

    after doing some more tests, the issue that i was having previously with NAI switching my last name for my first seems to be associated with having a japanese/asian name. [...] switching to a western name or a non asian name fixed the inconsistent output. interesting that the association of the ethnicity of a name will cause NAI to make assumptions and change accordingly.

  • Word substitution for accents (rando). See rando's 2nd JSON example of Lucy to see an example of word substitution

Symbols & Punctuation

(also see corresponding section on the NAI wiki)

  • '' for binding words together (Shincore): Use '...'. Asian/'Pacific Islander' for an Asian Pacific Islander, 'fully automated', 'first name last name', etc.
    • Note by Rinter: >"[in AID] ' and _ had some overlapping use case, but generally ' was literal and _ was instructional. Literal in the sense that you're telling the AI to always write it this way, exactly."
  • & still seems to work as 'and' for lists (basically a replacement of ","; as in CAT, etc.) (Noli, Shincore)
    • & appears to be a powerful list separator. The AI seems to use the list items more reliably in concise formats. Uncertain of value in full prose. (Kalmarr)
  • () for giving specifics (RollForPanda): "I'm finding a lot of use for ( ) when describing something specific" (also see RollForPanda's Asari and Turian examples above for usage)
  • ***, ~~~, and maybe even ◇ ◇ ◇ (Various): can be used to mark a time/scene jump (can also use new lines, but these seem to be weaker).
    • (Note: *** should work best for v3 (Finetune, Zaltys))

Author's Note

  • Not too much research into good keywords to use, I believe (apart from what we already had for AID)? Looks like we are already getting some momentum here - first findings below!

A/N categories (Shincore, GruntBull, Wolfhound, Potato)

The following have been tried by people and might be worth to experiment with:

setting:
writing style: (suggested by Shincore: "strikingly vivd& descriptive& verbose")
style: (used by Potato - shorter form of writing style perhaps?)
format: (suggested by Shincore: "rewrite input text in prose and the story continues")
theme: 
author:
focus:
genre:
rating:
scene:
goal:
situation:
storyline:
Tone: (not too strong)
Write: (see Wolfhound's example)
Year: (OccultSage, works surpsingly well - although zaltys noted just doing something like "1867 AD" without "Year:" might work better)
Period: (OccultSage, could need more testing but first results seem promisings)

...That being said the following categories are the ones actually used in the fine-tune (Zaltys) [ Author: <author>; Tags: <tag list>; Genre: <genre list> ]

List of attributes for Writing style:

  • sesquipedalian for purple prose (amiavamp, Cass) Cass: "I will say, "sesquipedalian" is SUPER heavy. Even with no context just having [ Writing style: sesquipedalian.] does a ton. (Using Monky settings + OPVAM scaffolding)"
  • Leo Trotsky (by Potato - used in [Style: Leo Trotsky]. Might also try as author: attribute?)

    It's...hella purple, but in a run-on sentence kind of way.

  • Creative to be more "story-like" (Kaelia)

    Sometimes you just have to be very literal. It decides that this is no longer a wiki page and is creative writing, so instead of "x says, y says" I get "x assures you, y decides" and so on, and the general flow is just less like a manual and more like, well, writing

  • chaotic and bad seems to works quite well...but why would you want this? (Arjuna)

List of attributes for Author:

  • H.P. Lovecraft: "gave me purple prose by itself, though there are likely other authors that work even better. Someone romantic era." (amiavamp)
  • A.A. Milne, Kenneth Grahame, Tove Jansson: "the cuteness is too strong" (tymime)
  • Robert E. Howard: "It's the most consistent one I've found." (placebomancer)

List of attributes for Tone:

  • light and peaceful (Arjuna)

Hacking A/N with quotes (OccultSage, Valahraban)

  • Try including a quote from the author's work. That should get you outputs more closely matching that author.
[ Author: Lovecraft, Genre: Cosmic horror, Style: Write descriptive prose with an eerie tone.]
[ "And with strange aeons even death may die."]
  • Should also be very useful if you want to generate a prompt in the style of a certain author
  • OccultSage has taken this approach to the extreme with his Nabokov generator (discord link), by not only using A/N, but also injecting several quotes into context with Lore entries

Punctuation in Author's Notes

  • Using & instead of commas in lists (Kalmarr):
    • In both v2 and v3, using commas to separate lists appears to have a detrimental effect on items later in the list.
      • With [ Writing Style: sesquipedalian, creative ], I found that the creative attribute was less powerful.
      • When replacing , with & in the above example, saw instant effect with more creative and enjoyable writing in outputs.
      • && appears to also reinforce the individual list items, perhaps more strongly, but I have not tested it for more than two items in one list.

Examples

(from Shincore)
[use first person perspective;setting: modern day USA;writing style: strikingly vivid, descriptive, inventive, talkative;format: rewrite input text in detailed and verbose purple prose;genre: LITEROTICA;rating: XXX-rated;content warning: ...;storyline: ...]

(from Wolfhound)
[Writing style: vivid, descriptive, purple prose, first-person, futurist romanticism visuals; Dialog style: Use very long and complex dialog; Genre: western, sci-fi , drama, novel; Write: A story about being the first colonists on a new uninhabited planet;]

"Write:" is very powerful hint in author's notes

(from Basileus)
to get wordy prose in a story:

[ Writing Style: Give vivid, detailed descriptions using elaborate prose that viscerally evokes all senses.]

Has worked pretty well for me, alongside other stuff I keep in the A/N

Full A/N example:

[ Genre: Grim, futuristic sci-fi horror.]
[ Tone: Show tense dread and thrilling action in gritty scenes.]
[ Writing Style: Give vivid, detailed descriptions using elaborate prose that viscerally evokes all senses.]
[ Focus: Follow Nora as she struggles to survive against ambushes by alien predators.]

a little longer than I'd like, but working well for now. May try replacing "Focus" with "Scene".

(from amiavamo)
to get more purple prose

[Writing style: purple prose, flowery, esoteric, sesquipedalian; Author: Henry David Thoreau.]

Henry David Thoreau makes it too specific I should add. It makes it reference the other authors/poets of his genre and time often

for "beige" prose

[Writing Style: purple prose, flowery, occult, eldritch, tense; Genre: gothic horror, mystery.]

Director Instructions to the AI

  • You can use [] in your input to give "instructions" to the AI
    [describe:a gun fight;]
  • More experiments by Cass let me believe that it might be most useful to think about these as "stage instructions" like you would see them written out in a play just before a scene

List of confirmed commands for director notes (Monky, GruntBull, Cass)

  • [ SETTING: ]
    • to describe the situation that the following scene will play in, although sometimes it might steer strongly towards a "play-like" writing style?
  • [ Input: ...]
  • [ Action: ...]
  • [ Setting: ...]
  • [ Event: ...]
    • very strong, but might not always have the AI describe the event, instead the AI might assume it happened.
    • I had some limited success in doing an empty line and then [ Describe the event in future tense] (definetly needs more testing though)
      
      [ Next, 3 men will barge in and will try to abduct Max]
      
  • [ Describe: ...]
  • [ POV: ...]
  • [ Do: ...]
    • also see below, assumes protagonist
  • [ Say: ...]
    • weaker than the rest, but works. Also see below, assumes protagonist

Director's note for a COYA style (Rando)

You can also use this to mimic AID's COYA style with [say/do: Your text] - no awful AID fine-tune necessary! (e.g.: [ say: "Hello how are you doing"], [ do: Smash in the door]) This might be reinforced with the following in memory:

[ Rewrite Input text in prose and the story continues.]
[ Rewrite Say text in dialogue and the story continues.]

(also see the "Input Enhancer" scenario under the featured scenarios)

Generation settings

Generator settings experiment

Basileus has started to sample data with different generator settings and have them be rated by this AI tool. You can find the latest data here. I have done some first statistical analysis of the data in this repo.

First findings:

  • Randomness and sampling affects readability (high readability grade = complex sentences with "big" words)
  • Randomness has a quadratic relationship with Readability (a curve with an inverted "U" shape). It looks like randomness leads to low complexity in the 0.4-0.6 range. Higher or lower than that complexity increases. (See graph here)
  • TF-Sampling has a quadratic impact on randomness (curve with uptick to the left). Right now it looks like TFS has barely any influence with TFS > 0.7, below that complexity starts to increase. (See graph here)
  • No meaningful effects of randomness and sampling on what ProWritingAid calls "Grammar/Style/Spelling" and "Glue Index" (using filler words).

Different generator settings

Also check #generation-settings in the NAI discord, I currently have no time to also summarize stuff in there. (Note that NAI let's you easily import/export generation settings. I only write them down here so we can begin to see patterns).

Also note that AWK's setting discord link (new candidate for default) seems to look promising.

Monky's preferred settings

(currently slightly prone to being repetitive after a few paragraphs of AI output)

Variable Setting
Randomness 0.8
Max Output Length 60
Min Output Length 20
Top-K Sampling disabled
Nucleus disabled
Tail-Free Sampling 0.5
Repition Penalty 1.2
Repition Penalty Range 512
Repitition Penalty Slope 4.05

Shincore's settings

(alteration of Monkys)

Variable Setting
Randomness 0.8
Max Output Length 60
Min Output Length 30
Top-K Sampling disabled
Nucleus disabled
Tail-Free Sampling 0.8
Repition Penalty 1.3
Repition Penalty Range 512
Repitition Penalty Slope 2.97

Vegetables are not geese settings

Link

Variable Setting
Randomness 0.45
Max Output Length 40
Min Output Length 20
Top-K Sampling disabled
Nucleus disabled
Tail-Free Sampling 0.992
Repition Penalty 3
Repition Penalty Range 1024
Repitition Penalty Slope 3.6

I tested multiple runs of the same thing at randomness .45 and TFS at .985 .990 .993 .995 .997 .999 side by side

and I tested all the values and found that the sweetspot for the style of generation I wanted was more on the .990 side than the .999 side, but higher than .985
and tested more and started taking .001 off and stuff, found a specific place where .993 made a logic error that .992 didn't and settled at .992

Tools

Taleir regex helper

  • Taleir wrote a tool to help producing regex keys

Here's my initial contribution to the NovelAI community. This is an advanced lorebook generator script, run on your local computer with NodeJS (NovelAI's engine still does not support scripting), that allows complex keyword composition to make managing larger lorebooks easier and with more focused entries.

It spits out a .lorebook file that you can then upload into your story.

I unfortunately have not taken much time to explain how to use it and the example lorebook provided is pretty short (I need a break, but wanted to get this shared), so consider it a more "advanced" tool.

  • From what I can gather it lets you combine keys with different matching modes (can be set to match word exactly, as prefix, postfix, or anywhere in a word) with each other or your own regex expressions?

Check out the tool here

Rando's tool to extract entries from wikia

Here's another tool I just whipped up to help someone else extract data from Fallout wikia articles. I hope you can see how to make tools for your own extractions.

Find it here

⚠️ **GitHub.com Fallback** ⚠️