mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Selectable openrouter providers
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import { isMobile } from './RossAscends-mods.js';
|
||||
import { amount_gen, callPopup, eventSource, event_types, getRequestHeaders, max_context, setGenerationParamsFromPreset } from '../script.js';
|
||||
import { amount_gen, callPopup, eventSource, event_types, getRequestHeaders, max_context, saveSettingsDebounced, setGenerationParamsFromPreset } from '../script.js';
|
||||
import { textgenerationwebui_settings as textgen_settings, textgen_types } from './textgen-settings.js';
|
||||
import { tokenizers } from './tokenizers.js';
|
||||
import { oai_settings } from './openai.js';
|
||||
|
||||
let mancerModels = [];
|
||||
let togetherModels = [];
|
||||
@@ -11,6 +12,36 @@ let vllmModels = [];
|
||||
let aphroditeModels = [];
|
||||
export let openRouterModels = [];
|
||||
|
||||
/**
|
||||
* List of OpenRouter providers.
|
||||
* @type {string[]}
|
||||
*/
|
||||
const OPENROUTER_PROVIDERS = [
|
||||
'OpenAI',
|
||||
'Anthropic',
|
||||
'HuggingFace',
|
||||
'Google',
|
||||
'Mancer',
|
||||
'Mancer 2',
|
||||
'Together',
|
||||
'DeepInfra',
|
||||
'Azure',
|
||||
'Modal',
|
||||
'AnyScale',
|
||||
'Replicate',
|
||||
'Perplexity',
|
||||
'Recursal',
|
||||
'Fireworks',
|
||||
'Mistral',
|
||||
'Groq',
|
||||
'Cohere',
|
||||
'Lepton',
|
||||
'OctoAI',
|
||||
'Novita',
|
||||
'Lynn',
|
||||
'Lynn 2',
|
||||
];
|
||||
|
||||
export async function loadOllamaModels(data) {
|
||||
if (!Array.isArray(data)) {
|
||||
console.error('Invalid Ollama models data', data);
|
||||
@@ -476,6 +507,33 @@ jQuery(function () {
|
||||
$('#vllm_model').on('change', onVllmModelSelect);
|
||||
$('#aphrodite_model').on('change', onAphroditeModelSelect);
|
||||
|
||||
const providersSelect = $('.openrouter_providers');
|
||||
for (const provider of OPENROUTER_PROVIDERS) {
|
||||
providersSelect.append($('<option>', {
|
||||
value: provider,
|
||||
text: provider,
|
||||
}));
|
||||
}
|
||||
|
||||
providersSelect.on('change', function () {
|
||||
const selectedProviders = $(this).val();
|
||||
|
||||
// Not a multiple select?
|
||||
if (!Array.isArray(selectedProviders)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($(this).is('#openrouter_providers_text')) {
|
||||
textgen_settings.openrouter_providers = selectedProviders;
|
||||
}
|
||||
|
||||
if ($(this).is('#openrouter_providers_chat')) {
|
||||
oai_settings.openrouter_providers = selectedProviders;
|
||||
}
|
||||
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
if (!isMobile()) {
|
||||
$('#mancer_model').select2({
|
||||
placeholder: 'Select a model',
|
||||
@@ -532,5 +590,20 @@ jQuery(function () {
|
||||
width: '100%',
|
||||
templateResult: getAphroditeModelTemplate,
|
||||
});
|
||||
providersSelect.select2({
|
||||
sorter: data => data.sort((a, b) => a.text.localeCompare(b.text)),
|
||||
placeholder: 'Select providers. No selection = all providers.',
|
||||
searchInputPlaceholder: 'Search providers...',
|
||||
searchInputCssClass: 'text_pole',
|
||||
width: '100%',
|
||||
});
|
||||
providersSelect.on('select2:select', function (/** @type {any} */ evt) {
|
||||
const element = evt.params.data.element;
|
||||
const $element = $(element);
|
||||
|
||||
$element.detach();
|
||||
$(this).append($element);
|
||||
$(this).trigger('change');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user