diff --git a/public/scripts/extensions/stable-diffusion/index.js b/public/scripts/extensions/stable-diffusion/index.js index 32f34ff40..ad2ad3941 100644 --- a/public/scripts/extensions/stable-diffusion/index.js +++ b/public/scripts/extensions/stable-diffusion/index.js @@ -1985,6 +1985,10 @@ async function loadNovelModels() { } return [ + { + value: 'nai-diffusion-4-curated-preview', + text: 'NAI Diffusion Anime V4 (Curated Preview)', + }, { value: 'nai-diffusion-3', text: 'NAI Diffusion Anime V3', @@ -2049,7 +2053,7 @@ async function loadSchedulers() { schedulers = await getAutoRemoteSchedulers(); break; case sources.novel: - schedulers = ['N/A']; + schedulers = ['karras', 'native', 'exponential', 'polyexponential']; break; case sources.vlad: schedulers = ['N/A']; @@ -3158,6 +3162,7 @@ async function generateNovelImage(prompt, negativePrompt, signal) { prompt: prompt, model: extension_settings.sd.model, sampler: extension_settings.sd.sampler, + scheduler: extension_settings.sd.scheduler, steps: steps, scale: extension_settings.sd.scale, width: width, diff --git a/public/scripts/extensions/stable-diffusion/settings.html b/public/scripts/extensions/stable-diffusion/settings.html index 5736a23f6..a9e941ca0 100644 --- a/public/scripts/extensions/stable-diffusion/settings.html +++ b/public/scripts/extensions/stable-diffusion/settings.html @@ -274,7 +274,7 @@ -
+
diff --git a/src/endpoints/novelai.js b/src/endpoints/novelai.js index 53ed8258e..9629aad40 100644 --- a/src/endpoints/novelai.js +++ b/src/endpoints/novelai.js @@ -307,15 +307,18 @@ router.post('/generate-image', jsonParser, async (request, response) => { }, body: JSON.stringify({ action: 'generate', - input: request.body.prompt, + input: request.body.prompt ?? '', model: request.body.model ?? 'nai-diffusion', parameters: { + params_version: 3, + prefer_brownian: true, negative_prompt: request.body.negative_prompt ?? '', height: request.body.height ?? 512, width: request.body.width ?? 512, scale: request.body.scale ?? 9, seed: request.body.seed >= 0 ? request.body.seed : Math.floor(Math.random() * 9999999999), sampler: request.body.sampler ?? 'k_dpmpp_2m', + noise_schedule: request.body.scheduler ?? 'karras', steps: request.body.steps ?? 28, n_samples: 1, // NAI handholding for prompts @@ -323,11 +326,32 @@ router.post('/generate-image', jsonParser, async (request, response) => { qualityToggle: false, add_original_image: false, controlnet_strength: 1, + deliberate_euler_ancestral_bug: false, dynamic_thresholding: request.body.decrisper ?? false, legacy: false, + legacy_v3_extend: false, sm: request.body.sm ?? false, sm_dyn: request.body.sm_dyn ?? false, uncond_scale: 1, + use_coords: false, + characterPrompts: [], + reference_image_multiple: [], + reference_information_extracted_multiple: [], + reference_strength_multiple: [], + v4_negative_prompt: { + caption: { + base_caption: request.body.negative_prompt ?? '', + char_captions: [], + }, + }, + v4_prompt: { + caption: { + base_caption: request.body.prompt ?? '', + char_captions: [], + }, + use_coords: false, + use_order: true, + }, }, }), });