Expose "Allow fallback providers" for OpenRouter
| @@ -2091,6 +2091,10 @@ | ||
| 2091 | 2091 | <h4 data-i18n="Model Providers">Model Providers</h4> |
| 2092 | 2092 | <select id="openrouter_providers_text" class="openrouter_providers" multiple> |
| 2093 | 2093 | </select> |
| 2094 | + <label class="checkbox_label" for="openrouter_allow_fallbacks_textgenerationwebui" title="Automatically chooses an alternative provider if chosen providers can't serve your request."> | |
| 2095 | + <input id="openrouter_allow_fallbacks_textgenerationwebui" type="checkbox" /> | |
| 2096 | + <span data-i18n="Allow fallback providers">Allow fallback providers</span> | |
| 2097 | + </label> | |
| 2094 | 2098 | </div> |
| 2095 | 2099 | </div> |
| 2096 | 2100 | <div data-tg-type="infermaticai" class="flex-container flexFlowColumn"> |
| @@ -2668,11 +2672,10 @@ | ||
| 2668 | 2672 | <option data-i18n="-- Connect to the API --">-- Connect to the API --</option> |
| 2669 | 2673 | </select> |
| 2670 | 2674 | </div> |
| 2671 | - <div> | |
| 2675 | + <label for="openrouter_use_fallback" class="checkbox_label marginTopBot5" data-i18n="[title]Allow fallback routes Description" title="Automatically chooses an alternative model if the chosen model can't serve your request."> | |
| 2672 | 2676 | <h4input data-i18nid="Modelopenrouter_use_fallback" Providerstype=">Modelcheckbox" Providers</h4> |
| 2673 | - <select id="openrouter_providers_chat" class="openrouter_providers" multiple> | |
| 2677 | + <span data-i18n="Allow fallback models">Allow fallback models</span> | |
| 2674 | 2678 | </selectlabel> |
| 2675 | - </div> | |
| 2676 | 2679 | <div class="marginTopBot5"> |
| 2677 | 2680 | <div class="inline-drawer wide100p"> |
| 2678 | 2681 | <div class="inline-drawer-toggle inline-drawer-header"> |
| @@ -2703,16 +2706,14 @@ | ||
| 2703 | 2706 | </div> |
| 2704 | 2707 | </div> |
| 2705 | 2708 | </div> |
| 2706 | 2709 | <div class="marginTopBot5"> |
| 2707 | - <label for="openrouter_use_fallback" class="checkbox_label"> | |
| 2710 | + <h4 data-i18n="Model Providers">Model Providers</h4> | |
| 2708 | 2711 | <inputselect id="openrouter_use_fallbackopenrouter_providers_chat" typeclass="checkboxopenrouter_providers" /multiple> |
| 2709 | - <span data-i18n="Allow fallback routes">Allow fallback routes</span> | |
| 2712 | + </select> | |
| 2713 | + <label class="checkbox_label marginTopBot5" for="openrouter_allow_fallbacks" title="Automatically chooses an alternative provider if chosen providers can't serve your request."> | |
| 2714 | + <input id="openrouter_allow_fallbacks" type="checkbox" /> | |
| 2715 | + <span data-i18n="Allow fallback providers">Allow fallback providers</span> | |
| 2710 | 2716 | </label> |
| 2711 | - <div class="toggle-description justifyLeft wide100p"> | |
| 2712 | - <span data-i18n="Allow fallback routes Description"> | |
| 2713 | - Automatically chooses an alternative model if the chosen model can't serve your request. | |
| 2714 | - </span> | |
| 2715 | - </div> | |
| 2716 | 2717 | </div> |
| 2717 | 2718 | <div class="marginTopBot5"> |
| 2718 | 2719 | <label for="openrouter_force_instruct" class="checkbox_label"> |
| @@ -278,6 +278,7 @@ const default_settings = { | ||
| 278 | 278 | openrouter_group_models: false, |
| 279 | 279 | openrouter_sort_models: 'alphabetically', |
| 280 | 280 | openrouter_providers: [], |
| 281 | + openrouter_allow_fallbacks: true, | |
| 281 | 282 | jailbreak_system: false, |
| 282 | 283 | reverse_proxy: '', |
| 283 | 284 | chat_completion_source: chat_completion_sources.OPENAI, |
| @@ -357,6 +358,7 @@ const oai_settings = { | ||
| 357 | 358 | openrouter_group_models: false, |
| 358 | 359 | openrouter_sort_models: 'alphabetically', |
| 359 | 360 | openrouter_providers: [], |
| 361 | + openrouter_allow_fallbacks: true, | |
| 360 | 362 | jailbreak_system: false, |
| 361 | 363 | reverse_proxy: '', |
| 362 | 364 | chat_completion_source: chat_completion_sources.OPENAI, |
| @@ -1881,6 +1883,7 @@ async function sendOpenAIRequest(type, messages, signal) { | ||
| 1881 | 1883 | generate_data['top_a'] = Number(oai_settings.top_a_openai); |
| 1882 | 1884 | generate_data['use_fallback'] = oai_settings.openrouter_use_fallback; |
| 1883 | 1885 | generate_data['provider'] = oai_settings.openrouter_providers; |
| 1886 | + generate_data['allow_fallbacks'] = oai_settings.openrouter_allow_fallbacks; | |
| 1884 | 1887 | |
| 1885 | 1888 | if (isTextCompletion) { |
| 1886 | 1889 | generate_data['stop'] = getStoppingStrings(isImpersonate, isContinue); |
| @@ -3001,6 +3004,7 @@ function loadOpenAISettings(data, settings) { | ||
| 3001 | 3004 | oai_settings.openrouter_sort_models = settings.openrouter_sort_models ?? default_settings.openrouter_sort_models; |
| 3002 | 3005 | oai_settings.openrouter_use_fallback = settings.openrouter_use_fallback ?? default_settings.openrouter_use_fallback; |
| 3003 | 3006 | oai_settings.openrouter_force_instruct = settings.openrouter_force_instruct ?? default_settings.openrouter_force_instruct; |
| 3007 | + oai_settings.openrouter_allow_fallbacks = settings.openrouter_allow_fallbacks ?? default_settings.openrouter_allow_fallbacks; | |
| 3004 | 3008 | oai_settings.ai21_model = settings.ai21_model ?? default_settings.ai21_model; |
| 3005 | 3009 | oai_settings.mistralai_model = settings.mistralai_model ?? default_settings.mistralai_model; |
| 3006 | 3010 | oai_settings.cohere_model = settings.cohere_model ?? default_settings.cohere_model; |
| @@ -3105,6 +3109,7 @@ function loadOpenAISettings(data, settings) { | ||
| 3105 | 3109 | $('#openrouter_use_fallback').prop('checked', oai_settings.openrouter_use_fallback); |
| 3106 | 3110 | $('#openrouter_force_instruct').prop('checked', oai_settings.openrouter_force_instruct); |
| 3107 | 3111 | $('#openrouter_group_models').prop('checked', oai_settings.openrouter_group_models); |
| 3112 | + $('#openrouter_allow_fallbacks').prop('checked', oai_settings.openrouter_allow_fallbacks); | |
| 3108 | 3113 | $('#openrouter_providers_chat').val(oai_settings.openrouter_providers).trigger('change'); |
| 3109 | 3114 | $('#squash_system_messages').prop('checked', oai_settings.squash_system_messages); |
| 3110 | 3115 | $('#continue_prefill').prop('checked', oai_settings.continue_prefill); |
| @@ -3334,6 +3339,7 @@ async function saveOpenAIPreset(name, settings, triggerUi = true) { | ||
| 3334 | 3339 | openrouter_group_models: settings.openrouter_group_models, |
| 3335 | 3340 | openrouter_sort_models: settings.openrouter_sort_models, |
| 3336 | 3341 | openrouter_providers: settings.openrouter_providers, |
| 3342 | + openrouter_allow_fallbacks: settings.openrouter_allow_fallbacks, | |
| 3337 | 3343 | ai21_model: settings.ai21_model, |
| 3338 | 3344 | mistralai_model: settings.mistralai_model, |
| 3339 | 3345 | cohere_model: settings.cohere_model, |
| @@ -3770,6 +3776,7 @@ function onSettingsPresetChange() { | ||
| 3770 | 3776 | openrouter_group_models: ['#openrouter_group_models', 'openrouter_group_models', false], |
| 3771 | 3777 | openrouter_sort_models: ['#openrouter_sort_models', 'openrouter_sort_models', false], |
| 3772 | 3778 | openrouter_providers: ['#openrouter_providers_chat', 'openrouter_providers', false], |
| 3779 | + openrouter_allow_fallbacks: ['#openrouter_allow_fallbacks', 'openrouter_allow_fallbacks', true], | |
| 3773 | 3780 | ai21_model: ['#model_ai21_select', 'ai21_model', false], |
| 3774 | 3781 | mistralai_model: ['#model_mistralai_select', 'mistralai_model', false], |
| 3775 | 3782 | cohere_model: ['#model_cohere_select', 'cohere_model', false], |
| @@ -5102,6 +5109,11 @@ $(document).ready(async function () { | ||
| 5102 | 5109 | saveSettingsDebounced(); |
| 5103 | 5110 | }); |
| 5104 | 5111 | |
| 5112 | + $('#openrouter_allow_fallbacks').on('input', function () { | |
| 5113 | + oai_settings.openrouter_allow_fallbacks = !!$(this).prop('checked'); | |
| 5114 | + saveSettingsDebounced(); | |
| 5115 | + }); | |
| 5116 | + | |
| 5105 | 5117 | $('#squash_system_messages').on('input', function () { |
| 5106 | 5118 | oai_settings.squash_system_messages = !!$(this).prop('checked'); |
| 5107 | 5119 | saveSettingsDebounced(); |
| @@ -332,6 +332,7 @@ class PresetManager { | ||
| 332 | 332 | 'featherless_model', |
| 333 | 333 | 'max_tokens_second', |
| 334 | 334 | 'openrouter_providers', |
| 335 | + 'openrouter_allow_fallbacks', | |
| 335 | 336 | ]; |
| 336 | 337 | const settings = Object.assign({}, getSettingsByApiId(this.apiId)); |
| 337 | 338 | |
| @@ -187,6 +187,7 @@ const settings = { | ||
| 187 | 187 | server_urls: {}, |
| 188 | 188 | custom_model: '', |
| 189 | 189 | bypass_status_check: false, |
| 190 | + openrouter_allow_fallbacks: true, | |
| 190 | 191 | }; |
| 191 | 192 | |
| 192 | 193 | export let textgenerationwebui_banned_in_macros = []; |
| @@ -261,6 +262,7 @@ export const setting_names = [ | ||
| 261 | 262 | 'logit_bias', |
| 262 | 263 | 'custom_model', |
| 263 | 264 | 'bypass_status_check', |
| 265 | + 'openrouter_allow_fallbacks', | |
| 264 | 266 | ]; |
| 265 | 267 | |
| 266 | 268 | const DYNATEMP_BLOCK = document.getElementById('dynatemp_block_ooba'); |
| @@ -1172,6 +1174,7 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate, | ||
| 1172 | 1174 | |
| 1173 | 1175 | if (settings.type === OPENROUTER) { |
| 1174 | 1176 | params.provider = settings.openrouter_providers; |
| 1177 | + params.allow_fallbacks = settings.openrouter_allow_fallbacks; | |
| 1175 | 1178 | } |
| 1176 | 1179 | |
| 1177 | 1180 | if (settings.type === KOBOLDCPP) { |
| @@ -879,7 +879,7 @@ router.post('/generate', jsonParser, function (request, response) { | ||
| 879 | 879 | |
| 880 | 880 | if (Array.isArray(request.body.provider) && request.body.provider.length > 0) { |
| 881 | 881 | bodyParams['provider'] = { |
| 882 | 882 | allow_fallbacks: request.body.allow_fallbacks ?? true, |
| 883 | 883 | order: request.body.provider ?? [], |
| 884 | 884 | }; |
| 885 | 885 | } |
| @@ -309,7 +309,7 @@ router.post('/generate', jsonParser, async function (request, response) { | ||
| 309 | 309 | if (request.body.api_type === TEXTGEN_TYPES.OPENROUTER) { |
| 310 | 310 | if (Array.isArray(request.body.provider) && request.body.provider.length > 0) { |
| 311 | 311 | request.body.provider = { |
| 312 | 312 | allow_fallbacks: request.body.allow_fallbacks ?? true, |
| 313 | 313 | order: request.body.provider, |
| 314 | 314 | }; |
| 315 | 315 | } else { |