Advanced formatting options

This commit is contained in:
SillyLossy
2023-03-19 19:31:20 +02:00
parent e97546c194
commit 8f81da2363
4 changed files with 128 additions and 9 deletions

View File

@ -839,6 +839,30 @@
</label>
</div>
</div>
<div class="drawer">
<div class="drawer-toggle drawer-header">
<h3>Advanced Formatting
<a href="/notes/advanced_formatting" class="notes-link" target="_blank">
<span class="note-link-span">?</span>
</a>
</h3>
<div class="drawer-icon down"></div>
</div>
<div class="drawer-content">
<label class="checkbox_label" for="disable-description-formatting-checkbox">
<input id="disable-description-formatting-checkbox" type="checkbox" />
<h4>Disable description formatting</h4>
</label>
<label class="checkbox_label" for="disable-scenario-formatting-checkbox">
<input id="disable-scenario-formatting-checkbox" type="checkbox" />
<h4>Disable scenario formatting</h4>
</label>
<label class="checkbox_label" for="disable-personality-formatting-checkbox">
<input id="disable-personality-formatting-checkbox" type="checkbox" />
<h4>Disable personality formatting</h4>
</label>
</div>
</div>
</div>
<hr>
@ -944,8 +968,8 @@
</div>
<div class="mes_bias">${bias}</div>
<div class="swipe_right">
<img src="img/swipe_right.png">
<div class="swipes-counter"></div>
<img src="img/swipe_right.png">
</div>
</div>
</div>

View File

@ -0,0 +1,52 @@
<html>
<head>
<title>Advanced Formatting</title>
<link rel="stylesheet" href="/css/notes.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link
href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&amp;display=swap"
rel="stylesheet">
</head>
<body>
<div id="main">
<div id="content">
<h2>Advanced Formatting</h2>
<p>
The settings provided in this section allow for a more control over the prompt building strategy.
</p>
<h3>For <u>Pygmalion</u> models</h3>
<h4>Disable description formatting</h4>
<p>
<code><b>NAME's Persona: </b></code> won't be prepended to the content your character's Description box.
</p>
<h4>Disable scenario formatting</h4>
<p>
<code><b>Scenario: </b></code> won't be prepended to the content your character's Scenario box.
</p>
<h4>Disable personality formatting</h4>
<p>
<code><b>Personality: </b></code> won't be prepended to the content your character's Personality box.
</p>
<h3>For <u>non-Pygmalion</u> models</h3>
<h4>Disable description formatting</h4>
<p>
Has no effect.
</p>
<h4>Disable scenario formatting</h4>
<p>
<code><b>Circumstances and context of the dialogue: </b></code> won't be prepended to the content your character's Scenario box.
</p>
<h4>Disable personality formatting</h4>
<p>
<code><b>NAME's personality: </b></code> won't be prepended to the content your character's Personality box.
</p>
</div>
</div>
</body>
</html>

View File

