From 3f6f32edad654afe2275154082ad8d1753206216 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Wed, 10 Jan 2024 14:11:02 +0200 Subject: [PATCH] Add {{mesExamplesRaw}} macro for story string --- public/script.js | 18 +++++++++++++++--- public/scripts/templates/macros.html | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/public/script.js b/public/script.js index e5624965a..b458c9b3a 100644 --- a/public/script.js +++ b/public/script.js @@ -3151,13 +3151,24 @@ async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, qu if (mesExamples.replace(//gi, '').trim().length === 0) { mesExamples = ''; } + const mesExamplesRaw = mesExamples; if (mesExamples && isInstruct) { mesExamples = formatInstructModeExamples(mesExamples, name1, name2); } - const exampleSeparator = power_user.context.example_separator ? `${substituteParams(power_user.context.example_separator)}\n` : ''; - const blockHeading = main_api === 'openai' ? '\n' : exampleSeparator; - let mesExamplesArray = mesExamples.split(//gi).slice(1).map(block => `${blockHeading}${block.trim()}\n`); + /** + * Adds a block heading to the examples string. + * @param {string} examplesStr + * @returns {string[]} Examples array with block heading + */ + function addBlockHeading(examplesStr) { + const exampleSeparator = power_user.context.example_separator ? `${substituteParams(power_user.context.example_separator)}\n` : ''; + const blockHeading = main_api === 'openai' ? '\n' : exampleSeparator; + return examplesStr.split(//gi).slice(1).map(block => `${blockHeading}${block.trim()}\n`); + } + + let mesExamplesArray = addBlockHeading(mesExamples); + let mesExamplesRawArray = addBlockHeading(mesExamplesRaw); // First message in fresh 1-on-1 chat reacts to user/character settings changes if (chat.length) { @@ -3299,6 +3310,7 @@ async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, qu loreBefore: worldInfoBefore, loreAfter: worldInfoAfter, mesExamples: mesExamplesArray.join(''), + mesExamplesRaw: mesExamplesRawArray.join(''), }; const storyString = renderStoryString(storyStringParams); diff --git a/public/scripts/templates/macros.html b/public/scripts/templates/macros.html index a3e0e83a0..9bf203dff 100644 --- a/public/scripts/templates/macros.html +++ b/public/scripts/templates/macros.html @@ -13,6 +13,7 @@
  • {{scenario}} – the Character's Scenario
  • {{persona}} – your current Persona Description
  • {{mesExamples}} – the Character's Dialogue Examples
  • +
  • {{mesExamplesRaw}} – unformatted Dialogue Examples (only for Story String)
  • {{user}} – your current Persona username
  • {{char}} – the Character's name
  • {{lastMessage}} - the text of the latest chat message.