Add support for NAI v4 model configuration and inputs

This commit is contained in:
YH_KIM
2025-04-14 04:38:47 +09:00
parent 834e1b7a2e
commit d11bff3f80
3 changed files with 53 additions and 14 deletions

View File

@@ -107,6 +107,8 @@
} }
// End HypaV3 // End HypaV3
let imageModel = '';
// add init NAI V4 // add init NAI V4
// if(DBState.db.NAIImgConfig.autoSmea === undefined) DBState.db.NAIImgConfig.autoSmea = false; // 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.use_coords === undefined) DBState.db.NAIImgConfig.use_coords = false;
@@ -203,6 +205,17 @@
<span class="text-textcolor">Model</span> <span class="text-textcolor">Model</span>
<TextInput size="sm" marginBottom placeholder="nai-diffusion-4-full" bind:value={DBState.db.NAIImgModel}/> <TextInput size="sm" marginBottom placeholder="nai-diffusion-4-full" bind:value={DBState.db.NAIImgModel}/>
<SelectInput className="mt-2 mb-4" bind:value={imageModel} onchange={(e)=>{
DBState.db.NAIImgModel = imageModel;
}}>
<OptionInput value="" >선택하여 자동입력</OptionInput>
<OptionInput value="nai-diffusion-4-full" >nai-diffusion-4-full</OptionInput>
<OptionInput value="nai-diffusion-4-curated-preview" >nai-diffusion-4-curated-preview</OptionInput>
<OptionInput value="nai-diffusion-3" >nai-diffusion-3</OptionInput>
<OptionInput value="nai-diffusion-furry-3" >nai-diffusion-furry-3</OptionInput>
<OptionInput value="nai-diffusion-2" >nai-diffusion-2</OptionInput>
</SelectInput>
<span class="text-textcolor">Width</span> <span class="text-textcolor">Width</span>
<NumberInput size="sm" marginBottom min={0} max={2048} bind:value={DBState.db.NAIImgConfig.width}/> <NumberInput size="sm" marginBottom min={0} max={2048} bind:value={DBState.db.NAIImgConfig.width}/>
@@ -210,7 +223,8 @@
<NumberInput size="sm" marginBottom min={0} max={2048} bind:value={DBState.db.NAIImgConfig.height}/> <NumberInput size="sm" marginBottom min={0} max={2048} bind:value={DBState.db.NAIImgConfig.height}/>
<span class="text-textcolor">Sampler</span> <span class="text-textcolor">Sampler</span>
{#if DBState.db.NAIImgModel === 'nai-diffusion-4-full'} {#if DBState.db.NAIImgModel === 'nai-diffusion-4-full'
|| DBState.db.NAIImgModel === 'nai-diffusion-4-curated-preview'}
<SelectInput className="mt-2 mb-4" bind:value={DBState.db.NAIImgConfig.sampler}> <SelectInput className="mt-2 mb-4" bind:value={DBState.db.NAIImgConfig.sampler}>
<OptionInput value="k_euler_ancestral" >(Recommended)Euler Ancestral</OptionInput> <OptionInput value="k_euler_ancestral" >(Recommended)Euler Ancestral</OptionInput>
<OptionInput value="k_dpmpp_2s_ancestral" >(Recommended)DPM++ 2S Ancestral</OptionInput> <OptionInput value="k_dpmpp_2s_ancestral" >(Recommended)DPM++ 2S Ancestral</OptionInput>
@@ -238,20 +252,22 @@
{#if !DBState.db.NAII2I || DBState.db.NAIImgConfig.sampler !== 'ddim_v3'} {#if !DBState.db.NAII2I || DBState.db.NAIImgConfig.sampler !== 'ddim_v3'}
<Check bind:check={DBState.db.NAIImgConfig.sm} name="Use SMEA"/> <Check bind:check={DBState.db.NAIImgConfig.sm} name="Use SMEA"/>
{:else if DBState.db.NAIImgModel !== 'nai-diffusion-4-full'} {:else if DBState.db.NAIImgModel === 'nai-diffusion-4-full'
|| DBState.db.NAIImgModel === 'nai-diffusion-4-curated-preview'}
<Check bind:check={DBState.db.NAIImgConfig.sm_dyn} name='Use DYN'/> <Check bind:check={DBState.db.NAIImgConfig.sm_dyn} name='Use DYN'/>
{/if} {/if}
<Check bind:check={DBState.db.NAII2I} name="Enable I2I"/> <Check bind:check={DBState.db.NAII2I} name="Enable I2I"/>
{#if DBState.db.NAIImgModel === 'nai-diffusion-4-full'} {#if DBState.db.NAIImgModel === 'nai-diffusion-4-full'
|| DBState.db.NAIImgModel === 'nai-diffusion-4-curated-preview'}
<Check bind:check={DBState.db.NAIImgConfig.autoSmea} name='Auto Smea'/> <Check bind:check={DBState.db.NAIImgConfig.autoSmea} name='Auto Smea'/>
<Check bind:check={DBState.db.NAIImgConfig.use_coords} name='Use coords'/> <Check bind:check={DBState.db.NAIImgConfig.use_coords} name='Use coords'/>
<Check bind:check={DBState.db.NAIImgConfig.legacy_uc} name='Use legacy uc'/> <Check bind:check={DBState.db.NAIImgConfig.legacy_uc} name='Use legacy uc'/>
<!-- <Check bind:check={DBState.db.NAIImgConfig.v4_prompt.use_coords} name='Use v4 prompt coords'/>--> <Check bind:check={DBState.db.NAIImgConfig.v4_prompt.use_coords} name='Use v4 prompt coords'/>
<!-- <Check bind:check={DBState.db.NAIImgConfig.v4_prompt.use_order} name='Use v4 prompt order'/>--> <Check bind:check={DBState.db.NAIImgConfig.v4_prompt.use_order} name='Use v4 prompt order'/>
<!-- <Check bind:check={DBState.db.NAIImgConfig.v4_negative_prompt.legacy_uc} name='Use v4 negative prompt legacy uc'/>--> <Check bind:check={DBState.db.NAIImgConfig.v4_negative_prompt.legacy_uc} name='Use v4 negative prompt legacy uc'/>
{/if} {/if}
{#if DBState.db.NAII2I} {#if DBState.db.NAII2I}

View File

@@ -155,23 +155,23 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n
"reference_information_extracted": db.NAIImgConfig.InfoExtracted, "reference_information_extracted": db.NAIImgConfig.InfoExtracted,
"reference_strength": db.NAIImgConfig.RefStrength, "reference_strength": db.NAIImgConfig.RefStrength,
//add v4 //add v4
"autoSmea": db.NAIImgConfig.autoSmea || false, "autoSmea": db.NAIImgConfig.autoSmea,
use_coords: db.NAIImgConfig.use_coords || false, use_coords: db.NAIImgConfig.use_coords,
legacy_uc: db.NAIImgConfig.legacy_uc || false, legacy_uc: db.NAIImgConfig.legacy_uc,
v4_prompt:{ v4_prompt:{
caption:{ caption:{
base_caption:genPrompt, base_caption:genPrompt,
char_captions: [] char_captions: []
}, },
use_coords: false,//db.NAIImgConfig.v4_prompt.use_coords || false, use_coords: db.NAIImgConfig.v4_prompt.use_coords,
use_order: true//db.NAIImgConfig.v4_prompt.use_order || true use_order: db.NAIImgConfig.v4_prompt.use_order
}, },
"v4_negative_prompt":{ "v4_negative_prompt":{
caption:{ caption:{
base_caption:neg, base_caption:neg,
char_captions: [] char_captions: []
}, },
legacy_uc: false//db.NAIImgConfig.v4_negative_prompt.legacy_uc || false, legacy_uc: db.NAIImgConfig.v4_negative_prompt.legacy_uc,
} }
} }
}, },
@@ -211,6 +211,7 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n
if(refimgbase64 !== undefined){ if(refimgbase64 !== undefined){
reqlist.body.parameters.reference_image = refimgbase64 reqlist.body.parameters.reference_image = refimgbase64
} }
console.log({img2img:reqlist});
}else{ }else{
if (db.NAIREF) { if (db.NAIREF) {
@@ -227,8 +228,11 @@ export async function generateAIImage(genPrompt:string, currentChar:character, n
reqlist = commonReq; reqlist = commonReq;
reqlist.body.action = 'generate'; reqlist.body.action = 'generate';
reqlist.body.parameters.reference_image = base64img; reqlist.body.parameters.reference_image = base64img;
console.log({generate:reqlist});
} else { } else {
reqlist = commonReq; reqlist = commonReq;
reqlist.body.action = 'generate';
console.log({nothing:reqlist});
} }
} }
try { try {

View File

@@ -286,6 +286,27 @@ export function setDatabase(data:Database){
} }
} }
} }
//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)){ if(checkNullish(data.customTextTheme)){
data.customTextTheme = { data.customTextTheme = {
FontColorStandard: "#f8f8f2", FontColorStandard: "#f8f8f2",
@@ -1429,10 +1450,8 @@ interface NAIImgConfigV4CharCaption{
x: number, x: number,
y: number y: number
}[] }[]
} }
interface ComfyConfig{ interface ComfyConfig{
workflow:string, workflow:string,
posNodeID: string, posNodeID: string,