From d3df47f97fcd254661c036c126113efcb81b29b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=BA=E6=99=BA=E7=9A=84=E5=B0=8F=E9=B1=BC=E5=90=9B?= <44761872+dragon-fish@users.noreply.github.com> Date: Sun, 10 Mar 2024 07:42:05 +0000 Subject: [PATCH] fix: compatible with nai-v3 --- src/config.ts | 2 +- src/index.ts | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/config.ts b/src/config.ts index b2ef57e..052c96f 100644 --- a/src/config.ts +++ b/src/config.ts @@ -146,7 +146,7 @@ export interface PromptConfig { } export const PromptConfig: Schema = Schema.object({ - basePrompt: Schema.computed(Schema.string().role('textarea'), options).description('默认附加的标签。').default('masterpiece, best quality'), + basePrompt: Schema.computed(Schema.string().role('textarea'), options).description('默认附加的标签。').default('best quality, amazing quality, very aesthetic, absurdres'), negativePrompt: Schema.computed(Schema.string().role('textarea'), options).description('默认附加的反向标签。').default(ucPreset), forbidden: Schema.computed(Schema.string().role('textarea'), options).description('违禁词列表。请求中的违禁词将会被自动删除。').default(''), defaultPromptSw: Schema.boolean().description('是否启用默认标签。').default(false), diff --git a/src/index.ts b/src/index.ts index 9f147d7..868dea1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -310,6 +310,7 @@ export function apply(ctx: Context, config: Config) { case 'login': case 'token': case 'naifu': { + parameters.params_version = 1; parameters.sampler = sampler.sd2nai(options.sampler, model) parameters.image = image?.base64 // NovelAI / NAIFU accepts bare base64 encoded image if (config.type === 'naifu') return parameters @@ -320,6 +321,8 @@ export function apply(ctx: Context, config: Config) { } parameters.dynamic_thresholding = options.decrisper ?? config.decrisper if (model === 'nai-diffusion-3') { + parameters.legacy = false + parameters.legacy_v3_extend = false parameters.sm_dyn = options.smeaDyn ?? config.smeaDyn parameters.sm = (options.smea ?? config.smea) || parameters.sm_dyn parameters.noise_schedule = options.scheduler ?? config.scheduler @@ -332,6 +335,12 @@ export function apply(ctx: Context, config: Config) { parameters.sm_dyn = false delete parameters.noise_schedule } + // Max scale for nai-v3 is 10, but not 20. + // If the given value is greater than 10, + // we can assume it is configured with an older version (max 20) + if (parameters.scale > 10) { + parameters.scale = parameters.scale / 2 + } } return { model, input: prompt, parameters: omit(parameters, ['prompt']) } } @@ -446,8 +455,8 @@ export function apply(ctx: Context, config: Config) { // event: newImage // id: 1 // data: - - if (res.headers.get('content-type') === 'application/x-zip-compressed') { + // ↓ nai-v3 + if (res.headers.get('content-type') === 'application/x-zip-compressed' || res.headers.get('content-disposition')?.includes('.zip')) { const buffer = Buffer.from(res.data, 'binary') // Ensure 'binary' encoding const zip = new AdmZip(buffer)