Spaces:
Runtime error
Runtime error
"""Common model for requests""" | |
from typing import List | |
from pydantic import ( | |
BaseModel, | |
Field, | |
ValidationError | |
) | |
from modules.config import ( | |
default_sampler, | |
default_scheduler, | |
default_prompt, | |
default_prompt_negative, | |
default_aspect_ratio, | |
default_base_model_name, | |
default_refiner_model_name, | |
default_refiner_switch, | |
default_cfg_scale, | |
default_styles, | |
default_overwrite_step, | |
default_inpaint_engine_version, | |
default_overwrite_switch, | |
default_cfg_tsnr, | |
default_sample_sharpness, | |
default_vae, | |
default_clip_skip | |
) | |
from modules.flags import clip_skip_max | |
from fooocusapi.models.common.base import ( | |
PerformanceSelection, | |
Lora, | |
default_loras_model | |
) | |
default_aspect_ratio = default_aspect_ratio.split(" ")[0].replace("Γ", "*") | |
class QueryJobRequest(BaseModel): | |
"""Query job request""" | |
job_id: str = Field(description="Job ID to query") | |
require_step_preview: bool = Field( | |
default=False, | |
description="Set to true will return preview image of generation steps at current time") | |
class AdvancedParams(BaseModel): | |
"""Common params object AdvancedParams""" | |
disable_preview: bool = Field(False, description="Disable preview during generation") | |
disable_intermediate_results: bool = Field(False, description="Disable intermediate results") | |
disable_seed_increment: bool = Field(False, description="Disable Seed Increment") | |
adm_scaler_positive: float = Field(1.5, description="Positive ADM Guidance Scaler", ge=0.1, le=3.0) | |
adm_scaler_negative: float = Field(0.8, description="Negative ADM Guidance Scaler", ge=0.1, le=3.0) | |
adm_scaler_end: float = Field(0.3, description="ADM Guidance End At Step", ge=0.0, le=1.0) | |
adaptive_cfg: float = Field(default_cfg_tsnr, description="CFG Mimicking from TSNR", ge=1.0, le=30.0) | |
clip_skip: int = Field(default_clip_skip, description="Clip Skip", ge=1, le=clip_skip_max) | |
sampler_name: str = Field(default_sampler, description="Sampler") | |
scheduler_name: str = Field(default_scheduler, description="Scheduler") | |
overwrite_step: int = Field(default_overwrite_step, description="Forced Overwrite of Sampling Step", ge=-1, le=200) | |
overwrite_switch: float = Field(default_overwrite_switch, description="Forced Overwrite of Refiner Switch Step", ge=-1, le=1) | |
overwrite_width: int = Field(-1, description="Forced Overwrite of Generating Width", ge=-1, le=2048) | |
overwrite_height: int = Field(-1, description="Forced Overwrite of Generating Height", ge=-1, le=2048) | |
overwrite_vary_strength: float = Field(-1, description='Forced Overwrite of Denoising Strength of "Vary"', ge=-1, le=1.0) | |
overwrite_upscale_strength: float = Field(-1, description='Forced Overwrite of Denoising Strength of "Upscale"', ge=-1, le=1.0) | |
mixing_image_prompt_and_vary_upscale: bool = Field(False, description="Mixing Image Prompt and Vary/Upscale") | |
mixing_image_prompt_and_inpaint: bool = Field(False, description="Mixing Image Prompt and Inpaint") | |
debugging_cn_preprocessor: bool = Field(False, description="Debug Preprocessors") | |
skipping_cn_preprocessor: bool = Field(False, description="Skip Preprocessors") | |
canny_low_threshold: int = Field(64, description="Canny Low Threshold", ge=1, le=255) | |
canny_high_threshold: int = Field(128, description="Canny High Threshold", ge=1, le=255) | |
refiner_swap_method: str = Field('joint', description="Refiner swap method") | |
controlnet_softness: float = Field(0.25, description="Softness of ControlNet", ge=0.0, le=1.0) | |
freeu_enabled: bool = Field(False, description="FreeU enabled") | |
freeu_b1: float = Field(1.01, description="FreeU B1") | |
freeu_b2: float = Field(1.02, description="FreeU B2") | |
freeu_s1: float = Field(0.99, description="FreeU B3") | |
freeu_s2: float = Field(0.95, description="FreeU B4") | |
debugging_inpaint_preprocessor: bool = Field(False, description="Debug Inpaint Preprocessing") | |
inpaint_disable_initial_latent: bool = Field(False, description="Disable initial latent in inpaint") | |
inpaint_engine: str = Field(default_inpaint_engine_version, description="Inpaint Engine") | |
inpaint_strength: float = Field(1.0, description="Inpaint Denoising Strength", ge=0.0, le=1.0) | |
inpaint_respective_field: float = Field(1.0, description="Inpaint Respective Field", ge=0.0, le=1.0) | |
inpaint_advanced_masking_checkbox: bool = Field(True, description="Upload Mask") | |
invert_mask_checkbox: bool = Field(False, description="Invert Mask") | |
inpaint_erode_or_dilate: int = Field(0, description="Mask Erode or Dilate", ge=-64, le=64) | |
black_out_nsfw: bool = Field(False, description="Block out NSFW") | |
vae_name: str = Field(default_vae, description="VAE name") | |
debugging_dino: bool = Field(False, description="Debug DINO") | |
dino_erode_or_dilate: int = Field(0, description="Mask Erode or Dilate", ge=-64, le=64) | |
debugging_enhance_masks_checkbox: bool = Field(False, description="Debug Enhance Masks") | |
class CommonRequest(BaseModel): | |
"""All generate request based on this model""" | |
prompt: str = default_prompt | |
negative_prompt: str = default_prompt_negative | |
style_selections: List[str] = default_styles | |
performance_selection: PerformanceSelection = PerformanceSelection.speed | |
aspect_ratios_selection: str = default_aspect_ratio | |
image_number: int = Field(default=1, description="Image number", ge=1, le=32) | |
image_seed: int = Field(default=-1, description="Seed to generate image, -1 for random") | |
sharpness: float = Field(default=default_sample_sharpness, ge=0.0, le=30.0) | |
guidance_scale: float = Field(default=default_cfg_scale, ge=1.0, le=30.0) | |
base_model_name: str = default_base_model_name | |
refiner_model_name: str = default_refiner_model_name | |
refiner_switch: float = Field(default=default_refiner_switch, description="Refiner Switch At", ge=0.1, le=1.0) | |
loras: List[Lora] = Field(default=default_loras_model) | |
advanced_params: AdvancedParams = AdvancedParams() | |
save_meta: bool = Field(default=True, description="Save meta data") | |
meta_scheme: str = Field(default='fooocus', description="Meta data scheme, one of [fooocus, a111]") | |
save_extension: str = Field(default='png', description="Save extension, one of [png, jpg, webp]") | |
save_name: str = Field(default='', description="Image name for output image, default is job id + seq") | |
read_wildcards_in_order: bool = Field(default=False, description="Read wildcards in order") | |
require_base64: bool = Field(default=False, description="Return base64 data of generated image") | |
async_process: bool = Field(default=False, description="Set to true will run async and return job info for retrieve generation result later") | |
webhook_url: str | None = Field(default='', description="Optional URL for a webhook callback. If provided, the system will send a POST request to this URL upon task completion or failure." | |
" This allows for asynchronous notification of task status.") | |
def advanced_params_parser(advanced_params: str | None) -> AdvancedParams: | |
""" | |
Parse advanced params, Convert to AdvancedParams | |
Args: | |
advanced_params: str, json format | |
Returns: | |
AdvancedParams object, if validate error return default value | |
""" | |
if advanced_params is not None and len(advanced_params) > 0: | |
try: | |
advanced_params_obj = AdvancedParams.__pydantic_validator__.validate_json(advanced_params) | |
return advanced_params_obj | |
except ValidationError: | |
return AdvancedParams() | |
return AdvancedParams() | |