Add NAI Diffusion V4

e6107ad447721342ef9d8a35f37a79d402e5ff7b

Cohee <18619528+Cohee1207@users.noreply.github.com>

3 files changed, +32 -3Showing whitespace changes
public/scripts/extensions/stable-diffusion/index.js+6 -1
@@ -1986,6 +1986,10 @@ async function loadNovelModels() {
19861986
19871987 return [
19881988 {
1989+ value: 'nai-diffusion-4-curated-preview',
1990+ text: 'NAI Diffusion Anime V4 (Curated Preview)',
1991+ },
1992+ {
19891993 value: 'nai-diffusion-3',
19901994 text: 'NAI Diffusion Anime V3',
19911995 },
@@ -2049,7 +2053,7 @@ async function loadSchedulers() {
20492053 schedulers = await getAutoRemoteSchedulers();
20502054 break;
20512055 case sources.novel:
20522056 schedulers = ['N/Akarras', 'native', 'exponential', 'polyexponential'];
20532057 break;
20542058 case sources.vlad:
20552059 schedulers = ['N/A'];
@@ -3158,6 +3162,7 @@ async function generateNovelImage(prompt, negativePrompt, signal) {
31583162 prompt: prompt,
31593163 model: extension_settings.sd.model,
31603164 sampler: extension_settings.sd.sampler,
3165+ scheduler: extension_settings.sd.scheduler,
31613166 steps: steps,
31623167 scale: extension_settings.sd.scale,
31633168 width: width,
public/scripts/extensions/stable-diffusion/settings.html+1 -1
@@ -274,7 +274,7 @@
274274 <select id="sd_sampler"></select>
275275 </div>
276276
277277 <div class="flex1" data-sd-source="comfy,auto,novel">
278278 <label for="sd_scheduler" data-i18n="Scheduler">Scheduler</label>
279279 <select id="sd_scheduler"></select>
280280 </div>
src/endpoints/novelai.js+25 -1
@@ -307,15 +307,18 @@ router.post('/generate-image', jsonParser, async (request, response) => {
307307 },
308308 body: JSON.stringify({
309309 action: 'generate',
310310 input: request.body.prompt ?? '',
311311 model: request.body.model ?? 'nai-diffusion',
312312 parameters: {
313+ params_version: 3,
314+ prefer_brownian: true,
313315 negative_prompt: request.body.negative_prompt ?? '',
314316 height: request.body.height ?? 512,
315317 width: request.body.width ?? 512,
316318 scale: request.body.scale ?? 9,
317319 seed: request.body.seed >= 0 ? request.body.seed : Math.floor(Math.random() * 9999999999),
318320 sampler: request.body.sampler ?? 'k_dpmpp_2m',
321+ noise_schedule: request.body.scheduler ?? 'karras',
319322 steps: request.body.steps ?? 28,
320323 n_samples: 1,
321324 // NAI handholding for prompts
@@ -323,11 +326,32 @@ router.post('/generate-image', jsonParser, async (request, response) => {
323326 qualityToggle: false,
324327 add_original_image: false,
325328 controlnet_strength: 1,
329+ deliberate_euler_ancestral_bug: false,
326330 dynamic_thresholding: request.body.decrisper ?? false,
327331 legacy: false,
332+ legacy_v3_extend: false,
328333 sm: request.body.sm ?? false,
329334 sm_dyn: request.body.sm_dyn ?? false,
330335 uncond_scale: 1,
336+ use_coords: false,
337+ characterPrompts: [],
338+ reference_image_multiple: [],
339+ reference_information_extracted_multiple: [],
340+ reference_strength_multiple: [],
341+ v4_negative_prompt: {
342+ caption: {
343+ base_caption: request.body.negative_prompt ?? '',
344+ char_captions: [],
345+ },
346+ },
347+ v4_prompt: {
348+ caption: {
349+ base_caption: request.body.prompt ?? '',
350+ char_captions: [],
351+ },
352+ use_coords: false,
353+ use_order: true,
354+ },
331355 },
332356 }),
333357 });