| 2920 | 2927 | */ |
| 2921 | 2928 | async function generateAutoImage(prompt, negativePrompt, signal) { |
| 2922 | 2929 | const isValidVae = extension_settings.sd.vae && !['N/A', placeholderVae].includes(extension_settings.sd.vae); |
| 2930 | + let payload = { |
| 2931 | + ...getSdRequestBody(), |
| 2932 | + prompt: prompt, |
| 2933 | + negative_prompt: negativePrompt, |
| 2934 | + sampler_name: extension_settings.sd.sampler, |
| 2935 | + scheduler: extension_settings.sd.scheduler, |
| 2936 | + steps: extension_settings.sd.steps, |
| 2937 | + cfg_scale: extension_settings.sd.scale, |
| 2938 | + width: extension_settings.sd.width, |
| 2939 | + height: extension_settings.sd.height, |
| 2940 | + restore_faces: !!extension_settings.sd.restore_faces, |
| 2941 | + enable_hr: !!extension_settings.sd.enable_hr, |
| 2942 | + hr_upscaler: extension_settings.sd.hr_upscaler, |
| 2943 | + hr_scale: extension_settings.sd.hr_scale, |
| 2944 | + denoising_strength: extension_settings.sd.denoising_strength, |
| 2945 | + hr_second_pass_steps: extension_settings.sd.hr_second_pass_steps, |
| 2946 | + seed: extension_settings.sd.seed >= 0 ? extension_settings.sd.seed : undefined, |
| 2947 | + override_settings: { |
| 2948 | + CLIP_stop_at_last_layers: extension_settings.sd.clip_skip, |
| 2949 | + sd_vae: isValidVae ? extension_settings.sd.vae : undefined, |
| 2950 | + }, |
| 2951 | + override_settings_restore_afterwards: true, |
| 2952 | + clip_skip: extension_settings.sd.clip_skip, // For SD.Next |
| 2953 | + save_images: true, |
| 2954 | + send_images: true, |
| 2955 | + do_not_save_grid: false, |
| 2956 | + do_not_save_samples: false, |
| 2957 | + }; |
| 2958 | + // Conditionally add the ADetailer if aiFaceDetailer is enabled |
| 2959 | + console.log('extension_settings.sd.aiFaceDetailer:', extension_settings.sd.aiFaceDetailer); |
| 2960 | + if (extension_settings.sd.aiFaceDetailer) { |
| 2961 | + payload.alwayson_scripts = { |
| 2962 | + ADetailer: { |
| 2963 | + args: [ |
| 2964 | + true, // ad_enable |
| 2965 | + true, // skip_img2img |
| 2966 | + { |
| 2967 | + "ad_model": "face_yolov8n.pt" |
| 2968 | + } |
| 2969 | + ] |
| 2970 | + } |
| 2971 | + }; |
| 2972 | + } |
| 2973 | + |
| 2974 | + // Make the fetch call with the payload |
| 2923 | 2975 | const result = await fetch('/api/sd/generate', { |
| 2924 | 2976 | method: 'POST', |
| 2925 | 2977 | headers: getRequestHeaders(), |
| 2926 | 2978 | signal: signal, |
| 2927 | 2979 | body: JSON.stringify({payload), |
| 2928 | | - ...getSdRequestBody(), |
| 2929 | | - prompt: prompt, |
| 2930 | | - negative_prompt: negativePrompt, |
| 2931 | | - sampler_name: extension_settings.sd.sampler, |
| 2932 | | - scheduler: extension_settings.sd.scheduler, |
| 2933 | | - steps: extension_settings.sd.steps, |
| 2934 | | - cfg_scale: extension_settings.sd.scale, |
| 2935 | | - width: extension_settings.sd.width, |
| 2936 | | - height: extension_settings.sd.height, |
| 2937 | | - restore_faces: !!extension_settings.sd.restore_faces, |
| 2938 | | - enable_hr: !!extension_settings.sd.enable_hr, |
| 2939 | | - hr_upscaler: extension_settings.sd.hr_upscaler, |
| 2940 | | - hr_scale: extension_settings.sd.hr_scale, |
| 2941 | | - denoising_strength: extension_settings.sd.denoising_strength, |
| 2942 | | - hr_second_pass_steps: extension_settings.sd.hr_second_pass_steps, |
| 2943 | | - seed: extension_settings.sd.seed >= 0 ? extension_settings.sd.seed : undefined, |
| 2944 | | - // For AUTO1111 |
| 2945 | | - override_settings: { |
| 2946 | | - CLIP_stop_at_last_layers: extension_settings.sd.clip_skip, |
| 2947 | | - sd_vae: isValidVae ? extension_settings.sd.vae : undefined, |
| 2948 | | - }, |
| 2949 | | - override_settings_restore_afterwards: true, |
| 2950 | | - // For SD.Next |
| 2951 | | - clip_skip: extension_settings.sd.clip_skip, |
| 2952 | | - // Ensure generated img is saved to disk |
| 2953 | | - save_images: true, |
| 2954 | | - send_images: true, |
| 2955 | | - do_not_save_grid: false, |
| 2956 | | - do_not_save_samples: false, |
| 2957 | | - }), |
| 2958 | 2980 | }); |
| 2981 | + |
| 2982 | + |
| 2959 | 2983 | |
| 2960 | 2984 | if (result.ok) { |
| 2961 | 2985 | const data = await result.json(); |