Commit Graph

12 Commits

Author SHA1 Message Date
Cohee
6599717bc5 Don't be negative. Be positive 2023-08-22 20:39:14 +03:00
kingbri
ad2be21531 Generate: Fix appends on continue
Continue was in a semi-working state. However, the generated prompt
by continue was a mess and didn't remove essential parts such as
character name and prompt bias. This caused duplication and bad
generations.

Now, append the prompt bias after the CFG has been appended and then
clean up the continued cache before adding it to the final prompt.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-20 17:36:35 -04:00
kingbri
ac319dbd30 CFG: Add positive prompt support and fixes
Positive prompts are the opposite of negative prompts. This helps
make the mixing process more accurate by keeping the negative differences
as close as possible to the positive ones by including this prompt.

In addition, fix prompt insertion order at a depth of 0 by hijacking
the same function used for Author's Note as a zero depth anchor.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-20 02:22:23 -04:00
kingbri
92e6c6a998 CFG: Use ST prompt builder for negatives
Make the generate function build a negative prompt in addition to the
normal one. This allows for nonconflicting insertion with other extension
prompts and World Info.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-20 00:44:39 -04:00
kingbri
7191f7a8ad CFG: Add insertion depth and custom separator
Insertion depth allows for CFG to variably inject itself into the
negative prompt. This is similar to how Author's note works.

However, this method of insertion depth conflicts with AN and
world info where negatives can be meshed between two lines
of those specific insertions.

A custom separator must be wrapped in quotes, otherwise the default
separator is a newline for negative cascading.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-19 01:29:59 -04:00
kingbri
cdbca6d9fd CFG: Include the entire prompt with negative prompt
CFG with LLMs works differently than stable diffusion. The main principle
is prompt mixing and utilizing the differences between the two prompts
rather than a full "negative prompt" of what the user doesn't want.

SillyTavern its own way of formatting a prompt sent to an LLM backend.
Therefore, take that prompt and add negatives to it.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-18 22:18:09 -04:00
Cohee
a0bfc67632 Add hint for CFG scale 2023-08-14 12:50:00 +03:00
kingbri
43e91b150a CFG: Add groupchat support
Groupchats have their CFG defined a little differently. Chat and
global CFGs are publicly accessible within the window. As a compromise,
individual character CFGs can be injected as part of each character's
prompt. However, these CFG settings need to be adjusted in the character's
individual chats which will carry over to the group.

In addition, make this character logic gated under a checkbox to
always prefer chat unless explicitly specified. Negative cascading
is still open, so individual character negatives can be included
at any time.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-12 22:52:34 -04:00
kingbri
4a21ee0337 CFG: Add ability to combine negative prompts
This allows for flexibility with global, character, and chat negative
prompts. Combining prompts is very useful for users who want to maintain
a set of global negatives and then add extra layers on top of that. The
ordering is chat -> character -> global tags due to the specificity of
each.

The guidance scale follows the cascade of chat -> character -> global
due to being one number that is set when CFG is fired. If the guidance
scale is 1, nothing happens.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-12 16:25:35 -04:00
kingbri
5bb6c89868 CFG: Add per-chat CFG and fixes
Per-chat CFG applies a CFG setting per-chat only rather than character
or globally. This overrides all other CFG settings (this will be changed).

Also add fixes to remove character CFG entries properly and not to
apply CFG if the scale is 1 as that won't do anything to generation.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-11 01:39:15 -04:00
kingbri
63ee7d4e10 CFG: Add per-character support
Adds per-character CFG as a drop-in replacement for global CFG. If
the use character CFG checkbox isn't checked, the global one will be
used.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-11 01:39:15 -04:00
kingbri
0c94740560 Extensions: Add global CFG support
CFG is bundled as an extension which is more flexible in terms of
storing settings and consolidating code.

Global CFG is currently supported and the old power user setting
is auto-migrated.

Signed-off-by: kingbri <bdashore3@proton.me>
2023-08-11 01:39:15 -04:00