Add support for NovelAI V4 model and configuration settings (#816)
# PR Checklist - [ ] Have you checked if it works normally in all models? *Ignore this if it doesn't use models.* - [ ] Have you checked if it works normally in all web, local, and node hosted versions? If it doesn't, have you blocked it in those versions? - [ ] Have you added type definitions? # Description Add and enable temporary settings for NovelAI V4 models. Character-specific prompt settings have been temporarily forcibly added, so modifications are needed to allow custom prompt values to be input later. NovelAI V4 모델 추가. 캐릭터별 프롬프트는 임시추가 했기때문에 추후 커스텀 설정 할 수 있도록 변경해야함.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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{
|
||||
|
||||
Reference in New Issue
Block a user