Hi! :)
(sorry if I tagged this post wrong, I don't know where exactly it would fit... )
A wee bit of intro before we get to the good part: I'm a long time ACC user, and had been thinking of forking it for some time now to try some fixes.
Well, I did just that a few days ago and have been experimenting with just completely rewriting the prompts. There's still some minor problems, but it's giving me very nice results, so I thought I'd share the style of prompt I've been using:
```
Role:
You are a cultured English linguist, novelist and dramaturge working on a theatrical play. Maintain internal consistency within the story, and prioritize pacing and plot momentum over minor details. Currently...
Hi! :)
(sorry if I tagged this post wrong, I don't know where exactly it would fit... )
A wee bit of intro before we get to the good part: I'm a long time ACC user, and had been thinking of forking it for some time now to try some fixes.
Well, I did just that a few days ago and have been experimenting with just completely rewriting the prompts. There's still some minor problems, but it's giving me very nice results, so I thought I'd share the style of prompt I've been using:
```
Role:
You are a cultured English linguist, novelist and dramaturge working on a theatrical play. Maintain internal consistency within the story, and prioritize pacing and plot momentum over minor details. Currently, you are method-acting as {{char}} to write the next few lines in-character.
Characters:
(Character descriptions.)
Lorebook:
(Memories and lore.)
Previous Events:
(Summaries and chat log.)
Task:
Write the next few lines in the play as {{char}}. The lines must be fluid; avoid machine-sounding language and one-word sentences. Every acting decision must serve a clear purpose and be well-described, or else be entirely omitted.
Most imperative -- {{instruction}}
Constraints:
Never use the em dash symbol ("-"). Replace all em dashes with either of: comma (","), semicolon (";"), double hyphen ("--"), colon (":"), ellipsis ("...") or parenthesis. Do not hyperfixate on a single punctuation symbol, use variations of these instead.
Avoid repeating phrases, wordings or structures that are already present in previous lines. If a line or sentiment echoes a previous one, then either write a variation of it or omit it altogether. Minimize repetition to keep the text fluid and interesting.
Avoid hyperfixating on trivialities; some information is merely there for flavor or as backdrop, and doesn't need over-explaining nor over-description. If a detail doesn’t advance character arcs or stakes, either ignore it or summarize it in under 10 words.
Unless it fits with their personality, violence should be the very last resort for a character under normal circumstances.
```
Let's break it down a little:
Constraintsis the most important one: making the AI autocorrect it's own effups. Nowhere near perfect, but it appears to be working as intended, specially the no-em-dash and no-violence bits.Rolehas a slightly more subtle effect; it's mostly there to ground the AI in some sort of overarching persona, and can also direct it's attention in some way, meaning it'll interpret the input differently and/or focus on different aspects of it. The "Currently, you are ..." bit essentially 'prepares' the AI for theTaskwithout getting into specifics. You can get good variations in tone and vocabulary by altering this field, but it's the one I've experimented with the least.TaskI think is pretty self explanatory -- it directly controls what the AI will output. This can alter tone and vocabulary much more strongly thanRole, at least in my testing, which is why I tied it to the character that's currently speaking and then just gave it some general advice. You can also very effectively control output format through this field. The "### Most imperative -- ..." bit is just me trying to get it to always respect the user's reply instruction, the idea would be that it should see that part as vital, and everything else as a suggestion. Should go without saying that this only appears if such an instruction was passed by the user.
Characters, Lorebooks and Previous Events are essentially just a bunch of chat logs; all of these I structure in the same way.
I think it's superfluous to include this, but just for completion, I'll give you an example of what these sections would look like:
```
Characters:
[[Chloe]]: Anon's assistant. Allegedly unstable ('Allegedly')
[[Bobby Brown]]: They say he's the cutest boy in town. His car is fast, his teeth are shiny.
[[Anon]]: They are so sexy and misterious.
Lorebook:
[[Lore]]: The Spell of Unseeing allows you to unsee things, whereas the Spell of Recursion allows you to use the Spell of Recursion.
[[Memory]]: Bobby Brown once got a job doing radio promo.
Previous Events:
[[Summary]]: (A bunch of things happening all at once.)
[[Chloe]]: "Wh-what... ? Sir, I-I d-do not work for the Chinese government..." She said nervously, skin pale and voice trembling.
[[Anon]]: "Oh, yeah? Then how do you explain THIS?!" Pulls out a picture of John Cena and slams it on her desk.
[[Chloe]]: "AAAH!" Jumps through the FFFFken window.
```
I apologize in advance for what you just read :) but anyway, that should give you a good idea.
Now, I haven't made my fork public yet because I need to fine-tune the prompts for generating summaries and memories (as well as memory/lore queries). I rewrote these prompts already, in this exact style, with only minor differences for the Role and Task fields, the problem is that the new model tends to make the generated memories and summaries way too long, and I'm trying to see if I can fix that.
However, if you'd like to test this prompt template, there's a nice way to do it (and this is very much how I came up with it in the first place): using the plain AI text generator. Plugging in the variables can be a bit annoying, but anyway, perhaps I can make a generator for that at one point (or maybe someone else will beat me to it :)).
A final note, more off-topic, but this is something I thought was very cool: because the memory/lore queries always seem to try and fetch the information most unlikely to ever be in a lorebook, I changed it to generate thoughts from the character's point of view instead. I can't yet say if the memories it retrieves are more relevant this way (seems to be about the same, tends to just fetch fairly random stuff), but the nice thing is you effectively get a glimpse into a character's thoughts when you press the little brain icon. It's mostly inconsequential, but I found it helped my immersion a lot lmao.
Anyway, that's it, folks! End of post. I hope this can be useful to someone; and if anyone's interested, I'll share my fork of ACC when I'm done testing and setting things up. Thank you for reading! :D