diff --git a/public/img/clock-rotate-left-solid.svg b/public/img/clock-rotate-left-solid.svg new file mode 100644 index 000000000..edb5caae0 --- /dev/null +++ b/public/img/clock-rotate-left-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/index.html b/public/index.html index 21510c575..6ff439c8b 100644 --- a/public/index.html +++ b/public/index.html @@ -816,8 +816,11 @@
-
- Main prompt +
+ Main prompt +
+ +
The main prompt used to set the model behavior @@ -828,8 +831,11 @@
-
- NSFW prompt +
+ NSFW prompt +
+ +
Prompt that is used when the NSFW toggle is on @@ -840,8 +846,11 @@
-
- Jailbreak prompt +
+ Jailbreak prompt +
+ +
Prompt that is used when the Jailbreak toggle is on @@ -851,9 +860,9 @@
-
- - +
+ +
diff --git a/public/scripts/openai.js b/public/scripts/openai.js index 13f403c1d..aaa58a3d5 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -60,6 +60,26 @@ const gpt4_max = 8191; const tokenCache = {}; +const default_settings = { + preset_settings_openai: 'Default', + api_key_openai: '', + temp_openai: 1.0, + freq_pen_openai: 0, + pres_pen_openai: 0, + stream_openai: false, + openai_max_context: gpt3_max, + openai_max_tokens: 300, + nsfw_toggle: true, + enhance_definitions: false, + wrap_in_quotes: false, + nsfw_first: false, + main_prompt: default_main_prompt, + nsfw_prompt: default_nsfw_prompt, + jailbreak_prompt: default_jailbreak_prompt, + openai_model: 'gpt-3.5-turbo-0301', + jailbreak_system: false, +}; + const oai_settings = { preset_settings_openai: 'Default', api_key_openai: '', @@ -524,12 +544,12 @@ function loadOpenAISettings(data, settings) { oai_settings.preset_settings_openai = settings.preset_settings_openai; $(`#settings_perset_openai option[value=${openai_setting_names[oai_settings.preset_settings_openai]}]`).attr('selected', true); - oai_settings.temp_openai = settings.temp_openai ?? 0.9; - oai_settings.freq_pen_openai = settings.freq_pen_openai ?? 0.7; - oai_settings.pres_pen_openai = settings.pres_pen_openai ?? 0.7; - oai_settings.stream_openai = settings.stream_openai ?? true; - oai_settings.openai_max_context = settings.openai_max_context ?? 4095; - oai_settings.openai_max_tokens = settings.openai_max_tokens ?? 300; + oai_settings.temp_openai = settings.temp_openai ?? default_settings.temp_openai; + oai_settings.freq_pen_openai = settings.freq_pen_openai ?? default_settings.freq_pen_openai; + oai_settings.pres_pen_openai = settings.pres_pen_openai ?? default_settings.pres_pen_openai; + oai_settings.stream_openai = settings.stream_openai ?? default_settings.stream_openai; + oai_settings.openai_max_context = settings.openai_max_context ?? default_settings.openai_max_context; + oai_settings.openai_max_tokens = settings.openai_max_tokens ?? default_settings.openai_max_tokens; if (settings.nsfw_toggle !== undefined) oai_settings.nsfw_toggle = !!settings.nsfw_toggle; if (settings.keep_example_dialogue !== undefined) oai_settings.keep_example_dialogue = !!settings.keep_example_dialogue; @@ -612,6 +632,7 @@ function trySelectPresetByName(name) { for (const key in openai_setting_names) { if (name.trim() == key.trim()) { preset_found = key; + break; } } @@ -619,7 +640,56 @@ function trySelectPresetByName(name) { oai_settings.preset_settings_openai = preset_found; const value = openai_setting_names[preset_found] $(`#settings_perset_openai option[value="${value}"]`).attr('selected', true); - $('#settings_perset_openai').trigger('change'); + $('#settings_perset_openai').val(value).trigger('change'); + } +} + +async function saveOpenAIPreset(name, settings) { + const presetBody = { + openai_model: settings.openai_model, + temperature: settings.temp_openai, + frequency_penalty: settings.freq_pen_openai, + presence_penalty: settings.pres_pen_openai, + openai_max_context: settings.openai_max_context, + openai_max_tokens: settings.openai_max_tokens, + nsfw_toggle: settings.nsfw_toggle, + enhance_definitions: settings.enhance_definitions, + wrap_in_quotes: settings.wrap_in_quotes, + nsfw_first: settings.nsfw_first, + main_prompt: settings.main_prompt, + nsfw_prompt: settings.nsfw_prompt, + jailbreak_prompt: settings.jailbreak_prompt, + jailbreak_system: settings.jailbreak_system, + }; + + const savePresetSettings = await fetch(`/savepreset_openai?name=${name}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRF-Token': token, + }, + body: JSON.stringify(presetBody), + }); + + if (savePresetSettings.ok) { + const data = await savePresetSettings.json(); + + if (Object.keys(openai_setting_names).includes(data.name)) { + oai_settings.preset_settings_openai = data.name; + const value = openai_setting_names[data.name]; + Object.assign(openai_settings[value], presetBody); + $(`#settings_perset_openai option[value="${value}"]`).attr('selected', true); + $('#settings_perset_openai').trigger('change'); + } + else { + openai_settings.push(presetBody); + openai_setting_names[data.name] = openai_settings.length - 1; + const option = document.createElement('option'); + option.selected = true; + option.value = openai_settings.length - 1; + option.innerText = data.name; + $('#settings_perset_openai').append(option).trigger('change'); + } } } @@ -727,6 +797,12 @@ $(document).ready(function () { updateInput(selector, preset[key]); } oai_settings[setting] = preset[key]; + + if (key == 'openai_model') { + $(`#model_openai_select option[value="${preset[key]}"`) + .attr('selected', true) + .trigger('change'); + } } } @@ -746,12 +822,20 @@ $(document).ready(function () { } }); - $("#save_prompts").click(function () { - oai_settings.main_prompt = $('#main_prompt_textarea').val(); - oai_settings.nsfw_prompt = $('#nsfw_prompt_textarea').val(); + $("#jailbreak_prompt_textarea").on('input', function () { oai_settings.jailbreak_prompt = $('#jailbreak_prompt_textarea').val(); saveSettingsDebounced(); }); + + $("#main_prompt_textarea").on('input', function () { + oai_settings.main_prompt = $('#main_prompt_textarea').val(); + saveSettingsDebounced(); + }); + + $("#nsfw_prompt_textarea").on('input', function () { + oai_settings.nsfw_prompt = $('#nsfw_prompt_textarea').val(); + saveSettingsDebounced(); + }); $("#jailbreak_system").change(function () { oai_settings.jailbreak_system = !!$(this).prop("checked"); @@ -781,7 +865,13 @@ $(document).ready(function () { trySelectPresetByName(name); }); - $("#save_preset").click(async function () { + $("#update_preset").click(async function () { + const name = oai_settings.preset_settings_openai; + await saveOpenAIPreset(name, oai_settings); + callPopup('Preset updated', 'text'); + }); + + $("#new_preset").click(async function () { const popupText = `

Preset name:

Hint: Use a character/group name to bind preset to a specific chat.

`; @@ -792,51 +882,24 @@ $(document).ready(function () { return; } - const presetBody = { - openai_model: oai_settings.openai_model, - temperature: oai_settings.temp_openai, - frequency_penalty: oai_settings.freq_pen_openai, - presence_penalty: oai_settings.pres_pen_openai, - openai_max_context: oai_settings.openai_max_context, - openai_max_tokens: oai_settings.openai_max_tokens, - nsfw_toggle: oai_settings.nsfw_toggle, - enhance_definitions: oai_settings.enhance_definitions, - wrap_in_quotes: oai_settings.wrap_in_quotes, - nsfw_first: oai_settings.nsfw_first, - main_prompt: oai_settings.main_prompt, - nsfw_prompt: oai_settings.nsfw_prompt, - jailbreak_prompt: oai_settings.jailbreak_prompt, - jailbreak_system: oai_settings.jailbreak_system, - }; + await saveOpenAIPreset(name, default_settings); + }); - const savePresetSettings = await fetch(`/savepreset_openai?name=${name}`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'X-CSRF-Token': token, - }, - body: JSON.stringify(presetBody), - }); + $("#main_prompt_restore").click(function () { + oai_settings.main_prompt = default_main_prompt; + $('#main_prompt_textarea').val(oai_settings.main_prompt); + saveSettingsDebounced(); + }); - if (savePresetSettings.ok) { - const data = await savePresetSettings.json(); + $("#nsfw_prompt_restore").click(function () { + oai_settings.nsfw_prompt = default_nsfw_prompt; + $('#nsfw_prompt_textarea').val(oai_settings.nsfw_prompt); + saveSettingsDebounced(); + }); - if (Object.keys(openai_setting_names).includes(data.name)) { - oai_settings.preset_settings_openai = data.name; - const value = openai_setting_names[data.name]; - Object.assign(openai_settings[value], presetBody); - $(`#settings_perset_openai option[value="${value}"]`).attr('selected', true); - $('#settings_perset_openai').trigger('change'); - } - else { - openai_settings.push(presetBody); - openai_setting_names[data.name] = openai_settings.length - 1; - const option = document.createElement('option'); - option.selected = true; - option.value = openai_settings.length - 1; - option.innerText = data.name; - $('#settings_perset_openai').append(option).trigger('change'); - } - } + $("#jailbreak_prompt_restore").click(function () { + oai_settings.jailbreak_prompt = default_jailbreak_prompt; + $('#jailbreak_prompt_textarea').val(oai_settings.jailbreak_prompt); + saveSettingsDebounced(); }); }); diff --git a/public/style.css b/public/style.css index c379489bf..b42f1322a 100644 --- a/public/style.css +++ b/public/style.css @@ -2958,6 +2958,22 @@ filter: invert(20%) sepia(100%) saturate(2518%) hue-rotate(353deg) brightness(93 padding: 3px 5px; } +.openai_restorable { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} + +.openai_restorable .right_menu_button img { + height: 20px; +} + +.openai_preset_buttons { + display: flex; + justify-content: space-evenly; + flex-direction: row; +} /* ---------- @media queries must always go at the bottom ------------*/