diff --git a/public/scripts/openai.js b/public/scripts/openai.js
index 5e27446de..09e48c264 100644
--- a/public/scripts/openai.js
+++ b/public/scripts/openai.js
@@ -299,6 +299,7 @@ const default_settings = {
continue_postfix: continue_postfix_types.SPACE,
custom_prompt_post_processing: custom_prompt_post_processing_types.NONE,
show_thoughts: true,
+ reasoning_effort: 'medium',
seed: -1,
n: 1,
};
@@ -378,6 +379,7 @@ const oai_settings = {
continue_postfix: continue_postfix_types.SPACE,
custom_prompt_post_processing: custom_prompt_post_processing_types.NONE,
show_thoughts: true,
+ reasoning_effort: 'medium',
seed: -1,
n: 1,
};
@@ -1912,6 +1914,7 @@ async function sendOpenAIRequest(type, messages, signal) {
'char_name': name2,
'group_names': getGroupNames(),
'include_reasoning': Boolean(oai_settings.show_thoughts),
+ 'reasoning_effort': String(oai_settings.reasoning_effort),
};
// Empty array will produce a validation error
@@ -3122,6 +3125,7 @@ function loadOpenAISettings(data, settings) {
oai_settings.inline_image_quality = settings.inline_image_quality ?? default_settings.inline_image_quality;
oai_settings.bypass_status_check = settings.bypass_status_check ?? default_settings.bypass_status_check;
oai_settings.show_thoughts = settings.show_thoughts ?? default_settings.show_thoughts;
+ oai_settings.reasoning_effort = settings.reasoning_effort ?? default_settings.reasoning_effort;
oai_settings.seed = settings.seed ?? default_settings.seed;
oai_settings.n = settings.n ?? default_settings.n;
@@ -3251,6 +3255,9 @@ function loadOpenAISettings(data, settings) {
$('#n_openai').val(oai_settings.n);
$('#openai_show_thoughts').prop('checked', oai_settings.show_thoughts);
+ $('#openai_reasoning_effort').val(oai_settings.reasoning_effort);
+ $(`#openai_reasoning_effort option[value="${oai_settings.reasoning_effort}"]`).prop('selected', true);
+
if (settings.reverse_proxy !== undefined) oai_settings.reverse_proxy = settings.reverse_proxy;
$('#openai_reverse_proxy').val(oai_settings.reverse_proxy);
@@ -3969,6 +3976,7 @@ function onSettingsPresetChange() {
continue_postfix: ['#continue_postfix', 'continue_postfix', false],
function_calling: ['#openai_function_calling', 'function_calling', true],
show_thoughts: ['#openai_show_thoughts', 'show_thoughts', true],
+ reasoning_effort: ['#openai_reasoning_effort', 'reasoning_effort', false],
seed: ['#seed_openai', 'seed', false],
n: ['#n_openai', 'n', false],
};
@@ -5510,6 +5518,11 @@ export function initOpenAI() {
saveSettingsDebounced();
});
+ $('#openai_reasoning_effort').on('input', function () {
+ oai_settings.reasoning_effort = String($(this).val());
+ saveSettingsDebounced();
+ });
+
if (!CSS.supports('field-sizing', 'content')) {
$(document).on('input', '#openai_settings .autoSetHeight', function () {
resetScrollHeight($(this));
diff --git a/public/style.css b/public/style.css
index d70ca43a5..d854c48cc 100644
--- a/public/style.css
+++ b/public/style.css
@@ -5914,3 +5914,15 @@ body:not(.movingUI) .drawer-content.maximized {
.mes_text div[data-type="assistant_note"]:has(.assistant_note_export)>div:not(.assistant_note_export) {
flex: 1;
}
+
+.oneline-dropdown label {
+ margin-top: 3px;
+ margin-bottom: 5px;
+ flex-grow: 1;
+ text-align: left;
+}
+
+.oneline-dropdown select {
+ min-width: fit-content;
+ width: 40%;
+}