Merge pull request #1263 from bdashore3/preset-expansion
Preset setting expansion
This commit is contained in:
commit
f9cb6d783e
|
@ -1,6 +1,11 @@
|
|||
{
|
||||
"story_string": "{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}",
|
||||
"chat_start": "",
|
||||
"example_separator": "",
|
||||
"chat_start": "",
|
||||
"always_force_name2": false,
|
||||
"trim_sentences": false,
|
||||
"include_newline": false,
|
||||
"custom_stopping_strings": "[\"\\n\"]",
|
||||
"custom_stopping_strings_macro": true,
|
||||
"name": "Adventure"
|
||||
}
|
|
@ -41,6 +41,7 @@ export {
|
|||
fixMarkdown,
|
||||
power_user,
|
||||
send_on_enter_options,
|
||||
getContextSettings,
|
||||
};
|
||||
|
||||
export const MAX_CONTEXT_DEFAULT = 4096;
|
||||
|
@ -249,6 +250,20 @@ const storage_keys = {
|
|||
expand_message_actions: 'ExpandMessageActions',
|
||||
};
|
||||
|
||||
const contextControls = [
|
||||
// Power user context scoped settings
|
||||
{ id: "context_story_string", property: "story_string", isCheckbox: false, isGlobalSetting: false },
|
||||
{ id: "context_example_separator", property: "example_separator", isCheckbox: false, isGlobalSetting: false },
|
||||
{ id: "context_chat_start", property: "chat_start", isCheckbox: false, isGlobalSetting: false },
|
||||
|
||||
// Existing power user settings
|
||||
{ id: "always-force-name2-checkbox", property: "always_force_name2", isCheckbox: true, isGlobalSetting: true },
|
||||
{ id: "trim_sentences_checkbox", property: "trim_sentences", isCheckbox: true, isGlobalSetting: true },
|
||||
{ id: "include_newline_checkbox", property: "include_newline", isCheckbox: true, isGlobalSetting: true },
|
||||
{ id: "custom_stopping_strings", property: "custom_stopping_strings", isCheckbox: false, isGlobalSetting: true },
|
||||
{ id: "custom_stopping_strings_macro", property: "custom_stopping_strings_macro", isCheckbox: true, isGlobalSetting: true }
|
||||
];
|
||||
|
||||
let browser_has_focus = true;
|
||||
const debug_functions = [];
|
||||
|
||||
|
@ -1083,14 +1098,28 @@ function switchMaxContextSize() {
|
|||
}
|
||||
}
|
||||
|
||||
function loadContextSettings() {
|
||||
const controls = [
|
||||
{ id: "context_story_string", property: "story_string", isCheckbox: false },
|
||||
{ id: "context_example_separator", property: "example_separator", isCheckbox: false },
|
||||
{ id: "context_chat_start", property: "chat_start", isCheckbox: false },
|
||||
];
|
||||
// Fetch a compiled object of all preset settings
|
||||
function getContextSettings() {
|
||||
let compiledSettings = {};
|
||||
|
||||
controls.forEach(control => {
|
||||
contextControls.forEach((control) => {
|
||||
let value = control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property];
|
||||
|
||||
// Force to a boolean if the setting is a checkbox
|
||||
if (control.isCheckbox) {
|
||||
value = !!value;
|
||||
}
|
||||
|
||||
compiledSettings[control.property] = value;
|
||||
});
|
||||
|
||||
return compiledSettings;
|
||||
}
|
||||
|
||||
// TODO: Maybe add a refresh button to reset settings to preset
|
||||
// TODO: Add "global state" if a preset doesn't set the power_user checkboxes
|
||||
function loadContextSettings() {
|
||||
contextControls.forEach(control => {
|
||||
const $element = $(`#${control.id}`);
|
||||
|
||||
if (control.isCheckbox) {
|
||||
|
@ -1099,8 +1128,16 @@ function loadContextSettings() {
|
|||
$element.val(power_user.context[control.property]);
|
||||
}
|
||||
|
||||
// If the setting already exists, no need to duplicate it
|
||||
// TODO: Maybe check the power_user object for the setting instead of a flag?
|
||||
$element.on('input', function () {
|
||||
power_user.context[control.property] = control.isCheckbox ? !!$(this).prop('checked') : $(this).val();
|
||||
const value = control.isCheckbox ? !!$(this).prop('checked') : $(this).val();
|
||||
if (control.isGlobalSetting) {
|
||||
power_user[control.property] = value;
|
||||
} else {
|
||||
power_user.context[control.property] = value;
|
||||
}
|
||||
|
||||
saveSettingsDebounced();
|
||||
if (!control.isCheckbox) {
|
||||
resetScrollHeight($element);
|
||||
|
@ -1126,15 +1163,24 @@ function loadContextSettings() {
|
|||
}
|
||||
|
||||
power_user.context.preset = name;
|
||||
controls.forEach(control => {
|
||||
contextControls.forEach(control => {
|
||||
if (preset[control.property] !== undefined) {
|
||||
power_user.context[control.property] = preset[control.property];
|
||||
if (control.isGlobalSetting) {
|
||||
power_user[control.property] = preset[control.property];
|
||||
} else {
|
||||
power_user.context[control.property] = preset[control.property];
|
||||
}
|
||||
|
||||
const $element = $(`#${control.id}`);
|
||||
|
||||
if (control.isCheckbox) {
|
||||
$element.prop('checked', power_user.context[control.property]).trigger('input');
|
||||
$element
|
||||
.prop('checked', control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property])
|
||||
.trigger('input');
|
||||
} else {
|
||||
$element.val(power_user.context[control.property]).trigger('input');
|
||||
$element
|
||||
.val(control.isGlobalSetting ? power_user[control.property] : power_user.context[control.property])
|
||||
.trigger('input');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -18,7 +18,7 @@ import {
|
|||
import { groups, selected_group } from "./group-chats.js";
|
||||
import { instruct_presets } from "./instruct-mode.js";
|
||||
import { kai_settings } from "./kai-settings.js";
|
||||
import { context_presets, power_user } from "./power-user.js";
|
||||
import { context_presets, getContextSettings, power_user } from "./power-user.js";
|
||||
import {
|
||||
textgenerationwebui_preset_names,
|
||||
textgenerationwebui_presets,
|
||||
|
@ -104,6 +104,7 @@ class PresetManager {
|
|||
|
||||
async updatePreset() {
|
||||
const selected = $(this.select).find("option:selected");
|
||||
console.log(selected)
|
||||
|
||||
if (selected.val() == 'gui') {
|
||||
toastr.info('Cannot update GUI preset');
|
||||
|
@ -236,7 +237,7 @@ class PresetManager {
|
|||
case "textgenerationwebui":
|
||||
return textgenerationwebui_settings;
|
||||
case "context":
|
||||
const context_preset = structuredClone(power_user.context);
|
||||
const context_preset = getContextSettings();
|
||||
context_preset['name'] = name || power_user.context.preset;
|
||||
return context_preset;
|
||||
case "instruct":
|
||||
|
|
Loading…
Reference in New Issue