diff --git a/src/lib/Setting/Pages/OtherBotSettings.svelte b/src/lib/Setting/Pages/OtherBotSettings.svelte index 836748e4..13b8e9bd 100644 --- a/src/lib/Setting/Pages/OtherBotSettings.svelte +++ b/src/lib/Setting/Pages/OtherBotSettings.svelte @@ -35,7 +35,25 @@ image: '', InfoExtracted: 0.5, RefStrength: 0.5, - refimage: '' + refimage: '', + autoSmea:false, + legacy_uc:false, + use_coords:false, + v4_prompt:{ + caption:{ + base_caption:'', + char_captions:[] + }, + use_coords:false, + use_order:true + }, + v4_negative_prompt:{ + caption:{ + base_caption:'', + char_captions:[] + }, + legacy_uc:false, + } } if (DBState.db.NAIImgConfig.sampler === 'ddim_v3'){ DBState.db.NAIImgConfig.sm = false @@ -43,7 +61,7 @@ } }); - let submenu = $state(DBState.db.useLegacyGUI ? -1 : 0) + let submenu = $state(DBState.db.useLegacyGUI ? -1 : 0); // HypaV3 $effect(() => { @@ -88,6 +106,16 @@ return parseFloat(maxMemoryRatio.toFixed(2)); } // End HypaV3 + + let imageModel = ''; + + // add init NAI V4 + // if(DBState.db.NAIImgConfig.autoSmea === undefined) DBState.db.NAIImgConfig.autoSmea = false; + // if(DBState.db.NAIImgConfig.use_coords === undefined) DBState.db.NAIImgConfig.use_coords = false; + // if(DBState.db.NAIImgConfig.v4_prompt.use_coords === undefined) DBState.db.NAIImgConfig.v4_prompt.use_coords = false; + // if(DBState.db.NAIImgConfig.v4_prompt.use_order === undefined) DBState.db.NAIImgConfig.v4_prompt.use_order = false; + // if(DBState.db.NAIImgConfig.v4_negative_prompt.legacy_uc === undefined) DBState.db.NAIImgConfig.v4_negative_prompt.legacy_uc = false; +

{language.otherBots}

