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 () {
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+