@ -36,6 +36,9 @@ import {
collapse_newlines,
pin_examples,
collapseNewlines,
disable_description_formatting,
disable_personality_formatting,
disable_scenario_formatting,
} from "./scripts/power-user.js";
import { debounce, delay } from "./scripts/utils.js";
@ -1099,12 +1102,12 @@ async function Generate(type, automatic_trigger) {//encode("dsfs").length
let mesExamplesArray = mesExamples.split(/<START>/gi).slice(1).map(block => `<START>\n${block.trim()}\n`);
if (is_pygmalion) {
storyString += appendToStoryString(charDescription, name2 + "'s Persona: ");
storyString += appendToStoryString(charPersonality, 'Personality: ');
storyString += appendToStoryString(Scenario, 'Scenario: ');
storyString += appendToStoryString(charDescription, disable_description_formatting ? '' : name2 + "'s Persona: ");
storyString += appendToStoryString(charPersonality, disable_personality_formatting ? '' : 'Personality: ');
storyString += appendToStoryString(Scenario, disable_scenario_formatting ? '' : 'Scenario: ');
} else {
if (charDescription !== undefined) {
if (charPersonality.length > 0) {
if (charPersonality.length > 0 && !disable_personality_formatting) {
charPersonality = name2 + "'s personality: " + charPersonality;
}
}
@ -1120,12 +1123,15 @@ async function Generate(type, automatic_trigger) {//encode("dsfs").length
}
}
if (pin_examples){
if (pin_examples) {
for (let example of mesExamplesArray) {
if(!is_pygmalion) {
if (!storyString.endsWith('\n')) {
storyString += '\n';
}
example = example.replace(/<START>/i, 'This is how '+name2+' should talk');//An example of how '+name2+' responds
}
storyString += example;
storyString += appendToStoryString(example, '');
}
}
//////////////////////////////////
@ -1230,7 +1236,10 @@ async function Generate(type, automatic_trigger) {//encode("dsfs").length
}
}
if (!is_pygmalion && Scenario && Scenario.length > 0) {
storyString += `Circumstances and context of the dialogue: ${Scenario}\n`;
if (!storyString.endsWith('\n')) {
storyString += '\n';
}
storyString += !disable_scenario_formatting ? `Circumstances and context of the dialogue: ${Scenario}\n` : `${Scenario}\n`;
}
console.log('calling runGenerate');
runGenerate();
@ -1354,6 +1363,10 @@ async function Generate(type, automatic_trigger) {//encode("dsfs").length
finalPromt = worldInfoBefore + storyString + worldInfoAfter + extension_prompt + mesExmString + mesSendString + generatedPromtCache + promptBias;
finalPromt = finalPromt.replace(/\r/gm, '');
if (collapse_newlines) {
finalPromt = collapseNewlines(finalPromt);
}
//console.log('final prompt decided');
//if we aren't using the kobold GUI settings...

View File

@ -3,16 +3,25 @@ export {
collapse_newlines,
force_pygmalion_formatting,
pin_examples,
disable_description_formatting,
disable_scenario_formatting,
disable_personality_formatting,
};
let collapse_newlines = false;
let force_pygmalion_formatting = false;
let pin_examples = false;
let disable_description_formatting = false;
let disable_scenario_formatting = false;
let disable_personality_formatting = false;
const storage_keys = {
collapse_newlines: "TavernAI_collapse_newlines",
force_pygmalion_formatting: "TavernAI_force_pygmalion_formatting",
pin_examples: "TavernAI_pin_examples",
disable_description_formatting: "TavernAI_disable_description_formatting",
disable_scenario_formatting: "TavernAI_disable_scenario_formatting",
disable_personality_formatting: "TavernAI_disable_personality_formatting",
};
function collapseNewlines(x) {
@ -23,10 +32,16 @@ function loadPowerUserSettings() {
collapse_newlines = localStorage.getItem(storage_keys.collapse_newlines) == "true";
force_pygmalion_formatting = localStorage.getItem(storage_keys.force_pygmalion_formatting) == "true";
pin_examples = localStorage.getItem(storage_keys.pin_examples) == "true";
disable_description_formatting = localStorage.getItem(storage_keys.disable_description_formatting) == "true";
disable_scenario_formatting = localStorage.getItem(storage_keys.disable_scenario_formatting) == "true";
disable_personality_formatting = localStorage.getItem(storage_keys.disable_personality_formatting) == "true";
$("#force-pygmalion-formatting-checkbox").prop("checked", force_pygmalion_formatting);
$("#collapse-newlines-checkbox").prop("checked", collapse_newlines);
$("#pin-examples-checkbox").prop("checked", pin_examples);
$("#disable-description-formatting-checkbox").prop("checked", disable_description_formatting);
$("#disable-scenario-formatting-checkbox").prop("checked", disable_scenario_formatting);
$("#disable-personality-formatting-checkbox").prop("checked", disable_personality_formatting);
}
$(document).ready(() => {
@ -47,4 +62,19 @@ $(document).ready(() => {
pin_examples = !!$("#pin-examples-checkbox").prop("checked");
localStorage.setItem(storage_keys.force_pygmalion_formatting, pin_examples);
});
$("#disable-description-formatting-checkbox").change(function () {
disable_description_formatting = !!$("#disable-description-formatting-checkbox").prop('checked');
localStorage.setItem(storage_keys.disable_description_formatting, disable_description_formatting);
})
$("#disable-scenario-formatting-checkbox").change(function () {
disable_scenario_formatting = !!$("#disable-scenario-formatting-checkbox").prop('checked');
localStorage.setItem(storage_keys.disable_scenario_formatting, disable_scenario_formatting);
});
$("#disable-personality-formatting-checkbox").change(function () {
disable_personality_formatting = !!$("#disable-personality-formatting-checkbox").prop('checked');
localStorage.setItem(storage_keys.disable_personality_formatting, disable_personality_formatting);
});
});