diff --git a/public/index.html b/public/index.html index 12ae48143..d6a19934f 100644 --- a/public/index.html +++ b/public/index.html @@ -2745,7 +2745,6 @@ 01.AI (Yi) AI21 - Block Entropy Claude Cohere DeepSeek @@ -3375,20 +3374,6 @@ - - Block Entropy API Key - - - - - - For privacy reasons, your API key will be hidden after you reload the page. - - Select a Model - - - - Custom Endpoint (Base URL) @@ -6101,8 +6086,11 @@ - - Content + + + Content + + (Tokens: counting...) diff --git a/public/script.js b/public/script.js index 001cc72fc..e04a308f8 100644 --- a/public/script.js +++ b/public/script.js @@ -174,7 +174,7 @@ import { saveBase64AsFile, uuidv4, } from './scripts/utils.js'; -import { debounce_timeout } from './scripts/constants.js'; +import { debounce_timeout, IGNORE_SYMBOL } from './scripts/constants.js'; import { doDailyExtensionUpdatesCheck, extension_settings, initExtensions, loadExtensionSettings, runGenerationInterceptors, saveMetadataDebounced } from './scripts/extensions.js'; import { COMMENT_NAME_DEFAULT, executeSlashCommandsOnChatInput, getSlashCommandsHelp, initDefaultSlashCommands, isExecutingCommandsFromChatInput, pauseScriptExecution, processChatSlashCommands, stopScriptExecution } from './scripts/slash-commands.js'; @@ -5301,6 +5301,12 @@ function formatMessageHistoryItem(chatItem, isInstruct, forceOutputSequence) { const itemName = chatItem.is_user ? chatItem['name'] : characterName; const shouldPrependName = !isNarratorType; + // If this symbol flag is set, completely ignore the message. + // This can be used to hide messages without affecting the number of messages in the chat. + if (chatItem.extra?.[IGNORE_SYMBOL]) { + return ''; + } + // Don't include a name if it's empty let textResult = chatItem?.name && shouldPrependName ? `${itemName}: ${chatItem.mes}\n` : `${chatItem.mes}\n`; diff --git a/public/scripts/RossAscends-mods.js b/public/scripts/RossAscends-mods.js index 6d4110220..3f09742f3 100644 --- a/public/scripts/RossAscends-mods.js +++ b/public/scripts/RossAscends-mods.js @@ -407,7 +407,6 @@ function RA_autoconnect(PrevApi) { || (secret_state[SECRET_KEYS.PERPLEXITY] && oai_settings.chat_completion_source == chat_completion_sources.PERPLEXITY) || (secret_state[SECRET_KEYS.GROQ] && oai_settings.chat_completion_source == chat_completion_sources.GROQ) || (secret_state[SECRET_KEYS.ZEROONEAI] && oai_settings.chat_completion_source == chat_completion_sources.ZEROONEAI) - || (secret_state[SECRET_KEYS.BLOCKENTROPY] && oai_settings.chat_completion_source == chat_completion_sources.BLOCKENTROPY) || (secret_state[SECRET_KEYS.NANOGPT] && oai_settings.chat_completion_source == chat_completion_sources.NANOGPT) || (secret_state[SECRET_KEYS.DEEPSEEK] && oai_settings.chat_completion_source == chat_completion_sources.DEEPSEEK) || (isValidUrl(oai_settings.custom_url) && oai_settings.chat_completion_source == chat_completion_sources.CUSTOM) diff --git a/public/scripts/constants.js b/public/scripts/constants.js index f95a8e146..5cd1a2ff5 100644 --- a/public/scripts/constants.js +++ b/public/scripts/constants.js @@ -14,3 +14,11 @@ export const debounce_timeout = { /** [5 sec] For delayed tasks, like auto-saving or completing batch operations that need a significant pause. */ extended: 5000, }; + +/** + * Used as an ephemeral key in message extra metadata. + * When set, the message will be excluded from generation + * prompts without affecting the number of chat messages, + * which is needed to preserve world info timed effects. + */ +export const IGNORE_SYMBOL = Symbol.for('ignore'); diff --git a/public/scripts/extensions/stable-diffusion/index.js b/public/scripts/extensions/stable-diffusion/index.js index 923ee526b..c0329b45e 100644 --- a/public/scripts/extensions/stable-diffusion/index.js +++ b/public/scripts/extensions/stable-diffusion/index.js @@ -77,7 +77,6 @@ const sources = { drawthings: 'drawthings', pollinations: 'pollinations', stability: 'stability', - blockentropy: 'blockentropy', huggingface: 'huggingface', nanogpt: 'nanogpt', bfl: 'bfl', @@ -1300,7 +1299,6 @@ async function onModelChange() { sources.togetherai, sources.pollinations, sources.stability, - sources.blockentropy, sources.huggingface, sources.nanogpt, sources.bfl, @@ -1511,9 +1509,6 @@ async function loadSamplers() { case sources.stability: samplers = ['N/A']; break; - case sources.blockentropy: - samplers = ['N/A']; - break; case sources.huggingface: samplers = ['N/A']; break; @@ -1701,9 +1696,6 @@ async function loadModels() { case sources.stability: models = await loadStabilityModels(); break; - case sources.blockentropy: - models = await loadBlockEntropyModels(); - break; case sources.huggingface: models = [{ value: '', text: '' }]; break; @@ -1799,26 +1791,6 @@ async function loadTogetherAIModels() { return []; } -async function loadBlockEntropyModels() { - if (!secret_state[SECRET_KEYS.BLOCKENTROPY]) { - console.debug('Block Entropy API key is not set.'); - return []; - } - - const result = await fetch('/api/sd/blockentropy/models', { - method: 'POST', - headers: getRequestHeaders(), - }); - console.log(result); - if (result.ok) { - const data = await result.json(); - console.log(data); - return data; - } - - return []; -} - async function loadNanoGPTModels() { if (!secret_state[SECRET_KEYS.NANOGPT]) { console.debug('NanoGPT API key is not set.'); @@ -2097,9 +2069,6 @@ async function loadSchedulers() { case sources.stability: schedulers = ['N/A']; break; - case sources.blockentropy: - schedulers = ['N/A']; - break; case sources.huggingface: schedulers = ['N/A']; break; @@ -2188,9 +2157,6 @@ async function loadVaes() { case sources.stability: vaes = ['N/A']; break; - case sources.blockentropy: - vaes = ['N/A']; - break; case sources.huggingface: vaes = ['N/A']; break; @@ -2757,9 +2723,6 @@ async function sendGenerationRequest(generationType, prompt, additionalNegativeP case sources.stability: result = await generateStabilityImage(prefixedPrompt, negativePrompt, signal); break; - case sources.blockentropy: - result = await generateBlockEntropyImage(prefixedPrompt, negativePrompt, signal); - break; case sources.huggingface: result = await generateHuggingFaceImage(prefixedPrompt, signal); break; @@ -2828,40 +2791,6 @@ async function generateTogetherAIImage(prompt, negativePrompt, signal) { } } -async function generateBlockEntropyImage(prompt, negativePrompt, signal) { - const result = await fetch('/api/sd/blockentropy/generate', { - method: 'POST', - headers: getRequestHeaders(), - signal: signal, - body: JSON.stringify({ - prompt: prompt, - negative_prompt: negativePrompt, - model: extension_settings.sd.model, - steps: extension_settings.sd.steps, - width: extension_settings.sd.width, - height: extension_settings.sd.height, - seed: extension_settings.sd.seed >= 0 ? extension_settings.sd.seed : undefined, - }), - }); - - if (result.ok) { - const data = await result.json(); - - // Default format is 'jpg' - let format = 'jpg'; - - // Check if a format is specified in the result - if (data.format) { - format = data.format.toLowerCase(); - } - - return { format: format, data: data.images[0] }; - } else { - const text = await result.text(); - throw new Error(text); - } -} - /** * Generates an image using the Pollinations API. * @param {string} prompt - The main instruction used to guide the image generation. @@ -3845,8 +3774,6 @@ function isValidState() { return true; case sources.stability: return secret_state[SECRET_KEYS.STABILITY]; - case sources.blockentropy: - return secret_state[SECRET_KEYS.BLOCKENTROPY]; case sources.huggingface: return secret_state[SECRET_KEYS.HUGGINGFACE]; case sources.nanogpt: diff --git a/public/scripts/extensions/stable-diffusion/settings.html b/public/scripts/extensions/stable-diffusion/settings.html index 32ecfe28f..2ff19a797 100644 --- a/public/scripts/extensions/stable-diffusion/settings.html +++ b/public/scripts/extensions/stable-diffusion/settings.html @@ -38,7 +38,6 @@ Source BFL (Black Forest Labs) - Block Entropy ComfyUI DrawThings HTTP API Extras API (deprecated) @@ -422,7 +421,7 @@ - + Seed (-1 for random) diff --git a/public/scripts/openai.js b/public/scripts/openai.js index 69b24b66d..21f12d85a 100644 --- a/public/scripts/openai.js +++ b/public/scripts/openai.js @@ -75,6 +75,7 @@ import { Popup, POPUP_RESULT } from './popup.js'; import { t } from './i18n.js'; import { ToolManager } from './tool-calling.js'; import { accountStorage } from './util/AccountStorage.js'; +import { IGNORE_SYMBOL } from './constants.js'; export { openai_messages_count, @@ -119,7 +120,6 @@ const default_bias_presets = { const max_2k = 2047; const max_4k = 4095; const max_8k = 8191; -const max_12k = 12287; const max_16k = 16383; const max_32k = 32767; const max_64k = 65535; @@ -182,7 +182,6 @@ export const chat_completion_sources = { PERPLEXITY: 'perplexity', GROQ: 'groq', ZEROONEAI: '01ai', - BLOCKENTROPY: 'blockentropy', NANOGPT: 'nanogpt', DEEPSEEK: 'deepseek', }; @@ -258,7 +257,6 @@ export const settingsToUpdate = { nanogpt_model: ['#model_nanogpt_select', 'nanogpt_model', false], deepseek_model: ['#model_deepseek_select', 'deepseek_model', false], zerooneai_model: ['#model_01ai_select', 'zerooneai_model', false], - blockentropy_model: ['#model_blockentropy_select', 'blockentropy_model', false], custom_model: ['#custom_model_id', 'custom_model', false], custom_url: ['#custom_api_url_text', 'custom_url', false], custom_include_body: ['#custom_include_body', 'custom_include_body', false], @@ -346,7 +344,6 @@ const default_settings = { groq_model: 'llama-3.3-70b-versatile', nanogpt_model: 'gpt-4o-mini', zerooneai_model: 'yi-large', - blockentropy_model: 'be-70b-base-llama3.1', deepseek_model: 'deepseek-chat', custom_model: '', custom_url: '', @@ -427,7 +424,6 @@ const oai_settings = { groq_model: 'llama-3.1-70b-versatile', nanogpt_model: 'gpt-4o-mini', zerooneai_model: 'yi-large', - blockentropy_model: 'be-70b-base-llama3.1', deepseek_model: 'deepseek-chat', custom_model: '', custom_url: '', @@ -527,6 +523,13 @@ function setOpenAIMessages(chat) { let role = chat[j]['is_user'] ? 'user' : 'assistant'; let content = chat[j]['mes']; + // If this symbol flag is set, completely ignore the message. + // This can be used to hide messages without affecting the number of messages in the chat. + if (chat[j].extra?.[IGNORE_SYMBOL]) { + j++; + continue; + } + // 100% legal way to send a message as system if (chat[j].extra?.type === system_message_types.NARRATOR) { role = 'system'; @@ -1637,8 +1640,6 @@ export function getChatCompletionModel(source = null) { return oai_settings.groq_model; case chat_completion_sources.ZEROONEAI: return oai_settings.zerooneai_model; - case chat_completion_sources.BLOCKENTROPY: - return oai_settings.blockentropy_model; case chat_completion_sources.NANOGPT: return oai_settings.nanogpt_model; case chat_completion_sources.DEEPSEEK: @@ -1757,23 +1758,6 @@ function saveModelList(data) { $('#model_01ai_select').val(oai_settings.zerooneai_model).trigger('change'); } - if (oai_settings.chat_completion_source == chat_completion_sources.BLOCKENTROPY) { - $('#model_blockentropy_select').empty(); - model_list.forEach((model) => { - $('#model_blockentropy_select').append( - $('', { - value: model.id, - text: model.id, - })); - }); - - if (!oai_settings.blockentropy_model && model_list.length > 0) { - oai_settings.blockentropy_model = model_list[0].id; - } - - $('#model_blockentropy_select').val(oai_settings.blockentropy_model).trigger('change'); - } - if (oai_settings.chat_completion_source == chat_completion_sources.MISTRALAI) { /** @type {HTMLSelectElement} */ const mistralModelSelect = document.querySelector('#model_mistralai_select'); @@ -3246,7 +3230,6 @@ function loadOpenAISettings(data, settings) { oai_settings.groq_model = settings.groq_model ?? default_settings.groq_model; oai_settings.nanogpt_model = settings.nanogpt_model ?? default_settings.nanogpt_model; oai_settings.deepseek_model = settings.deepseek_model ?? default_settings.deepseek_model; - oai_settings.blockentropy_model = settings.blockentropy_model ?? default_settings.blockentropy_model; oai_settings.zerooneai_model = settings.zerooneai_model ?? default_settings.zerooneai_model; oai_settings.custom_model = settings.custom_model ?? default_settings.custom_model; oai_settings.custom_url = settings.custom_url ?? default_settings.custom_url; @@ -3333,7 +3316,6 @@ function loadOpenAISettings(data, settings) { $('#model_deepseek_select').val(oai_settings.deepseek_model); $(`#model_deepseek_select option[value="${oai_settings.deepseek_model}"`).prop('selected', true); $('#model_01ai_select').val(oai_settings.zerooneai_model); - $('#model_blockentropy_select').val(oai_settings.blockentropy_model); $('#custom_model_id').val(oai_settings.custom_model); $('#custom_api_url_text').val(oai_settings.custom_url); $('#openai_max_context').val(oai_settings.openai_max_context); @@ -3613,7 +3595,6 @@ async function saveOpenAIPreset(name, settings, triggerUi = true) { perplexity_model: settings.perplexity_model, groq_model: settings.groq_model, zerooneai_model: settings.zerooneai_model, - blockentropy_model: settings.blockentropy_model, custom_model: settings.custom_model, custom_url: settings.custom_url, custom_include_body: settings.custom_include_body, @@ -4322,12 +4303,6 @@ async function onModelChange() { oai_settings.zerooneai_model = value; } - if (value && $(this).is('#model_blockentropy_select')) { - console.log('Block Entropy model changed to', value); - oai_settings.blockentropy_model = value; - $('#blockentropy_model_id').val(value).trigger('input'); - } - if (value && $(this).is('#model_custom_select')) { console.log('Custom model changed to', value); oai_settings.custom_model = value; @@ -4577,29 +4552,6 @@ async function onModelChange() { oai_settings.temp_openai = Math.min(oai_max_temp, oai_settings.temp_openai); $('#temp_openai').attr('max', oai_max_temp).val(oai_settings.temp_openai).trigger('input'); } - if (oai_settings.chat_completion_source === chat_completion_sources.BLOCKENTROPY) { - if (oai_settings.max_context_unlocked) { - $('#openai_max_context').attr('max', unlocked_max); - } - else if (oai_settings.blockentropy_model.includes('llama3.1')) { - $('#openai_max_context').attr('max', max_16k); - } - else if (oai_settings.blockentropy_model.includes('72b')) { - $('#openai_max_context').attr('max', max_16k); - } - else if (oai_settings.blockentropy_model.includes('120b')) { - $('#openai_max_context').attr('max', max_12k); - } - else { - $('#openai_max_context').attr('max', max_8k); - } - - oai_settings.openai_max_context = Math.min(oai_settings.openai_max_context, Number($('#openai_max_context').attr('max'))); - $('#openai_max_context').val(oai_settings.openai_max_context).trigger('input'); - - oai_settings.temp_openai = Math.min(oai_max_temp, oai_settings.temp_openai); - $('#temp_openai').attr('max', oai_max_temp).val(oai_settings.temp_openai).trigger('input'); - } if (oai_settings.chat_completion_source === chat_completion_sources.NANOGPT) { if (oai_settings.max_context_unlocked) { @@ -4866,18 +4818,6 @@ async function onConnectButtonClick(e) { return; } } - if (oai_settings.chat_completion_source == chat_completion_sources.BLOCKENTROPY) { - const api_key_blockentropy = String($('#api_key_blockentropy').val()).trim(); - - if (api_key_blockentropy.length) { - await writeSecret(SECRET_KEYS.BLOCKENTROPY, api_key_blockentropy); - } - - if (!secret_state[SECRET_KEYS.BLOCKENTROPY]) { - console.log('No secret key saved for Block Entropy'); - return; - } - } startStatusLoading(); saveSettingsDebounced(); @@ -4932,9 +4872,6 @@ function toggleChatCompletionForms() { else if (oai_settings.chat_completion_source == chat_completion_sources.CUSTOM) { $('#model_custom_select').trigger('change'); } - else if (oai_settings.chat_completion_source == chat_completion_sources.BLOCKENTROPY) { - $('#model_blockentropy_select').trigger('change'); - } else if (oai_settings.chat_completion_source == chat_completion_sources.DEEPSEEK) { $('#model_deepseek_select').trigger('change'); } @@ -5687,7 +5624,6 @@ export function initOpenAI() { $('#model_nanogpt_select').on('change', onModelChange); $('#model_deepseek_select').on('change', onModelChange); $('#model_01ai_select').on('change', onModelChange); - $('#model_blockentropy_select').on('change', onModelChange); $('#model_custom_select').on('change', onModelChange); $('#settings_preset_openai').on('change', onSettingsPresetChange); $('#new_oai_preset').on('click', onNewPresetClick); diff --git a/public/scripts/secrets.js b/public/scripts/secrets.js index d0dff1e4e..2f3c193d9 100644 --- a/public/scripts/secrets.js +++ b/public/scripts/secrets.js @@ -34,7 +34,6 @@ export const SECRET_KEYS = { ZEROONEAI: 'api_key_01ai', HUGGINGFACE: 'api_key_huggingface', STABILITY: 'api_key_stability', - BLOCKENTROPY: 'api_key_blockentropy', CUSTOM_OPENAI_TTS: 'api_key_custom_openai_tts', NANOGPT: 'api_key_nanogpt', TAVILY: 'api_key_tavily', @@ -74,7 +73,6 @@ const INPUT_MAP = { [SECRET_KEYS.FEATHERLESS]: '#api_key_featherless', [SECRET_KEYS.ZEROONEAI]: '#api_key_01ai', [SECRET_KEYS.HUGGINGFACE]: '#api_key_huggingface', - [SECRET_KEYS.BLOCKENTROPY]: '#api_key_blockentropy', [SECRET_KEYS.NANOGPT]: '#api_key_nanogpt', [SECRET_KEYS.GENERIC]: '#api_key_generic', [SECRET_KEYS.DEEPSEEK]: '#api_key_deepseek', diff --git a/public/scripts/slash-commands.js b/public/scripts/slash-commands.js index 6818a341c..304544051 100644 --- a/public/scripts/slash-commands.js +++ b/public/scripts/slash-commands.js @@ -3936,7 +3936,6 @@ function getModelOptions(quiet) { { id: 'model_groq_select', api: 'openai', type: chat_completion_sources.GROQ }, { id: 'model_nanogpt_select', api: 'openai', type: chat_completion_sources.NANOGPT }, { id: 'model_01ai_select', api: 'openai', type: chat_completion_sources.ZEROONEAI }, - { id: 'model_blockentropy_select', api: 'openai', type: chat_completion_sources.BLOCKENTROPY }, { id: 'model_deepseek_select', api: 'openai', type: chat_completion_sources.DEEPSEEK }, { id: 'model_novel_select', api: 'novel', type: null }, { id: 'horde_model', api: 'koboldhorde', type: null }, diff --git a/public/scripts/st-context.js b/public/scripts/st-context.js index ae32ff3f8..0ba1104bd 100644 --- a/public/scripts/st-context.js +++ b/public/scripts/st-context.js @@ -83,6 +83,7 @@ import { convertCharacterBook, getWorldInfoPrompt, loadWorldInfo, reloadEditor, import { ChatCompletionService, TextCompletionService } from './custom-request.js'; import { ConnectionManagerRequestService } from './extensions/shared.js'; import { updateReasoningUI, parseReasoningFromString } from './reasoning.js'; +import { IGNORE_SYMBOL } from './constants.js'; export function getContext() { return { @@ -225,6 +226,9 @@ export function getContext() { parseReasoningFromString, unshallowCharacter, unshallowGroupMembers, + symbols: { + ignore: IGNORE_SYMBOL, + }, }; } diff --git a/public/scripts/tokenizers.js b/public/scripts/tokenizers.js index 08dcd286f..5bec8961c 100644 --- a/public/scripts/tokenizers.js +++ b/public/scripts/tokenizers.js @@ -729,15 +729,6 @@ export function getTokenizerModel() { return yiTokenizer; } - if (oai_settings.chat_completion_source === chat_completion_sources.BLOCKENTROPY) { - if (oai_settings.blockentropy_model.includes('llama3')) { - return llama3Tokenizer; - } - if (oai_settings.blockentropy_model.includes('miqu') || oai_settings.blockentropy_model.includes('mixtral')) { - return mistralTokenizer; - } - } - // Default to Turbo 3.5 return turboTokenizer; } diff --git a/public/scripts/world-info.js b/public/scripts/world-info.js index 07625437a..0d0e06587 100644 --- a/public/scripts/world-info.js +++ b/public/scripts/world-info.js @@ -2680,8 +2680,10 @@ export async function getWorldEntry(name, data, entry) { $(counter).text(numberOfTokens); }, debounce_timeout.relaxed); + const contentInputId = `world_entry_content_${entry.uid}`; const contentInput = template.find('textarea[name="content"]'); contentInput.data('uid', entry.uid); + contentInput.attr('id', contentInputId); contentInput.on('input', async function (_, { skipCount } = {}) { const uid = $(this).data('uid'); const value = $(this).val(); @@ -2698,7 +2700,9 @@ export async function getWorldEntry(name, data, entry) { countTokensDebounced(counter, value); }); contentInput.val(entry.content).trigger('input', { skipCount: true }); - //initScrollHeight(contentInput); + + const contentExpandButton = template.find('.editor_maximize'); + contentExpandButton.attr('data-for', contentInputId); template.find('.inline-drawer-toggle').on('click', function () { if (counter.data('first-run')) { diff --git a/src/constants.js b/src/constants.js index d06a809c6..2692c9b86 100644 --- a/src/constants.js +++ b/src/constants.js @@ -174,7 +174,6 @@ export const CHAT_COMPLETION_SOURCES = { PERPLEXITY: 'perplexity', GROQ: 'groq', ZEROONEAI: '01ai', - BLOCKENTROPY: 'blockentropy', NANOGPT: 'nanogpt', DEEPSEEK: 'deepseek', }; diff --git a/src/endpoints/backends/chat-completions.js b/src/endpoints/backends/chat-completions.js index 9c5512ae7..eda145de7 100644 --- a/src/endpoints/backends/chat-completions.js +++ b/src/endpoints/backends/chat-completions.js @@ -50,7 +50,6 @@ const API_PERPLEXITY = 'https://api.perplexity.ai'; const API_GROQ = 'https://api.groq.com/openai/v1'; const API_MAKERSUITE = 'https://generativelanguage.googleapis.com'; const API_01AI = 'https://api.lingyiwanwu.com/v1'; -const API_BLOCKENTROPY = 'https://api.blockentropy.ai/v1'; const API_AI21 = 'https://api.ai21.com/studio/v1'; const API_NANOGPT = 'https://nano-gpt.com/api/v1'; const API_DEEPSEEK = 'https://api.deepseek.com/beta'; @@ -865,10 +864,6 @@ router.post('/status', async function (request, response_getstatus_openai) { api_url = API_01AI; api_key_openai = readSecret(request.user.directories, SECRET_KEYS.ZEROONEAI); headers = {}; - } else if (request.body.chat_completion_source === CHAT_COMPLETION_SOURCES.BLOCKENTROPY) { - api_url = API_BLOCKENTROPY; - api_key_openai = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); - headers = {}; } else if (request.body.chat_completion_source === CHAT_COMPLETION_SOURCES.NANOGPT) { api_url = API_NANOGPT; api_key_openai = readSecret(request.user.directories, SECRET_KEYS.NANOGPT); @@ -1155,11 +1150,6 @@ router.post('/generate', function (request, response) { apiKey = readSecret(request.user.directories, SECRET_KEYS.ZEROONEAI); headers = {}; bodyParams = {}; - } else if (request.body.chat_completion_source === CHAT_COMPLETION_SOURCES.BLOCKENTROPY) { - apiUrl = API_BLOCKENTROPY; - apiKey = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); - headers = {}; - bodyParams = {}; } else { console.warn('This chat completion source is not supported yet.'); return response.status(400).send({ error: true }); diff --git a/src/endpoints/secrets.js b/src/endpoints/secrets.js index 857a3950f..ee373820d 100644 --- a/src/endpoints/secrets.js +++ b/src/endpoints/secrets.js @@ -44,7 +44,6 @@ export const SECRET_KEYS = { ZEROONEAI: 'api_key_01ai', HUGGINGFACE: 'api_key_huggingface', STABILITY: 'api_key_stability', - BLOCKENTROPY: 'api_key_blockentropy', CUSTOM_OPENAI_TTS: 'api_key_custom_openai_tts', TAVILY: 'api_key_tavily', NANOGPT: 'api_key_nanogpt', diff --git a/src/endpoints/stable-diffusion.js b/src/endpoints/stable-diffusion.js index 6401491f3..ee3944cb4 100644 --- a/src/endpoints/stable-diffusion.js +++ b/src/endpoints/stable-diffusion.js @@ -907,89 +907,6 @@ stability.post('/generate', async (request, response) => { } }); -const blockentropy = express.Router(); - -blockentropy.post('/models', async (request, response) => { - try { - const key = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); - - if (!key) { - console.warn('Block Entropy key not found.'); - return response.sendStatus(400); - } - - const modelsResponse = await fetch('https://api.blockentropy.ai/sdapi/v1/sd-models', { - method: 'GET', - headers: { - 'Authorization': `Bearer ${key}`, - }, - }); - - if (!modelsResponse.ok) { - console.warn('Block Entropy returned an error.'); - return response.sendStatus(500); - } - - const data = await modelsResponse.json(); - - if (!Array.isArray(data)) { - console.warn('Block Entropy returned invalid data.'); - return response.sendStatus(500); - } - const models = data.map(x => ({ value: x.name, text: x.name })); - return response.send(models); - - } catch (error) { - console.error(error); - return response.sendStatus(500); - } -}); - -blockentropy.post('/generate', async (request, response) => { - try { - const key = readSecret(request.user.directories, SECRET_KEYS.BLOCKENTROPY); - - if (!key) { - console.warn('Block Entropy key not found.'); - return response.sendStatus(400); - } - - console.debug('Block Entropy request:', request.body); - - const result = await fetch('https://api.blockentropy.ai/sdapi/v1/txt2img', { - method: 'POST', - body: JSON.stringify({ - prompt: request.body.prompt, - negative_prompt: request.body.negative_prompt, - model: request.body.model, - steps: request.body.steps, - width: request.body.width, - height: request.body.height, - // Random seed if negative. - seed: request.body.seed >= 0 ? request.body.seed : Math.floor(Math.random() * 10_000_000), - }), - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${key}`, - }, - }); - - if (!result.ok) { - console.warn('Block Entropy returned an error.'); - return response.sendStatus(500); - } - - const data = await result.json(); - console.debug('Block Entropy response:', data); - - return response.send(data); - } catch (error) { - console.error(error); - return response.sendStatus(500); - } -}); - - const huggingface = express.Router(); huggingface.post('/generate', async (request, response) => { @@ -1358,7 +1275,6 @@ router.use('/together', together); router.use('/drawthings', drawthings); router.use('/pollinations', pollinations); router.use('/stability', stability); -router.use('/blockentropy', blockentropy); router.use('/huggingface', huggingface); router.use('/nanogpt', nanogpt); router.use('/bfl', bfl);