mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Advanced formatting options
This commit is contained in:
@ -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>
|
||||
|
52
public/notes/advanced_formatting.html
Normal file
52
public/notes/advanced_formatting.html
Normal 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&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>
|
@ -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...
|
||||
|
@ -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);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user