Refactor instruct names behavior controls (#2837) * Refactor instruct names behavior controls Closes #2819 * Remove current persona from force names * Don't add current user name in groups * Revert to old text * Add titles to names behavior * Proper default for names_behavior

ca4d3c5ffee455baaa02d52d92626abd7209ce93

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
33 files changed, +80 -79Ignore whitespace
default/content/presets/instruct/Adventure.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "none",
11 "names_force_groups": false,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Alpaca-Roleplay.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": true,10 "names_behavior": "always",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Alpaca-Single-Turn.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Alpaca.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/ChatML-Names.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "<|im_end|>",7 "stop_sequence": "<|im_end|>",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "none",
11 "names_force_groups": false,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/ChatML.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "<|im_end|>",7 "stop_sequence": "<|im_end|>",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": true,10 "names_behavior": "always",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Command R.json+2 -3
@@ -9,8 +9,7 @@
9 "stop_sequence": "<|END_OF_TURN_TOKEN|>",9 "stop_sequence": "<|END_OF_TURN_TOKEN|>",
10 "wrap": false,10 "wrap": false,
11 "macro": true,11 "macro": true,
12 "names": true,12 "names_behavior": "always",
13 "names_force_groups": true,
14 "activation_regex": "",13 "activation_regex": "",
15 "skip_examples": false,14 "skip_examples": false,
16 "output_suffix": "<|END_OF_TURN_TOKEN|>",15 "output_suffix": "<|END_OF_TURN_TOKEN|>",
@@ -21,4 +20,4 @@
21 "last_system_sequence": "",20 "last_system_sequence": "",
22 "system_same_as_user": false,21 "system_same_as_user": false,
23 "name": "Command R"22 "name": "Command R"
24}
24 \ No newline at end of file \ No newline at end of file
23}
default/content/presets/instruct/DreamGen Role-Play V1 ChatML.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "\n<|im_start|>",7 "stop_sequence": "\n<|im_start|>",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "none",
11 "names_force_groups": false,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/DreamGen Role-Play V1 Llama3.json+2 -3
@@ -10,9 +10,8 @@
10 "separator_sequence": "",10 "separator_sequence": "",
11 "wrap": false,11 "wrap": false,
12 "macro": true,12 "macro": true,
13 "names": false,13 "names_behavior": "none",
14 "names_force_groups": false,
15 "activation_regex": "",14 "activation_regex": "",
16 "skip_examples": false,15 "skip_examples": false,
17 "name": "DreamGen Role-Play V1 Llama3"16 "name": "DreamGen Role-Play V1 Llama3"
18}
18 \ No newline at end of file \ No newline at end of file
17}
default/content/presets/instruct/Gemma 2.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "<end_of_turn>",7 "stop_sequence": "<end_of_turn>",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "none",
11 "names_force_groups": false,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Koala.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "BEGINNING OF CONVERSATION: ",12 "system_sequence_prefix": "BEGINNING OF CONVERSATION: ",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Libra-32B.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": true,10 "names_behavior": "always",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Lightning 1.1.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Llama 2 Chat.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Llama 3 Instruct.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "<|eot_id|>",7 "stop_sequence": "<|eot_id|>",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": true,10 "names_behavior": "always",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Llama-3-Instruct-Names.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "<|eot_id|>",7 "stop_sequence": "<|eot_id|>",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "none",
11 "names_force_groups": false,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Metharme.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "</s>",7 "stop_sequence": "</s>",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "<|system|>",12 "system_sequence_prefix": "<|system|>",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Mistral.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": true,10 "names_behavior": "always",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/OpenOrca-OpenChat.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Phi.json+2 -3
@@ -9,8 +9,7 @@
9 "stop_sequence": "<|end|>",9 "stop_sequence": "<|end|>",
10 "wrap": false,10 "wrap": false,
11 "macro": true,11 "macro": true,
12 "names": true,12 "names_behavior": "always",
13 "names_force_groups": true,
14 "activation_regex": "",13 "activation_regex": "",
15 "skip_examples": false,14 "skip_examples": false,
16 "output_suffix": "<|end|>\n",15 "output_suffix": "<|end|>\n",
@@ -21,4 +20,4 @@
21 "last_system_sequence": "",20 "last_system_sequence": "",
22 "system_same_as_user": false,21 "system_same_as_user": false,
23 "name": "Phi"22 "name": "Phi"
24}
24 \ No newline at end of file \ No newline at end of file
23}
default/content/presets/instruct/Pygmalion.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "<|user|>",7 "stop_sequence": "<|user|>",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": true,10 "names_behavior": "always",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "<|system|>",12 "system_sequence_prefix": "<|system|>",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Story.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "none",
11 "names_force_groups": false,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Synthia.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "SYSTEM: ",12 "system_sequence_prefix": "SYSTEM: ",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Vicuna 1.0.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/Vicuna 1.1.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": false,8 "wrap": false,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "BEGINNING OF CONVERSATION:",12 "system_sequence_prefix": "BEGINNING OF CONVERSATION:",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/WizardLM-13B.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/WizardLM.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "force",
11 "names_force_groups": true,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/presets/instruct/simple-proxy-for-tavern.json+1 -2
@@ -7,8 +7,7 @@
7 "stop_sequence": "",7 "stop_sequence": "",
8 "wrap": true,8 "wrap": true,
9 "macro": true,9 "macro": true,
10 "names": false,10 "names_behavior": "none",
11 "names_force_groups": false,
12 "activation_regex": "",11 "activation_regex": "",
13 "system_sequence_prefix": "",12 "system_sequence_prefix": "",
14 "system_sequence_suffix": "",13 "system_sequence_suffix": "",
default/content/settings.json+1 -2
@@ -162,8 +162,7 @@
162 "stop_sequence": "",162 "stop_sequence": "",
163 "wrap": true,163 "wrap": true,
164 "macro": true,164 "macro": true,
165 "names": false,165 "names_behavior": "force",
166 "names_force_groups": true,
167 "activation_regex": "",166 "activation_regex": "",
168 "system_sequence_prefix": "",167 "system_sequence_prefix": "",
169 "system_sequence_suffix": "",168 "system_sequence_suffix": "",
public/index.html+17 -8
@@ -3297,14 +3297,23 @@
3297 <input id="instruct_skip_examples" type="checkbox" />3297 <input id="instruct_skip_examples" type="checkbox" />
3298 <small data-i18n="Skip Example Dialogues Formatting">Skip Example Dialogues Formatting</small>3298 <small data-i18n="Skip Example Dialogues Formatting">Skip Example Dialogues Formatting</small>
3299 </label>3299 </label>
3300 <label for="instruct_names" class="checkbox_label">3300 <div id="instruct_names_behavior">
3301 <input id="instruct_names" type="checkbox" />3301 <small data-i18n="Include Names">
3302 <small data-i18n="Include Names">Include Names</small>3302 Include Names
3303 </label>3303 </small>
3304 <label for="instruct_names_force_groups" class="checkbox_label indent20p">3304 <label for="instruct_names_behavior_none" class="checkbox_label" title="Do not add name prefixes before the message contents.">
3305 <input id="instruct_names_force_groups" type="checkbox" />3305 <input id="instruct_names_behavior_none" name="names_behavior" value="none" type="radio" />
3306 <small data-i18n="Force for Groups and Personas">Force for Groups and Personas</small>3306 <small data-i18n="Never">Never</small>
3307 </label>3307 </label>
3308 <label for="instruct_names_behavior_force" class="checkbox_label" title="Only add name prefixes to messages from group characters and past personas.">
3309 <input id="instruct_names_behavior_force" name="names_behavior" value="force" type="radio" />
3310 <small data-i18n="Groups and Past Personas">Groups and Past Personas</small>
3311 </label>
3312 <label for="instruct_names_behavior_always" class="checkbox_label" title="Always add name prefixes to messages.">
3313 <input id="instruct_names_behavior_always" name="names_behavior" value="always" type="radio" />
3314 <small data-i18n="Always">Always</small>
3315 </label>
3316 </div>
3308 </div>3317 </div>
3309 </div>3318 </div>
3310 <div name="tokenizerSettingsBlock">3319 <div name="tokenizerSettingsBlock">
public/scripts/instruct-mode.js+28 -7
@@ -14,6 +14,12 @@ import { regexFromString, resetScrollHeight } from './utils.js';
14 */14 */
15export let instruct_presets = [];15export let instruct_presets = [];
1616
17export const names_behavior_types = {
18 NONE: 'none',
19 FORCE: 'force',
20 ALWAYS: 'always',
21};
22
17const controls = [23const controls = [
18 { id: 'instruct_enabled', property: 'enabled', isCheckbox: true },24 { id: 'instruct_enabled', property: 'enabled', isCheckbox: true },
19 { id: 'instruct_wrap', property: 'wrap', isCheckbox: true },25 { id: 'instruct_wrap', property: 'wrap', isCheckbox: true },
@@ -30,8 +36,6 @@ const controls = [
30 { id: 'instruct_user_alignment_message', property: 'user_alignment_message', isCheckbox: false },36 { id: 'instruct_user_alignment_message', property: 'user_alignment_message', isCheckbox: false },
31 { id: 'instruct_stop_sequence', property: 'stop_sequence', isCheckbox: false },37 { id: 'instruct_stop_sequence', property: 'stop_sequence', isCheckbox: false },
32 { id: 'instruct_names', property: 'names', isCheckbox: true },38 { id: 'instruct_names', property: 'names', isCheckbox: true },
33 { id: 'instruct_macro', property: 'macro', isCheckbox: true },
34 { id: 'instruct_names_force_groups', property: 'names_force_groups', isCheckbox: true },
35 { id: 'instruct_first_output_sequence', property: 'first_output_sequence', isCheckbox: false },39 { id: 'instruct_first_output_sequence', property: 'first_output_sequence', isCheckbox: false },
36 { id: 'instruct_last_output_sequence', property: 'last_output_sequence', isCheckbox: false },40 { id: 'instruct_last_output_sequence', property: 'last_output_sequence', isCheckbox: false },
37 { id: 'instruct_first_input_sequence', property: 'first_input_sequence', isCheckbox: false },41 { id: 'instruct_first_input_sequence', property: 'first_input_sequence', isCheckbox: false },
@@ -39,6 +43,7 @@ const controls = [
39 { id: 'instruct_activation_regex', property: 'activation_regex', isCheckbox: false },43 { id: 'instruct_activation_regex', property: 'activation_regex', isCheckbox: false },
40 { id: 'instruct_bind_to_context', property: 'bind_to_context', isCheckbox: true },44 { id: 'instruct_bind_to_context', property: 'bind_to_context', isCheckbox: true },
41 { id: 'instruct_skip_examples', property: 'skip_examples', isCheckbox: true },45 { id: 'instruct_skip_examples', property: 'skip_examples', isCheckbox: true },
46 { id: 'instruct_names_behavior input[name="names_behavior"]', property: 'names_behavior', isCheckbox: false },
42 { id: 'instruct_system_same_as_user', property: 'system_same_as_user', isCheckbox: true, trigger: true },47 { id: 'instruct_system_same_as_user', property: 'system_same_as_user', isCheckbox: true, trigger: true },
43];48];
4449
@@ -54,6 +59,15 @@ function migrateInstructModeSettings(settings) {
54 delete settings.separator_sequence;59 delete settings.separator_sequence;
55 }60 }
5661
62 // names, names_force_groups => names_behavior
63 if (settings.names !== undefined) {
64 settings.names_behavior = settings.names
65 ? names_behavior_types.ALWAYS
66 : (settings.names_force_groups ? names_behavior_types.FORCE : names_behavior_types.NONE);
67 delete settings.names;
68 delete settings.names_force_groups;
69 }
70
57 const defaults = {71 const defaults = {
58 input_suffix: '',72 input_suffix: '',
59 system_sequence: '',73 system_sequence: '',
@@ -65,6 +79,7 @@ function migrateInstructModeSettings(settings) {
65 names_force_groups: true,79 names_force_groups: true,
66 skip_examples: false,80 skip_examples: false,
67 system_same_as_user: false,81 system_same_as_user: false,
82 names_behavior: names_behavior_types.FORCE,
68 };83 };
6984
70 for (let key in defaults) {85 for (let key in defaults) {
@@ -94,6 +109,9 @@ export async function loadInstructMode(data) {
94109
95 if (control.isCheckbox) {110 if (control.isCheckbox) {
96 $element.prop('checked', power_user.instruct[control.property]);111 $element.prop('checked', power_user.instruct[control.property]);
112 } else if (control.property === 'names_behavior') {
113 const behavior = power_user.instruct[control.property];
114 $element.filter(`[value="${behavior}"]`).prop('checked', true);
97 } else {115 } else {
98 $element.val(power_user.instruct[control.property]);116 $element.val(power_user.instruct[control.property]);
99 }117 }
@@ -311,9 +329,9 @@ export const force_output_sequence = {
311 * @returns {string} Formatted instruct mode chat message.329 * @returns {string} Formatted instruct mode chat message.
312 */330 */
313export function formatInstructModeChat(name, mes, isUser, isNarrator, forceAvatar, name1, name2, forceOutputSequence) {331export function formatInstructModeChat(name, mes, isUser, isNarrator, forceAvatar, name1, name2, forceOutputSequence) {
314 let includeNames = isNarrator ? false : power_user.instruct.names;332 let includeNames = isNarrator ? false : power_user.instruct.names_behavior === names_behavior_types.ALWAYS;
315333
316 if (!isNarrator && power_user.instruct.names_force_groups && (selected_group || forceAvatar)) {334 if (!isNarrator && power_user.instruct.names_behavior === names_behavior_types.FORCE && ((selected_group && name !== name1) || (forceAvatar && name !== name1))) {
317 includeNames = true;335 includeNames = true;
318 }336 }
319337
@@ -416,7 +434,7 @@ export function formatInstructModeExamples(mesExamplesArray, name1, name2) {
416 return mesExamplesArray.map(x => x.replace(/<START>\n/i, blockHeading));434 return mesExamplesArray.map(x => x.replace(/<START>\n/i, blockHeading));
417 }435 }
418436
419 const includeNames = power_user.instruct.names || (!!selected_group && power_user.instruct.names_force_groups);437 const includeNames = power_user.instruct.names_behavior === names_behavior_types.ALWAYS || (!!selected_group && power_user.instruct.names_behavior === names_behavior_types.FORCE);
420438
421 let inputPrefix = power_user.instruct.input_sequence || '';439 let inputPrefix = power_user.instruct.input_sequence || '';
422 let outputPrefix = power_user.instruct.output_sequence || '';440 let outputPrefix = power_user.instruct.output_sequence || '';
@@ -460,7 +478,7 @@ export function formatInstructModeExamples(mesExamplesArray, name1, name2) {
460478
461 for (const example of blockExamples) {479 for (const example of blockExamples) {
462 // If force group/persona names is set, we should override the include names for the user placeholder480 // If force group/persona names is set, we should override the include names for the user placeholder
463 const includeThisName = includeNames || (power_user.instruct.names_force_groups && example.name == 'example_user');481 const includeThisName = includeNames || (power_user.instruct.names_behavior === names_behavior_types.FORCE && example.name == 'example_user');
464482
465 const prefix = example.name == 'example_user' ? inputPrefix : outputPrefix;483 const prefix = example.name == 'example_user' ? inputPrefix : outputPrefix;
466 const suffix = example.name == 'example_user' ? inputSuffix : outputSuffix;484 const suffix = example.name == 'example_user' ? inputSuffix : outputSuffix;
@@ -490,7 +508,7 @@ export function formatInstructModeExamples(mesExamplesArray, name1, name2) {
490 * @returns {string} Formatted instruct mode last prompt line.508 * @returns {string} Formatted instruct mode last prompt line.
491 */509 */
492export function formatInstructModePrompt(name, isImpersonate, promptBias, name1, name2, isQuiet, isQuietToLoud) {510export function formatInstructModePrompt(name, isImpersonate, promptBias, name1, name2, isQuiet, isQuietToLoud) {
493 const includeNames = name && (power_user.instruct.names || (!!selected_group && power_user.instruct.names_force_groups)) && !(isQuiet && !isQuietToLoud);511 const includeNames = name && (power_user.instruct.names_behavior === names_behavior_types.ALWAYS || (!!selected_group && power_user.instruct.names_behavior === names_behavior_types.FORCE)) && !(isQuiet && !isQuietToLoud);
494512
495 function getSequence() {513 function getSequence() {
496 // User impersonation prompt514 // User impersonation prompt
@@ -668,6 +686,9 @@ jQuery(() => {
668686
669 if (control.isCheckbox) {687 if (control.isCheckbox) {
670 $element.prop('checked', power_user.instruct[control.property]).trigger('input');688 $element.prop('checked', power_user.instruct[control.property]).trigger('input');
689 } else if (control.property === 'names_behavior') {
690 const behavior = power_user.instruct[control.property];
691 $element.filter(`[value="${behavior}"]`).prop('checked', true).trigger('input');
671 } else {692 } else {
672 $element.val(power_user.instruct[control.property]);693 $element.val(power_user.instruct[control.property]);
673 $element.trigger('input');694 $element.trigger('input');
public/scripts/openai.js+1 -1
@@ -541,7 +541,7 @@ function setOpenAIMessages(chat) {
541 case character_names_behavior.NONE:541 case character_names_behavior.NONE:
542 break;542 break;
543 case character_names_behavior.DEFAULT:543 case character_names_behavior.DEFAULT:
544 if (selected_group || (chat[j].force_avatar && chat[j].name !== name1 && chat[j].extra?.type !== system_message_types.NARRATOR)) {544 if ((selected_group && chat[j].name !== name1) || (chat[j].force_avatar && chat[j].name !== name1 && chat[j].extra?.type !== system_message_types.NARRATOR)) {
545 content = `${chat[j].name}: ${content}`;545 content = `${chat[j].name}: ${content}`;
546 }546 }
547 break;547 break;
public/scripts/power-user.js+2 -2
@@ -32,6 +32,7 @@ import {
32import {32import {
33 instruct_presets,33 instruct_presets,
34 loadInstructMode,34 loadInstructMode,
35 names_behavior_types,
35 selectInstructPreset,36 selectInstructPreset,
36} from './instruct-mode.js';37} from './instruct-mode.js';
3738
@@ -224,8 +225,7 @@ let power_user = {
224 stop_sequence: '',225 stop_sequence: '',
225 wrap: true,226 wrap: true,
226 macro: true,227 macro: true,
227 names: false,228 names_behavior: names_behavior_types.FORCE,
228 names_force_groups: true,
229 activation_regex: '',229 activation_regex: '',
230 bind_to_context: false,230 bind_to_context: false,
231 user_alignment_message: '',231 user_alignment_message: '',