Great model

#5
by goldendase - opened

I did not like Euryale 2.1 and 2.2 (loved 1.3), I think this is a big improvement. Much smarter while producing better writing. I think it's a major success. There's still a bit of slop but my regex collection is so next level it catches most of it. One thing on my wishlist is better utilization of CoT. When forced to, it will write a solid thinking block, but it tends to disregard the thinking block within the response (or, at minimum, be very spotty to the point of me doubting its the thinking block that's making the difference in those cases). I utilize CoT pretty heavily with the corporate models and find it does make a solid difference in RP experience. Even a simple CoT that just pulls relevant character appearance, emotion, action tends to get ignored. I'm not sure how you would build a dataset for this... Maybe feed Hanami responses to opus and have it backfill a CoT block?

Thanks for the great model, in my eyes it's a return to form (no disrespect).

Edit: Also, not sure what's going on with the other people complaining about excessive horniness. That has not been my experience at all and I've tried it with a variety of different cards. All of my cards are custom made, I don't use chub/venus/etc, so seems like a card problem, to me. I use the latest New Dawn Llama 3.1 1.1 instruct with this model and (mostly) the recommended sampler settings. It gets horny when it's supposed to and can stay appropriately in-character for the most part. Occasionally, a swipe is required but not excessive at all. I much prefer this over magnum-123b and luminum, which DO have a horniness problem, are far more brain damaged, much slower, and produce absolutely ridiculous amounts of slop.

@goldendase can you give us your regex scripts?

Sure, I'll give you the most effective ones. I think this is the minimum effective set. I used to run with ~50 regexes at once but there's no need to get so overbearing - you just need to kill the beginnings of the worst offending patterns and break up the writing enough that you're not reinforcing the most common slop. These might raise an eyebrow as they seem aggressive, but they target egregious / common slop patterns and we don't want the LLM to ever see that slop back.

/,\s*as if[^.!?]*[.!?]/g -- removes useless metaphor trailer (", as if X" means X will be a telling not showing metaphor, definitionally).
/,\s*a\s+(gesture|reminder|stark|mix)(\s+[^.]*?)\./g -- removes , a mix of bla, , a stark reminder, etc and more useless metaphor which is pure telling/ restatement not showing
/visibly /g -- visibly X is just X. You're about to tell me what is visible so just tell me, no need to tell me "you're about to see X, here is X"
/,\s*her voice barely above a whisper/g -- consider changing to (whisper|murmur). Murmur is the new whisper.
/,\s*leaving little to the imagination/g
/,\s*(with)?\s*(a few loose tendrils)? framing her face/g -- All hairstyles have a few loose tendrils framing her face and I'm sick of it. There's about four or five variations, this only catches the most common one.
/,\s*a\s+testament(\s+[^.]*?)\./g -- removes , a testament to ... . restatement metaphor / telling not showing.
/ with unshed tears/g -- self-explanatory ("her eyes X with unshed tears." and similar to "her eyes X.")

I couple this with an author's note:

[ IMPORTANT: Banned words and phrases. Avoid the following terms or phrases and their associated forms: "this will destroy me", "I felt so dirty, so ashamed", "Tell me what you want to see", "Scared of losing myself, losing your love", "voice barely above a whisper", "shivers down her spine", "loose tendrils", "framing her face", "a stark contrast", "tracing patterns", "a testament", "I don't X... unless you want me to", "teach me", "show me", "reverent(ly)", "claim", "mark", "brand", "paint", "breed", "vessel", "forbidden love", "forbidden fruit", "barely above a whisper", "shiver(s)", "bond(s)", "claim", "mark", "defile", "good girl", "master", "slave", "evidence", "so dirty", "so exposed", "to the imagination", "baptism", "rutting" ]

Author's note by itself is not enough, you have to prune the slop to reinforce it. Author's note coupled with the regex reinforcing the behavior so the LLM never sees at least most of the BS back improves the writing quality, particularly on longer-form stuff. I also have a quick reply button to remove the last paragraph I hit when any model does the common behavior of 3 paragraphs decent writing followed by 1 paragraph summary / user prod / restatement but that obviously has to remain discretionary, especially as once the beginning of the pattern is aggressively removed early on it tends not to repeat it. Once you have a decent chat history of like 20 messages, the patterns in chat history will be enough to reinforce the generation to the kind of writing you want.

It's not a magic bullet, some BS still gets through but I find it a much, much better experience.

I'm also working on a langchain pipeline that is scraping high-quality human writing and pulling out plot outlines and elements, character traits and personalities, effective writing examples, etc for RAG purposes but the "effective writing samples" bit doesn't help with in-context learning. Believe me, I've tried extensively. The writing patterns are too ingrained by training for it to ever pick up a "new writing style" just from some examples (even if the example token count exceeds your entire chat history + instruct). What it can do, however, is generate (or be provided) an ~800 token plot outline and intelligently create / swap elements if given a databank of elements to pull from. That is actually a very fun way to RP. It beats something like "{{char}}'s main objective: ...", "{{char}}'s three short-term goals: ..." which will guarantee plot slop.

Sign up or log in to comment