@@ -168,50 +196,89 @@ {/if} {/if} - + {#if DBState.db.sdProvider === 'novelai'} Novel AI {language.providerURL} API Key - + Model - - + + { + DBState.db.NAIImgModel = imageModel; + }}> + Choose... + nai-diffusion-4-full + nai-diffusion-4-curated-preview + nai-diffusion-3 + nai-diffusion-furry-3 + nai-diffusion-2 + + + Width Height Sampler - - Euler - Euler Ancestral - DPM++ 2S Ancestral - DPM++ 2M - DPM++ SDE - DPM++ 2S - DDIM - + + {#if DBState.db.NAIImgModel === 'nai-diffusion-4-full' + || DBState.db.NAIImgModel === 'nai-diffusion-4-curated-preview'} + + (Recommended)Euler Ancestral + (Recommended)DPM++ 2S Ancestral + (Recommended)DPM++ 2M SDE + (Other)Euler + (Other)DPM++ 2M + (Other)DPM++ SDE + + {:else} + + Euler + Euler Ancestral + DPM++ 2S Ancestral + DPM++ 2M + DPM++ SDE + DPM++ 2S + DDIM + + {/if} + steps CFG scale - + {#if !DBState.db.NAII2I || DBState.db.NAIImgConfig.sampler !== 'ddim_v3'} + {:else if DBState.db.NAIImgModel === 'nai-diffusion-4-full' + || DBState.db.NAIImgModel === 'nai-diffusion-4-curated-preview'} {/if} - + + {#if DBState.db.NAIImgModel === 'nai-diffusion-4-full' + || DBState.db.NAIImgModel === 'nai-diffusion-4-curated-preview'} + + + + + + + + + {/if} + {#if DBState.db.NAII2I} - + Strength {DBState.db.NAIImgConfig.strength} Noise {DBState.db.NAIImgConfig.noise} - + Base image - + {/if} @@ -273,8 +340,8 @@ {:else} {#await getCharImage(DBState.db.NAIImgConfig.refimage, 'css')}
- {:then im} -
+ {:then im} +
{/await} {/if} diff --git a/src/ts/process/stableDiff.ts b/src/ts/process/stableDiff.ts index 3b5ce4bf..fb24033a 100644 --- a/src/ts/process/stableDiff.ts +++ b/src/ts/process/stableDiff.ts @@ -1,5 +1,5 @@ import { get } from "svelte/store" -import { getDatabase, type character } from "../storage/database.svelte" +import { getDatabase, type character, type NAIImgConfig } from "../storage/database.svelte" import { requestChatData } from "./request" import { alertError } from "../alert" import { fetchNative, globalFetch, readImage } from "../globalApi.svelte" @@ -125,6 +125,62 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n let reqlist:any = {} + const commonReq = { + body: { + "input": genPrompt, + "model": db.NAIImgModel, + "parameters": { + "params_version": 3, + "add_original_image": true, + "cfg_rescale": 0, + "controlnet_strength": 1, + "dynamic_thresholding": false, + "n_samples": 1, + "width": db.NAIImgConfig.width, + "height": db.NAIImgConfig.height, + "sampler": db.NAIImgConfig.sampler, + "steps": db.NAIImgConfig.steps, + "scale": db.NAIImgConfig.scale, + "negative_prompt": neg, + "sm": false, + "sm_dyn": false, + "noise": db.NAIImgConfig.noise, + "noise_schedule": "native", + "strength": db.NAIImgConfig.strength, + "ucPreset": 3, + "uncond_scale": 1, + "qualityToggle": false, + "lagacy_v3_extend": false, + "lagacy": false, + "reference_information_extracted": db.NAIImgConfig.InfoExtracted, + "reference_strength": db.NAIImgConfig.RefStrength, + //add v4 + "autoSmea": db.NAIImgConfig.autoSmea, + use_coords: db.NAIImgConfig.use_coords, + legacy_uc: db.NAIImgConfig.legacy_uc, + v4_prompt:{ + caption:{ + base_caption:genPrompt, + char_captions: [] + }, + use_coords: db.NAIImgConfig.v4_prompt.use_coords, + use_order: db.NAIImgConfig.v4_prompt.use_order + }, + "v4_negative_prompt":{ + caption:{ + base_caption:neg, + char_captions: [] + }, + legacy_uc: db.NAIImgConfig.v4_negative_prompt.legacy_uc, + } + } + }, + headers:{ + "Authorization": "Bearer " + db.NAIApiKey + }, + rawResponse: true + } + if(db.NAII2I){ let seed = Math.floor(Math.random() * 10000000000) @@ -139,9 +195,6 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n } let refimgbase64 = undefined - - - if(db.NAIREF){ if(db.NAIImgConfig.refimage !== ''){ @@ -149,56 +202,20 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n } } - reqlist = { - body: { - "action": "img2img", - "input": genPrompt, - "model": db.NAIImgModel, - "parameters": { - "params_version": 1, - "add_original_image": true, - "cfg_rescale": 0, - "controlnet_strength": 1, - "dynamic_thresholding": false, - "extra_noise_seed": seed, - "n_samples": 1, - "width": db.NAIImgConfig.width, - "height": db.NAIImgConfig.height, - "sampler": db.NAIImgConfig.sampler, - "steps": db.NAIImgConfig.steps, - "scale": db.NAIImgConfig.scale, - "seed": seed, - "negative_prompt": neg, - "sm": false, - "sm_dyn": false, - "noise": db.NAIImgConfig.noise, - "noise_schedule": "native", - "strength": db.NAIImgConfig.strength, - "image": base64img, - "ucPreset": 3, - "uncond_scale": 1, - "qualityToggle": false, - "lagacy_v3_extend": false, - "lagacy": false, - "reference_information_extracted": db.NAIImgConfig.InfoExtracted, - "reference_strength": db.NAIImgConfig.RefStrength - } - }, - headers:{ - "Authorization": "Bearer " + db.NAIApiKey - }, - rawResponse: true - } + reqlist = commonReq; + reqlist.body.action = "img2img"; + reqlist.body.parameters.image = base64img; + reqlist.body.parameters.extra_noise_seed = seed; + reqlist.body.parameters.seed = seed; if(refimgbase64 !== undefined){ reqlist.body.parameters.reference_image = refimgbase64 } + console.log({img2img:reqlist}); }else{ - if (db.NAIREF) { - - + let base64img = '' if(db.NAIImgConfig.image === ''){ const charimg = currentChar.image; @@ -208,84 +225,15 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n } else{ base64img = Buffer.from(await readImage(db.NAIImgConfig.refimage)).toString('base64'); } - reqlist = { - body: { - "action": "generate", - "input": genPrompt, - "model": db.NAIImgModel, - "parameters": { - "params_version": 1, - "add_original_image": true, - "cfg_rescale": 0, - "controlnet_strength": 1, - "dynamic_thresholding": false, - "n_samples": 1, - "width": db.NAIImgConfig.width, - "height": db.NAIImgConfig.height, - "sampler": db.NAIImgConfig.sampler, - "steps": db.NAIImgConfig.steps, - "scale": db.NAIImgConfig.scale, - "negative_prompt": neg, - "sm": db.NAIImgConfig.sm, - "sm_dyn": db.NAIImgConfig.sm_dyn, - "noise_schedule": "native", - "ucPreset": 3, - "uncond_scale": 1, - "qualityToggle": false, - "legacy": false, - "lagacy_v3_extend": false, - "reference_image": base64img, - "reference_strength": db.NAIImgConfig.RefStrength, - "reference_information_extracted": db.NAIImgConfig.InfoExtracted - } - }, - headers:{ - "Authorization": "Bearer " + db.NAIApiKey - }, - rawResponse: true - } + reqlist = commonReq; + reqlist.body.action = 'generate'; + reqlist.body.parameters.reference_image = base64img; + console.log({generate:reqlist}); } else { - reqlist = { - body: { - "input": genPrompt, - "model": db.NAIImgModel, - "parameters": { - "params_version": 1, - "width": db.NAIImgConfig.width, - "height": db.NAIImgConfig.height, - "scale": db.NAIImgConfig.scale, - "sampler": db.NAIImgConfig.sampler, - "steps": db.NAIImgConfig.steps, - "n_samples": 1, - "ucPreset": 3, - "qualityToggle": false, - "sm": db.NAIImgConfig.sm, - "sm_dyn": db.NAIImgConfig.sm_dyn, - "dynamic_thresholding": false, - "controlnet_strength": 1, - "legacy": false, - "add_original_image": true, - "uncond_scale": 1, - "cfg_rescale": 0, - "noise_schedule": "native", - "legacy_v3_extend": false, - "reference_information_extracted": db.NAIImgConfig.InfoExtracted, - "reference_strength": db.NAIImgConfig.RefStrength, - "negative_prompt": neg, - } - }, - headers:{ - "Authorization": "Bearer " + db.NAIApiKey - }, - rawResponse: true - - } + reqlist = commonReq; + reqlist.body.action = 'generate'; + console.log({nothing:reqlist}); } - - - - - } try { const da = await globalFetch(db.NAIImgUrl, reqlist) diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts index 5b8a3d00..12618efe 100644 --- a/src/ts/storage/database.svelte.ts +++ b/src/ts/storage/database.svelte.ts @@ -264,9 +264,49 @@ export function setDatabase(data:Database){ image:"", refimage:"", InfoExtracted:1, - RefStrength:0.4 + RefStrength:0.4, + //add 4 + autoSmea:false, + legacy_uc:false, + use_coords:false, + v4_prompt:{ + caption:{ + base_caption:'', + char_captions:[] + }, + use_coords:false, + use_order:true + }, + v4_negative_prompt:{ + caption:{ + base_caption:'', + char_captions:[] + }, + legacy_uc:false, + } } } + //add NAI v4 (사용중인 사람용 추가 DB Init) + if(checkNullish(data.NAIImgConfig.v4_prompt)){ + data.NAIImgConfig.autoSmea = false; + data.NAIImgConfig.use_coords = false; + data.NAIImgConfig.legacy_uc = false; + data.NAIImgConfig.v4_prompt = { + caption:{ + base_caption:"", + char_captions:[] + }, + use_coords:false, + use_order:true + }; + data.NAIImgConfig.v4_negative_prompt = { + caption:{ + base_caption:"", + char_captions:[] + }, + legacy_uc:false, + }; + } if(checkNullish(data.customTextTheme)){ data.customTextTheme = { FontColorStandard: "#f8f8f2", @@ -1363,7 +1403,7 @@ interface sdConfig{ hr_upscaler:string } -interface NAIImgConfig{ +export interface NAIImgConfig{ width:number, height:number, sampler:string, @@ -1377,6 +1417,39 @@ interface NAIImgConfig{ refimage:string, InfoExtracted:number, RefStrength:number + //add 4 + autoSmea:boolean, + use_coords:boolean, + legacy_uc: boolean, + v4_prompt:NAIImgConfigV4Prompt, + v4_negative_prompt:NAIImgConfigV4NegativePrompt, + +} + +//add 4 +interface NAIImgConfigV4Prompt{ + caption: NAIImgConfigV4Caption, + use_coords: boolean, + use_order: boolean +} +//add 4 +interface NAIImgConfigV4NegativePrompt{ + caption: NAIImgConfigV4Caption, + legacy_uc: boolean +} +//add 4 +interface NAIImgConfigV4Caption{ + base_caption: string, + char_captions: NAIImgConfigV4CharCaption[] +} +//add 4 +interface NAIImgConfigV4CharCaption{ + char_caption: string, + centers: + { + x: number, + y: number + }[] } interface ComfyConfig{