mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Custom chat separators + fixes for drawers logic
This commit is contained in:
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "TavernAI",
|
"name": "TavernAI",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "TavernAI",
|
"name": "TavernAI",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dqbd/tiktoken": "^1.0.2",
|
"@dqbd/tiktoken": "^1.0.2",
|
||||||
"axios": "^1.3.4",
|
"axios": "^1.3.4",
|
||||||
|
@ -815,6 +815,15 @@
|
|||||||
Remove Empty New Lines from Output
|
Remove Empty New Lines from Output
|
||||||
</label>
|
</label>
|
||||||
<hr>
|
<hr>
|
||||||
|
<div class="range-block">
|
||||||
|
<div class="range-block-title">
|
||||||
|
Custom Chat Separator
|
||||||
|
</div>
|
||||||
|
<div class="range-block-range">
|
||||||
|
<input id="custom_chat_separator" class="text_pole" type="text" placeholder="<START>" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
<div id="anchors-block">
|
<div id="anchors-block">
|
||||||
Anchors Order
|
Anchors Order
|
||||||
<a href="/notes/9" class="notes-link" target="_blank">
|
<a href="/notes/9" class="notes-link" target="_blank">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { humanizedDateTime } from "./scripts/RossAscends-mods.js";
|
import { humanizedDateTime } from "./scripts/RossAscends-mods.js";
|
||||||
import { encode, decode } from "../scripts/gpt-2-3-tokenizer/mod.js";
|
import { encode } from "../scripts/gpt-2-3-tokenizer/mod.js";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
kai_settings,
|
kai_settings,
|
||||||
@ -45,6 +45,7 @@ import {
|
|||||||
disable_personality_formatting,
|
disable_personality_formatting,
|
||||||
disable_scenario_formatting,
|
disable_scenario_formatting,
|
||||||
always_force_name2,
|
always_force_name2,
|
||||||
|
custom_chat_separator,
|
||||||
} from "./scripts/power-user.js";
|
} from "./scripts/power-user.js";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -67,7 +68,7 @@ import {
|
|||||||
nai_settings,
|
nai_settings,
|
||||||
} from "./scripts/nai-settings.js";
|
} from "./scripts/nai-settings.js";
|
||||||
|
|
||||||
import { debounce, delay, stringFormat } from "./scripts/utils.js";
|
import { debounce, delay } from "./scripts/utils.js";
|
||||||
|
|
||||||
//exporting functions and vars for mods
|
//exporting functions and vars for mods
|
||||||
export {
|
export {
|
||||||
@ -1114,6 +1115,12 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs").
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (custom_chat_separator && custom_chat_separator.length) {
|
||||||
|
for (let i = 0; i < mesExamplesArray.length; i++) {
|
||||||
|
mesExamplesArray[i] = mesExamplesArray[i].replace(/<START>/gi, custom_chat_separator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (pin_examples) {
|
if (pin_examples) {
|
||||||
for (let example of mesExamplesArray) {
|
for (let example of mesExamplesArray) {
|
||||||
if (!is_pygmalion) {
|
if (!is_pygmalion) {
|
||||||
@ -1180,6 +1187,12 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs").
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (main_api == 'openai') {
|
||||||
|
this_max_context = oai_settings.openai_max_context;
|
||||||
|
}
|
||||||
|
if (main_api == 'textgenerationwebui') {
|
||||||
|
this_max_context = (max_context - amount_gen);
|
||||||
|
}
|
||||||
|
|
||||||
let { worldInfoString, worldInfoBefore, worldInfoAfter } = getWorldInfoPrompt(chat2);
|
let { worldInfoString, worldInfoBefore, worldInfoAfter } = getWorldInfoPrompt(chat2);
|
||||||
let extension_prompt = getExtensionPrompt();
|
let extension_prompt = getExtensionPrompt();
|
||||||
@ -1347,9 +1360,16 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs").
|
|||||||
setPromtString();
|
setPromtString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_pygmalion) {
|
// add a custom dingus (if defined)
|
||||||
|
if (custom_chat_separator && custom_chat_separator.length) {
|
||||||
|
mesSendString = custom_chat_separator + '\n' + mesSendString;
|
||||||
|
}
|
||||||
|
// add non-pygma dingus
|
||||||
|
else if (!is_pygmalion) {
|
||||||
mesSendString = '\nThen the roleplay chat between ' + name1 + ' and ' + name2 + ' begins.\n' + mesSendString;
|
mesSendString = '\nThen the roleplay chat between ' + name1 + ' and ' + name2 + ' begins.\n' + mesSendString;
|
||||||
} else {
|
}
|
||||||
|
// add pygma <START>
|
||||||
|
else {
|
||||||
mesSendString = '<START>\n' + mesSendString;
|
mesSendString = '<START>\n' + mesSendString;
|
||||||
//mesSendString = mesSendString; //This edit simply removes the first "<START>" that is prepended to all context prompts
|
//mesSendString = mesSendString; //This edit simply removes the first "<START>" that is prepended to all context prompts
|
||||||
}
|
}
|
||||||
@ -1450,7 +1470,7 @@ async function Generate(type, automatic_trigger, force_name2) {//encode("dsfs").
|
|||||||
name2, // name2
|
name2, // name2
|
||||||
"", // Context
|
"", // Context
|
||||||
true, // stop at newline
|
true, // stop at newline
|
||||||
max_context, // Maximum prompt size in tokens
|
this_max_context, // Maximum prompt size in tokens
|
||||||
1, // num attempts
|
1, // num attempts
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
@ -4100,6 +4120,7 @@ $(document).ready(function () {
|
|||||||
var icon = $(this).find('.drawer-icon');
|
var icon = $(this).find('.drawer-icon');
|
||||||
var drawer = $(this).parent().find('.drawer-content');
|
var drawer = $(this).parent().find('.drawer-content');
|
||||||
var drawerWasOpenAlready = $(this).parent().find('.drawer-content').hasClass('openDrawer');
|
var drawerWasOpenAlready = $(this).parent().find('.drawer-content').hasClass('openDrawer');
|
||||||
|
const pinnedDrawerClicked = drawer.hasClass('pinnedOpen');
|
||||||
|
|
||||||
if (!drawerWasOpenAlready) {
|
if (!drawerWasOpenAlready) {
|
||||||
$('.openDrawer').not('.pinnedOpen').slideToggle(200, "swing");
|
$('.openDrawer').not('.pinnedOpen').slideToggle(200, "swing");
|
||||||
@ -4110,7 +4131,14 @@ $(document).ready(function () {
|
|||||||
$(this).closest('.drawer').find('.drawer-content').slideToggle(200, "swing");
|
$(this).closest('.drawer').find('.drawer-content').slideToggle(200, "swing");
|
||||||
} else if (drawerWasOpenAlready) {
|
} else if (drawerWasOpenAlready) {
|
||||||
icon.toggleClass('closedIcon openIcon');
|
icon.toggleClass('closedIcon openIcon');
|
||||||
$('.openDrawer').slideToggle(200, "swing");
|
|
||||||
|
if (pinnedDrawerClicked) {
|
||||||
|
$(drawer).slideToggle(200, "swing");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('.openDrawer').not('.pinnedOpen').slideToggle(200, "swing");
|
||||||
|
}
|
||||||
|
|
||||||
drawer.toggleClass('closedDrawer openDrawer');
|
drawer.toggleClass('closedDrawer openDrawer');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -287,6 +287,12 @@ $("document").ready(function () {
|
|||||||
} else {
|
} else {
|
||||||
console.log('removing pin class from right nav');
|
console.log('removing pin class from right nav');
|
||||||
$(RightNavPanel).removeClass('pinnedOpen');
|
$(RightNavPanel).removeClass('pinnedOpen');
|
||||||
|
|
||||||
|
if ($(RightNavPanel).hasClass('openDrawer') && $('.openDrawer').length > 1) {
|
||||||
|
$(RightNavPanel).slideToggle(200, "swing");
|
||||||
|
$(rightNavDrawerIcon).toggleClass('openIcon closedIcon');
|
||||||
|
$(RightNavPanel).toggleClass('openDrawer closedDrawer');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -48,6 +48,11 @@ async function moduleWorker() {
|
|||||||
// take the count of messages
|
// take the count of messages
|
||||||
lastMessageNumber = Array.isArray(context.chat) && context.chat.length ? context.chat.filter(m => m.is_user).length : 0;
|
lastMessageNumber = Array.isArray(context.chat) && context.chat.length ? context.chat.filter(m => m.is_user).length : 0;
|
||||||
|
|
||||||
|
// special case for new chat
|
||||||
|
if (Array.isArray(context.chat) && context.chat.length === 1) {
|
||||||
|
lastMessageNumber = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (lastMessageNumber <= 0 || promptInsertionInterval <= 0) {
|
if (lastMessageNumber <= 0 || promptInsertionInterval <= 0) {
|
||||||
$('#extension_floating_counter').text('No');
|
$('#extension_floating_counter').text('No');
|
||||||
return;
|
return;
|
||||||
|
@ -7,6 +7,7 @@ export {
|
|||||||
disable_scenario_formatting,
|
disable_scenario_formatting,
|
||||||
disable_personality_formatting,
|
disable_personality_formatting,
|
||||||
always_force_name2,
|
always_force_name2,
|
||||||
|
custom_chat_separator,
|
||||||
};
|
};
|
||||||
|
|
||||||
let collapse_newlines = false;
|
let collapse_newlines = false;
|
||||||
@ -16,6 +17,7 @@ let disable_description_formatting = false;
|
|||||||
let disable_scenario_formatting = false;
|
let disable_scenario_formatting = false;
|
||||||
let disable_personality_formatting = false;
|
let disable_personality_formatting = false;
|
||||||
let always_force_name2 = false;
|
let always_force_name2 = false;
|
||||||
|
let custom_chat_separator = '';
|
||||||
|
|
||||||
const storage_keys = {
|
const storage_keys = {
|
||||||
collapse_newlines: "TavernAI_collapse_newlines",
|
collapse_newlines: "TavernAI_collapse_newlines",
|
||||||
@ -25,6 +27,7 @@ const storage_keys = {
|
|||||||
disable_scenario_formatting: "TavernAI_disable_scenario_formatting",
|
disable_scenario_formatting: "TavernAI_disable_scenario_formatting",
|
||||||
disable_personality_formatting: "TavernAI_disable_personality_formatting",
|
disable_personality_formatting: "TavernAI_disable_personality_formatting",
|
||||||
always_force_name2: "TavernAI_always_force_name2",
|
always_force_name2: "TavernAI_always_force_name2",
|
||||||
|
custom_chat_separator: "TavernAI_custom_chat_separator",
|
||||||
};
|
};
|
||||||
|
|
||||||
function collapseNewlines(x) {
|
function collapseNewlines(x) {
|
||||||
@ -39,6 +42,7 @@ function loadPowerUserSettings() {
|
|||||||
disable_scenario_formatting = localStorage.getItem(storage_keys.disable_scenario_formatting) == "true";
|
disable_scenario_formatting = localStorage.getItem(storage_keys.disable_scenario_formatting) == "true";
|
||||||
disable_personality_formatting = localStorage.getItem(storage_keys.disable_personality_formatting) == "true";
|
disable_personality_formatting = localStorage.getItem(storage_keys.disable_personality_formatting) == "true";
|
||||||
always_force_name2 = localStorage.getItem(storage_keys.always_force_name2) == "true";
|
always_force_name2 = localStorage.getItem(storage_keys.always_force_name2) == "true";
|
||||||
|
custom_chat_separator = localStorage.getItem(storage_keys.custom_chat_separator);
|
||||||
|
|
||||||
$("#force-pygmalion-formatting-checkbox").prop("checked", force_pygmalion_formatting);
|
$("#force-pygmalion-formatting-checkbox").prop("checked", force_pygmalion_formatting);
|
||||||
$("#collapse-newlines-checkbox").prop("checked", collapse_newlines);
|
$("#collapse-newlines-checkbox").prop("checked", collapse_newlines);
|
||||||
@ -47,6 +51,7 @@ function loadPowerUserSettings() {
|
|||||||
$("#disable-scenario-formatting-checkbox").prop("checked", disable_scenario_formatting);
|
$("#disable-scenario-formatting-checkbox").prop("checked", disable_scenario_formatting);
|
||||||
$("#disable-personality-formatting-checkbox").prop("checked", disable_personality_formatting);
|
$("#disable-personality-formatting-checkbox").prop("checked", disable_personality_formatting);
|
||||||
$("#always-force-name2-checkbox").prop("checked", always_force_name2);
|
$("#always-force-name2-checkbox").prop("checked", always_force_name2);
|
||||||
|
$("#custom_chat_separator").val(custom_chat_separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
$(document).ready(() => {
|
$(document).ready(() => {
|
||||||
@ -87,4 +92,9 @@ $(document).ready(() => {
|
|||||||
always_force_name2 = !!$(this).prop("checked");
|
always_force_name2 = !!$(this).prop("checked");
|
||||||
localStorage.setItem(storage_keys.always_force_name2, always_force_name2);
|
localStorage.setItem(storage_keys.always_force_name2, always_force_name2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#custom_chat_separator").on('input', function() {
|
||||||
|
custom_chat_separator = $(this).val();
|
||||||
|
localStorage.setItem(storage_keys.custom_chat_separator, custom_chat_separator);
|
||||||
|
});
|
||||||
});
|
});
|
@ -2790,7 +2790,7 @@ filter: invert(20%) sepia(100%) saturate(2518%) hue-rotate(353deg) brightness(93
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
border: 1px solid var(--grey30a);
|
border: 1px solid var(--grey30a);
|
||||||
box-shadow: 0 0 20px black;
|
box-shadow: 0 0 20px black;
|
||||||
/* min-width:400px; */
|
min-width: 400px;
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
max-height: calc(100vh - 70px);
|
max-height: calc(100vh - 70px);
|
||||||
display: none;
|
display: none;
|
||||||
@ -2824,6 +2824,7 @@ filter: invert(20%) sepia(100%) saturate(2518%) hue-rotate(353deg) brightness(93
|
|||||||
}
|
}
|
||||||
|
|
||||||
.drawer-content {
|
.drawer-content {
|
||||||
|
min-width: unset;
|
||||||
width: calc(100vw - 10px);
|
width: calc(100vw - 10px);
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
Reference in New Issue
Block a user