diff --git a/public/index.html b/public/index.html index e4a29a730..78903a5ad 100644 --- a/public/index.html +++ b/public/index.html @@ -1851,6 +1851,19 @@
+

+ + Start Reply With + +

+
+ +
+

Pygmalion Formatting diff --git a/public/script.js b/public/script.js index 41d93ea06..a03054ec8 100644 --- a/public/script.js +++ b/public/script.js @@ -1062,6 +1062,11 @@ function messageFormatting(mes, ch_name, isSystem, isUser) { mes = ''; } + // Prompt bias replacement should be applied on the raw message + if (!power_user.show_user_prompt_bias && ch_name && !isUser && !isSystem) { + mes = mes.replaceAll(substituteParams(power_user.user_prompt_bias), ""); + } + if (power_user.auto_fix_generated_markdown) { mes = fixMarkdown(mes); } @@ -1122,7 +1127,6 @@ function messageFormatting(mes, ch_name, isSystem, isUser) { //console.log('mes after removed ') //console.log(mes) } */ - return mes; } @@ -1993,7 +1997,7 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, deactivateSendButtons(); - let { messageBias, promptBias } = getBiasStrings(textareaText, type); + let { messageBias, promptBias, isUserPromptBias } = getBiasStrings(textareaText, type); //********************************* //PRE FORMATING STRING @@ -2068,7 +2072,8 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, storyString += appendToStoryString(Scenario, power_user.disable_scenario_formatting ? '' : 'Circumstances and context of the dialogue: '); } - if (promptBias || power_user.always_force_name2 || is_pygmalion) { + // kingbri MARK: - Make sure the prompt bias isn't the same as the user bias + if ((promptBias && !isUserPromptBias) || power_user.always_force_name2 || is_pygmalion) { force_name2 = true; } @@ -2309,7 +2314,21 @@ async function Generate(type, { automatic_trigger, force_name2, resolve, reject, if (!mesSendString.endsWith('\n')) { mesSendString += '\n'; } - mesSendString += (`${name2}:${promptBias || ''}`); + + // Add a leading space to the prompt bias if applicable + if (!promptBias || promptBias.length === 0) { + console.debug("No prompt bias was found."); + mesSendString += `${name2}:`; + } else if (promptBias.startsWith(' ')) { + console.debug(`A prompt bias with a leading space was found: ${promptBias}`); + mesSendString += `${name2}:${promptBias}` + } else { + console.debug(`A prompt bias was found: ${promptBias}`); + mesSendString += `${name2}: ${promptBias}`; + } + } else if (power_user.user_prompt_bias) { + console.debug(`A prompt bias was found without character's name appended: ${promptBias}`); + mesSendString += substituteParams(power_user.user_prompt_bias); } return mesSendString; @@ -2722,8 +2741,14 @@ export function getBiasStrings(textareaText, type) { } } - promptBias = messageBias || promptBias || ''; - return { messageBias, promptBias }; + promptBias = messageBias || promptBias || power_user.user_prompt_bias || ''; + const isUserPromptBias = promptBias === power_user.user_prompt_bias; + + // Substitute params for everything + messageBias = substituteParams(messageBias); + promptBias = substituteParams(promptBias); + + return { messageBias, promptBias, isUserPromptBias }; } function formatMessageHistoryItem(chatItem, isInstruct) { @@ -3310,32 +3335,29 @@ function extractTitleFromData(data) { } function extractMessageFromData(data) { - let getMessage = ""; - - if (main_api == 'kobold') { - getMessage = data.results[0].text; + switch (main_api) { + case 'kobold': + return data.results[0].text; + case 'koboldhorde': + return data.text; + case 'textgenerationwebui': + return data.results[0].text; + case 'novel': + return data.output; + case 'openai': + case 'poe': + return data; + default: + return '' } - - if (main_api == 'koboldhorde') { - getMessage = data.text; - } - - if (main_api == 'textgenerationwebui') { - getMessage = data.results[0].text; - } - - if (main_api == 'novel') { - getMessage = data.output; - } - - if (main_api == 'openai' || main_api == 'poe') { - getMessage = data; - } - - return getMessage; } function cleanUpMessage(getMessage, isImpersonate, displayIncompleteSentences = false) { + // Append the user bias first before trimming anything else + if (power_user.user_prompt_bias && power_user.user_prompt_bias.length !== 0) { + getMessage = substituteParams(power_user.user_prompt_bias) + getMessage; + } + if (!displayIncompleteSentences && power_user.trim_sentences) { getMessage = end_trim_to_sentence(getMessage, power_user.include_newline); } diff --git a/public/scripts/power-user.js b/public/scripts/power-user.js index 0ea01e3d4..a42ab447a 100644 --- a/public/scripts/power-user.js +++ b/public/scripts/power-user.js @@ -104,6 +104,8 @@ let power_user = { trim_sentences: false, include_newline: false, always_force_name2: false, + user_prompt_bias: '', + show_user_prompt_bias: true, multigen: false, multigen_first_chunk: 50, multigen_next_chunks: 30, @@ -635,6 +637,8 @@ function loadPowerUserSettings(settings, data) { $("#waifuMode").prop("checked", power_user.waifuMode); $("#movingUImode").prop("checked", power_user.movingUI); $("#noShadowsmode").prop("checked", power_user.noShadows); + $("#start_reply_with").val(power_user.user_prompt_bias); + $("#chat-show-reply-prefix-checkbox").prop("checked", power_user.show_user_prompt_bias); $("#multigen").prop("checked", power_user.multigen); $("#multigen_first_chunk").val(power_user.multigen_first_chunk); $("#multigen_next_chunks").val(power_user.multigen_next_chunks); @@ -1178,6 +1182,17 @@ $(document).ready(() => { reloadMarkdownProcessor(power_user.render_formulas); }); + $("#start_reply_with").on('input', function() { + power_user.user_prompt_bias = $(this).val(); + saveSettingsDebounced(); + }); + + $("#chat-show-reply-prefix-checkbox").change(function () { + power_user.show_user_prompt_bias = !!$(this).prop("checked"); + reloadCurrentChat(); + saveSettingsDebounced(); + }) + $("#multigen").change(function () { power_user.multigen = $(this).prop("checked"); saveSettingsDebounced();