From 0608c0afacc3ba1a7919f3fd0ddfaaf4ccfeb138 Mon Sep 17 00:00:00 2001 From: Cohee <18619528+Cohee1207@users.noreply.github.com> Date: Fri, 17 Nov 2023 23:19:21 +0200 Subject: [PATCH] Add OpenRouter and Llava to captioning plugin. --- public/index.html | 4 +- public/scripts/extensions/caption/index.js | 145 ++++++++++++++++----- public/scripts/extensions/shared.js | 28 ++++ public/scripts/openai.js | 7 +- src/openai.js | 36 ++++- 5 files changed, 172 insertions(+), 48 deletions(-) create mode 100644 public/scripts/extensions/shared.js diff --git a/public/index.html b/public/index.html index eb136b760..db1cca137 100644 --- a/public/index.html +++ b/public/index.html @@ -1386,9 +1386,9 @@
`); $('#extensionsMenu').prepend(sendButton); - $(sendButton).hide(); $(sendButton).on('click', () => { if (isImageInliningSupported()) { console.log('Native image inlining is supported. Skipping captioning.'); @@ -320,12 +350,13 @@ jQuery(function () { const hasCaptionModule = (modules.includes('caption') && extension_settings.caption.source === 'extras') || - (extension_settings.caption.source === 'openai' && secret_state[SECRET_KEYS.OPENAI]) || + (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'openai' && secret_state[SECRET_KEYS.OPENAI]) || + (extension_settings.caption.source === 'multimodal' && extension_settings.caption.multimodal_api === 'openrouter' && secret_state[SECRET_KEYS.OPENROUTER]) || extension_settings.caption.source === 'local' || extension_settings.caption.source === 'horde'; if (!hasCaptionModule) { - toastr.error('No captioning module is available. Choose other captioning source in the extension settings.'); + toastr.error('Choose other captioning source in the extension settings.', 'Captioning is not available'); return; } @@ -343,6 +374,29 @@ jQuery(function () { $('#form_sheld').append(imgForm); $('#img_file').on('change', onSelectImage); } + function switchMultimodalBlocks() { + const isMultimodal = extension_settings.caption.source === 'multimodal'; + $('#caption_multimodal_block').toggle(isMultimodal); + $('#caption_prompt_block').toggle(isMultimodal); + $('#caption_multimodal_api').val(extension_settings.caption.multimodal_api); + $('#caption_multimodal_model').val(extension_settings.caption.multimodal_model); + $('#caption_multimodal_model option').each(function () { + const type = $(this).data('type'); + $(this).toggle(type === extension_settings.caption.multimodal_api); + }); + $('#caption_multimodal_api').on('change', () => { + const api = String($('#caption_multimodal_api').val()); + const model = String($(`#caption_multimodal_model option[data-type="${api}"]`).first().val()); + extension_settings.caption.multimodal_api = api; + extension_settings.caption.multimodal_model = model; + saveSettingsDebounced(); + switchMultimodalBlocks(); + }); + $('#caption_multimodal_model').on('change', () => { + extension_settings.caption.multimodal_model = String($('#caption_multimodal_model').val()); + saveSettingsDebounced(); + }); + } function addSettings() { const html = `
@@ -355,12 +409,31 @@ jQuery(function () { - - +
+
+ + +
+
+ + +
+
+
+ + +