diff --git a/.github/opencode-memory/features.md b/.github/opencode-memory/features.md index da1b413..36ec67c 100644 --- a/.github/opencode-memory/features.md +++ b/.github/opencode-memory/features.md @@ -20,16 +20,16 @@ Repository configured with OpenCode memory and automated sync workflow. --- -## 2026-01-14 - New Featured Models Added +## 2026-01-17 - New Featured Models Added -- Model ID: `black-forest-labs/flux-2-pro` +- Model ID: `black-forest-labs/flux-2-klein-4b` - Namespace: `image.generate` -- Description: FLUX.2 Pro - Black Forest Labs' most advanced image generation model with multi-reference editing and precise control +- Description: FLUX.2 Klein 4B - Very fast image generation model with 4 steps distilled, sub-second inference for production applications (13.5K runs) -- Model ID: `black-forest-labs/flux-2-flex` +- Model ID: `black-forest-labs/flux-2-max` - Namespace: `image.generate` -- Description: FLUX.2 Flex - Max-quality image generation with support for ten reference images +- Description: FLUX.2 Max - The highest fidelity image model from Black Forest Labs with superior detail and quality (196.8K runs) -- Model ID: `google/veo-3.1` -- Namespace: `video.generate` -- Description: Google's improved video model with higher-fidelity video, context-aware audio, reference image and last frame support +- Model ID: `google/gemini-3-pro` +- Namespace: `text.generate` +- Description: Google's most advanced reasoning Gemini model for complex tasks (481.9K runs) diff --git a/src/nodetool/dsl/replicate/audio/enhance.py b/src/nodetool/dsl/replicate/audio/enhance.py index 701c804..4dd7c35 100644 --- a/src/nodetool/dsl/replicate/audio/enhance.py +++ b/src/nodetool/dsl/replicate/audio/enhance.py @@ -1,28 +1,51 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.audio.enhance +from nodetool.workflows.base_node import BaseNode -class AudioSuperResolution(GraphNode): - """AudioSR: Versatile Audio Super-resolution at Scale""" +class AudioSuperResolution( + SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef] +): + """ + AudioSR: Versatile Audio Super-resolution at Scale + """ - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - ddim_steps: int | GraphNode | tuple[GraphNode, str] = Field( + ddim_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of inference steps" ) - input_file: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + input_file: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Audio to upsample", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=3.5, description="Scale for classifier free guidance" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.enhance.AudioSuperResolution + @classmethod def get_node_type(cls): - return "replicate.audio.enhance.AudioSuperResolution" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/audio/generate.py b/src/nodetool/dsl/replicate/audio/generate.py index 75c609a..8a1d5bf 100644 --- a/src/nodetool/dsl/replicate/audio/generate.py +++ b/src/nodetool/dsl/replicate/audio/generate.py @@ -1,48 +1,76 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.audio.generate +from nodetool.workflows.base_node import BaseNode -class MMAudio(GraphNode): - """Add sound to video. An advanced AI model that synthesizes high-quality audio from video content, enabling seamless video-to-audio transformation""" +class MMAudio(SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef]): + """ + Add sound to video using the MMAudio V2 model. An advanced AI model that synthesizes high-quality audio from video content, enabling seamless video-to-audio transformation. + """ - seed: int | GraphNode | tuple[GraphNode, str] = Field( - default=-1, description="Random seed. Use -1 to randomize the seed" + seed: int | OutputHandle[int] | None = connect_field( + default=None, + description="Random seed. Use -1 or leave blank to randomize the seed", ) - video: str | None | GraphNode | tuple[GraphNode, str] = Field( + image: str | OutputHandle[str] | None = connect_field( + default=None, + description="Optional image file for image-to-audio generation (experimental)", + ) + video: str | OutputHandle[str] | None = connect_field( default=None, description="Optional video file for video-to-audio generation" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="", description="Text prompt for generated audio" ) - duration: float | GraphNode | tuple[GraphNode, str] = Field( + duration: float | OutputHandle[float] = connect_field( default=8, description="Duration of output in seconds" ) - num_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_steps: int | OutputHandle[int] = connect_field( default=25, description="Number of inference steps" ) - cfg_strength: float | GraphNode | tuple[GraphNode, str] = Field( + cfg_strength: float | OutputHandle[float] = connect_field( default=4.5, description="Guidance strength (CFG)" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="music", description="Negative prompt to avoid certain sounds" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.generate.MMAudio + @classmethod def get_node_type(cls): - return "replicate.audio.generate.MMAudio" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate +from nodetool.workflows.base_node import BaseNode -class MusicGen(GraphNode): - """Generate music from a prompt or melody""" +class MusicGen(SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef]): + """ + Generate music from a prompt or melody + """ Model_version: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.generate.MusicGen.Model_version @@ -53,82 +81,98 @@ class MusicGen(GraphNode): Normalization_strategy: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.generate.MusicGen.Normalization_strategy ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Seed for random number generator. If None or -1, a random seed will be used.", ) - top_k: int | GraphNode | tuple[GraphNode, str] = Field( + top_k: int | OutputHandle[int] = connect_field( default=250, description="Reduces sampling to the k most likely tokens." ) - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=0, description="Reduces sampling to tokens with cumulative probability of p. When set to `0` (default), top_k sampling is used.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="A description of the music you want to generate." ) - duration: int | GraphNode | tuple[GraphNode, str] = Field( + duration: int | OutputHandle[int] = connect_field( default=8, description="Duration of the generated audio in seconds." ) - input_audio: str | None | GraphNode | tuple[GraphNode, str] = Field( + input_audio: str | OutputHandle[str] | None = connect_field( default=None, description="An audio file that will influence the generated music. If `continuation` is `True`, the generated music will be a continuation of the audio file. Otherwise, the generated music will mimic the audio file's melody.", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=1, description="Controls the 'conservativeness' of the sampling process. Higher temperature means more diversity.", ) - continuation: bool | GraphNode | tuple[GraphNode, str] = Field( + continuation: bool | OutputHandle[bool] = connect_field( default=False, description="If `True`, generated music will continue from `input_audio`. Otherwise, generated music will mimic `input_audio`'s melody.", ) model_version: nodetool.nodes.replicate.audio.generate.MusicGen.Model_version = ( Field( - default=nodetool.nodes.replicate.audio.generate.MusicGen.Model_version.STEREO_MELODY_LARGE, + default=nodetool.nodes.replicate.audio.generate.MusicGen.Model_version( + "stereo-melody-large" + ), description="Model to use for generation", ) ) output_format: nodetool.nodes.replicate.audio.generate.MusicGen.Output_format = ( Field( - default=nodetool.nodes.replicate.audio.generate.MusicGen.Output_format.WAV, + default=nodetool.nodes.replicate.audio.generate.MusicGen.Output_format( + "wav" + ), description="Output format for generated audio.", ) ) - continuation_end: int | None | GraphNode | tuple[GraphNode, str] = Field( + continuation_end: int | OutputHandle[int] | None = connect_field( default=None, description="End time of the audio file to use for continuation. If -1 or None, will default to the end of the audio clip.", ) - continuation_start: int | GraphNode | tuple[GraphNode, str] = Field( + continuation_start: int | OutputHandle[int] = connect_field( default=0, description="Start time of the audio file to use for continuation." ) - multi_band_diffusion: bool | GraphNode | tuple[GraphNode, str] = Field( + multi_band_diffusion: bool | OutputHandle[bool] = connect_field( default=False, description="If `True`, the EnCodec tokens will be decoded with MultiBand Diffusion. Only works with non-stereo models.", ) normalization_strategy: ( nodetool.nodes.replicate.audio.generate.MusicGen.Normalization_strategy ) = Field( - default=nodetool.nodes.replicate.audio.generate.MusicGen.Normalization_strategy.LOUDNESS, + default=nodetool.nodes.replicate.audio.generate.MusicGen.Normalization_strategy( + "loudness" + ), description="Strategy for normalizing audio.", ) - classifier_free_guidance: int | GraphNode | tuple[GraphNode, str] = Field( + classifier_free_guidance: int | OutputHandle[int] = connect_field( default=3, description="Increases the influence of inputs on the output. Higher values produce lower-varience outputs that adhere more closely to inputs.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.generate.MusicGen + @classmethod def get_node_type(cls): - return "replicate.audio.generate.MusicGen" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate +from nodetool.workflows.base_node import BaseNode -class RealisticVoiceCloning(GraphNode): - """Create song covers with any RVC v2 trained AI voice from audio files.""" +class RealisticVoiceCloning( + SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef] +): + """ + Create song covers with any RVC v2 trained AI voice from audio files. + """ Rvc_model: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Rvc_model @@ -142,176 +186,220 @@ class RealisticVoiceCloning(GraphNode): Pitch_detection_algorithm: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_detection_algorithm ) - protect: float | GraphNode | tuple[GraphNode, str] = Field( + + protect: float | OutputHandle[float] = connect_field( default=0.33, description="Control how much of the original vocals' breath and voiceless consonants to leave in the AI vocals. Set 0.5 to disable.", ) rvc_model: ( nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Rvc_model ) = Field( - default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Rvc_model.SQUIDWARD, + default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Rvc_model( + "Squidward" + ), description="RVC model for a specific voice. If using a custom model, this should match the name of the downloaded model. If a 'custom_rvc_model_download_url' is provided, this will be automatically set to the name of the downloaded model.", ) - index_rate: float | GraphNode | tuple[GraphNode, str] = Field( + index_rate: float | OutputHandle[float] = connect_field( default=0.5, description="Control how much of the AI's accent to leave in the vocals.", ) - song_input: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + song_input: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Upload your audio file here.", ) - reverb_size: float | GraphNode | tuple[GraphNode, str] = Field( + reverb_size: float | OutputHandle[float] = connect_field( default=0.15, description="The larger the room, the longer the reverb time." ) pitch_change: ( nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_change ) = Field( - default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_change.NO_CHANGE, + default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_change( + "no-change" + ), description="Adjust pitch of AI vocals. Options: `no-change`, `male-to-female`, `female-to-male`.", ) - rms_mix_rate: float | GraphNode | tuple[GraphNode, str] = Field( + rms_mix_rate: float | OutputHandle[float] = connect_field( default=0.25, description="Control how much to use the original vocal's loudness (0) or a fixed loudness (1).", ) - filter_radius: int | GraphNode | tuple[GraphNode, str] = Field( + filter_radius: int | OutputHandle[int] = connect_field( default=3, description="If >=3: apply median filtering median filtering to the harvested pitch results.", ) output_format: ( nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Output_format ) = Field( - default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Output_format.MP3, + default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Output_format( + "mp3" + ), description="wav for best quality and large file size, mp3 for decent quality and small file size.", ) - reverb_damping: float | GraphNode | tuple[GraphNode, str] = Field( + reverb_damping: float | OutputHandle[float] = connect_field( default=0.7, description="Absorption of high frequencies in the reverb." ) - reverb_dryness: float | GraphNode | tuple[GraphNode, str] = Field( + reverb_dryness: float | OutputHandle[float] = connect_field( default=0.8, description="Level of AI vocals without reverb." ) - reverb_wetness: float | GraphNode | tuple[GraphNode, str] = Field( + reverb_wetness: float | OutputHandle[float] = connect_field( default=0.2, description="Level of AI vocals with reverb." ) - crepe_hop_length: int | GraphNode | tuple[GraphNode, str] = Field( + crepe_hop_length: int | OutputHandle[int] = connect_field( default=128, description="When `pitch_detection_algo` is set to `mangio-crepe`, this controls how often it checks for pitch changes in milliseconds. Lower values lead to longer conversions and higher risk of voice cracks, but better pitch accuracy.", ) - pitch_change_all: float | GraphNode | tuple[GraphNode, str] = Field( + pitch_change_all: float | OutputHandle[float] = connect_field( default=0, description="Change pitch/key of background music, backup vocals and AI vocals in semitones. Reduces sound quality slightly.", ) - main_vocals_volume_change: float | GraphNode | tuple[GraphNode, str] = Field( + main_vocals_volume_change: float | OutputHandle[float] = connect_field( default=0, description="Control volume of main AI vocals. Use -3 to decrease the volume by 3 decibels, or 3 to increase the volume by 3 decibels.", ) pitch_detection_algorithm: ( nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_detection_algorithm ) = Field( - default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_detection_algorithm.RMVPE, + default=nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_detection_algorithm( + "rmvpe" + ), description="Best option is rmvpe (clarity in vocals), then mangio-crepe (smoother vocals).", ) - instrumental_volume_change: float | GraphNode | tuple[GraphNode, str] = Field( + instrumental_volume_change: float | OutputHandle[float] = connect_field( default=0, description="Control volume of the background music/instrumentals." ) - backup_vocals_volume_change: float | GraphNode | tuple[GraphNode, str] = Field( + backup_vocals_volume_change: float | OutputHandle[float] = connect_field( default=0, description="Control volume of backup AI vocals." ) - custom_rvc_model_download_url: str | None | GraphNode | tuple[GraphNode, str] = ( - Field( - default=None, - description="URL to download a custom RVC model. If provided, the model will be downloaded (if it doesn't already exist) and used for prediction, regardless of the 'rvc_model' value.", - ) + custom_rvc_model_download_url: str | OutputHandle[str] | None = connect_field( + default=None, + description="URL to download a custom RVC model. If provided, the model will be downloaded (if it doesn't already exist) and used for prediction, regardless of the 'rvc_model' value.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning + @classmethod def get_node_type(cls): - return "replicate.audio.generate.RealisticVoiceCloning" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.audio.generate +from nodetool.workflows.base_node import BaseNode -class Riffusion(GraphNode): - """Stable diffusion for real-time music generation""" +class Riffusion(SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef]): + """ + Stable diffusion for real-time music generation + """ Seed_image_id: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.generate.Riffusion.Seed_image_id ) - alpha: float | GraphNode | tuple[GraphNode, str] = Field( + + alpha: float | OutputHandle[float] = connect_field( default=0.5, description="Interpolation alpha if using two prompts. A value of 0 uses prompt_a fully, a value of 1 uses prompt_b fully", ) - prompt_a: str | GraphNode | tuple[GraphNode, str] = Field( + prompt_a: str | OutputHandle[str] = connect_field( default="funky synth solo", description="The prompt for your audio" ) - prompt_b: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt_b: str | OutputHandle[str] | None = connect_field( default=None, description="The second prompt to interpolate with the first, leave blank if no interpolation", ) - denoising: float | GraphNode | tuple[GraphNode, str] = Field( + denoising: float | OutputHandle[float] = connect_field( default=0.75, description="How much to transform input spectrogram" ) seed_image_id: nodetool.nodes.replicate.audio.generate.Riffusion.Seed_image_id = ( Field( - default=nodetool.nodes.replicate.audio.generate.Riffusion.Seed_image_id.VIBES, + default=nodetool.nodes.replicate.audio.generate.Riffusion.Seed_image_id( + "vibes" + ), description="Seed spectrogram to use", ) ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of steps to run the diffusion model" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.generate.Riffusion + @classmethod def get_node_type(cls): - return "replicate.audio.generate.Riffusion" + return cls.get_node_class().get_node_type() + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.audio.generate +from nodetool.workflows.base_node import BaseNode -class StyleTTS2(GraphNode): - """Generates speech from text""" - beta: float | GraphNode | tuple[GraphNode, str] = Field( +class StyleTTS2(SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef]): + """ + Generates speech from text + """ + + beta: float | OutputHandle[float] = connect_field( default=0.7, description="Only used for long text inputs or in case of reference speaker, determines the prosody of the speaker. Use lower values to sample style based on previous or reference speech instead of text.", ) - seed: int | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] = connect_field( default=0, description="Seed for reproducibility" ) - text: str | None | GraphNode | tuple[GraphNode, str] = Field( + text: str | OutputHandle[str] | None = connect_field( default=None, description="Text to convert to speech" ) - alpha: float | GraphNode | tuple[GraphNode, str] = Field( + alpha: float | OutputHandle[float] = connect_field( default=0.3, description="Only used for long text inputs or in case of reference speaker, determines the timbre of the speaker. Use lower values to sample style based on previous or reference speech instead of text.", ) - weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + weights: str | OutputHandle[str] | None = connect_field( default=None, description="Replicate weights url for inference with model that is fine-tuned on new speakers. If provided, a reference speech must also be provided. If not provided, the default model will be used.", ) - reference: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + reference: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Reference speech to copy style from", ) - diffusion_steps: int | GraphNode | tuple[GraphNode, str] = Field( + diffusion_steps: int | OutputHandle[int] = connect_field( default=10, description="Number of diffusion steps" ) - embedding_scale: float | GraphNode | tuple[GraphNode, str] = Field( + embedding_scale: float | OutputHandle[float] = connect_field( default=1, description="Embedding scale, use higher values for pronounced emotion", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.generate.StyleTTS2 + @classmethod def get_node_type(cls): - return "replicate.audio.generate.StyleTTS2" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate -import nodetool.nodes.replicate.audio.generate +from nodetool.workflows.base_node import BaseNode -class TortoiseTTS(GraphNode): - """Generate speech from text, clone voices from mp3 files. From James Betker AKA "neonbjb".""" +class TortoiseTTS(SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef]): + """ + Generate speech from text, clone voices from mp3 files. From James Betker AKA "neonbjb". + """ Preset: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.generate.TortoiseTTS.Preset @@ -325,38 +413,45 @@ class TortoiseTTS(GraphNode): Voice_c: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_c ) - seed: int | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] = connect_field( default=0, description="Random seed which can be used to reproduce results." ) - text: str | GraphNode | tuple[GraphNode, str] = Field( + text: str | OutputHandle[str] = connect_field( default="The expressiveness of autoregressive transformers is literally nuts! I absolutely adore them.", description="Text to speak.", ) preset: nodetool.nodes.replicate.audio.generate.TortoiseTTS.Preset = Field( - default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Preset.FAST, + default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Preset("fast"), description="Which voice preset to use. See the documentation for more information.", ) voice_a: nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_a = Field( - default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_a.RANDOM, + default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_a("random"), description="Selects the voice to use for generation. Use `random` to select a random voice. Use `custom_voice` to use a custom voice.", ) voice_b: nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_b = Field( - default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_b.DISABLED, + default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_b("disabled"), description="(Optional) Create new voice from averaging the latents for `voice_a`, `voice_b` and `voice_c`. Use `disabled` to disable voice mixing.", ) voice_c: nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_c = Field( - default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_c.DISABLED, + default=nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_c("disabled"), description="(Optional) Create new voice from averaging the latents for `voice_a`, `voice_b` and `voice_c`. Use `disabled` to disable voice mixing.", ) - cvvp_amount: float | GraphNode | tuple[GraphNode, str] = Field( + cvvp_amount: float | OutputHandle[float] = connect_field( default=0, description="How much the CVVP model should influence the output. Increasing this can in some cases reduce the likelyhood of multiple speakers. Defaults to 0 (disabled)", ) - custom_voice: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + custom_voice: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="(Optional) Create a custom voice based on an mp3 file of a speaker. Audio should be at least 15 seconds, only contain one speaker, and be in mp3 format. Overrides the `voice_a` input.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.generate.TortoiseTTS + @classmethod def get_node_type(cls): - return "replicate.audio.generate.TortoiseTTS" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/audio/separate.py b/src/nodetool/dsl/replicate/audio/separate.py index 8bc5272..b4f619e 100644 --- a/src/nodetool/dsl/replicate/audio/separate.py +++ b/src/nodetool/dsl/replicate/audio/separate.py @@ -1,20 +1,28 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.audio.separate -import nodetool.nodes.replicate.audio.separate -import nodetool.nodes.replicate.audio.separate -import nodetool.nodes.replicate.audio.separate -import nodetool.nodes.replicate.audio.separate -import nodetool.nodes.replicate.audio.separate +from nodetool.workflows.base_node import BaseNode -class Demucs(GraphNode): - """Demucs is an audio source separator created by Facebook Research.""" +class Demucs(SingleOutputGraphNode[typing.Any], GraphNode[typing.Any]): + """ + Demucs is an audio source separator created by Facebook Research. + """ Stem: typing.ClassVar[type] = nodetool.nodes.replicate.audio.separate.Demucs.Stem Model: typing.ClassVar[type] = nodetool.nodes.replicate.audio.separate.Demucs.Model @@ -30,58 +38,65 @@ class Demucs(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.separate.Demucs.Output_format ) - jobs: int | GraphNode | tuple[GraphNode, str] = Field( + + jobs: int | OutputHandle[int] = connect_field( default=0, description="Choose the number of parallel jobs to use for separation.", ) stem: nodetool.nodes.replicate.audio.separate.Demucs.Stem = Field( - default=nodetool.nodes.replicate.audio.separate.Demucs.Stem.NONE, + default=nodetool.nodes.replicate.audio.separate.Demucs.Stem("none"), description="If you just want to isolate one stem, you can choose it here.", ) - audio: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + audio: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Upload the file to be processed here.", ) model: nodetool.nodes.replicate.audio.separate.Demucs.Model = Field( - default=nodetool.nodes.replicate.audio.separate.Demucs.Model.HTDEMUCS, + default=nodetool.nodes.replicate.audio.separate.Demucs.Model("htdemucs"), description="Choose the demucs audio that proccesses your audio. The readme has more information on what to choose.", ) - split: bool | GraphNode | tuple[GraphNode, str] = Field( + split: bool | OutputHandle[bool] = connect_field( default=True, description="Choose whether or not the audio should be split into chunks.", ) - shifts: int | GraphNode | tuple[GraphNode, str] = Field( + shifts: int | OutputHandle[int] = connect_field( default=1, description="Choose the amount random shifts for equivariant stabilization. This performs multiple predictions with random shifts of the input and averages them, which makes it x times slower.", ) - overlap: float | GraphNode | tuple[GraphNode, str] = Field( + overlap: float | OutputHandle[float] = connect_field( default=0.25, description="Choose the amount of overlap between prediction windows.", ) - segment: int | None | GraphNode | tuple[GraphNode, str] = Field( + segment: int | OutputHandle[int] | None = connect_field( default=None, description="Choose the segment length to use for separation." ) clip_mode: nodetool.nodes.replicate.audio.separate.Demucs.Clip_mode = Field( - default=nodetool.nodes.replicate.audio.separate.Demucs.Clip_mode.RESCALE, + default=nodetool.nodes.replicate.audio.separate.Demucs.Clip_mode("rescale"), description="Choose the strategy for avoiding clipping. Rescale will rescale entire signal if necessary or clamp will allow hard clipping.", ) mp3_preset: nodetool.nodes.replicate.audio.separate.Demucs.Mp3_preset = Field( - default=nodetool.nodes.replicate.audio.separate.Demucs.Mp3_preset._2, + default=nodetool.nodes.replicate.audio.separate.Demucs.Mp3_preset(2), description="Choose the preset for the MP3 output. Higher is faster but worse quality. If MP3 is not selected as the output type, this has no effect.", ) wav_format: nodetool.nodes.replicate.audio.separate.Demucs.Wav_format = Field( - default=nodetool.nodes.replicate.audio.separate.Demucs.Wav_format.INT24, + default=nodetool.nodes.replicate.audio.separate.Demucs.Wav_format("int24"), description="Choose format for the WAV output. If WAV is not selected as the output type, this has no effect.", ) - mp3_bitrate: int | GraphNode | tuple[GraphNode, str] = Field( + mp3_bitrate: int | OutputHandle[int] = connect_field( default=320, description="Choose the bitrate for the MP3 output. Higher is better quality but larger file size. If MP3 is not selected as the output type, this has no effect.", ) output_format: nodetool.nodes.replicate.audio.separate.Demucs.Output_format = Field( - default=nodetool.nodes.replicate.audio.separate.Demucs.Output_format.MP3, + default=nodetool.nodes.replicate.audio.separate.Demucs.Output_format("mp3"), description="Choose the audio format you would like the result to be returned in.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.separate.Demucs + @classmethod def get_node_type(cls): - return "replicate.audio.separate.Demucs" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/audio/transcribe.py b/src/nodetool/dsl/replicate/audio/transcribe.py index 2aed264..e1ad531 100644 --- a/src/nodetool/dsl/replicate/audio/transcribe.py +++ b/src/nodetool/dsl/replicate/audio/transcribe.py @@ -1,17 +1,65 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.audio.transcribe +from nodetool.workflows.base_node import BaseNode + + +class GPT4o_Transcribe(SingleOutputGraphNode[str], GraphNode[str]): + """ + A speech-to-text model that uses GPT-4o to transcribe audio + """ + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language.", + ) + language: str | OutputHandle[str] | None = connect_field( + default=None, + description="The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency.", + ) + audio_file: str | OutputHandle[str] | None = connect_field( + default=None, + description="The audio file to transcribe. Supported formats: mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm", + ) + temperature: float | OutputHandle[float] = connect_field( + default=0, description="Sampling temperature between 0 and 1" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.transcribe.GPT4o_Transcribe + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.audio.transcribe -import nodetool.nodes.replicate.audio.transcribe +from nodetool.workflows.base_node import BaseNode -class IncrediblyFastWhisper(GraphNode): - """whisper-large-v3, incredibly fast, powered by Hugging Face Transformers! 🤗""" +class IncrediblyFastWhisper(SingleOutputGraphNode[str], GraphNode[str]): + """ + whisper-large-v3, incredibly fast, powered by Hugging Face Transformers! 🤗 + """ Task: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Task @@ -22,39 +70,52 @@ class IncrediblyFastWhisper(GraphNode): Timestamp: typing.ClassVar[type] = ( nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Timestamp ) + task: nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Task = Field( - default=nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Task.TRANSCRIBE, + default=nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Task( + "transcribe" + ), description="Task to perform: transcribe or translate to another language.", ) - audio: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + audio: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Audio file", ) - hf_token: str | None | GraphNode | tuple[GraphNode, str] = Field( + hf_token: str | OutputHandle[str] | None = connect_field( default=None, description="Provide a hf.co/settings/token for Pyannote.audio to diarise the audio clips. You need to agree to the terms in 'https://huggingface.co/pyannote/speaker-diarization-3.1' and 'https://huggingface.co/pyannote/segmentation-3.0' first.", ) language: ( nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Language ) = Field( - default=nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Language.NONE, + default=nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Language( + "None" + ), description="Language spoken in the audio, specify 'None' to perform language detection.", ) timestamp: ( nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Timestamp ) = Field( - default=nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Timestamp.CHUNK, + default=nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Timestamp( + "chunk" + ), description="Whisper supports both chunked as well as word level timestamps.", ) - batch_size: int | GraphNode | tuple[GraphNode, str] = Field( + batch_size: int | OutputHandle[int] = connect_field( default=24, description="Number of parallel batches you want to compute. Reduce if you face OOMs.", ) - diarise_audio: bool | GraphNode | tuple[GraphNode, str] = Field( + diarise_audio: bool | OutputHandle[bool] = connect_field( default=False, description="Use Pyannote.audio to diarise the audio clips. You will need to provide hf_token below too.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper + @classmethod def get_node_type(cls): - return "replicate.audio.transcribe.IncrediblyFastWhisper" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/image/analyze.py b/src/nodetool/dsl/replicate/image/analyze.py index d6142e8..abcd847 100644 --- a/src/nodetool/dsl/replicate/image/analyze.py +++ b/src/nodetool/dsl/replicate/image/analyze.py @@ -1,90 +1,143 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode -class Blip(GraphNode): - """Generate image captions""" +class Blip(SingleOutputGraphNode[str], GraphNode[str]): + """ + Generate image captions + """ Task: typing.ClassVar[type] = nodetool.nodes.replicate.image.analyze.Blip.Task + task: nodetool.nodes.replicate.image.analyze.Blip.Task = Field( - default=nodetool.nodes.replicate.image.analyze.Blip.Task.IMAGE_CAPTIONING, + default=nodetool.nodes.replicate.image.analyze.Blip.Task("image_captioning"), description="Choose a task.", ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - caption: str | None | GraphNode | tuple[GraphNode, str] = Field( + caption: str | OutputHandle[str] | None = connect_field( default=None, description="Type caption for the input image for image text matching task.", ) - question: str | None | GraphNode | tuple[GraphNode, str] = Field( + question: str | OutputHandle[str] | None = connect_field( default=None, description="Type question for the input image for visual question answering task.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.Blip + @classmethod def get_node_type(cls): - return "replicate.image.analyze.Blip" + return cls.get_node_class().get_node_type() -class Blip2(GraphNode): - """Answers questions about images""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode + + +class Blip2(SingleOutputGraphNode[str], GraphNode[str]): + """ + Answers questions about images + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image to query or caption", ) - caption: bool | GraphNode | tuple[GraphNode, str] = Field( + caption: bool | OutputHandle[bool] = connect_field( default=False, description="Select if you want to generate image captions instead of asking questions", ) - context: str | None | GraphNode | tuple[GraphNode, str] = Field( + context: str | OutputHandle[str] | None = connect_field( default=None, description="Optional - previous questions and answers to be used as context for answering current question", ) - question: str | GraphNode | tuple[GraphNode, str] = Field( + question: str | OutputHandle[str] = connect_field( default="What is this a picture of?", description="Question to ask about this image. Leave blank for captioning", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=1, description="Temperature for use with nucleus sampling" ) - use_nucleus_sampling: bool | GraphNode | tuple[GraphNode, str] = Field( + use_nucleus_sampling: bool | OutputHandle[bool] = connect_field( default=False, description="Toggles the model using nucleus sampling to generate responses", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.Blip2 + @classmethod def get_node_type(cls): - return "replicate.image.analyze.Blip2" + return cls.get_node_class().get_node_type() + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode -class ClipFeatures(GraphNode): - """Return CLIP features for the clip-vit-large-patch14 model""" - inputs: str | GraphNode | tuple[GraphNode, str] = Field( +class ClipFeatures(SingleOutputGraphNode[list[dict]], GraphNode[list[dict]]): + """ + Return CLIP features for the clip-vit-large-patch14 model + """ + + inputs: str | OutputHandle[str] = connect_field( default="a\nb", description="Newline-separated inputs. Can either be strings of text or image URIs starting with http[s]://", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.ClipFeatures + @classmethod def get_node_type(cls): - return "replicate.image.analyze.ClipFeatures" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.analyze -import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode -class ClipInterrogator(GraphNode): - """The CLIP Interrogator is a prompt engineering tool that combines OpenAI's CLIP and Salesforce's BLIP to optimize text prompts to match a given image. Use the resulting prompts with text-to-image models like Stable Diffusion to create cool art!""" +class ClipInterrogator(SingleOutputGraphNode[str], GraphNode[str]): + """ + The CLIP Interrogator is a prompt engineering tool that combines OpenAI's CLIP and Salesforce's BLIP to optimize text prompts to match a given image. Use the resulting prompts with text-to-image models like Stable Diffusion to create cool art! + """ Mode: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.analyze.ClipInterrogator.Mode @@ -92,113 +145,195 @@ class ClipInterrogator(GraphNode): Clip_model_name: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.analyze.ClipInterrogator.Clip_model_name ) + mode: nodetool.nodes.replicate.image.analyze.ClipInterrogator.Mode = Field( - default=nodetool.nodes.replicate.image.analyze.ClipInterrogator.Mode.BEST, + default=nodetool.nodes.replicate.image.analyze.ClipInterrogator.Mode("best"), description="Prompt mode (best takes 10-20 seconds, fast takes 1-2 seconds).", ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) clip_model_name: ( nodetool.nodes.replicate.image.analyze.ClipInterrogator.Clip_model_name ) = Field( - default=nodetool.nodes.replicate.image.analyze.ClipInterrogator.Clip_model_name.VIT_L_14_OPENAI, + default=nodetool.nodes.replicate.image.analyze.ClipInterrogator.Clip_model_name( + "ViT-L-14/openai" + ), description="Choose ViT-L for Stable Diffusion 1, ViT-H for Stable Diffusion 2, or ViT-bigG for Stable Diffusion XL.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.ClipInterrogator + @classmethod def get_node_type(cls): - return "replicate.image.analyze.ClipInterrogator" + return cls.get_node_class().get_node_type() -class Img2Prompt(GraphNode): - """Get an approximate text prompt, with style, matching an image. (Optimized for stable-diffusion (clip ViT-L/14))""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode + - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), +class Img2Prompt(SingleOutputGraphNode[str], GraphNode[str]): + """ + Get an approximate text prompt, with style, matching an image. (Optimized for stable-diffusion (clip ViT-L/14)) + """ + + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.Img2Prompt + @classmethod def get_node_type(cls): - return "replicate.image.analyze.Img2Prompt" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode -class Llava13b(GraphNode): - """Visual instruction tuning towards large language and vision models with GPT-4 level capabilities""" +class Llava13b(SingleOutputGraphNode[str], GraphNode[str]): + """ + Visual instruction tuning towards large language and vision models with GPT-4 level capabilities + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=1, description="When decoding text, samples from the top p percentage of most likely tokens; lower to ignore less likely tokens", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt to use for text generation" ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + max_tokens: int | OutputHandle[int] = connect_field( default=1024, description="Maximum number of tokens to generate. A word is generally 2-3 tokens", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=0.2, description="Adjusts randomness of outputs, greater than 1 is random and 0 is deterministic", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.Llava13b + @classmethod def get_node_type(cls): - return "replicate.image.analyze.Llava13b" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode -class Moondream2(GraphNode): - """moondream2 is a small vision language model designed to run efficiently on edge devices""" +class Moondream2(SingleOutputGraphNode[str], GraphNode[str]): + """ + moondream2 is a small vision language model designed to run efficiently on edge devices + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="Describe this image", description="Input prompt" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.Moondream2 + @classmethod def get_node_type(cls): - return "replicate.image.analyze.Moondream2" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode -class NSFWImageDetection(GraphNode): - """Fine-Tuned Vision Transformer (ViT) for NSFW Image Classification""" +class NSFWImageDetection(SingleOutputGraphNode[str], GraphNode[str]): + """ + Fine-Tuned Vision Transformer (ViT) for NSFW Image Classification + """ - image: str | None | GraphNode | tuple[GraphNode, str] = Field( + image: str | OutputHandle[str] | None = connect_field( default=None, description="Input image" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.NSFWImageDetection + @classmethod def get_node_type(cls): - return "replicate.image.analyze.NSFWImageDetection" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.analyze +from nodetool.workflows.base_node import BaseNode -class SDXLClipInterrogator(GraphNode): - """CLIP Interrogator for SDXL optimizes text prompts to match a given image""" +class SDXLClipInterrogator(SingleOutputGraphNode[str], GraphNode[str]): + """ + CLIP Interrogator for SDXL optimizes text prompts to match a given image + """ Mode: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.analyze.SDXLClipInterrogator.Mode ) + mode: nodetool.nodes.replicate.image.analyze.SDXLClipInterrogator.Mode = Field( - default=nodetool.nodes.replicate.image.analyze.SDXLClipInterrogator.Mode.BEST, + default=nodetool.nodes.replicate.image.analyze.SDXLClipInterrogator.Mode( + "best" + ), description="Prompt Mode: fast takes 1-2 seconds, best takes 15-25 seconds.", ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.analyze.SDXLClipInterrogator + @classmethod def get_node_type(cls): - return "replicate.image.analyze.SDXLClipInterrogator" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/image/enhance.py b/src/nodetool/dsl/replicate/image/enhance.py index 923adcc..a1ec03b 100644 --- a/src/nodetool/dsl/replicate/image/enhance.py +++ b/src/nodetool/dsl/replicate/image/enhance.py @@ -1,234 +1,331 @@ -from pydantic import Field +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + +from pydantic import BaseModel, Field import typing +from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.enhance +from nodetool.workflows.base_node import BaseNode -class CodeFormer(GraphNode): - """Robust face restoration algorithm for old photos/AI-generated faces""" +class CodeFormer(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Robust face restoration algorithm for old photos/AI-generated faces + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - upscale: int | GraphNode | tuple[GraphNode, str] = Field( + upscale: int | OutputHandle[int] = connect_field( default=2, description="The final upsampling scale of the image" ) - face_upsample: bool | GraphNode | tuple[GraphNode, str] = Field( + face_upsample: bool | OutputHandle[bool] = connect_field( default=True, description="Upsample restored faces for high-resolution AI-created images", ) - background_enhance: bool | GraphNode | tuple[GraphNode, str] = Field( + background_enhance: bool | OutputHandle[bool] = connect_field( default=True, description="Enhance background image with Real-ESRGAN" ) - codeformer_fidelity: float | GraphNode | tuple[GraphNode, str] = Field( + codeformer_fidelity: float | OutputHandle[float] = connect_field( default=0.5, description="Balance the quality (lower number) and fidelity (higher number).", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.enhance.CodeFormer + @classmethod def get_node_type(cls): - return "replicate.image.enhance.CodeFormer" + return cls.get_node_class().get_node_type() -class Maxim(GraphNode): - """Multi-Axis MLP for Image Processing""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.enhance +from nodetool.workflows.base_node import BaseNode + - Model: typing.ClassVar[type] = nodetool.nodes.replicate.image.enhance.Maxim.Model +class Maxim(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Multi-Axis MLP for Image Processing + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image.", ) model: ( nodetool.nodes.replicate.image.enhance.Maxim.Model + | OutputHandle[nodetool.nodes.replicate.image.enhance.Maxim.Model] | None - | GraphNode - | tuple[GraphNode, str] - ) = Field(default=None, description="Choose a model.") + ) = connect_field(default=None, description="Choose a model.") + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.enhance.Maxim @classmethod def get_node_type(cls): - return "replicate.image.enhance.Maxim" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.enhance +from nodetool.workflows.base_node import BaseNode -class Night_Enhancement(GraphNode): - """Unsupervised Night Image Enhancement""" +class Night_Enhancement( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Unsupervised Night Image Enhancement + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.enhance.Night_Enhancement + @classmethod def get_node_type(cls): - return "replicate.image.enhance.Night_Enhancement" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.enhance +from nodetool.workflows.base_node import BaseNode -class OldPhotosRestoration(GraphNode): - """Bringing Old Photos Back to Life""" +class OldPhotosRestoration( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Bringing Old Photos Back to Life + """ - HR: bool | GraphNode | tuple[GraphNode, str] = Field( + HR: bool | OutputHandle[bool] = connect_field( default=False, description="whether the input image is high-resolution" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="input image.", ) - with_scratch: bool | GraphNode | tuple[GraphNode, str] = Field( + with_scratch: bool | OutputHandle[bool] = connect_field( default=False, description="whether the input image is scratched" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.enhance.OldPhotosRestoration + @classmethod def get_node_type(cls): - return "replicate.image.enhance.OldPhotosRestoration" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.enhance +from nodetool.workflows.base_node import BaseNode -class Supir_V0F(GraphNode): - """Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0F model and does NOT use LLaVA-13b.""" +class Supir_V0F(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0F model and does NOT use LLaVA-13b. + """ Color_fix_type: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.enhance.Supir_V0F.Color_fix_type ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Low quality input image.", ) - s_cfg: float | GraphNode | tuple[GraphNode, str] = Field( + s_cfg: float | OutputHandle[float] = connect_field( default=7.5, description=" Classifier-free guidance scale for prompts." ) - s_churn: float | GraphNode | tuple[GraphNode, str] = Field( + s_churn: float | OutputHandle[float] = connect_field( default=5, description="Original churn hy-param of EDM." ) - s_noise: float | GraphNode | tuple[GraphNode, str] = Field( + s_noise: float | OutputHandle[float] = connect_field( default=1.003, description="Original noise hy-param of EDM." ) - upscale: int | GraphNode | tuple[GraphNode, str] = Field( + upscale: int | OutputHandle[int] = connect_field( default=1, description="Upsampling ratio of given inputs." ) - a_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + a_prompt: str | OutputHandle[str] = connect_field( default="Cinematic, High Contrast, highly detailed, taken using a Canon EOS R camera, hyper detailed photo - realistic maximum detail, 32k, Color Grading, ultra HD, extreme meticulous detailing, skin pore detailing, hyper sharpness, perfect without deformations.", description="Additive positive prompt for the inputs.", ) - min_size: float | GraphNode | tuple[GraphNode, str] = Field( + min_size: float | OutputHandle[float] = connect_field( default=1024, description="Minimum resolution of output images." ) - n_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + n_prompt: str | OutputHandle[str] = connect_field( default="painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth", description="Negative prompt for the inputs.", ) - s_stage1: int | GraphNode | tuple[GraphNode, str] = Field( + s_stage1: int | OutputHandle[int] = connect_field( default=-1, description="Control Strength of Stage1 (negative means invalid)." ) - s_stage2: float | GraphNode | tuple[GraphNode, str] = Field( + s_stage2: float | OutputHandle[float] = connect_field( default=1, description="Control Strength of Stage2." ) - edm_steps: int | GraphNode | tuple[GraphNode, str] = Field( + edm_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of steps for EDM Sampling Schedule." ) - linear_CFG: bool | GraphNode | tuple[GraphNode, str] = Field( + linear_CFG: bool | OutputHandle[bool] = connect_field( default=False, description="Linearly (with sigma) increase CFG from 'spt_linear_CFG' to s_cfg.", ) color_fix_type: nodetool.nodes.replicate.image.enhance.Supir_V0F.Color_fix_type = ( Field( - default=nodetool.nodes.replicate.image.enhance.Supir_V0F.Color_fix_type.WAVELET, + default=nodetool.nodes.replicate.image.enhance.Supir_V0F.Color_fix_type( + "Wavelet" + ), description="Color Fixing Type..", ) ) - spt_linear_CFG: float | GraphNode | tuple[GraphNode, str] = Field( + spt_linear_CFG: float | OutputHandle[float] = connect_field( default=1, description="Start point of linearly increasing CFG." ) - linear_s_stage2: bool | GraphNode | tuple[GraphNode, str] = Field( + linear_s_stage2: bool | OutputHandle[bool] = connect_field( default=False, description="Linearly (with sigma) increase s_stage2 from 'spt_linear_s_stage2' to s_stage2.", ) - spt_linear_s_stage2: float | GraphNode | tuple[GraphNode, str] = Field( + spt_linear_s_stage2: float | OutputHandle[float] = connect_field( default=0, description="Start point of linearly increasing s_stage2." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.enhance.Supir_V0F + @classmethod def get_node_type(cls): - return "replicate.image.enhance.Supir_V0F" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.enhance +from nodetool.workflows.base_node import BaseNode -class Supir_V0Q(GraphNode): - """Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0Q model and does NOT use LLaVA-13b.""" +class Supir_V0Q(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0Q model and does NOT use LLaVA-13b. + """ Color_fix_type: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.enhance.Supir_V0Q.Color_fix_type ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Low quality input image.", ) - s_cfg: float | GraphNode | tuple[GraphNode, str] = Field( + s_cfg: float | OutputHandle[float] = connect_field( default=7.5, description=" Classifier-free guidance scale for prompts." ) - s_churn: float | GraphNode | tuple[GraphNode, str] = Field( + s_churn: float | OutputHandle[float] = connect_field( default=5, description="Original churn hy-param of EDM." ) - s_noise: float | GraphNode | tuple[GraphNode, str] = Field( + s_noise: float | OutputHandle[float] = connect_field( default=1.003, description="Original noise hy-param of EDM." ) - upscale: int | GraphNode | tuple[GraphNode, str] = Field( + upscale: int | OutputHandle[int] = connect_field( default=1, description="Upsampling ratio of given inputs." ) - a_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + a_prompt: str | OutputHandle[str] = connect_field( default="Cinematic, High Contrast, highly detailed, taken using a Canon EOS R camera, hyper detailed photo - realistic maximum detail, 32k, Color Grading, ultra HD, extreme meticulous detailing, skin pore detailing, hyper sharpness, perfect without deformations.", description="Additive positive prompt for the inputs.", ) - min_size: float | GraphNode | tuple[GraphNode, str] = Field( + min_size: float | OutputHandle[float] = connect_field( default=1024, description="Minimum resolution of output images." ) - n_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + n_prompt: str | OutputHandle[str] = connect_field( default="painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth", description="Negative prompt for the inputs.", ) - s_stage1: int | GraphNode | tuple[GraphNode, str] = Field( + s_stage1: int | OutputHandle[int] = connect_field( default=-1, description="Control Strength of Stage1 (negative means invalid)." ) - s_stage2: float | GraphNode | tuple[GraphNode, str] = Field( + s_stage2: float | OutputHandle[float] = connect_field( default=1, description="Control Strength of Stage2." ) - edm_steps: int | GraphNode | tuple[GraphNode, str] = Field( + edm_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of steps for EDM Sampling Schedule." ) - linear_CFG: bool | GraphNode | tuple[GraphNode, str] = Field( + linear_CFG: bool | OutputHandle[bool] = connect_field( default=False, description="Linearly (with sigma) increase CFG from 'spt_linear_CFG' to s_cfg.", ) color_fix_type: nodetool.nodes.replicate.image.enhance.Supir_V0Q.Color_fix_type = ( Field( - default=nodetool.nodes.replicate.image.enhance.Supir_V0Q.Color_fix_type.WAVELET, + default=nodetool.nodes.replicate.image.enhance.Supir_V0Q.Color_fix_type( + "Wavelet" + ), description="Color Fixing Type..", ) ) - spt_linear_CFG: float | GraphNode | tuple[GraphNode, str] = Field( + spt_linear_CFG: float | OutputHandle[float] = connect_field( default=1, description="Start point of linearly increasing CFG." ) - linear_s_stage2: bool | GraphNode | tuple[GraphNode, str] = Field( + linear_s_stage2: bool | OutputHandle[bool] = connect_field( default=False, description="Linearly (with sigma) increase s_stage2 from 'spt_linear_s_stage2' to s_stage2.", ) - spt_linear_s_stage2: float | GraphNode | tuple[GraphNode, str] = Field( + spt_linear_s_stage2: float | OutputHandle[float] = connect_field( default=0, description="Start point of linearly increasing s_stage2." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.enhance.Supir_V0Q + @classmethod def get_node_type(cls): - return "replicate.image.enhance.Supir_V0Q" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/image/face.py b/src/nodetool/dsl/replicate/image/face.py index 5d180a9..dc59c06 100644 --- a/src/nodetool/dsl/replicate/image/face.py +++ b/src/nodetool/dsl/replicate/image/face.py @@ -1,172 +1,223 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode -class BecomeImage(GraphNode): - """Adapt any picture of a face into another image""" +class BecomeImage(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Adapt any picture of a face into another image + """ - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Fix the random seed for reproducibility" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="An image of a person to be converted", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="a person", description=None ) - image_to_become: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image_to_become: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Any image to convert the person to", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Things you do not want in the image" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=2, description="Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original.", ) - number_of_images: int | GraphNode | tuple[GraphNode, str] = Field( + number_of_images: int | OutputHandle[int] = connect_field( default=2, description="Number of images to generate" ) - denoising_strength: float | GraphNode | tuple[GraphNode, str] = Field( + denoising_strength: float | OutputHandle[float] = connect_field( default=1, description="How much of the original image of the person to keep. 1 is the complete destruction of the original image, 0 is the original image", ) - instant_id_strength: float | GraphNode | tuple[GraphNode, str] = Field( + instant_id_strength: float | OutputHandle[float] = connect_field( default=1, description="How strong the InstantID will be." ) - image_to_become_noise: float | GraphNode | tuple[GraphNode, str] = Field( + image_to_become_noise: float | OutputHandle[float] = connect_field( default=0.3, description="How much noise to add to the style image before processing. An alternative way of controlling stength.", ) - control_depth_strength: float | GraphNode | tuple[GraphNode, str] = Field( + control_depth_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Strength of depth controlnet. The bigger this is, the more controlnet affects the output.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images" ) - image_to_become_strength: float | GraphNode | tuple[GraphNode, str] = Field( + image_to_become_strength: float | OutputHandle[float] = connect_field( default=0.75, description="How strong the style will be applied" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.BecomeImage + @classmethod def get_node_type(cls): - return "replicate.image.face.BecomeImage" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode -class FaceToMany(GraphNode): - """Turn a face into 3D, emoji, pixel art, video game, claymation or toy""" +class FaceToMany(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Turn a face into 3D, emoji, pixel art, video game, claymation or toy + """ Style: typing.ClassVar[type] = nodetool.nodes.replicate.image.face.FaceToMany.Style - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Fix the random seed for reproducibility" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="An image of a person to be converted", ) style: nodetool.nodes.replicate.image.face.FaceToMany.Style = Field( - default=nodetool.nodes.replicate.image.face.FaceToMany.Style._3D, + default=nodetool.nodes.replicate.image.face.FaceToMany.Style("3D"), description="Style to convert to", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="a person", description=None ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="How strong the LoRA will be" ) - custom_lora_url: str | None | GraphNode | tuple[GraphNode, str] = Field( + custom_lora_url: str | OutputHandle[str] | None = connect_field( default=None, description="URL to a Replicate custom LoRA. Must be in the format https://replicate.delivery/pbxt/[id]/trained_model.tar or https://pbxt.replicate.delivery/[id]/trained_model.tar", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Things you do not want in the image" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=4.5, description="Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original.", ) - denoising_strength: float | GraphNode | tuple[GraphNode, str] = Field( + denoising_strength: float | OutputHandle[float] = connect_field( default=0.65, description="How much of the original image to keep. 1 is the complete destruction of the original image, 0 is the original image", ) - instant_id_strength: float | GraphNode | tuple[GraphNode, str] = Field( + instant_id_strength: float | OutputHandle[float] = connect_field( default=1, description="How strong the InstantID will be." ) - control_depth_strength: float | GraphNode | tuple[GraphNode, str] = Field( + control_depth_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Strength of depth controlnet. The bigger this is, the more controlnet affects the output.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.FaceToMany + @classmethod def get_node_type(cls): - return "replicate.image.face.FaceToMany" + return cls.get_node_class().get_node_type() -class FaceToSticker(GraphNode): - """Turn a face into a sticker""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode + + +class FaceToSticker(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Turn a face into a sticker + """ - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Fix the random seed for reproducibility" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="An image of a person to be converted to a sticker", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field(default=20, description=None) - width: int | GraphNode | tuple[GraphNode, str] = Field( - default=1024, description=None - ) - height: int | GraphNode | tuple[GraphNode, str] = Field( - default=1024, description=None - ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field(default=20, description=None) + width: int | OutputHandle[int] = connect_field(default=1024, description=None) + height: int | OutputHandle[int] = connect_field(default=1024, description=None) + prompt: str | OutputHandle[str] = connect_field( default="a person", description=None ) - upscale: bool | GraphNode | tuple[GraphNode, str] = Field( + upscale: bool | OutputHandle[bool] = connect_field( default=False, description="2x upscale the sticker" ) - upscale_steps: int | GraphNode | tuple[GraphNode, str] = Field( + upscale_steps: int | OutputHandle[int] = connect_field( default=10, description="Number of steps to upscale" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Things you do not want in the image" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=7, description="Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original.", ) - ip_adapter_noise: float | GraphNode | tuple[GraphNode, str] = Field( + ip_adapter_noise: float | OutputHandle[float] = connect_field( default=0.5, description="How much noise is added to the IP adapter input" ) - ip_adapter_weight: float | GraphNode | tuple[GraphNode, str] = Field( + ip_adapter_weight: float | OutputHandle[float] = connect_field( default=0.2, description="How much the IP adapter will influence the image" ) - instant_id_strength: float | GraphNode | tuple[GraphNode, str] = Field( + instant_id_strength: float | OutputHandle[float] = connect_field( default=1, description="How strong the InstantID will be." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.FaceToSticker + @classmethod def get_node_type(cls): - return "replicate.image.face.FaceToSticker" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.face -import nodetool.nodes.replicate.image.face -import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode -class InstantId(GraphNode): - """Make realistic images of real people instantly""" +class InstantId(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Make realistic images of real people instantly + """ Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.face.InstantId.Scheduler @@ -177,299 +228,380 @@ class InstantId(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.face.InstantId.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input face image", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="a person", description="Input prompt" ) scheduler: nodetool.nodes.replicate.image.face.InstantId.Scheduler = Field( - default=nodetool.nodes.replicate.image.face.InstantId.Scheduler.EULERDISCRETESCHEDULER, + default=nodetool.nodes.replicate.image.face.InstantId.Scheduler( + "EulerDiscreteScheduler" + ), description="Scheduler", ) - enable_lcm: bool | GraphNode | tuple[GraphNode, str] = Field( + enable_lcm: bool | OutputHandle[bool] = connect_field( default=False, description="Enable Fast Inference with LCM (Latent Consistency Models) - speeds up inference steps, trade-off is the quality of the generated image. Performs better with close-up portrait face images", ) - pose_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + pose_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="(Optional) reference pose image", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output" ) sdxl_weights: nodetool.nodes.replicate.image.face.InstantId.Sdxl_weights = Field( - default=nodetool.nodes.replicate.image.face.InstantId.Sdxl_weights.STABLE_DIFFUSION_XL_BASE_1_0, + default=nodetool.nodes.replicate.image.face.InstantId.Sdxl_weights( + "stable-diffusion-xl-base-1.0" + ), description="Pick which base weights you want to use", ) output_format: nodetool.nodes.replicate.image.face.InstantId.Output_format = Field( - default=nodetool.nodes.replicate.image.face.InstantId.Output_format.WEBP, + default=nodetool.nodes.replicate.image.face.InstantId.Output_format("webp"), description="Format of the output images", ) - pose_strength: float | GraphNode | tuple[GraphNode, str] = Field( + pose_strength: float | OutputHandle[float] = connect_field( default=0.4, description="Openpose ControlNet strength, effective only if `enable_pose_controlnet` is true", ) - canny_strength: float | GraphNode | tuple[GraphNode, str] = Field( + canny_strength: float | OutputHandle[float] = connect_field( default=0.3, description="Canny ControlNet strength, effective only if `enable_canny_controlnet` is true", ) - depth_strength: float | GraphNode | tuple[GraphNode, str] = Field( + depth_strength: float | OutputHandle[float] = connect_field( default=0.5, description="Depth ControlNet strength, effective only if `enable_depth_controlnet` is true", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance" ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Input Negative Prompt" ) - ip_adapter_scale: float | GraphNode | tuple[GraphNode, str] = Field( + ip_adapter_scale: float | OutputHandle[float] = connect_field( default=0.8, description="Scale for image adapter strength (for detail)" ) - lcm_guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lcm_guidance_scale: float | OutputHandle[float] = connect_field( default=1.5, description="Only used when `enable_lcm` is set to True, Scale for classifier-free guidance when using LCM", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=30, description="Number of denoising steps" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images" ) - enable_pose_controlnet: bool | GraphNode | tuple[GraphNode, str] = Field( + enable_pose_controlnet: bool | OutputHandle[bool] = connect_field( default=True, description="Enable Openpose ControlNet, overrides strength if set to false", ) - enhance_nonface_region: bool | GraphNode | tuple[GraphNode, str] = Field( + enhance_nonface_region: bool | OutputHandle[bool] = connect_field( default=True, description="Enhance non-face region" ) - enable_canny_controlnet: bool | GraphNode | tuple[GraphNode, str] = Field( + enable_canny_controlnet: bool | OutputHandle[bool] = connect_field( default=False, description="Enable Canny ControlNet, overrides strength if set to false", ) - enable_depth_controlnet: bool | GraphNode | tuple[GraphNode, str] = Field( + enable_depth_controlnet: bool | OutputHandle[bool] = connect_field( default=False, description="Enable Depth ControlNet, overrides strength if set to false", ) - lcm_num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + lcm_num_inference_steps: int | OutputHandle[int] = connect_field( default=5, description="Only used when `enable_lcm` is set to True, Number of denoising steps when using LCM", ) - face_detection_input_width: int | GraphNode | tuple[GraphNode, str] = Field( + face_detection_input_width: int | OutputHandle[int] = connect_field( default=640, description="Width of the input image for face detection" ) - face_detection_input_height: int | GraphNode | tuple[GraphNode, str] = Field( + face_detection_input_height: int | OutputHandle[int] = connect_field( default=640, description="Height of the input image for face detection" ) - controlnet_conditioning_scale: float | GraphNode | tuple[GraphNode, str] = Field( + controlnet_conditioning_scale: float | OutputHandle[float] = connect_field( default=0.8, description="Scale for IdentityNet strength (for fidelity)" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.InstantId + @classmethod def get_node_type(cls): - return "replicate.image.face.InstantId" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode -class Instant_ID_Artistic(GraphNode): - """InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Dreamshaper-XL as the base model to encourage artistic generations""" +class Instant_ID_Artistic( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Dreamshaper-XL as the base model to encourage artistic generations + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=640, description="Width of output image" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=640, description="Height of output image" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="analog film photo of a man. faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage, masterpiece, best quality", description="Input prompt", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=5, description="Scale for classifier-free guidance" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Input Negative Prompt" ) - ip_adapter_scale: float | GraphNode | tuple[GraphNode, str] = Field( + ip_adapter_scale: float | OutputHandle[float] = connect_field( default=0.8, description="Scale for IP adapter" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=30, description="Number of denoising steps" ) - controlnet_conditioning_scale: float | GraphNode | tuple[GraphNode, str] = Field( + controlnet_conditioning_scale: float | OutputHandle[float] = connect_field( default=0.8, description="Scale for ControlNet conditioning" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.Instant_ID_Artistic + @classmethod def get_node_type(cls): - return "replicate.image.face.Instant_ID_Artistic" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode -class Instant_ID_Photorealistic(GraphNode): - """InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Juggernaut-XL v8 as the base model to encourage photorealism""" +class Instant_ID_Photorealistic( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Juggernaut-XL v8 as the base model to encourage photorealism + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=640, description="Width of output image" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=640, description="Height of output image" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="analog film photo of a man. faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage, masterpiece, best quality", description="Input prompt", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=5, description="Scale for classifier-free guidance" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Input Negative Prompt" ) - ip_adapter_scale: float | GraphNode | tuple[GraphNode, str] = Field( + ip_adapter_scale: float | OutputHandle[float] = connect_field( default=0.8, description="Scale for IP adapter" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=30, description="Number of denoising steps" ) - controlnet_conditioning_scale: float | GraphNode | tuple[GraphNode, str] = Field( + controlnet_conditioning_scale: float | OutputHandle[float] = connect_field( default=0.8, description="Scale for ControlNet conditioning" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.Instant_ID_Photorealistic + @classmethod def get_node_type(cls): - return "replicate.image.face.Instant_ID_Photorealistic" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode -class PhotoMaker(GraphNode): - """Create photos, paintings and avatars for anyone in any style within seconds.""" +class PhotoMaker(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Create photos, paintings and avatars for anyone in any style within seconds. + """ Style_name: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.face.PhotoMaker.Style_name ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Seed. Leave blank to use a random number" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="A photo of a person img", description="Prompt. Example: 'a photo of a man/woman img'. The phrase 'img' is the trigger word.", ) - num_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_steps: int | OutputHandle[int] = connect_field( default=20, description="Number of sample steps" ) style_name: nodetool.nodes.replicate.image.face.PhotoMaker.Style_name = Field( - default=nodetool.nodes.replicate.image.face.PhotoMaker.Style_name.PHOTOGRAPHIC__DEFAULT, + default=nodetool.nodes.replicate.image.face.PhotoMaker.Style_name( + "Photographic (Default)" + ), description="Style template. The style template will add a style-specific prompt and negative prompt to the user's prompt.", ) - input_image: str | None | GraphNode | tuple[GraphNode, str] = Field( + input_image: str | OutputHandle[str] | None = connect_field( default=None, description="The input image, for example a photo of your face." ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of output images" ) - input_image2: str | None | GraphNode | tuple[GraphNode, str] = Field( + input_image2: str | OutputHandle[str] | None = connect_field( default=None, description="Additional input image (optional)" ) - input_image3: str | None | GraphNode | tuple[GraphNode, str] = Field( + input_image3: str | OutputHandle[str] | None = connect_field( default=None, description="Additional input image (optional)" ) - input_image4: str | None | GraphNode | tuple[GraphNode, str] = Field( + input_image4: str | OutputHandle[str] | None = connect_field( default=None, description="Additional input image (optional)" ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=5, description="Guidance scale. A guidance scale of 1 corresponds to doing no classifier free guidance.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry", description="Negative Prompt. The negative prompt should NOT contain the trigger word.", ) - style_strength_ratio: float | GraphNode | tuple[GraphNode, str] = Field( + style_strength_ratio: float | OutputHandle[float] = connect_field( default=20, description="Style strength (%)" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.PhotoMaker + @classmethod def get_node_type(cls): - return "replicate.image.face.PhotoMaker" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.face +from nodetool.workflows.base_node import BaseNode -class PhotoMakerStyle(GraphNode): - """Create photos, paintings and avatars for anyone in any style within seconds. (Stylization version)""" +class PhotoMakerStyle(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Create photos, paintings and avatars for anyone in any style within seconds. (Stylization version) + """ Style_name: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.face.PhotoMakerStyle.Style_name ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Seed. Leave blank to use a random number" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="A photo of a person img", description="Prompt. Example: 'a photo of a man/woman img'. The phrase 'img' is the trigger word.", ) - num_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_steps: int | OutputHandle[int] = connect_field( default=20, description="Number of sample steps" ) style_name: nodetool.nodes.replicate.image.face.PhotoMakerStyle.Style_name = Field( - default=nodetool.nodes.replicate.image.face.PhotoMakerStyle.Style_name.NO_STYLE, + default=nodetool.nodes.replicate.image.face.PhotoMakerStyle.Style_name( + "(No style)" + ), description="Style template. The style template will add a style-specific prompt and negative prompt to the user's prompt.", ) - input_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + input_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="The input image, for example a photo of your face.", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of output images" ) - input_image2: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + input_image2: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Additional input image (optional)", ) - input_image3: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + input_image3: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Additional input image (optional)", ) - input_image4: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + input_image4: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Additional input image (optional)", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=5, description="Guidance scale. A guidance scale of 1 corresponds to doing no classifier free guidance.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry", description="Negative Prompt. The negative prompt should NOT contain the trigger word.", ) - style_strength_ratio: float | GraphNode | tuple[GraphNode, str] = Field( + style_strength_ratio: float | OutputHandle[float] = connect_field( default=20, description="Style strength (%)" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.face.PhotoMakerStyle + @classmethod def get_node_type(cls): - return "replicate.image.face.PhotoMakerStyle" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/image/generate.py b/src/nodetool/dsl/replicate/image/generate.py index 204a52a..1449699 100644 --- a/src/nodetool/dsl/replicate/image/generate.py +++ b/src/nodetool/dsl/replicate/image/generate.py @@ -1,16 +1,28 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class AdInpaint(GraphNode): - """Product advertising image generator""" +class AdInpaint(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Product advertising image generator + """ Pixel: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.AdInpaint.Pixel @@ -18,105 +30,138 @@ class AdInpaint(GraphNode): Product_size: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.AdInpaint.Product_size ) + pixel: nodetool.nodes.replicate.image.generate.AdInpaint.Pixel = Field( - default=nodetool.nodes.replicate.image.generate.AdInpaint.Pixel._512___512, + default=nodetool.nodes.replicate.image.generate.AdInpaint.Pixel("512 * 512"), description="image total pixel", ) - scale: int | GraphNode | tuple[GraphNode, str] = Field( + scale: int | OutputHandle[int] = connect_field( default=3, description="Factor to scale image by (maximum: 4)" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Product name or prompt" ) - image_num: int | GraphNode | tuple[GraphNode, str] = Field( + image_num: int | OutputHandle[int] = connect_field( default=1, description="Number of image to generate" ) - image_path: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image_path: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="input image", ) - manual_seed: int | GraphNode | tuple[GraphNode, str] = Field( + manual_seed: int | OutputHandle[int] = connect_field( default=-1, description="Manual Seed" ) product_size: nodetool.nodes.replicate.image.generate.AdInpaint.Product_size = ( Field( - default=nodetool.nodes.replicate.image.generate.AdInpaint.Product_size.ORIGINAL, + default=nodetool.nodes.replicate.image.generate.AdInpaint.Product_size( + "Original" + ), description="Max product size", ) ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Guidance Scale" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="low quality, out of frame, illustration, 3d, sepia, painting, cartoons, sketch, watermark, text, Logo, advertisement", description="Anything you don't want in the photo", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=20, description="Inference Steps" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.AdInpaint + @classmethod def get_node_type(cls): - return "replicate.image.generate.AdInpaint" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class ConsistentCharacter(GraphNode): - """Create images of a given character in different poses""" +class ConsistentCharacter( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Create images of a given character in different poses + """ Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.ConsistentCharacter.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Set a seed for reproducibility. Random by default." ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="A headshot photo", description="Describe the subject. Include clothes and hairstyle for more consistency.", ) - subject: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + subject: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="An image of a person. Best images are square close ups of a face, but they do not have to be.", ) output_format: ( nodetool.nodes.replicate.image.generate.ConsistentCharacter.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.ConsistentCharacter.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.ConsistentCharacter.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Things you do not want to see in your image" ) - randomise_poses: bool | GraphNode | tuple[GraphNode, str] = Field( + randomise_poses: bool | OutputHandle[bool] = connect_field( default=True, description="Randomise the poses used." ) - number_of_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + number_of_outputs: int | OutputHandle[int] = connect_field( default=3, description="The number of images to generate." ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) - number_of_images_per_pose: int | GraphNode | tuple[GraphNode, str] = Field( + number_of_images_per_pose: int | OutputHandle[int] = connect_field( default=1, description="The number of images to generate for each pose." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.ConsistentCharacter + @classmethod def get_node_type(cls): - return "replicate.image.generate.ConsistentCharacter" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_1_1_Pro_Ultra(GraphNode): - """FLUX1.1 [pro] in ultra and raw modes. Images are up to 4 megapixels. Use raw mode for realism.""" +class Flux_1_1_Pro_Ultra( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + FLUX1.1 [pro] in ultra and raw modes. Images are up to 4 megapixels. Use raw mode for realism. + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Aspect_ratio @@ -124,53 +169,387 @@ class Flux_1_1_Pro_Ultra(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Output_format ) - raw: bool | GraphNode | tuple[GraphNode, str] = Field( + + raw: bool | OutputHandle[bool] = connect_field( default=False, description="Generate less processed, more natural-looking images", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image", ) - image_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + image_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Image to use with Flux Redux. This is used together with the text prompt to guide the generation towards the composition of the image_prompt. Must be jpeg, png, gif, or webp.", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Output_format.JPG, + default=nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Output_format( + "jpg" + ), description="Format of the output images.", ) - safety_tolerance: int | GraphNode | tuple[GraphNode, str] = Field( + safety_tolerance: int | OutputHandle[int] = connect_field( default=2, description="Safety tolerance, 1 is most strict and 6 is most permissive", ) - image_prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + image_prompt_strength: float | OutputHandle[float] = connect_field( default=0.1, description="Blend between the prompt and the image prompt." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_1_1_Pro_Ultra" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Flux_2_Flex(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Max-quality image generation and editing with support for ten reference images + """ + + Resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Flex.Resolution + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Flex.Aspect_ratio + ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Flex.Output_format + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + steps: int | OutputHandle[int] = connect_field( + default=30, description="Number of inference steps" + ) + width: int | OutputHandle[int] | None = connect_field( + default=None, + description="Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ) + height: int | OutputHandle[int] | None = connect_field( + default=None, + description="Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" + ) + guidance: float | OutputHandle[float] = connect_field( + default=4.5, + description="Guidance scale for generation. Controls how closely the output follows the prompt", + ) + resolution: nodetool.nodes.replicate.image.generate.Flux_2_Flex.Resolution = Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Flex.Resolution("1 MP"), + description="Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP).", + ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_2_Flex.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Flex.Aspect_ratio( + "1:1" + ), + description="Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio.", + ) + ) + input_images: list | OutputHandle[list] = connect_field( + default=[], + description="List of input images for image-to-image generation. Maximum 10 images. Must be jpeg, png, gif, or webp.", + ) + output_format: nodetool.nodes.replicate.image.generate.Flux_2_Flex.Output_format = ( + Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Flex.Output_format( + "webp" + ), + description="Format of the output images.", + ) + ) + output_quality: int | OutputHandle[int] = connect_field( + default=80, + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ) + safety_tolerance: int | OutputHandle[int] = connect_field( + default=2, + description="Safety tolerance, 1 is most strict and 5 is most permissive", + ) + prompt_upsampling: bool | OutputHandle[bool] = connect_field( + default=True, + description="Automatically modify the prompt for more creative generation", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_2_Flex + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Flux_2_Klein_4B(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Very fast image generation and editing model. 4 steps distilled, sub-second inference for production and near real-time applications. + """ + + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Aspect_ratio + ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_format + ) + Output_megapixels: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_megapixels + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + images: list | OutputHandle[list] = connect_field( + default=[], + description="List of input images for image-to-image generation. Maximum 5 images. Must be jpeg, png, gif, or webp.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation." + ) + go_fast: bool | OutputHandle[bool] = connect_field( + default=False, + description="Run faster predictions with additional optimizations.", + ) + aspect_ratio: ( + nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Aspect_ratio( + "1:1" + ), + description="Aspect ratio for the generated image. Use 'match_input_image' to match the aspect ratio of the first input image.", + ) + output_format: ( + nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_format + ) = Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_format( + "jpg" + ), + description="Format of the output images", + ) + output_quality: int | OutputHandle[int] = connect_field( + default=95, + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs.", + ) + output_megapixels: ( + nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_megapixels + ) = Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_megapixels( + "1" + ), + description="Resolution of the output image in megapixels", + ) + disable_safety_checker: bool | OutputHandle[bool] = connect_field( + default=False, description="Disable safety checker for generated images." + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Flux_2_Max(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + The highest fidelity image model from Black Forest Labs + """ + + Resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Max.Resolution + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Max.Aspect_ratio + ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Max.Output_format + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + width: int | OutputHandle[int] | None = connect_field( + default=None, + description="Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ) + height: int | OutputHandle[int] | None = connect_field( + default=None, + description="Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" + ) + resolution: nodetool.nodes.replicate.image.generate.Flux_2_Max.Resolution = Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Max.Resolution("1 MP"), + description="Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP).", + ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_2_Max.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Max.Aspect_ratio( + "1:1" + ), + description="Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio.", + ) + ) + input_images: list | OutputHandle[list] = connect_field( + default=[], + description="List of input images for image-to-image generation. Maximum 8 images. Must be jpeg, png, gif, or webp.", + ) + output_format: nodetool.nodes.replicate.image.generate.Flux_2_Max.Output_format = ( + Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Max.Output_format( + "webp" + ), + description="Format of the output images.", + ) + ) + output_quality: int | OutputHandle[int] = connect_field( + default=80, + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ) + safety_tolerance: int | OutputHandle[int] = connect_field( + default=2, + description="Safety tolerance, 1 is most strict and 5 is most permissive", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_2_Max + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Flux_2_Pro(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + High-quality image generation and editing with support for eight reference images + """ + + Resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Pro.Resolution + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Pro.Aspect_ratio + ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_2_Pro.Output_format + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + width: int | OutputHandle[int] | None = connect_field( + default=None, + description="Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ) + height: int | OutputHandle[int] | None = connect_field( + default=None, + description="Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" + ) + resolution: nodetool.nodes.replicate.image.generate.Flux_2_Pro.Resolution = Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Pro.Resolution("1 MP"), + description="Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP).", + ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_2_Pro.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Pro.Aspect_ratio( + "1:1" + ), + description="Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio.", + ) + ) + input_images: list | OutputHandle[list] = connect_field( + default=[], + description="List of input images for image-to-image generation. Maximum 8 images. Must be jpeg, png, gif, or webp.", + ) + output_format: nodetool.nodes.replicate.image.generate.Flux_2_Pro.Output_format = ( + Field( + default=nodetool.nodes.replicate.image.generate.Flux_2_Pro.Output_format( + "webp" + ), + description="Format of the output images.", + ) + ) + output_quality: int | OutputHandle[int] = connect_field( + default=80, + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ) + safety_tolerance: int | OutputHandle[int] = connect_field( + default=2, + description="Safety tolerance, 1 is most strict and 5 is most permissive", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_2_Pro + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_360(GraphNode): - """Generate 360 panorama images.""" +class Flux_360(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Generate 360 panorama images. + """ Model: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_360.Model @@ -184,103 +563,119 @@ class Flux_360(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_360.Output_format ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) model: nodetool.nodes.replicate.image.generate.Flux_360.Model = Field( - default=nodetool.nodes.replicate.image.generate.Flux_360.Model.DEV, + default=nodetool.nodes.replicate.image.generate.Flux_360.Model("dev"), description="Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps.", ) - width: int | None | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] | None = connect_field( default=None, description="Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - height: int | None | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] | None = connect_field( default=None, description="Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image.", ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=False, description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", ) - extra_lora: str | None | GraphNode | tuple[GraphNode, str] = Field( + extra_lora: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_360.Megapixels = Field( - default=nodetool.nodes.replicate.image.generate.Flux_360.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_360.Megapixels("1"), description="Approximate number of megapixels for generated image", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_360.Aspect_ratio = Field( - default=nodetool.nodes.replicate.image.generate.Flux_360.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_360.Aspect_ratio("1:1"), description="Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode", ) output_format: nodetool.nodes.replicate.image.generate.Flux_360.Output_format = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_360.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_360.Output_format( + "webp" + ), description="Format of the output images", ) ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=3, description="Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", ) - extra_lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + extra_lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) - replicate_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + replicate_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. More steps can give more detailed images, but take longer.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_360 + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_360" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Black_Light(GraphNode): - """A flux lora fine-tuned on black light images""" +class Flux_Black_Light( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + A flux lora fine-tuned on black light images + """ Model: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Black_Light.Model @@ -294,105 +689,125 @@ class Flux_Black_Light(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Black_Light.Output_format ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) model: nodetool.nodes.replicate.image.generate.Flux_Black_Light.Model = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Model.DEV, + default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Model("dev"), description="Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps.", ) - width: int | None | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] | None = connect_field( default=None, description="Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - height: int | None | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] | None = connect_field( default=None, description="Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image.", ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=False, description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", ) - extra_lora: str | None | GraphNode | tuple[GraphNode, str] = Field( + extra_lora: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Black_Light.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Flux_Black_Light.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Black_Light.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Black_Light.Output_format( + "webp" + ), description="Format of the output images", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=3, description="Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", ) - extra_lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + extra_lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) - replicate_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + replicate_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. More steps can give more detailed images, but take longer.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Black_Light + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Black_Light" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Canny_Dev(GraphNode): - """Open-weight edge-guided image generation. Control structure and composition using Canny edge detection.""" +class Flux_Canny_Dev(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Open-weight edge-guided image generation. Control structure and composition using Canny edge detection. + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Megapixels @@ -400,106 +815,135 @@ class Flux_Canny_Dev(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=30, description="Guidance for generated image" ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) - control_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + control_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image used to control the generation. The canny edge detection will be automatically generated.", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Canny_Dev + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Canny_Dev" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Canny_Pro(GraphNode): - """Professional edge-guided image generation. Control structure and composition using Canny edge detection""" +class Flux_Canny_Pro(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Professional edge-guided image generation. Control structure and composition using Canny edge detection + """ Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Canny_Pro.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field( default=50, description="Number of diffusion steps. Higher values yield finer details but increase processing time.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=30, description="Controls the balance between adherence to the text as well as image prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", ) - control_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + control_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image to use as control input. Must be jpeg, png, gif, or webp.", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Canny_Pro.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Canny_Pro.Output_format.JPG, + default=nodetool.nodes.replicate.image.generate.Flux_Canny_Pro.Output_format( + "jpg" + ), description="Format of the output images.", ) - safety_tolerance: int | GraphNode | tuple[GraphNode, str] = Field( + safety_tolerance: int | OutputHandle[int] = connect_field( default=2, description="Safety tolerance, 1 is most strict and 6 is most permissive", ) - prompt_upsampling: bool | GraphNode | tuple[GraphNode, str] = Field( + prompt_upsampling: bool | OutputHandle[bool] = connect_field( default=False, description="Automatically modify the prompt for more creative generation", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Canny_Pro + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Canny_Pro" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Cinestill(GraphNode): - """Flux lora, use "CNSTLL" to trigger""" +class Flux_Cinestill(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Flux lora, use "CNSTLL" to trigger + """ Model: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Cinestill.Model @@ -513,105 +957,125 @@ class Flux_Cinestill(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Cinestill.Output_format ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) model: nodetool.nodes.replicate.image.generate.Flux_Cinestill.Model = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Model.DEV, + default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Model("dev"), description="Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps.", ) - width: int | None | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] | None = connect_field( default=None, description="Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - height: int | None | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] | None = connect_field( default=None, description="Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image.", ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=False, description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", ) - extra_lora: str | None | GraphNode | tuple[GraphNode, str] = Field( + extra_lora: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Cinestill.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Flux_Cinestill.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Cinestill.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Cinestill.Output_format( + "webp" + ), description="Format of the output images", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=3, description="Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", ) - extra_lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + extra_lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) - replicate_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + replicate_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. More steps can give more detailed images, but take longer.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Cinestill + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Cinestill" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Depth_Dev(GraphNode): - """Open-weight depth-aware image generation. Edit images while preserving spatial relationships.""" +class Flux_Depth_Dev(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Open-weight depth-aware image generation. Edit images while preserving spatial relationships. + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Megapixels @@ -619,105 +1083,135 @@ class Flux_Depth_Dev(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=10, description="Guidance for generated image" ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) - control_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + control_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image used to control the generation. The depth map will be automatically generated.", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Depth_Dev + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Depth_Dev" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Depth_Pro(GraphNode): - """Professional depth-aware image generation. Edit images while preserving spatial relationships.""" +class Flux_Depth_Pro(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Professional depth-aware image generation. Edit images while preserving spatial relationships. + """ Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Depth_Pro.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field( default=50, description="Number of diffusion steps. Higher values yield finer details but increase processing time.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( - default=15, + guidance: float | OutputHandle[float] = connect_field( + default=30, description="Controls the balance between adherence to the text as well as image prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", ) - control_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + control_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image to use as control input. Must be jpeg, png, gif, or webp.", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Depth_Pro.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Depth_Pro.Output_format.JPG, + default=nodetool.nodes.replicate.image.generate.Flux_Depth_Pro.Output_format( + "jpg" + ), description="Format of the output images.", ) - safety_tolerance: int | GraphNode | tuple[GraphNode, str] = Field( + safety_tolerance: int | OutputHandle[int] = connect_field( default=2, description="Safety tolerance, 1 is most strict and 6 is most permissive", ) - prompt_upsampling: bool | GraphNode | tuple[GraphNode, str] = Field( + prompt_upsampling: bool | OutputHandle[bool] = connect_field( default=False, description="Automatically modify the prompt for more creative generation", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Depth_Pro + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Depth_Pro" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Dev(GraphNode): - """A 12 billion parameter rectified flow transformer capable of generating images from text descriptions""" +class Flux_Dev(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + A 12 billion parameter rectified flow transformer capable of generating images from text descriptions + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Dev.Megapixels @@ -728,68 +1222,79 @@ class Flux_Dev(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Dev.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: str | None | GraphNode | tuple[GraphNode, str] = Field( + image: str | OutputHandle[str] | None = connect_field( default=None, description="Input image for image to image mode. The aspect ratio of your output will match this image", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=True, - description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", + description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed.", ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=3, description="Guidance for generated image" ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Dev.Megapixels = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Dev.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Dev.Megapixels("1"), description="Approximate number of megapixels for generated image", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_Dev.Aspect_ratio = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Dev.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Dev.Aspect_ratio("1:1"), description="Aspect ratio for the generated image", ) output_format: nodetool.nodes.replicate.image.generate.Flux_Dev.Output_format = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Dev.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Dev.Output_format( + "webp" + ), description="Format of the output images", ) ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Dev + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Dev" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Dev_Lora(GraphNode): - """A version of flux-dev, a text to image model, that supports fast fine-tuned lora inference""" +class Flux_Dev_Lora(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + A version of flux-dev, a text to image model, that supports fast fine-tuned lora inference + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Megapixels @@ -800,78 +1305,113 @@ class Flux_Dev_Lora(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image mode. The aspect ratio of your output will match this image", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=True, - description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", + description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed.", ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=3, description="Guidance for generated image" ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + extra_lora: str | OutputHandle[str] | None = connect_field( + default=None, + description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", + ) + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Aspect_ratio = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image", ) ) - lora_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + hf_api_token: str | OutputHandle[str] | None = connect_field( default=None, - description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", + description="HuggingFace API token. If you're using a hf lora that needs authentication, you'll need to provide an API token.", + ) + lora_weights: str | OutputHandle[str] | None = connect_field( + default=None, + description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//[/], CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet, including signed URLs. For example, 'fofr/flux-pixar-cars'. Civit AI and HuggingFace LoRAs may require an API token to access, which you can provide in the `civitai_api_token` and `hf_api_token` inputs respectively.", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=28, description="Number of denoising steps. Recommended range is 28-50" + extra_lora_scale: float | OutputHandle[float] = connect_field( + default=1, + description="Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + civitai_api_token: str | OutputHandle[str] | None = connect_field( + default=None, + description="Civitai API token. If you're using a civitai lora that needs authentication, you'll need to provide an API token.", + ) + num_inference_steps: int | OutputHandle[int] = connect_field( + default=28, + description="Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", + ) + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Dev_Lora + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Dev_Lora" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Fill_Dev(GraphNode): - """Open-weight inpainting model for editing and extending images. Guidance-distilled from FLUX.1 Fill [pro].""" +class Flux_Fill_Dev(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Open-weight inpainting model for editing and extending images. Guidance-distilled from FLUX.1 Fill [pro]. + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Megapixels @@ -879,69 +1419,83 @@ class Flux_Fill_Dev(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Output_format ) - mask: str | None | GraphNode | tuple[GraphNode, str] = Field( + + mask: str | OutputHandle[str] | None = connect_field( default=None, description="A black-and-white image that describes the part of the image to inpaint. Black areas will be preserved while white areas will be inpainted.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: str | None | GraphNode | tuple[GraphNode, str] = Field( + image: str | OutputHandle[str] | None = connect_field( default=None, description="The image to inpaint. Can contain alpha mask. If the image width or height are not multiples of 32, they will be scaled to the closest multiple of 32. If the image dimensions don't fit within 1440x1440, it will be scaled down to fit.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=30, description="Guidance for generated image" ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) - lora_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + lora_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Fill_Dev + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Fill_Dev" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Fill_Pro(GraphNode): - """Professional inpainting and outpainting model with state-of-the-art performance. Edit or extend images with natural, seamless results.""" +class Flux_Fill_Pro(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Professional inpainting and outpainting model with state-of-the-art performance. Edit or extend images with natural, seamless results. + """ Outpaint: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Outpaint @@ -949,60 +1503,135 @@ class Flux_Fill_Pro(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Output_format ) - mask: str | None | GraphNode | tuple[GraphNode, str] = Field( + + mask: str | OutputHandle[str] | None = connect_field( default=None, description="A black-and-white image that describes the part of the image to inpaint. Black areas will be preserved while white areas will be inpainted. Must have the same size as image. Optional if you provide an alpha mask in the original image. Must be jpeg, png, gif, or webp.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: str | None | GraphNode | tuple[GraphNode, str] = Field( + image: str | OutputHandle[str] | None = connect_field( default=None, description="The image to inpaint. Can contain an alpha mask. Must be jpeg, png, gif, or webp.", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field( default=50, description="Number of diffusion steps. Higher values yield finer details but increase processing time.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=60, description="Controls the balance between adherence to the text prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", ) outpaint: nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Outpaint = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Outpaint.NONE, + default=nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Outpaint("None"), description="A quick option for outpainting an input image. Mask will be ignored.", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Output_format.JPG, + default=nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Output_format( + "jpg" + ), description="Format of the output images.", ) - safety_tolerance: int | GraphNode | tuple[GraphNode, str] = Field( + safety_tolerance: int | OutputHandle[int] = connect_field( default=2, description="Safety tolerance, 1 is most strict and 6 is most permissive", ) - prompt_upsampling: bool | GraphNode | tuple[GraphNode, str] = Field( + prompt_upsampling: bool | OutputHandle[bool] = connect_field( default=False, description="Automatically modify the prompt for more creative generation", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Fill_Pro + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Fill_Pro" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Flux_Kontext_Pro( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + A state-of-the-art text-based image editing model that delivers high-quality outputs with excellent prompt following and consistent results for transforming images through natural language + """ + + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Aspect_ratio + ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Output_format + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="Text description of what you want to generate, or the instruction on how to edit the given image.", + ) + input_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="Image to use as reference. Must be jpeg, png, gif, or webp.", + ) + aspect_ratio: ( + nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Aspect_ratio( + "match_input_image" + ), + description="Aspect ratio of the generated image. Use 'match_input_image' to match the aspect ratio of the input image.", + ) + output_format: ( + nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Output_format + ) = Field( + default=nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Output_format( + "png" + ), + description="Output format for the generated image", + ) + safety_tolerance: int | OutputHandle[int] = connect_field( + default=2, + description="Safety tolerance, 0 is most strict and 6 is most permissive. 2 is currently the maximum allowed when input images are used.", + ) + prompt_upsampling: bool | OutputHandle[bool] = connect_field( + default=False, description="Automatic prompt improvement" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Mona_Lisa(GraphNode): - """Flux lora, use the term "MNALSA" to trigger generation""" +class Flux_Mona_Lisa(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Flux lora, use the term "MNALSA" to trigger generation + """ Model: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Model @@ -1016,105 +1645,125 @@ class Flux_Mona_Lisa(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Output_format ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored.", ) model: nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Model = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Model.DEV, + default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Model("dev"), description="Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps.", ) - width: int | None | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] | None = connect_field( default=None, description="Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - height: int | None | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] | None = connect_field( default=None, description="Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image.", ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=False, description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", ) - extra_lora: str | None | GraphNode | tuple[GraphNode, str] = Field( + extra_lora: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Output_format( + "webp" + ), description="Format of the output images", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=3, description="Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", ) - extra_lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + extra_lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) - replicate_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + replicate_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. More steps can give more detailed images, but take longer.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Mona_Lisa" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Pro(GraphNode): - """State-of-the-art image generation with top of the line prompt following, visual quality, image detail and output diversity.""" +class Flux_Pro(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + State-of-the-art image generation with top of the line prompt following, visual quality, image detail and output diversity. + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Pro.Aspect_ratio @@ -1122,70 +1771,78 @@ class Flux_Pro(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Pro.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=25, description="Number of diffusion steps" - ) - width: int | None | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field(default=25, description="Deprecated") + width: int | OutputHandle[int] | None = connect_field( default=None, description="Width of the generated image in text-to-image mode. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32). Note: Ignored in img2img and inpainting modes.", ) - height: int | None | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] | None = connect_field( default=None, description="Height of the generated image in text-to-image mode. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32). Note: Ignored in img2img and inpainting modes.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=3, description="Controls the balance between adherence to the text prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", ) - interval: float | GraphNode | tuple[GraphNode, str] = Field( - default=2, - description="Interval is a setting that increases the variance in possible outputs letting the model be a tad more dynamic in what outputs it may produce in terms of composition, color, detail, and prompt interpretation. Setting this value low will ensure strong prompt following with more consistent outputs, setting it higher will produce more dynamic or varied outputs.", + interval: float | OutputHandle[float] = connect_field( + default=2, description="Deprecated" ) aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_Pro.Aspect_ratio = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Pro.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Pro.Aspect_ratio("1:1"), description="Aspect ratio for the generated image", ) - image_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + image_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Image to use with Flux Redux. This is used together with the text prompt to guide the generation towards the composition of the image_prompt. Must be jpeg, png, gif, or webp.", ) output_format: nodetool.nodes.replicate.image.generate.Flux_Pro.Output_format = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Pro.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Pro.Output_format( + "webp" + ), description="Format of the output images.", ) ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - safety_tolerance: int | GraphNode | tuple[GraphNode, str] = Field( + safety_tolerance: int | OutputHandle[int] = connect_field( default=2, description="Safety tolerance, 1 is most strict and 6 is most permissive", ) - prompt_upsampling: bool | GraphNode | tuple[GraphNode, str] = Field( + prompt_upsampling: bool | OutputHandle[bool] = connect_field( default=False, description="Automatically modify the prompt for more creative generation", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Pro + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Pro" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Redux_Dev(GraphNode): - """Open-weight image variation model. Create new versions while preserving key elements of your original.""" +class Flux_Redux_Dev(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Open-weight image variation model. Create new versions while preserving key elements of your original. + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Megapixels @@ -1196,60 +1853,79 @@ class Flux_Redux_Dev(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - guidance: float | GraphNode | tuple[GraphNode, str] = Field( + guidance: float | OutputHandle[float] = connect_field( default=3, description="Guidance for generated image" ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) - redux_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + redux_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image to condition your output on. This replaces prompt for FLUX.1 Redux models", ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=28, description="Number of denoising steps. Recommended range is 28-50" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Redux_Dev + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Redux_Dev" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Redux_Schnell(GraphNode): - """Fast, efficient image variation model for rapid iteration and experimentation.""" +class Flux_Redux_Schnell( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Fast, efficient image variation model for rapid iteration and experimentation. + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Megapixels @@ -1260,58 +1936,75 @@ class Flux_Redux_Schnell(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) megapixels: ( nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Megapixels ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) - redux_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + redux_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image to condition your output on. This replaces prompt for FLUX.1 Redux models", ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=4, description="Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Redux_Schnell" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Schnell(GraphNode): - """The fastest image generation model tailored for local development and personal use""" +class Flux_Schnell(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + The fastest image generation model tailored for local development and personal use + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Schnell.Megapixels @@ -1322,59 +2015,74 @@ class Flux_Schnell(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Schnell.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=True, - description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", + description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Schnell.Megapixels = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Schnell.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Schnell.Megapixels("1"), description="Approximate number of megapixels for generated image", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: nodetool.nodes.replicate.image.generate.Flux_Schnell.Aspect_ratio = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Schnell.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Schnell.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image", ) ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Schnell.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Schnell.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Schnell.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=4, description="Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Schnell + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Schnell" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Flux_Schnell_Lora(GraphNode): - """The fastest image generation model tailored for fine-tuned use""" +class Flux_Schnell_Lora( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + The fastest image generation model tailored for fine-tuned use + """ Megapixels: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Megapixels @@ -1385,68 +2093,86 @@ class Flux_Schnell_Lora(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - go_fast: bool | GraphNode | tuple[GraphNode, str] = Field( + go_fast: bool | OutputHandle[bool] = connect_field( default=True, - description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16", + description="Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed.", ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=1, description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", ) megapixels: nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Megapixels = ( Field( - default=nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Megapixels._1, + default=nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Megapixels( + "1" + ), description="Approximate number of megapixels for generated image", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs to generate" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image", ) - lora_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + lora_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'", ) output_format: ( nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=4, description="Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora + @classmethod def get_node_type(cls): - return "replicate.image.generate.Flux_Schnell_Lora" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Hyper_Flux_8Step(GraphNode): - """Hyper FLUX 8-step by ByteDance""" +class Hyper_Flux_8Step( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Hyper FLUX 8-step by ByteDance + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Aspect_ratio @@ -1454,63 +2180,75 @@ class Hyper_Flux_8Step(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description="Random seed. Set for reproducible generation" + + seed: int | OutputHandle[int] = connect_field( + default=0, description="Random seed. Set for reproducible generation" ) - width: int | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, + width: int | OutputHandle[int] = connect_field( + default=848, description="Width of the generated image. Optional, only used when aspect_ratio=custom. Must be a multiple of 16 (if it's not, it will be rounded to nearest multiple of 16)", ) - height: int | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, + height: int | OutputHandle[int] = connect_field( + default=848, description="Height of the generated image. Optional, only used when aspect_ratio=custom. Must be a multiple of 16 (if it's not, it will be rounded to nearest multiple of 16)", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for generated image" ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Aspect_ratio( + "1:1" + ), description="Aspect ratio for the generated image. The size will always be 1 megapixel, i.e. 1024x1024 if aspect ratio is 1:1. To use arbitrary width and height, set aspect ratio to 'custom'.", ) output_format: ( nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Output_format( + "webp" + ), description="Format of the output images", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=3.5, description="Guidance scale for the diffusion process" ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=8, description="Number of inference steps" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step + @classmethod def get_node_type(cls): - return "replicate.image.generate.Hyper_Flux_8Step" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Ideogram_V2(GraphNode): - """An excellent image model with state of the art inpainting, prompt comprehension and text rendering""" +class Ideogram_V2(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + An excellent image model with state of the art inpainting, prompt comprehension and text rendering + """ Resolution: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Ideogram_V2.Resolution @@ -1524,58 +2262,74 @@ class Ideogram_V2(GraphNode): Magic_prompt_option: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Ideogram_V2.Magic_prompt_option ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), - description="An image file to use for inpainting.", + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="An image file to use for inpainting. You must also use a mask.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) resolution: nodetool.nodes.replicate.image.generate.Ideogram_V2.Resolution = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Resolution.NONE, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Resolution("None"), description="Resolution. Overrides aspect ratio. Ignored if an inpainting image is given.", ) style_type: nodetool.nodes.replicate.image.generate.Ideogram_V2.Style_type = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Style_type.NONE, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Style_type("None"), description="The styles help define the specific aesthetic of the image you want to generate.", ) aspect_ratio: nodetool.nodes.replicate.image.generate.Ideogram_V2.Aspect_ratio = ( Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Aspect_ratio( + "1:1" + ), description="Aspect ratio. Ignored if a resolution or inpainting image is given.", ) ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Things you do not want to see in the generated image.", ) magic_prompt_option: ( nodetool.nodes.replicate.image.generate.Ideogram_V2.Magic_prompt_option ) = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Magic_prompt_option.AUTO, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2.Magic_prompt_option( + "Auto" + ), description="Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Ideogram_V2 + @classmethod def get_node_type(cls): - return "replicate.image.generate.Ideogram_V2" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Ideogram_V2A(GraphNode): - """Like Ideogram v2, but faster and cheaper""" +class Ideogram_V2A(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Like Ideogram v2, but faster and cheaper + """ Resolution: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Ideogram_V2A.Resolution @@ -1589,46 +2343,60 @@ class Ideogram_V2A(GraphNode): Magic_prompt_option: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Ideogram_V2A.Magic_prompt_option ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) resolution: nodetool.nodes.replicate.image.generate.Ideogram_V2A.Resolution = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Resolution.NONE, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Resolution("None"), description="Resolution. Overrides aspect ratio. Ignored if an inpainting image is given.", ) style_type: nodetool.nodes.replicate.image.generate.Ideogram_V2A.Style_type = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Style_type.NONE, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Style_type("None"), description="The styles help define the specific aesthetic of the image you want to generate.", ) aspect_ratio: nodetool.nodes.replicate.image.generate.Ideogram_V2A.Aspect_ratio = ( Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Aspect_ratio( + "1:1" + ), description="Aspect ratio. Ignored if a resolution or inpainting image is given.", ) ) magic_prompt_option: ( nodetool.nodes.replicate.image.generate.Ideogram_V2A.Magic_prompt_option ) = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Magic_prompt_option.AUTO, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2A.Magic_prompt_option( + "Auto" + ), description="Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Ideogram_V2A + @classmethod def get_node_type(cls): - return "replicate.image.generate.Ideogram_V2A" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Ideogram_V2_Turbo(GraphNode): - """A fast image model with state of the art inpainting, prompt comprehension and text rendering.""" +class Ideogram_V2_Turbo( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + A fast image model with state of the art inpainting, prompt comprehension and text rendering. + """ Resolution: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Resolution @@ -1642,168 +2410,381 @@ class Ideogram_V2_Turbo(GraphNode): Magic_prompt_option: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Magic_prompt_option ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), - description="An image file to use for inpainting.", + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="An image file to use for inpainting. You must also use a mask.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) resolution: nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Resolution = ( Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Resolution.NONE, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Resolution( + "None" + ), description="Resolution. Overrides aspect ratio. Ignored if an inpainting image is given.", ) ) style_type: nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Style_type = ( Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Style_type.NONE, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Style_type( + "None" + ), description="The styles help define the specific aesthetic of the image you want to generate.", ) ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Aspect_ratio( + "1:1" + ), description="Aspect ratio. Ignored if a resolution or inpainting image is given.", ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Things you do not want to see in the generated image.", ) magic_prompt_option: ( nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Magic_prompt_option ) = Field( - default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Magic_prompt_option.AUTO, + default=nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Magic_prompt_option( + "Auto" + ), description="Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo + @classmethod def get_node_type(cls): - return "replicate.image.generate.Ideogram_V2_Turbo" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Illusions(GraphNode): - """Create illusions with img2img and masking support""" +class Ideogram_V3_Turbo( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Turbo is the fastest and cheapest Ideogram v3. v3 creates images with stunning realism, creative designs, and consistent styles + """ - Sizing_strategy: typing.ClassVar[type] = ( - nodetool.nodes.replicate.image.generate.Illusions.Sizing_strategy + Resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Resolution ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description=None + Style_type: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_type ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), - description="Optional img2img", + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Aspect_ratio ) - width: int | GraphNode | tuple[GraphNode, str] = Field( - default=768, description=None + Style_preset: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_preset ) - height: int | GraphNode | tuple[GraphNode, str] = Field( - default=768, description=None + Magic_prompt_option: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Magic_prompt_option + ) + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size.", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="An image file to use for inpainting. You must also use a mask.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" + ) + resolution: nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Resolution = ( + Field( + default=nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Resolution( + "None" + ), + description="Resolution. Overrides aspect ratio. Ignored if an inpainting image is given.", + ) + ) + style_type: nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_type = ( + Field( + default=nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_type( + "None" + ), + description="The styles help define the specific aesthetic of the image you want to generate.", + ) + ) + aspect_ratio: ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Aspect_ratio( + "1:1" + ), + description="Aspect ratio. Ignored if a resolution or inpainting image is given.", + ) + style_preset: ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_preset + ) = Field( + default=nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_preset( + "None" + ), + description="Apply a predefined artistic style to the generated image (V3 models only).", + ) + magic_prompt_option: ( + nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Magic_prompt_option + ) = Field( + default=nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Magic_prompt_option( + "Auto" + ), + description="Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages.", + ) + style_reference_images: list | OutputHandle[list] | None = connect_field( + default=None, description="A list of images to use as style references." + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Illusions(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Create illusions with img2img and masking support + """ + + Sizing_strategy: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Illusions.Sizing_strategy + ) + + seed: int | OutputHandle[int] | None = connect_field(default=None, description=None) + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Optional img2img", + ) + width: int | OutputHandle[int] = connect_field(default=768, description=None) + height: int | OutputHandle[int] = connect_field(default=768, description=None) + prompt: str | OutputHandle[str] = connect_field( default="a painting of a 19th century town", description=None ) - mask_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + mask_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Optional mask for inpainting", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of outputs" ) - control_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + control_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Control image", ) - controlnet_end: float | GraphNode | tuple[GraphNode, str] = Field( + controlnet_end: float | OutputHandle[float] = connect_field( default=1.0, description="When controlnet conditioning ends" ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="ugly, disfigured, low quality, blurry, nsfw", description="The negative prompt to guide image generation.", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", ) sizing_strategy: ( nodetool.nodes.replicate.image.generate.Illusions.Sizing_strategy ) = Field( - default=nodetool.nodes.replicate.image.generate.Illusions.Sizing_strategy.WIDTH_HEIGHT, + default=nodetool.nodes.replicate.image.generate.Illusions.Sizing_strategy( + "width/height" + ), description="Decide how to resize images – use width/height, resize based on input image or control image", ) - controlnet_start: float | GraphNode | tuple[GraphNode, str] = Field( + controlnet_start: float | OutputHandle[float] = connect_field( default=0.0, description="When controlnet conditioning starts" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=40, description="Number of diffusion steps" ) - controlnet_conditioning_scale: float | GraphNode | tuple[GraphNode, str] = Field( + controlnet_conditioning_scale: float | OutputHandle[float] = connect_field( default=0.75, description="How strong the controlnet conditioning is" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Illusions + @classmethod def get_node_type(cls): - return "replicate.image.generate.Illusions" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Imagen_3(GraphNode): - """Google's highest quality text-to-image model, capable of generating images with detail, rich lighting and beauty""" +class Imagen_3(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Google's highest quality text-to-image model, capable of generating images with detail, rich lighting and beauty + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Imagen_3.Aspect_ratio ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Imagen_3.Output_format + ) Safety_filter_level: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Imagen_3.Safety_filter_level ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) aspect_ratio: nodetool.nodes.replicate.image.generate.Imagen_3.Aspect_ratio = Field( - default=nodetool.nodes.replicate.image.generate.Imagen_3.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.Imagen_3.Aspect_ratio("1:1"), description="Aspect ratio of the generated image", ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, - description="Text prompt for what to discourage in the generated images", + output_format: nodetool.nodes.replicate.image.generate.Imagen_3.Output_format = ( + Field( + default=nodetool.nodes.replicate.image.generate.Imagen_3.Output_format( + "jpg" + ), + description="Format of the output image", + ) ) safety_filter_level: ( nodetool.nodes.replicate.image.generate.Imagen_3.Safety_filter_level ) = Field( - default=nodetool.nodes.replicate.image.generate.Imagen_3.Safety_filter_level.BLOCK_MEDIUM_AND_ABOVE, + default=nodetool.nodes.replicate.image.generate.Imagen_3.Safety_filter_level( + "block_only_high" + ), description="block_low_and_above is strictest, block_medium_and_above blocks some prompts, block_only_high is most permissive but some prompts will still be blocked", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Imagen_3 + @classmethod def get_node_type(cls): - return "replicate.image.generate.Imagen_3" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Imagen_4_Fast(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Use this fast version of Imagen 4 when speed and cost are more important than quality + """ + + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Aspect_ratio + ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Output_format + ) + Safety_filter_level: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Safety_filter_level + ) + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" + ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Aspect_ratio( + "1:1" + ), + description="Aspect ratio of the generated image", + ) + ) + output_format: ( + nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Output_format + ) = Field( + default=nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Output_format( + "jpg" + ), + description="Format of the output image", + ) + safety_filter_level: ( + nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Safety_filter_level + ) = Field( + default=nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Safety_filter_level( + "block_only_high" + ), + description="block_low_and_above is strictest, block_medium_and_above blocks some prompts, block_only_high is most permissive but some prompts will still be blocked", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Imagen_4_Fast + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Kandinsky(GraphNode): - """multilingual text2image latent diffusion model""" +class Kandinsky(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + multilingual text2image latent diffusion model + """ Width: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Kandinsky.Width @@ -1814,52 +2795,63 @@ class Kandinsky(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Kandinsky.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) width: nodetool.nodes.replicate.image.generate.Kandinsky.Width = Field( - default=nodetool.nodes.replicate.image.generate.Kandinsky.Width._512, + default=nodetool.nodes.replicate.image.generate.Kandinsky.Width(512), description="Width of output image. Lower the setting if hits memory limits.", ) height: nodetool.nodes.replicate.image.generate.Kandinsky.Height = Field( - default=nodetool.nodes.replicate.image.generate.Kandinsky.Height._512, + default=nodetool.nodes.replicate.image.generate.Kandinsky.Height(512), description="Height of output image. Lower the setting if hits memory limits.", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="A moss covered astronaut with a black background", description="Input prompt", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) output_format: nodetool.nodes.replicate.image.generate.Kandinsky.Output_format = ( Field( - default=nodetool.nodes.replicate.image.generate.Kandinsky.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Kandinsky.Output_format( + "webp" + ), description="Output image format", ) ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Specify things to not see in the output" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=75, description="Number of denoising steps" ) - num_inference_steps_prior: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps_prior: int | OutputHandle[int] = connect_field( default=25, description="Number of denoising steps for priors" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Kandinsky + @classmethod def get_node_type(cls): - return "replicate.image.generate.Kandinsky" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Kandinsky_2_2(GraphNode): - """multilingual text2image latent diffusion model""" +class Kandinsky_2_2(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + multilingual text2image latent diffusion model + """ Width: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Width @@ -1870,293 +2862,432 @@ class Kandinsky_2_2(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) width: nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Width = Field( - default=nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Width._512, + default=nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Width(512), description="Width of output image. Lower the setting if hits memory limits.", ) height: nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Height = Field( - default=nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Height._512, + default=nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Height(512), description="Height of output image. Lower the setting if hits memory limits.", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="A moss covered astronaut with a black background", description="Input prompt", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) output_format: ( nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Output_format( + "webp" + ), description="Output image format", ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Specify things to not see in the output" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=75, description="Number of denoising steps" ) - num_inference_steps_prior: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps_prior: int | OutputHandle[int] = connect_field( default=25, description="Number of denoising steps for priors" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Kandinsky_2_2 + @classmethod def get_node_type(cls): - return "replicate.image.generate.Kandinsky_2_2" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Photon_Flash(GraphNode): - """Accelerated variant of Photon prioritizing speed while maintaining quality""" +class Minimax_Image_01( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Minimax's first image model, with character reference support + """ + + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Minimax_Image_01.Aspect_ratio + ) + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for generation" + ) + aspect_ratio: ( + nodetool.nodes.replicate.image.generate.Minimax_Image_01.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.image.generate.Minimax_Image_01.Aspect_ratio( + "1:1" + ), + description="Image aspect ratio", + ) + number_of_images: int | OutputHandle[int] = connect_field( + default=1, description="Number of images to generate" + ) + prompt_optimizer: bool | OutputHandle[bool] = connect_field( + default=True, description="Use prompt optimizer" + ) + subject_reference: str | OutputHandle[str] | None = connect_field( + default=None, + description="An optional character reference image (human face) to use as the subject in the generated image(s).", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Minimax_Image_01 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Photon_Flash(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Accelerated variant of Photon prioritizing speed while maintaining quality + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Photon_Flash.Aspect_ratio ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) aspect_ratio: nodetool.nodes.replicate.image.generate.Photon_Flash.Aspect_ratio = ( Field( - default=nodetool.nodes.replicate.image.generate.Photon_Flash.Aspect_ratio._16_9, + default=nodetool.nodes.replicate.image.generate.Photon_Flash.Aspect_ratio( + "16:9" + ), description="Aspect ratio of the generated image", ) ) - image_reference_url: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), - description="URL of a reference image to guide generation", + image_reference: str | OutputHandle[str] | None = connect_field( + default=None, description="Reference image to guide generation" ) - style_reference_url: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), - description="URL of a style reference image", + style_reference: str | OutputHandle[str] | None = connect_field( + default=None, description="Style reference image to guide generation" ) - image_reference_weight: float | GraphNode | tuple[GraphNode, str] = Field( + character_reference: str | OutputHandle[str] | None = connect_field( + default=None, description="Character reference image to guide generation" + ) + image_reference_url: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Deprecated: Use image_reference instead", + ) + style_reference_url: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Deprecated: Use style_reference instead", + ) + image_reference_weight: float | OutputHandle[float] = connect_field( default=0.85, description="Weight of the reference image. Larger values will make the reference image have a stronger influence on the generated image.", ) - style_reference_weight: float | GraphNode | tuple[GraphNode, str] = Field( + style_reference_weight: float | OutputHandle[float] = connect_field( default=0.85, description="Weight of the style reference image" ) - character_reference_url: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), - description="URL of a character reference image", + character_reference_url: types.ImageRef | OutputHandle[types.ImageRef] = ( + connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Deprecated: Use character_reference instead", + ) ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Photon_Flash + @classmethod def get_node_type(cls): - return "replicate.image.generate.Photon_Flash" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class PlaygroundV2(GraphNode): - """Playground v2.5 is the state-of-the-art open-source model in aesthetic quality""" +class PlaygroundV2(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Playground v2.5 is the state-of-the-art open-source model in aesthetic quality + """ Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.PlaygroundV2.Scheduler ) - mask: str | None | GraphNode | tuple[GraphNode, str] = Field( + + mask: str | OutputHandle[str] | None = connect_field( default=None, description="Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of output image" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of output image" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="Astronaut in a jungle, cold color palette, muted colors, detailed, 8k", description="Input prompt", ) scheduler: nodetool.nodes.replicate.image.generate.PlaygroundV2.Scheduler = Field( - default=nodetool.nodes.replicate.image.generate.PlaygroundV2.Scheduler.DPMSOLVER, + default=nodetool.nodes.replicate.image.generate.PlaygroundV2.Scheduler( + "DPMSolver++" + ), description="Scheduler. DPMSolver++ or DPM++2MKarras is recommended for most cases", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=3, description="Scale for classifier-free guidance" ) - apply_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_watermark: bool | OutputHandle[bool] = connect_field( default=True, description="Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="ugly, deformed, noisy, blurry, distorted", description="Negative Input prompt", ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=25, description="Number of denoising steps" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.PlaygroundV2 + @classmethod def get_node_type(cls): - return "replicate.image.generate.PlaygroundV2" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Proteus_V_02(GraphNode): - """Proteus v0.2 shows subtle yet significant improvements over Version 0.1. It demonstrates enhanced prompt understanding that surpasses MJ6, while also approaching its stylistic capabilities.""" +class Proteus_V_02(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Proteus v0.2 shows subtle yet significant improvements over Version 0.1. It demonstrates enhanced prompt understanding that surpasses MJ6, while also approaching its stylistic capabilities. + """ Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Proteus_V_02.Scheduler ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of output image" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of output image" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="black fluffy gorgeous dangerous cat animal creature, large orange eyes, big fluffy ears, piercing gaze, full moon, dark ambiance, best quality, extremely detailed", description="Input prompt", ) scheduler: nodetool.nodes.replicate.image.generate.Proteus_V_02.Scheduler = Field( - default=nodetool.nodes.replicate.image.generate.Proteus_V_02.Scheduler.KARRASDPM, + default=nodetool.nodes.replicate.image.generate.Proteus_V_02.Scheduler( + "KarrasDPM" + ), description="scheduler", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance. Recommended 7-8" ) - apply_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_watermark: bool | OutputHandle[bool] = connect_field( default=True, description="Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="worst quality, low quality", description="Negative Input prompt" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=20, description="Number of denoising steps. 20 to 35 steps for more detail, 20 steps for faster results.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Proteus_V_02 + @classmethod def get_node_type(cls): - return "replicate.image.generate.Proteus_V_02" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Proteus_V_03(GraphNode): - """ProteusV0.3: The Anime Update""" +class Proteus_V_03(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + ProteusV0.3: The Anime Update + """ Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Proteus_V_03.Scheduler ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of output image. Recommended 1024 or 1280" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of output image. Recommended 1024 or 1280" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="Anime full body portrait of a swordsman holding his weapon in front of him. He is facing the camera with a fierce look on his face. Anime key visual (best quality, HD, ~+~aesthetic~+~:1.2)", description="Input prompt", ) scheduler: nodetool.nodes.replicate.image.generate.Proteus_V_03.Scheduler = Field( - default=nodetool.nodes.replicate.image.generate.Proteus_V_03.Scheduler.DPM__2MSDE, + default=nodetool.nodes.replicate.image.generate.Proteus_V_03.Scheduler( + "DPM++2MSDE" + ), description="scheduler", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance. Recommended 7-8" ) - apply_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_watermark: bool | OutputHandle[bool] = connect_field( default=True, description="Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="worst quality, low quality", description="Negative Input prompt" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=20, description="Number of denoising steps. 20 to 60 steps for more detail, 20 steps for faster results.", ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Proteus_V_03 + @classmethod def get_node_type(cls): - return "replicate.image.generate.Proteus_V_03" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class PulidBase(GraphNode): - """Use a face to make images. Uses SDXL fine-tuned checkpoints.""" +class PulidBase(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Use a face to make images. Uses SDXL fine-tuned checkpoints. + """ Face_style: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.PulidBase.Face_style @@ -2167,63 +3298,244 @@ class PulidBase(GraphNode): Checkpoint_model: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.PulidBase.Checkpoint_model ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Set a seed for reproducibility. Random by default." ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of the output image (ignored if structure image given)", ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of the output image (ignored if structure image given)", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="A photo of a person", description="You might need to include a gender in the prompt to get the desired result", ) - face_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + face_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="The face image to use for the generation", ) face_style: nodetool.nodes.replicate.image.generate.PulidBase.Face_style = Field( - default=nodetool.nodes.replicate.image.generate.PulidBase.Face_style.HIGH_FIDELITY, + default=nodetool.nodes.replicate.image.generate.PulidBase.Face_style( + "high-fidelity" + ), description="Style of the face", ) output_format: nodetool.nodes.replicate.image.generate.PulidBase.Output_format = ( Field( - default=nodetool.nodes.replicate.image.generate.PulidBase.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.PulidBase.Output_format( + "webp" + ), description="Format of the output images", ) ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Things you do not want to see in your image" ) checkpoint_model: ( nodetool.nodes.replicate.image.generate.PulidBase.Checkpoint_model ) = Field( - default=nodetool.nodes.replicate.image.generate.PulidBase.Checkpoint_model.GENERAL___DREAMSHAPERXL_ALPHA2XL10, + default=nodetool.nodes.replicate.image.generate.PulidBase.Checkpoint_model( + "general - dreamshaperXL_alpha2Xl10" + ), description="Model to use for the generation", ) - number_of_images: int | GraphNode | tuple[GraphNode, str] = Field( + number_of_images: int | OutputHandle[int] = connect_field( default=1, description="Number of images to generate" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.PulidBase + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Qwen_Image(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + An image generation foundation model in the Qwen series that achieves significant advances in complex text rendering. + """ + + Image_size: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Qwen_Image.Image_size + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Qwen_Image.Aspect_ratio + ) + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Qwen_Image.Output_format + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Input image for img2img pipeline", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Prompt for generated image" + ) + go_fast: bool | OutputHandle[bool] = connect_field( + default=True, + description="Run faster predictions with additional optimizations.", + ) + guidance: float | OutputHandle[float] = connect_field( + default=3, + description="Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", + ) + strength: float | OutputHandle[float] = connect_field( + default=0.9, description="Strength for img2img pipeline" + ) + image_size: nodetool.nodes.replicate.image.generate.Qwen_Image.Image_size = Field( + default=nodetool.nodes.replicate.image.generate.Qwen_Image.Image_size( + "optimize_for_quality" + ), + description="Image size for the generated image", + ) + lora_scale: float | OutputHandle[float] = connect_field( + default=1, + description="Determines how strongly the main LoRA should be applied.", + ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Qwen_Image.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Qwen_Image.Aspect_ratio( + "16:9" + ), + description="Aspect ratio for the generated image", + ) + ) + lora_weights: str | OutputHandle[str] | None = connect_field( + default=None, + description="Load LoRA weights. Only works with text to image pipeline. Supports arbitrary .safetensors URLs, tar files, and zip files from the Internet (for example, 'https://huggingface.co/Viktor1717/scandinavian-interior-style1/resolve/main/my_first_flux_lora_v1.safetensors', 'https://example.com/lora_weights.tar.gz', or 'https://example.com/lora_weights.zip')", + ) + output_format: nodetool.nodes.replicate.image.generate.Qwen_Image.Output_format = ( + Field( + default=nodetool.nodes.replicate.image.generate.Qwen_Image.Output_format( + "webp" + ), + description="Format of the output images", + ) + ) + enhance_prompt: bool | OutputHandle[bool] = connect_field( + default=False, description="Enhance the prompt with positive magic." + ) + output_quality: int | OutputHandle[int] = connect_field( + default=80, + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ) + negative_prompt: str | OutputHandle[str] = connect_field( + default=" ", description="Negative prompt for generated image" + ) + replicate_weights: str | OutputHandle[str] | None = connect_field( + default=None, + description="Load LoRA weights from Replicate training. Only works with text to image pipeline. Supports arbitrary .safetensors URLs, tar files, and zip files from the Internet.", + ) + num_inference_steps: int | OutputHandle[int] = connect_field( + default=30, + description="Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", + ) + disable_safety_checker: bool | OutputHandle[bool] = connect_field( + default=False, description="Disable safety checker for generated images." + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Qwen_Image + @classmethod def get_node_type(cls): - return "replicate.image.generate.PulidBase" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Qwen_Image_Edit(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Edit images using a prompt. This model extends Qwen-Image’s unique text rendering capabilities to image editing tasks, enabling precise text editing + """ + + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Qwen_Image_Edit.Output_format + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Image to use as reference. Must be jpeg, png, gif, or webp.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text instruction on how to edit the given image." + ) + go_fast: bool | OutputHandle[bool] = connect_field( + default=True, + description="Run faster predictions with additional optimizations.", + ) + output_format: ( + nodetool.nodes.replicate.image.generate.Qwen_Image_Edit.Output_format + ) = Field( + default=nodetool.nodes.replicate.image.generate.Qwen_Image_Edit.Output_format( + "webp" + ), + description="Format of the output images", + ) + output_quality: int | OutputHandle[int] = connect_field( + default=80, + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ) + disable_safety_checker: bool | OutputHandle[bool] = connect_field( + default=False, description="Disable safety checker for generated images." + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Qwen_Image_Edit + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Recraft_20B(GraphNode): - """Affordable and fast images""" +class Recraft_20B(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Affordable and fast images + """ Size: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_20B.Size @@ -2231,29 +3543,52 @@ class Recraft_20B(GraphNode): Style: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_20B.Style ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Recraft_20B.Aspect_ratio + ) + size: nodetool.nodes.replicate.image.generate.Recraft_20B.Size = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_20B.Size._1024X1024, - description="Width and height of the generated image", + default=nodetool.nodes.replicate.image.generate.Recraft_20B.Size("1024x1024"), + description="Width and height of the generated image. Size is ignored if an aspect ratio is set.", ) style: nodetool.nodes.replicate.image.generate.Recraft_20B.Style = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_20B.Style.REALISTIC_IMAGE, + default=nodetool.nodes.replicate.image.generate.Recraft_20B.Style( + "realistic_image" + ), description="Style of the generated image.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Recraft_20B.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Recraft_20B.Aspect_ratio( + "Not set" + ), + description="Aspect ratio of the generated image", + ) + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Recraft_20B @classmethod def get_node_type(cls): - return "replicate.image.generate.Recraft_20B" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Recraft_20B_SVG(GraphNode): - """Affordable and fast vector images""" +class Recraft_20B_SVG(SingleOutputGraphNode[types.SVGRef], GraphNode[types.SVGRef]): + """ + Affordable and fast vector images + """ Size: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Size @@ -2261,29 +3596,54 @@ class Recraft_20B_SVG(GraphNode): Style: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Style ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Aspect_ratio + ) + size: nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Size = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Size._1024X1024, - description="Width and height of the generated image", + default=nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Size( + "1024x1024" + ), + description="Width and height of the generated image. Size is ignored if an aspect ratio is set.", ) style: nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Style = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Style.VECTOR_ILLUSTRATION, + default=nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Style( + "vector_illustration" + ), description="Style of the generated image.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) + aspect_ratio: ( + nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Aspect_ratio( + "Not set" + ), + description="Aspect ratio of the generated image", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Recraft_20B_SVG @classmethod def get_node_type(cls): - return "replicate.image.generate.Recraft_20B_SVG" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Recraft_V3(GraphNode): - """Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, and images in a wide list of styles. As of today, it is SOTA in image generation, proven by the Text-to-Image Benchmark by Artificial Analysis""" +class Recraft_V3(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, and images in a wide list of styles. As of today, it is SOTA in image generation, proven by the Text-to-Image Benchmark by Artificial Analysis + """ Size: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_V3.Size @@ -2291,29 +3651,50 @@ class Recraft_V3(GraphNode): Style: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_V3.Style ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Recraft_V3.Aspect_ratio + ) + size: nodetool.nodes.replicate.image.generate.Recraft_V3.Size = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_V3.Size._1024X1024, - description="Width and height of the generated image", + default=nodetool.nodes.replicate.image.generate.Recraft_V3.Size("1024x1024"), + description="Width and height of the generated image. Size is ignored if an aspect ratio is set.", ) style: nodetool.nodes.replicate.image.generate.Recraft_V3.Style = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_V3.Style.ANY, + default=nodetool.nodes.replicate.image.generate.Recraft_V3.Style("any"), description="Style of the generated image.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Recraft_V3.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Recraft_V3.Aspect_ratio( + "Not set" + ), + description="Aspect ratio of the generated image", + ) + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Recraft_V3 @classmethod def get_node_type(cls): - return "replicate.image.generate.Recraft_V3" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class Recraft_V3_SVG(GraphNode): - """Recraft V3 SVG (code-named red_panda) is a text-to-image model with the ability to generate high quality SVG images including logotypes, and icons. The model supports a wide list of styles.""" +class Recraft_V3_SVG(SingleOutputGraphNode[types.SVGRef], GraphNode[types.SVGRef]): + """ + Recraft V3 SVG (code-named red_panda) is a text-to-image model with the ability to generate high quality SVG images including logotypes, and icons. The model supports a wide list of styles. + """ Size: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Size @@ -2321,30 +3702,52 @@ class Recraft_V3_SVG(GraphNode): Style: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Style ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Aspect_ratio + ) + size: nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Size = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Size._1024X1024, - description="Width and height of the generated image", + default=nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Size( + "1024x1024" + ), + description="Width and height of the generated image. Size is ignored if an aspect ratio is set.", ) style: nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Style = Field( - default=nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Style.ANY, + default=nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Style("any"), description="Style of the generated image.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for image generation" ) + aspect_ratio: ( + nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Aspect_ratio( + "Not set" + ), + description="Aspect ratio of the generated image", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Recraft_V3_SVG @classmethod def get_node_type(cls): - return "replicate.image.generate.Recraft_V3_SVG" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class SDXL_Ad_Inpaint(GraphNode): - """Product advertising image generator using SDXL""" +class SDXL_Ad_Inpaint(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Product advertising image generator using SDXL + """ Img_size: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Img_size @@ -2355,94 +3758,127 @@ class SDXL_Ad_Inpaint(GraphNode): Product_fill: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Product_fill ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Empty or 0 for a random image" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Remove background from this image", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Describe the new setting for your product" ) img_size: nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Img_size = Field( - default=nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Img_size._1024__1024, + default=nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Img_size( + "1024, 1024" + ), description="Possible SDXL image sizes", ) - apply_img: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_img: bool | OutputHandle[bool] = connect_field( default=True, description="Applies the original product image to the final result", ) scheduler: nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Scheduler = ( Field( - default=nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Scheduler.K_EULER, + default=nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Scheduler( + "K_EULER" + ), description="scheduler", ) ) product_fill: ( nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Product_fill ) = Field( - default=nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Product_fill.ORIGINAL, + default=nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Product_fill( + "Original" + ), description="What percentage of the image width to fill with product", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Guidance Scale" ) - condition_scale: float | GraphNode | tuple[GraphNode, str] = Field( + condition_scale: float | OutputHandle[float] = connect_field( default=0.9, description="controlnet conditioning scale for generalization" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="low quality, out of frame, illustration, 3d, sepia, painting, cartoons, sketch, watermark, text, Logo, advertisement", description="Describe what you do not want in your setting", ) - num_refine_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_refine_steps: int | OutputHandle[int] = connect_field( default=10, description="Number of steps to refine" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=40, description="Inference Steps" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint + @classmethod def get_node_type(cls): - return "replicate.image.generate.SDXL_Ad_Inpaint" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class SDXL_Controlnet(GraphNode): - """SDXL ControlNet - Canny""" +class SDXL_Controlnet(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + SDXL ControlNet - Canny + """ - seed: int | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] = connect_field( default=0, description="Random seed. Set to 0 to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="aerial view, a futuristic research complex in a bright foggy jungle, hard lighting", description="Input prompt", ) - condition_scale: float | GraphNode | tuple[GraphNode, str] = Field( + condition_scale: float | OutputHandle[float] = connect_field( default=0.5, description="controlnet conditioning scale for generalization" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="low quality, bad quality, sketches", description="Input Negative Prompt", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.SDXL_Controlnet + @classmethod def get_node_type(cls): - return "replicate.image.generate.SDXL_Controlnet" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class SDXL_Emoji(GraphNode): - """An SDXL fine-tune based on Apple Emojis""" +class SDXL_Emoji(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + An SDXL fine-tune based on Apple Emojis + """ Refine: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.SDXL_Emoji.Refine @@ -2450,86 +3886,100 @@ class SDXL_Emoji(GraphNode): Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.SDXL_Emoji.Scheduler ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of output image" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of output image" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="An astronaut riding a rainbow unicorn", description="Input prompt" ) refine: nodetool.nodes.replicate.image.generate.SDXL_Emoji.Refine = Field( - default=nodetool.nodes.replicate.image.generate.SDXL_Emoji.Refine.NO_REFINER, + default=nodetool.nodes.replicate.image.generate.SDXL_Emoji.Refine("no_refiner"), description="Which refine style to use", ) scheduler: nodetool.nodes.replicate.image.generate.SDXL_Emoji.Scheduler = Field( - default=nodetool.nodes.replicate.image.generate.SDXL_Emoji.Scheduler.K_EULER, + default=nodetool.nodes.replicate.image.generate.SDXL_Emoji.Scheduler("K_EULER"), description="scheduler", ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=0.6, description="LoRA additive scale. Only applicable on trained models.", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) - refine_steps: int | None | GraphNode | tuple[GraphNode, str] = Field( + refine_steps: int | OutputHandle[int] | None = connect_field( default=None, description="For base_image_refiner, the number of steps to refine, defaults to num_inference_steps", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance" ) - apply_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_watermark: bool | OutputHandle[bool] = connect_field( default=True, description="Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking.", ) - high_noise_frac: float | GraphNode | tuple[GraphNode, str] = Field( + high_noise_frac: float | OutputHandle[float] = connect_field( default=0.8, description="For expert_ensemble_refiner, the fraction of noise to use", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Input Negative Prompt" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", ) - replicate_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + replicate_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Replicate LoRA weights to use. Leave blank to use the default weights.", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.SDXL_Emoji + @classmethod def get_node_type(cls): - return "replicate.image.generate.SDXL_Emoji" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class SDXL_Pixar(GraphNode): - """Create Pixar poster easily with SDXL Pixar.""" +class SDXL_Pixar(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Create Pixar poster easily with SDXL Pixar. + """ Refine: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.SDXL_Pixar.Refine @@ -2537,87 +3987,175 @@ class SDXL_Pixar(GraphNode): Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.SDXL_Pixar.Scheduler ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of output image" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of output image" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="An astronaut riding a rainbow unicorn", description="Input prompt" ) refine: nodetool.nodes.replicate.image.generate.SDXL_Pixar.Refine = Field( - default=nodetool.nodes.replicate.image.generate.SDXL_Pixar.Refine.NO_REFINER, + default=nodetool.nodes.replicate.image.generate.SDXL_Pixar.Refine("no_refiner"), description="Which refine style to use", ) scheduler: nodetool.nodes.replicate.image.generate.SDXL_Pixar.Scheduler = Field( - default=nodetool.nodes.replicate.image.generate.SDXL_Pixar.Scheduler.K_EULER, + default=nodetool.nodes.replicate.image.generate.SDXL_Pixar.Scheduler("K_EULER"), description="scheduler", ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=0.6, description="LoRA additive scale. Only applicable on trained models.", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) - refine_steps: int | None | GraphNode | tuple[GraphNode, str] = Field( + refine_steps: int | OutputHandle[int] | None = connect_field( default=None, description="For base_image_refiner, the number of steps to refine, defaults to num_inference_steps", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance" ) - apply_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_watermark: bool | OutputHandle[bool] = connect_field( default=True, description="Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking.", ) - high_noise_frac: float | GraphNode | tuple[GraphNode, str] = Field( + high_noise_frac: float | OutputHandle[float] = connect_field( default=0.8, description="For expert_ensemble_refiner, the fraction of noise to use", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Input Negative Prompt" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", ) - replicate_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + replicate_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Replicate LoRA weights to use. Leave blank to use the default weights.", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.SDXL_Pixar + @classmethod def get_node_type(cls): - return "replicate.image.generate.SDXL_Pixar" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode + + +class Seedream_4(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Unified text-to-image generation and precise single-sentence editing at up to 4K resolution + """ + + Size: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Seedream_4.Size + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Seedream_4.Aspect_ratio + ) + Sequential_image_generation: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.generate.Seedream_4.Sequential_image_generation + ) + + size: nodetool.nodes.replicate.image.generate.Seedream_4.Size = Field( + default=nodetool.nodes.replicate.image.generate.Seedream_4.Size("2K"), + description="Image resolution: 1K (1024px), 2K (2048px), 4K (4096px), or 'custom' for specific dimensions.", + ) + width: int | OutputHandle[int] = connect_field( + default=2048, + description="Custom image width (only used when size='custom'). Range: 1024-4096 pixels.", + ) + height: int | OutputHandle[int] = connect_field( + default=2048, + description="Custom image height (only used when size='custom'). Range: 1024-4096 pixels.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" + ) + max_images: int | OutputHandle[int] = connect_field( + default=1, + description="Maximum number of images to generate when sequential_image_generation='auto'. Range: 1-15. Total images (input + generated) cannot exceed 15.", + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], + description="Input image(s) for image-to-image generation. List of 1-10 images for single or multi-reference generation.", + ) + aspect_ratio: nodetool.nodes.replicate.image.generate.Seedream_4.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.generate.Seedream_4.Aspect_ratio( + "match_input_image" + ), + description="Image aspect ratio. Only used when size is not 'custom'. Use 'match_input_image' to automatically match the input image's aspect ratio.", + ) + ) + enhance_prompt: bool | OutputHandle[bool] = connect_field( + default=True, + description="Enable prompt enhancement for higher quality results, this will take longer to generate.", + ) + sequential_image_generation: ( + nodetool.nodes.replicate.image.generate.Seedream_4.Sequential_image_generation + ) = Field( + default=nodetool.nodes.replicate.image.generate.Seedream_4.Sequential_image_generation( + "disabled" + ), + description="Group image generation mode. 'disabled' generates a single image. 'auto' lets the model decide whether to generate multiple related images (e.g., story scenes, character variations).", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.Seedream_4 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StableDiffusion(GraphNode): - """A latent text-to-image diffusion model capable of generating photo-realistic images given any text input""" +class StableDiffusion(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + A latent text-to-image diffusion model capable of generating photo-realistic images given any text input + """ Width: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion.Width @@ -2628,50 +4166,64 @@ class StableDiffusion(GraphNode): Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion.Scheduler ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) width: nodetool.nodes.replicate.image.generate.StableDiffusion.Width = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion.Width._768, + default=nodetool.nodes.replicate.image.generate.StableDiffusion.Width(768), description="Width of generated image in pixels. Needs to be a multiple of 64", ) height: nodetool.nodes.replicate.image.generate.StableDiffusion.Height = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion.Height._768, + default=nodetool.nodes.replicate.image.generate.StableDiffusion.Height(768), description="Height of generated image in pixels. Needs to be a multiple of 64", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="a vision of paradise. unreal engine", description="Input prompt" ) scheduler: nodetool.nodes.replicate.image.generate.StableDiffusion.Scheduler = ( Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion.Scheduler.DPMSOLVERMULTISTEP, + default=nodetool.nodes.replicate.image.generate.StableDiffusion.Scheduler( + "DPMSolverMultistep" + ), description="Choose a scheduler.", ) ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to generate." ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance" ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Specify things to not see in the output" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StableDiffusion + @classmethod def get_node_type(cls): - return "replicate.image.generate.StableDiffusion" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StableDiffusion3_5_Large(GraphNode): - """A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, thanks to Query-Key Normalization.""" +class StableDiffusion3_5_Large( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, thanks to Query-Key Normalization. + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Aspect_ratio @@ -2679,55 +4231,69 @@ class StableDiffusion3_5_Large(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Output_format ) - cfg: float | GraphNode | tuple[GraphNode, str] = Field( - default=3.5, + + cfg: float | OutputHandle[float] = connect_field( + default=5, description="The guidance scale tells the model how similar the output should be to the prompt.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Set a seed for reproducibility. Random by default." ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image mode. The aspect ratio of your output will match this image.", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=35, description="Number of steps to run the sampler for." - ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Text prompt for image generation" + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Aspect_ratio( + "1:1" + ), description="The aspect ratio of your output image. This value is ignored if you are using an input image.", ) output_format: ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( - default=90, - description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + negative_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="What you do not want to see in the image" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.85, description="Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large + @classmethod def get_node_type(cls): - return "replicate.image.generate.StableDiffusion3_5_Large" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StableDiffusion3_5_Large_Turbo(GraphNode): - """A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, with a focus on fewer inference steps""" +class StableDiffusion3_5_Large_Turbo( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, with a focus on fewer inference steps + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Aspect_ratio @@ -2735,55 +4301,69 @@ class StableDiffusion3_5_Large_Turbo(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Output_format ) - cfg: float | GraphNode | tuple[GraphNode, str] = Field( + + cfg: float | OutputHandle[float] = connect_field( default=1, description="The guidance scale tells the model how similar the output should be to the prompt.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Set a seed for reproducibility. Random by default." ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image mode. The aspect ratio of your output will match this image.", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=4, description="Number of steps to run the sampler for." - ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Text prompt for image generation" + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Aspect_ratio( + "1:1" + ), description="The aspect ratio of your output image. This value is ignored if you are using an input image.", ) output_format: ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( - default=90, - description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + negative_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="What you do not want to see in the image" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.85, description="Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo + @classmethod def get_node_type(cls): - return "replicate.image.generate.StableDiffusion3_5_Large_Turbo" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StableDiffusion3_5_Medium(GraphNode): - """2.5 billion parameter image model with improved MMDiT-X architecture""" +class StableDiffusion3_5_Medium( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + 2.5 billion parameter image model with improved MMDiT-X architecture + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Aspect_ratio @@ -2791,56 +4371,69 @@ class StableDiffusion3_5_Medium(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Output_format ) - cfg: float | GraphNode | tuple[GraphNode, str] = Field( + + cfg: float | OutputHandle[float] = connect_field( default=5, description="The guidance scale tells the model how similar the output should be to the prompt.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Set a seed for reproducibility. Random by default." ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for image to image mode. The aspect ratio of your output will match this image.", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=40, description="Number of steps to run the sampler for." - ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Text prompt for image generation" + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" ) aspect_ratio: ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Aspect_ratio ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Aspect_ratio._1_1, + default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Aspect_ratio( + "1:1" + ), description="The aspect ratio of your output image. This value is ignored if you are using an input image.", ) output_format: ( nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( - default=90, - description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + negative_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="What you do not want to see in the image" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.85, description="Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium + @classmethod def get_node_type(cls): - return "replicate.image.generate.StableDiffusion3_5_Medium" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StableDiffusionInpainting(GraphNode): - """Fill in masked parts of images with Stable Diffusion""" +class StableDiffusionInpainting( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Fill in masked parts of images with Stable Diffusion + """ Width: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Width @@ -2851,66 +4444,88 @@ class StableDiffusionInpainting(GraphNode): Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Scheduler ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Black and white image to use as mask for inpainting over the image provided. White pixels are inpainted and black pixels are preserved.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Initial image to generate variations of. Will be resized to height x width", ) width: nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Width = ( Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Width._512, + default=nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Width( + 512 + ), description="Width of generated image in pixels. Needs to be a multiple of 64", ) ) height: nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Height = ( Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Height._512, + default=nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Height( + 512 + ), description="Height of generated image in pixels. Needs to be a multiple of 64", ) ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="a vision of paradise. unreal engine", description="Input prompt" ) scheduler: ( nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Scheduler ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Scheduler.DPMSOLVERMULTISTEP, + default=nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Scheduler( + "DPMSolverMultistep" + ), description="Choose a scheduler.", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to generate." ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance" ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Specify things to not see in the output" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StableDiffusionInpainting + @classmethod def get_node_type(cls): - return "replicate.image.generate.StableDiffusionInpainting" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StableDiffusionXL(GraphNode): - """A text-to-image generative AI model that creates beautiful images""" +class StableDiffusionXL( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + A text-to-image generative AI model that creates beautiful images + """ Refine: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusionXL.Refine @@ -2918,181 +4533,223 @@ class StableDiffusionXL(GraphNode): Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusionXL.Scheduler ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted.", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of output image" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of output image" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="An astronaut riding a rainbow unicorn", description="Input prompt" ) refine: nodetool.nodes.replicate.image.generate.StableDiffusionXL.Refine = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusionXL.Refine.NO_REFINER, + default=nodetool.nodes.replicate.image.generate.StableDiffusionXL.Refine( + "no_refiner" + ), description="Which refine style to use", ) scheduler: nodetool.nodes.replicate.image.generate.StableDiffusionXL.Scheduler = ( Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusionXL.Scheduler.K_EULER, + default=nodetool.nodes.replicate.image.generate.StableDiffusionXL.Scheduler( + "K_EULER" + ), description="scheduler", ) ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=0.6, description="LoRA additive scale. Only applicable on trained models.", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) - refine_steps: int | None | GraphNode | tuple[GraphNode, str] = Field( + refine_steps: int | OutputHandle[int] | None = connect_field( default=None, description="For base_image_refiner, the number of steps to refine, defaults to num_inference_steps", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Scale for classifier-free guidance" ) - apply_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_watermark: bool | OutputHandle[bool] = connect_field( default=True, description="Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking.", ) - high_noise_frac: float | GraphNode | tuple[GraphNode, str] = Field( + high_noise_frac: float | OutputHandle[float] = connect_field( default=0.8, description="For expert_ensemble_refiner, the fraction of noise to use", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Input Negative Prompt" ) - prompt_strength: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_strength: float | OutputHandle[float] = connect_field( default=0.8, description="Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", ) - replicate_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + replicate_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Replicate LoRA weights to use. Leave blank to use the default weights.", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StableDiffusionXL + @classmethod def get_node_type(cls): - return "replicate.image.generate.StableDiffusionXL" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StableDiffusionXLLightning(GraphNode): - """SDXL-Lightning by ByteDance: a fast text-to-image model that makes high-quality images in 4 steps""" +class StableDiffusionXLLightning( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + SDXL-Lightning by ByteDance: a fast text-to-image model that makes high-quality images in 4 steps + """ Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StableDiffusionXLLightning.Scheduler ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description="Random seed. Leave blank to randomize the seed" + + seed: int | OutputHandle[int] = connect_field( + default=0, description="Random seed. Leave blank to randomize the seed" ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of output image. Recommended 1024 or 1280" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of output image. Recommended 1024 or 1280" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="self-portrait of a woman, lightning in the background", description="Input prompt", ) scheduler: ( nodetool.nodes.replicate.image.generate.StableDiffusionXLLightning.Scheduler ) = Field( - default=nodetool.nodes.replicate.image.generate.StableDiffusionXLLightning.Scheduler.K_EULER, + default=nodetool.nodes.replicate.image.generate.StableDiffusionXLLightning.Scheduler( + "K_EULER" + ), description="scheduler", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output." ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=0, description="Scale for classifier-free guidance" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="worst quality, low quality", description="Negative Input prompt" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=4, description="Number of denoising steps. 4 for best results" ) - disable_safety_checker: bool | GraphNode | tuple[GraphNode, str] = Field( + disable_safety_checker: bool | OutputHandle[bool] = connect_field( default=False, description="Disable safety checker for generated images" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StableDiffusionXLLightning + @classmethod def get_node_type(cls): - return "replicate.image.generate.StableDiffusionXLLightning" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StickerMaker(GraphNode): - """Make stickers with AI. Generates graphics with transparent backgrounds.""" +class StickerMaker(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Make stickers with AI. Generates graphics with transparent backgrounds. + """ Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StickerMaker.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Fix the random seed for reproducibility" ) - steps: int | GraphNode | tuple[GraphNode, str] = Field(default=17, description=None) - width: int | GraphNode | tuple[GraphNode, str] = Field( - default=1152, description=None - ) - height: int | GraphNode | tuple[GraphNode, str] = Field( - default=1152, description=None - ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field(default=17, description=None) + width: int | OutputHandle[int] = connect_field(default=1152, description=None) + height: int | OutputHandle[int] = connect_field(default=1152, description=None) + prompt: str | OutputHandle[str] = connect_field( default="a cute cat", description=None ) output_format: ( nodetool.nodes.replicate.image.generate.StickerMaker.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.StickerMaker.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.StickerMaker.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=90, description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Things you do not want in the image" ) - number_of_images: int | GraphNode | tuple[GraphNode, str] = Field( + number_of_images: int | OutputHandle[int] = connect_field( default=1, description="Number of images to generate" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StickerMaker + @classmethod def get_node_type(cls): - return "replicate.image.generate.StickerMaker" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.generate -import nodetool.nodes.replicate.image.generate +from nodetool.workflows.base_node import BaseNode -class StyleTransfer(GraphNode): - """Transfer the style of one image to another""" +class StyleTransfer(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Transfer the style of one image to another + """ Model: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StyleTransfer.Model @@ -3100,56 +4757,67 @@ class StyleTransfer(GraphNode): Output_format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.generate.StyleTransfer.Output_format ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Set a seed for reproducibility. Random by default." ) model: nodetool.nodes.replicate.image.generate.StyleTransfer.Model = Field( - default=nodetool.nodes.replicate.image.generate.StyleTransfer.Model.FAST, + default=nodetool.nodes.replicate.image.generate.StyleTransfer.Model("fast"), description="Model to use for the generation", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=1024, description="Width of the output image (ignored if structure image given)", ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=1024, description="Height of the output image (ignored if structure image given)", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="An astronaut riding a unicorn", description="Prompt for the image" ) - style_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + style_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Copy the style from this image", ) output_format: ( nodetool.nodes.replicate.image.generate.StyleTransfer.Output_format ) = Field( - default=nodetool.nodes.replicate.image.generate.StyleTransfer.Output_format.WEBP, + default=nodetool.nodes.replicate.image.generate.StyleTransfer.Output_format( + "webp" + ), description="Format of the output images", ) - output_quality: int | GraphNode | tuple[GraphNode, str] = Field( + output_quality: int | OutputHandle[int] = connect_field( default=80, description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Things you do not want to see in your image" ) - structure_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + structure_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="An optional image to copy structure from. Output images will use the same aspect ratio.", ) - number_of_images: int | GraphNode | tuple[GraphNode, str] = Field( + number_of_images: int | OutputHandle[int] = connect_field( default=1, description="Number of images to generate" ) - structure_depth_strength: float | GraphNode | tuple[GraphNode, str] = Field( + structure_depth_strength: float | OutputHandle[float] = connect_field( default=1, description="Strength of the depth controlnet" ) - structure_denoising_strength: float | GraphNode | tuple[GraphNode, str] = Field( + structure_denoising_strength: float | OutputHandle[float] = connect_field( default=0.65, description="How much of the original image (and colors) to preserve (0 is all, 1 is none, 0.65 is a good balance)", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.generate.StyleTransfer + @classmethod def get_node_type(cls): - return "replicate.image.generate.StyleTransfer" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/image/ocr.py b/src/nodetool/dsl/replicate/image/ocr.py index db9df18..d82ee1d 100644 --- a/src/nodetool/dsl/replicate/image/ocr.py +++ b/src/nodetool/dsl/replicate/image/ocr.py @@ -1,31 +1,65 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.ocr +from nodetool.workflows.base_node import BaseNode -class LatexOCR(GraphNode): - """Optical character recognition to turn images of latex equations into latex format.""" +class LatexOCR(SingleOutputGraphNode[str], GraphNode[str]): + """ + Optical character recognition to turn images of latex equations into latex format. + """ - image_path: str | None | GraphNode | tuple[GraphNode, str] = Field( + image_path: str | OutputHandle[str] | None = connect_field( default=None, description="Input image" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.ocr.LatexOCR + @classmethod def get_node_type(cls): - return "replicate.image.ocr.LatexOCR" + return cls.get_node_class().get_node_type() -class TextExtractOCR(GraphNode): - """A simple OCR Model that can easily extract text from an image.""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.ocr +from nodetool.workflows.base_node import BaseNode + + +class TextExtractOCR(SingleOutputGraphNode[str], GraphNode[str]): + """ + A simple OCR Model that can easily extract text from an image. + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image to process", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.ocr.TextExtractOCR + @classmethod def get_node_type(cls): - return "replicate.image.ocr.TextExtractOCR" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/image/process.py b/src/nodetool/dsl/replicate/image/process.py index 3034e7a..9a2b6e3 100644 --- a/src/nodetool/dsl/replicate/image/process.py +++ b/src/nodetool/dsl/replicate/image/process.py @@ -1,152 +1,350 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.process +from nodetool.workflows.base_node import BaseNode -class DD_Color(GraphNode): - """Towards Photo-Realistic Image Colorization via Dual Decoders""" +class DD_Color(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Towards Photo-Realistic Image Colorization via Dual Decoders + """ Model_size: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.process.DD_Color.Model_size ) - image: str | None | GraphNode | tuple[GraphNode, str] = Field( + + image: str | OutputHandle[str] | None = connect_field( default=None, description="Grayscale input image." ) model_size: nodetool.nodes.replicate.image.process.DD_Color.Model_size = Field( - default=nodetool.nodes.replicate.image.process.DD_Color.Model_size.LARGE, + default=nodetool.nodes.replicate.image.process.DD_Color.Model_size("large"), description="Choose the model size.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.process.DD_Color + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.process +from nodetool.workflows.base_node import BaseNode + + +class Expand_Image(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Bria Expand expands images beyond their borders in high quality. Resizing the image by generating new pixels to expand to the desired aspect ratio. Trained exclusively on licensed data for safe and risk-free commercial use + """ + + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.process.Expand_Image.Aspect_ratio + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + sync: bool | OutputHandle[bool] = connect_field( + default=True, description="Synchronous response mode" + ) + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Image file", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" + ) + image_url: str | OutputHandle[str] | None = connect_field( + default=None, description="Image URL" + ) + canvas_size: list | OutputHandle[list] | None = connect_field( + default=None, + description="Desired output canvas dimensions [width, height]. Default [1000, 1000]", + ) + aspect_ratio: nodetool.nodes.replicate.image.process.Expand_Image.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.image.process.Expand_Image.Aspect_ratio( + "1:1" + ), + description="Aspect ratio for expansion.", + ) + ) + preserve_alpha: bool | OutputHandle[bool] = connect_field( + default=True, description="Preserve alpha channel in output" + ) + negative_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Negative prompt for image generation" + ) + content_moderation: bool | OutputHandle[bool] = connect_field( + default=False, description="Enable content moderation" + ) + original_image_size: list | OutputHandle[list] | None = connect_field( + default=None, description="Size of original image in canvas [width, height]" + ) + original_image_location: list | OutputHandle[list] | None = connect_field( + default=None, description="Position of original image in canvas [x, y]" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.process.Expand_Image + @classmethod def get_node_type(cls): - return "replicate.image.process.DD_Color" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.process +from nodetool.workflows.base_node import BaseNode -class Magic_Style_Transfer(GraphNode): - """Restyle an image with the style of another one. I strongly suggest to upscale the results with Clarity AI""" +class Magic_Style_Transfer( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Restyle an image with the style of another one. I strongly suggest to upscale the results with Clarity AI + """ Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.process.Magic_Style_Transfer.Scheduler ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="An astronaut riding a rainbow unicorn", description="Input prompt" ) - ip_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + ip_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image for img2img or inpaint mode", ) - ip_scale: float | GraphNode | tuple[GraphNode, str] = Field( + ip_scale: float | OutputHandle[float] = connect_field( default=0.3, description="IP Adapter strength." ) - strength: float | GraphNode | tuple[GraphNode, str] = Field( + strength: float | OutputHandle[float] = connect_field( default=0.9, description="When img2img is active, the denoising strength. 1 means total destruction of the input image.", ) scheduler: nodetool.nodes.replicate.image.process.Magic_Style_Transfer.Scheduler = ( Field( - default=nodetool.nodes.replicate.image.process.Magic_Style_Transfer.Scheduler.K_EULER, + default=nodetool.nodes.replicate.image.process.Magic_Style_Transfer.Scheduler( + "K_EULER" + ), description="scheduler", ) ) - lora_scale: float | GraphNode | tuple[GraphNode, str] = Field( + lora_scale: float | OutputHandle[float] = connect_field( default=0.9, description="LoRA additive scale. Only applicable on trained models.", ) - num_outputs: int | GraphNode | tuple[GraphNode, str] = Field( + num_outputs: int | OutputHandle[int] = connect_field( default=1, description="Number of images to output" ) - lora_weights: str | None | GraphNode | tuple[GraphNode, str] = Field( + lora_weights: str | OutputHandle[str] | None = connect_field( default=None, description="Replicate LoRA weights to use. Leave blank to use the default weights.", ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=4, description="Scale for classifier-free guidance" ) - resizing_scale: float | GraphNode | tuple[GraphNode, str] = Field( + resizing_scale: float | OutputHandle[float] = connect_field( default=1, description="If you want the image to have a solid margin. Scale of the solid margin. 1.0 means no resizing.", ) - apply_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + apply_watermark: bool | OutputHandle[bool] = connect_field( default=True, description="Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking.", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Input Negative Prompt" ) - background_color: str | GraphNode | tuple[GraphNode, str] = Field( + background_color: str | OutputHandle[str] = connect_field( default="#A2A2A2", description="When passing an image with alpha channel, it will be replaced with this color", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=30, description="Number of denoising steps" ) - condition_canny_scale: float | GraphNode | tuple[GraphNode, str] = Field( + condition_canny_scale: float | OutputHandle[float] = connect_field( default=0.15, description="The bigger this number is, the more ControlNet interferes", ) - condition_depth_scale: float | GraphNode | tuple[GraphNode, str] = Field( + condition_depth_scale: float | OutputHandle[float] = connect_field( default=0.35, description="The bigger this number is, the more ControlNet interferes", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.process.Magic_Style_Transfer + @classmethod def get_node_type(cls): - return "replicate.image.process.Magic_Style_Transfer" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.process +from nodetool.workflows.base_node import BaseNode -class ModNet(GraphNode): - """A deep learning approach to remove background & adding new background image""" +class ModNet(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + A deep learning approach to remove background & adding new background image + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="input image", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.process.ModNet + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.process +from nodetool.workflows.base_node import BaseNode + + +class Nano_Banana(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Google's latest image editing model in Gemini 2.5 + """ + + Output_format: typing.ClassVar[type] = ( + nodetool.nodes.replicate.image.process.Nano_Banana.Output_format + ) + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="A text description of the image you want to generate" + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], + description="Input images to transform or use as reference (supports multiple images)", + ) + output_format: nodetool.nodes.replicate.image.process.Nano_Banana.Output_format = ( + Field( + default=nodetool.nodes.replicate.image.process.Nano_Banana.Output_format( + "jpg" + ), + description="Format of the output image", + ) + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.process.Nano_Banana + @classmethod def get_node_type(cls): - return "replicate.image.process.ModNet" + return cls.get_node_class().get_node_type() + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.process +from nodetool.workflows.base_node import BaseNode -class ObjectRemover(GraphNode): - """None""" - org_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), +class ObjectRemover(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + None + """ + + org_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Original input image", ) - mask_image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + mask_image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Mask image", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.process.ObjectRemover + @classmethod def get_node_type(cls): - return "replicate.image.process.ObjectRemover" + return cls.get_node_class().get_node_type() -class RemoveBackground(GraphNode): - """Remove images background""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.process +from nodetool.workflows.base_node import BaseNode - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + +class RemoveBackground( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Remove images background + """ + + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.process.RemoveBackground + @classmethod def get_node_type(cls): - return "replicate.image.process.RemoveBackground" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/image/upscale.py b/src/nodetool/dsl/replicate/image/upscale.py index 2cbc95b..462764a 100644 --- a/src/nodetool/dsl/replicate/image/upscale.py +++ b/src/nodetool/dsl/replicate/image/upscale.py @@ -1,20 +1,28 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class ClarityUpscaler(GraphNode): - """High resolution image Upscaler and Enhancer. Use at ClarityAI.co. A free Magnific alternative. Twitter/X: @philz1337x""" +class ClarityUpscaler(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + High resolution image Upscaler and Enhancer. Use at ClarityAI.co. A free Magnific alternative. Twitter/X: @philz1337x + """ Handfix: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Handfix @@ -34,130 +42,168 @@ class ClarityUpscaler(GraphNode): Tiling_height: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_height ) - mask: str | None | GraphNode | tuple[GraphNode, str] = Field( + + mask: str | OutputHandle[str] | None = connect_field( default=None, description="Mask image to mark areas that should be preserved during upscaling", ) - seed: int | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] = connect_field( default=1337, description="Random seed. Leave blank to randomize the seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="input image", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="masterpiece, best quality, highres, ", description="Prompt", ) - dynamic: float | GraphNode | tuple[GraphNode, str] = Field( + dynamic: float | OutputHandle[float] = connect_field( default=6, description="HDR, try from 3 - 9" ) handfix: nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Handfix = Field( - default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Handfix.DISABLED, + default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Handfix( + "disabled" + ), description="Use clarity to fix hands in the image", ) - pattern: bool | GraphNode | tuple[GraphNode, str] = Field( + pattern: bool | OutputHandle[bool] = connect_field( default=False, description="Upscale a pattern with seamless tiling" ) - sharpen: float | GraphNode | tuple[GraphNode, str] = Field( + sharpen: float | OutputHandle[float] = connect_field( default=0, description="Sharpen the image after upscaling. The higher the value, the more sharpening is applied. 0 for no sharpening", ) sd_model: nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Sd_model = Field( - default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Sd_model.JUGGERNAUT_REBORN_SAFETENSORS__338B85BC4F, + default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Sd_model( + "juggernaut_reborn.safetensors [338b85bc4f]" + ), description="Stable Diffusion model checkpoint", ) scheduler: nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Scheduler = Field( - default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Scheduler.DPM___3M_SDE_KARRAS, + default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Scheduler( + "DPM++ 3M SDE Karras" + ), description="scheduler", ) - creativity: float | GraphNode | tuple[GraphNode, str] = Field( + creativity: float | OutputHandle[float] = connect_field( default=0.35, description="Creativity, try from 0.3 - 0.9" ) - lora_links: str | GraphNode | tuple[GraphNode, str] = Field( + lora_links: str | OutputHandle[str] = connect_field( default="", description="Link to a lora file you want to use in your upscaling. Multiple links possible, seperated by comma", ) - downscaling: bool | GraphNode | tuple[GraphNode, str] = Field( + downscaling: bool | OutputHandle[bool] = connect_field( default=False, description="Downscale the image before upscaling. Can improve quality and speed for images with high resolution but lower quality", ) - resemblance: float | GraphNode | tuple[GraphNode, str] = Field( + resemblance: float | OutputHandle[float] = connect_field( default=0.6, description="Resemblance, try from 0.3 - 1.6" ) - scale_factor: float | GraphNode | tuple[GraphNode, str] = Field( + scale_factor: float | OutputHandle[float] = connect_field( default=2, description="Scale factor" ) tiling_width: ( nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_width ) = Field( - default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_width._112, + default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_width( + 112 + ), description="Fractality, set lower tile width for a high Fractality", ) output_format: ( nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Output_format ) = Field( - default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Output_format.PNG, + default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Output_format( + "png" + ), description="Format of the output images", ) tiling_height: ( nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_height ) = Field( - default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_height._144, + default=nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_height( + 144 + ), description="Fractality, set lower tile height for a high Fractality", ) - custom_sd_model: str | GraphNode | tuple[GraphNode, str] = Field( + custom_sd_model: str | OutputHandle[str] = connect_field( default="", description=None ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="(worst quality, low quality, normal quality:2) JuggernautNegative-neg", description="Negative Prompt", ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=18, description="Number of denoising steps" ) - downscaling_resolution: int | GraphNode | tuple[GraphNode, str] = Field( + downscaling_resolution: int | OutputHandle[int] = connect_field( default=768, description="Downscaling resolution" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.ClarityUpscaler + @classmethod def get_node_type(cls): - return "replicate.image.upscale.ClarityUpscaler" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class GFPGAN(GraphNode): - """Practical face restoration algorithm for *old photos* or *AI-generated faces*""" +class GFPGAN(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Practical face restoration algorithm for *old photos* or *AI-generated faces* + """ Version: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.GFPGAN.Version ) - img: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + img: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input", ) - scale: float | GraphNode | tuple[GraphNode, str] = Field( + scale: float | OutputHandle[float] = connect_field( default=2, description="Rescaling factor" ) version: nodetool.nodes.replicate.image.upscale.GFPGAN.Version = Field( - default=nodetool.nodes.replicate.image.upscale.GFPGAN.Version.V1_4, + default=nodetool.nodes.replicate.image.upscale.GFPGAN.Version("v1.4"), description="GFPGAN version. v1.3: better quality. v1.4: more details and better identity.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.GFPGAN + @classmethod def get_node_type(cls): - return "replicate.image.upscale.GFPGAN" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class HighResolutionControlNetTile(GraphNode): - """UPDATE: new upscaling algorithm for a much improved image quality. Fermat.app open-source implementation of an efficient ControlNet 1.1 tile for high-quality upscales. Increase the creativity to encourage hallucination.""" +class HighResolutionControlNetTile( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + UPDATE: new upscaling algorithm for a much improved image quality. Fermat.app open-source implementation of an efficient ControlNet 1.1 tile for high-quality upscales. Increase the creativity to encourage hallucination. + """ Format: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Format @@ -168,77 +214,95 @@ class HighResolutionControlNetTile(GraphNode): Resolution: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Resolution ) - hdr: float | GraphNode | tuple[GraphNode, str] = Field( + + hdr: float | OutputHandle[float] = connect_field( default=0, description="HDR improvement over the original image" ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Control image for scribble controlnet", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=8, description="Steps" - ) + steps: int | OutputHandle[int] = connect_field(default=8, description="Steps") format: ( nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Format ) = Field( - default=nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Format.JPG, + default=nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Format( + "jpg" + ), description="Format of the output.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for the model" ) scheduler: ( nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Scheduler ) = Field( - default=nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Scheduler.DDIM, + default=nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Scheduler( + "DDIM" + ), description="Choose a scheduler.", ) - creativity: float | GraphNode | tuple[GraphNode, str] = Field( + creativity: float | OutputHandle[float] = connect_field( default=0.35, description="Denoising strength. 1 means total destruction of the original image", ) - guess_mode: bool | GraphNode | tuple[GraphNode, str] = Field( + guess_mode: bool | OutputHandle[bool] = connect_field( default=False, description="In this mode, the ControlNet encoder will try best to recognize the content of the input image even if you remove all prompts.", ) resolution: ( nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Resolution ) = Field( - default=nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Resolution._2560, + default=nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Resolution( + 2560 + ), description="Image resolution", ) - resemblance: float | GraphNode | tuple[GraphNode, str] = Field( + resemblance: float | OutputHandle[float] = connect_field( default=0.85, description="Conditioning scale for controlnet" ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=0, description="Scale for classifier-free guidance, should be 0." ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="teeth, tooth, open mouth, longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, mutant", description="Negative prompt", ) - lora_details_strength: float | GraphNode | tuple[GraphNode, str] = Field( + lora_details_strength: float | OutputHandle[float] = connect_field( default=1, description="Strength of the image's details" ) - lora_sharpness_strength: float | GraphNode | tuple[GraphNode, str] = Field( + lora_sharpness_strength: float | OutputHandle[float] = connect_field( default=1.25, description="Strength of the image's sharpness. We don't recommend values above 2.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile + @classmethod def get_node_type(cls): - return "replicate.image.upscale.HighResolutionControlNetTile" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class MagicImageRefiner(GraphNode): - """A better alternative to SDXL refiners, providing a lot of quality and detail. Can also be used for inpainting or upscaling.""" +class MagicImageRefiner( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + A better alternative to SDXL refiners, providing a lot of quality and detail. Can also be used for inpainting or upscaling. + """ Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Scheduler @@ -246,144 +310,201 @@ class MagicImageRefiner(GraphNode): Resolution: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Resolution ) - hdr: float | GraphNode | tuple[GraphNode, str] = Field( + + hdr: float | OutputHandle[float] = connect_field( default=0, description="HDR improvement over the original image" ) - mask: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + mask: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="When provided, refines some section of the image. Must be the same size as the image", ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Seed" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Image to refine", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=20, description="Steps" - ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field(default=20, description="Steps") + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Prompt for the model" ) scheduler: nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Scheduler = ( Field( - default=nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Scheduler.DDIM, + default=nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Scheduler( + "DDIM" + ), description="Choose a scheduler.", ) ) - creativity: float | GraphNode | tuple[GraphNode, str] = Field( + creativity: float | OutputHandle[float] = connect_field( default=0.25, description="Denoising strength. 1 means total destruction of the original image", ) - guess_mode: bool | GraphNode | tuple[GraphNode, str] = Field( + guess_mode: bool | OutputHandle[bool] = connect_field( default=False, description="In this mode, the ControlNet encoder will try best to recognize the content of the input image even if you remove all prompts. The `guidance_scale` between 3.0 and 5.0 is recommended.", ) resolution: nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Resolution = ( Field( - default=nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Resolution.ORIGINAL, + default=nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Resolution( + "original" + ), description="Image resolution", ) ) - resemblance: float | GraphNode | tuple[GraphNode, str] = Field( + resemblance: float | OutputHandle[float] = connect_field( default=0.75, description="Conditioning scale for controlnet" ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7, description="Scale for classifier-free guidance" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="teeth, tooth, open mouth, longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, mutant", description="Negative prompt", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.MagicImageRefiner + @classmethod def get_node_type(cls): - return "replicate.image.upscale.MagicImageRefiner" + return cls.get_node_class().get_node_type() -class RealEsrGan(GraphNode): - """Real-ESRGAN for image upscaling on an A100""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode + + +class RealEsrGan(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Real-ESRGAN for image upscaling on an A100 + """ - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - scale: float | GraphNode | tuple[GraphNode, str] = Field( + scale: float | OutputHandle[float] = connect_field( default=4, description="Factor to scale image by" ) - face_enhance: bool | GraphNode | tuple[GraphNode, str] = Field( + face_enhance: bool | OutputHandle[bool] = connect_field( default=False, description="Run GFPGAN face enhancement along with upscaling" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.RealEsrGan + @classmethod def get_node_type(cls): - return "replicate.image.upscale.RealEsrGan" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class Swin2SR(GraphNode): - """3 Million Runs! AI Photorealistic Image Super-Resolution and Restoration""" +class Swin2SR(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + 3 Million Runs! AI Photorealistic Image Super-Resolution and Restoration + """ Task: typing.ClassVar[type] = nodetool.nodes.replicate.image.upscale.Swin2SR.Task + task: nodetool.nodes.replicate.image.upscale.Swin2SR.Task = Field( - default=nodetool.nodes.replicate.image.upscale.Swin2SR.Task.REAL_SR, + default=nodetool.nodes.replicate.image.upscale.Swin2SR.Task("real_sr"), description="Choose a task", ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.Swin2SR + @classmethod def get_node_type(cls): - return "replicate.image.upscale.Swin2SR" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class SwinIR(GraphNode): - """Image Restoration Using Swin Transformer""" +class SwinIR(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Image Restoration Using Swin Transformer + """ Noise: typing.ClassVar[type] = nodetool.nodes.replicate.image.upscale.SwinIR.Noise Task_type: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.SwinIR.Task_type ) - jpeg: int | GraphNode | tuple[GraphNode, str] = Field( + + jpeg: int | OutputHandle[int] = connect_field( default=40, description="scale factor, activated for JPEG Compression Artifact Reduction. Leave it as default or arbitrary if other tasks are selected", ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="input image", ) noise: nodetool.nodes.replicate.image.upscale.SwinIR.Noise = Field( - default=nodetool.nodes.replicate.image.upscale.SwinIR.Noise._15, + default=nodetool.nodes.replicate.image.upscale.SwinIR.Noise(15), description="noise level, activated for Grayscale Image Denoising and Color Image Denoising. Leave it as default or arbitrary if other tasks are selected", ) task_type: nodetool.nodes.replicate.image.upscale.SwinIR.Task_type = Field( - default=nodetool.nodes.replicate.image.upscale.SwinIR.Task_type.REAL_WORLD_IMAGE_SUPER_RESOLUTION_LARGE, + default=nodetool.nodes.replicate.image.upscale.SwinIR.Task_type( + "Real-World Image Super-Resolution-Large" + ), description="Choose a task", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.SwinIR + @classmethod def get_node_type(cls): - return "replicate.image.upscale.SwinIR" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale -import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class UltimateSDUpscale(GraphNode): - """Ultimate SD Upscale with ControlNet Tile""" +class UltimateSDUpscale( + SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef] +): + """ + Ultimate SD Upscale with ControlNet Tile + """ Upscaler: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Upscaler @@ -400,114 +521,142 @@ class UltimateSDUpscale(GraphNode): Seam_fix_mode: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Seam_fix_mode ) - cfg: float | GraphNode | tuple[GraphNode, str] = Field(default=8, description="CFG") - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + cfg: float | OutputHandle[float] = connect_field(default=8, description="CFG") + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Sampling seed, leave Empty for Random" ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=20, description="Steps" - ) - denoise: float | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field(default=20, description="Steps") + denoise: float | OutputHandle[float] = connect_field( default=0.2, description="Denoise" ) upscaler: nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Upscaler = Field( - default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Upscaler._4X_ULTRASHARP, + default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Upscaler( + "4x-UltraSharp" + ), description="Upscaler", ) - mask_blur: int | GraphNode | tuple[GraphNode, str] = Field( + mask_blur: int | OutputHandle[int] = connect_field( default=8, description="Mask Blur" ) mode_type: nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Mode_type = ( Field( - default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Mode_type.LINEAR, + default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Mode_type( + "Linear" + ), description="Mode Type", ) ) scheduler: nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Scheduler = ( Field( - default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Scheduler.NORMAL, + default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Scheduler( + "normal" + ), description="Scheduler", ) ) - tile_width: int | GraphNode | tuple[GraphNode, str] = Field( + tile_width: int | OutputHandle[int] = connect_field( default=512, description="Tile Width" ) - upscale_by: float | GraphNode | tuple[GraphNode, str] = Field( + upscale_by: float | OutputHandle[float] = connect_field( default=2, description="Upscale By" ) - tile_height: int | GraphNode | tuple[GraphNode, str] = Field( + tile_height: int | OutputHandle[int] = connect_field( default=512, description="Tile Height" ) sampler_name: ( nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Sampler_name ) = Field( - default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Sampler_name.EULER, + default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Sampler_name( + "euler" + ), description="Sampler", ) - tile_padding: int | GraphNode | tuple[GraphNode, str] = Field( + tile_padding: int | OutputHandle[int] = connect_field( default=32, description="Tile Padding" ) seam_fix_mode: ( nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Seam_fix_mode ) = Field( - default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Seam_fix_mode.NONE, + default=nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Seam_fix_mode( + "None" + ), description="Seam Fix Mode", ) - seam_fix_width: int | GraphNode | tuple[GraphNode, str] = Field( + seam_fix_width: int | OutputHandle[int] = connect_field( default=64, description="Seam Fix Width" ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="", description="Negative Prompt" ) - positive_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + positive_prompt: str | OutputHandle[str] = connect_field( default="Hey! Have a nice day :D", description="Positive Prompt" ) - seam_fix_denoise: float | GraphNode | tuple[GraphNode, str] = Field( + seam_fix_denoise: float | OutputHandle[float] = connect_field( default=1, description="Seam Fix Denoise" ) - seam_fix_padding: int | GraphNode | tuple[GraphNode, str] = Field( + seam_fix_padding: int | OutputHandle[int] = connect_field( default=16, description="Seam Fix Padding" ) - seam_fix_mask_blur: int | GraphNode | tuple[GraphNode, str] = Field( + seam_fix_mask_blur: int | OutputHandle[int] = connect_field( default=8, description="Seam Fix Mask Blur" ) - controlnet_strength: float | GraphNode | tuple[GraphNode, str] = Field( + controlnet_strength: float | OutputHandle[float] = connect_field( default=1, description="ControlNet Strength" ) - force_uniform_tiles: bool | GraphNode | tuple[GraphNode, str] = Field( + force_uniform_tiles: bool | OutputHandle[bool] = connect_field( default=True, description="Force Uniform Tiles" ) - use_controlnet_tile: bool | GraphNode | tuple[GraphNode, str] = Field( + use_controlnet_tile: bool | OutputHandle[bool] = connect_field( default=True, description="Use ControlNet Tile" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.UltimateSDUpscale + @classmethod def get_node_type(cls): - return "replicate.image.upscale.UltimateSDUpscale" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.image.upscale +from nodetool.workflows.base_node import BaseNode -class ruDallE_SR(GraphNode): - """Real-ESRGAN super-resolution model from ruDALL-E""" +class ruDallE_SR(SingleOutputGraphNode[types.ImageRef], GraphNode[types.ImageRef]): + """ + Real-ESRGAN super-resolution model from ruDALL-E + """ Scale: typing.ClassVar[type] = ( nodetool.nodes.replicate.image.upscale.ruDallE_SR.Scale ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Input image", ) scale: nodetool.nodes.replicate.image.upscale.ruDallE_SR.Scale = Field( - default=nodetool.nodes.replicate.image.upscale.ruDallE_SR.Scale._4, + default=nodetool.nodes.replicate.image.upscale.ruDallE_SR.Scale(4), description="Choose up-scaling factor", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.image.upscale.ruDallE_SR + @classmethod def get_node_type(cls): - return "replicate.image.upscale.ruDallE_SR" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/text/generate.py b/src/nodetool/dsl/replicate/text/generate.py index dde98d3..d9bbbb2 100644 --- a/src/nodetool/dsl/replicate/text/generate.py +++ b/src/nodetool/dsl/replicate/text/generate.py @@ -1,321 +1,985 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode -class Claude_3_7_Sonnet(GraphNode): - """The most intelligent Claude model and the first hybrid reasoning model on the market (claude-3-7-sonnet-20250219)""" - image: str | None | GraphNode | tuple[GraphNode, str] = Field( +class Claude_3_7_Sonnet(SingleOutputGraphNode[str], GraphNode[str]): + """ + The most intelligent Claude model and the first hybrid reasoning model on the market (claude-3-7-sonnet-20250219) + """ + + image: str | OutputHandle[str] | None = connect_field( default=None, description="Optional input image. Images are priced as (width px * height px)/750 input tokens", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Input prompt" ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + max_tokens: int | OutputHandle[int] = connect_field( default=8192, description="Maximum number of output tokens" ) - system_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + system_prompt: str | OutputHandle[str] = connect_field( default="", description="System prompt" ) - max_image_resolution: float | GraphNode | tuple[GraphNode, str] = Field( + max_image_resolution: float | OutputHandle[float] = connect_field( default=0.5, description="Maximum image resolution in megapixels. Scales down image before sending it to Claude, to save time and money.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Claude_3_7_Sonnet + @classmethod def get_node_type(cls): - return "replicate.text.generate.Claude_3_7_Sonnet" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode -class Deepseek_R1(GraphNode): - """A reasoning model trained with reinforcement learning, on par with OpenAI o1""" +class Deepseek_R1(SingleOutputGraphNode[str], GraphNode[str]): + """ + A reasoning model trained with reinforcement learning, on par with OpenAI o1 + """ - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=1, description="Top-p (nucleus) sampling" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Prompt" + prompt: str | OutputHandle[str] = connect_field(default="", description="Prompt") + max_tokens: int | OutputHandle[int] = connect_field( + default=2048, + description="The maximum number of tokens the model should generate as output.", ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( - default=20480, + temperature: float | OutputHandle[float] = connect_field( + default=0.1, + description="The value used to modulate the next token probabilities.", + ) + presence_penalty: float | OutputHandle[float] = connect_field( + default=0, description="Presence penalty" + ) + frequency_penalty: float | OutputHandle[float] = connect_field( + default=0, description="Frequency penalty" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Deepseek_R1 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class Deepseek_V3_1(SingleOutputGraphNode[str], GraphNode[str]): + """ + Latest hybrid thinking model from Deepseek + """ + + Thinking: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.Deepseek_V3_1.Thinking + ) + + top_p: float | OutputHandle[float] = connect_field( + default=1, description="Top-p (nucleus) sampling" + ) + prompt: str | OutputHandle[str] = connect_field( + default="Why are you better than Deepseek v3?", description="Prompt" + ) + thinking: nodetool.nodes.replicate.text.generate.Deepseek_V3_1.Thinking = Field( + default=nodetool.nodes.replicate.text.generate.Deepseek_V3_1.Thinking("None"), + description="Reasoning effort level for DeepSeek models. Use 'medium' for enhanced reasoning or leave as None for default behavior.", + ) + max_tokens: int | OutputHandle[int] = connect_field( + default=1024, description="The maximum number of tokens the model should generate as output.", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=0.1, description="The value used to modulate the next token probabilities.", ) - presence_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + presence_penalty: float | OutputHandle[float] = connect_field( default=0, description="Presence penalty" ) - frequency_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + frequency_penalty: float | OutputHandle[float] = connect_field( default=0, description="Frequency penalty" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Deepseek_V3_1 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class GPT_4_1(SingleOutputGraphNode[str], GraphNode[str]): + """ + OpenAI's Flagship GPT model for complex tasks. + """ + + top_p: float | OutputHandle[float] = connect_field( + default=1, + description="Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="The prompt to send to the model. Do not use if using messages.", + ) + messages: list | OutputHandle[list] = connect_field( + default=[], + description='A JSON string representing a list of messages. For example: [{"role": "user", "content": "Hello, how are you?"}]. If provided, prompt and system_prompt are ignored.', + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], description="List of images to send to the model" + ) + temperature: float | OutputHandle[float] = connect_field( + default=1, description="Sampling temperature between 0 and 2" + ) + system_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="System prompt to set the assistant's behavior" + ) + presence_penalty: float | OutputHandle[float] = connect_field( + default=0, + description="Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", + ) + frequency_penalty: float | OutputHandle[float] = connect_field( + default=0, + description="Frequency penalty parameter - positive values penalize the repetition of tokens.", + ) + max_completion_tokens: int | OutputHandle[int] = connect_field( + default=4096, description="Maximum number of completion tokens to generate" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.GPT_4_1 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class GPT_4_1_Mini(SingleOutputGraphNode[str], GraphNode[str]): + """ + Fast, affordable version of GPT-4.1 + """ + + top_p: float | OutputHandle[float] = connect_field( + default=1, + description="Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="The prompt to send to the model. Do not use if using messages.", + ) + messages: list | OutputHandle[list] = connect_field( + default=[], + description='A JSON string representing a list of messages. For example: [{"role": "user", "content": "Hello, how are you?"}]. If provided, prompt and system_prompt are ignored.', + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], description="List of images to send to the model" + ) + temperature: float | OutputHandle[float] = connect_field( + default=1, description="Sampling temperature between 0 and 2" + ) + system_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="System prompt to set the assistant's behavior" + ) + presence_penalty: float | OutputHandle[float] = connect_field( + default=0, + description="Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", + ) + frequency_penalty: float | OutputHandle[float] = connect_field( + default=0, + description="Frequency penalty parameter - positive values penalize the repetition of tokens.", + ) + max_completion_tokens: int | OutputHandle[int] = connect_field( + default=4096, description="Maximum number of completion tokens to generate" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.GPT_4_1_Mini + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class GPT_4_1_Nano(SingleOutputGraphNode[str], GraphNode[str]): + """ + Fastest, most cost-effective GPT-4.1 model from OpenAI + """ + + top_p: float | OutputHandle[float] = connect_field( + default=1, + description="Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="The prompt to send to the model. Do not use if using messages.", + ) + messages: list | OutputHandle[list] = connect_field( + default=[], + description='A JSON string representing a list of messages. For example: [{"role": "user", "content": "Hello, how are you?"}]. If provided, prompt and system_prompt are ignored.', + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], description="List of images to send to the model" + ) + temperature: float | OutputHandle[float] = connect_field( + default=1, description="Sampling temperature between 0 and 2" + ) + system_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="System prompt to set the assistant's behavior" + ) + presence_penalty: float | OutputHandle[float] = connect_field( + default=0, + description="Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", + ) + frequency_penalty: float | OutputHandle[float] = connect_field( + default=0, + description="Frequency penalty parameter - positive values penalize the repetition of tokens.", + ) + max_completion_tokens: int | OutputHandle[int] = connect_field( + default=4096, description="Maximum number of completion tokens to generate" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.GPT_4_1_Nano + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class GPT_5(SingleOutputGraphNode[str], GraphNode[str]): + """ + OpenAI's new model excelling at coding, writing, and reasoning. + """ + + Verbosity: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5.Verbosity + ) + Reasoning_effort: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5.Reasoning_effort + ) + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="The prompt to send to the model. Do not use if using messages.", + ) + messages: list | OutputHandle[list] = connect_field( + default=[], + description='A JSON string representing a list of messages. For example: [{"role": "user", "content": "Hello, how are you?"}]. If provided, prompt and system_prompt are ignored.', + ) + verbosity: nodetool.nodes.replicate.text.generate.GPT_5.Verbosity = Field( + default=nodetool.nodes.replicate.text.generate.GPT_5.Verbosity("medium"), + description="Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive.", + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], description="List of images to send to the model" + ) + system_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="System prompt to set the assistant's behavior" + ) + reasoning_effort: nodetool.nodes.replicate.text.generate.GPT_5.Reasoning_effort = ( + Field( + default=nodetool.nodes.replicate.text.generate.GPT_5.Reasoning_effort( + "minimal" + ), + description="Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + ) + max_completion_tokens: int | OutputHandle[int] | None = connect_field( + default=None, + description="Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.GPT_5 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class GPT_5_Mini(SingleOutputGraphNode[str], GraphNode[str]): + """ + Faster version of OpenAI's flagship GPT-5 model + """ + + Verbosity: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5_Mini.Verbosity + ) + Reasoning_effort: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5_Mini.Reasoning_effort + ) + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="The prompt to send to the model. Do not use if using messages.", + ) + messages: list | OutputHandle[list] = connect_field( + default=[], + description='A JSON string representing a list of messages. For example: [{"role": "user", "content": "Hello, how are you?"}]. If provided, prompt and system_prompt are ignored.', + ) + verbosity: nodetool.nodes.replicate.text.generate.GPT_5_Mini.Verbosity = Field( + default=nodetool.nodes.replicate.text.generate.GPT_5_Mini.Verbosity("medium"), + description="Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive.", + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], description="List of images to send to the model" + ) + system_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="System prompt to set the assistant's behavior" + ) + reasoning_effort: ( + nodetool.nodes.replicate.text.generate.GPT_5_Mini.Reasoning_effort + ) = Field( + default=nodetool.nodes.replicate.text.generate.GPT_5_Mini.Reasoning_effort( + "minimal" + ), + description="Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + max_completion_tokens: int | OutputHandle[int] | None = connect_field( + default=None, + description="Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.GPT_5_Mini + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class GPT_5_Nano(SingleOutputGraphNode[str], GraphNode[str]): + """ + Fastest, most cost-effective GPT-5 model from OpenAI + """ + + Verbosity: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5_Nano.Verbosity + ) + Reasoning_effort: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5_Nano.Reasoning_effort + ) + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="The prompt to send to the model. Do not use if using messages.", + ) + messages: list | OutputHandle[list] = connect_field( + default=[], + description='A JSON string representing a list of messages. For example: [{"role": "user", "content": "Hello, how are you?"}]. If provided, prompt and system_prompt are ignored.', + ) + verbosity: nodetool.nodes.replicate.text.generate.GPT_5_Nano.Verbosity = Field( + default=nodetool.nodes.replicate.text.generate.GPT_5_Nano.Verbosity("medium"), + description="Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive.", + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], description="List of images to send to the model" + ) + system_prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="System prompt to set the assistant's behavior" + ) + reasoning_effort: ( + nodetool.nodes.replicate.text.generate.GPT_5_Nano.Reasoning_effort + ) = Field( + default=nodetool.nodes.replicate.text.generate.GPT_5_Nano.Reasoning_effort( + "minimal" + ), + description="Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + max_completion_tokens: int | OutputHandle[int] | None = connect_field( + default=None, + description="Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.GPT_5_Nano + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class GPT_5_Structured(SingleOutputGraphNode[str], GraphNode[str]): + """ + GPT-5 with support for structured outputs, web search and custom tools + """ + + Model: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5_Structured.Model + ) + Verbosity: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5_Structured.Verbosity + ) + Reasoning_effort: typing.ClassVar[type] = ( + nodetool.nodes.replicate.text.generate.GPT_5_Structured.Reasoning_effort + ) + + model: nodetool.nodes.replicate.text.generate.GPT_5_Structured.Model = Field( + default=nodetool.nodes.replicate.text.generate.GPT_5_Structured.Model("gpt-5"), + description="GPT-5 model to use.", + ) + tools: list | OutputHandle[list] = connect_field( + default=[], + description="Tools to make available to the model. Should be a JSON object containing a list of tool definitions.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, + description="A simple text input to the model, equivalent to a text input with the user role. Ignored if input_item_list is provided.", + ) + verbosity: nodetool.nodes.replicate.text.generate.GPT_5_Structured.Verbosity = ( + Field( + default=nodetool.nodes.replicate.text.generate.GPT_5_Structured.Verbosity( + "medium" + ), + description="Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive.", + ) + ) + image_input: list | OutputHandle[list] = connect_field( + default=[], description="List of images to send to the model" + ) + json_schema: dict | OutputHandle[dict] = connect_field( + default={}, + description="A JSON schema that the response must conform to. For simple data structures we recommend using `simple_text_format_schema` which will be converted to a JSON schema for you.", + ) + instructions: str | OutputHandle[str] | None = connect_field( + default=None, + description="A system (or developer) message inserted into the model's context. When using along with previous_response_id, the instructions from a previous response will not be carried over to the next response. This makes it simple to swap out system (or developer) messages in new responses.", + ) + simple_schema: list | OutputHandle[list] = connect_field( + default=[], + description="Create a JSON schema for the output to conform to. The schema will be created from a simple list of field specifications. Strings: 'thing' (defaults to string), 'thing:str', 'thing:string'. Booleans: 'is_a_thing:bool' or 'is_a_thing:boolean'. Numbers: 'count:number', 'count:int'. Lists: 'things:list' (defaults to list of strings), 'things:list:str', 'number_things:list:number', etc. Nested objects are not supported, use `json_schema` instead.", + ) + input_item_list: list | OutputHandle[list] = connect_field( + default=[], + description="A list of one or many input items to the model, containing different content types. This parameter corresponds with the `input` OpenAI API parameter. For more details see: https://platform.openai.com/docs/api-reference/responses/create#responses_create-input. Similar to the `messages` parameter, but with more flexibility in the content types.", + ) + reasoning_effort: ( + nodetool.nodes.replicate.text.generate.GPT_5_Structured.Reasoning_effort + ) = Field( + default=nodetool.nodes.replicate.text.generate.GPT_5_Structured.Reasoning_effort( + "minimal" + ), + description="Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + enable_web_search: bool | OutputHandle[bool] = connect_field( + default=False, description="Allow GPT-5 to use web search for the response." + ) + max_output_tokens: int | OutputHandle[int] | None = connect_field( + default=None, + description="Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning).", + ) + previous_response_id: str | OutputHandle[str] | None = connect_field( + default=None, description="The ID of a previous response to continue from." + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.GPT_5_Structured + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class Gemini_3_Pro(SingleOutputGraphNode[str], GraphNode[str]): + """ + Google's most advanced reasoning Gemini model + """ + + audio: str | OutputHandle[str] | None = connect_field( + default=None, + description="Input audio to send with the prompt (max 1 audio file, up to 8.4 hours)", + ) + top_p: float | OutputHandle[float] = connect_field( + default=0.95, + description="Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass", + ) + images: list | OutputHandle[list] = connect_field( + default=[], + description="Input images to send with the prompt (max 10 images, each up to 7MB)", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="The text prompt to send to the model" + ) + videos: list | OutputHandle[list] = connect_field( + default=[], + description="Input videos to send with the prompt (max 10 videos, each up to 45 minutes)", + ) + temperature: float | OutputHandle[float] = connect_field( + default=1, description="Sampling temperature between 0 and 2" + ) + thinking_level: ( + nodetool.nodes.replicate.text.generate.Gemini_3_Pro.Thinking_level + | OutputHandle[ + nodetool.nodes.replicate.text.generate.Gemini_3_Pro.Thinking_level + ] + | None + ) = connect_field( + default=None, + description="Thinking level for reasoning (low or high). Replaces thinking_budget for Gemini 3 models.", + ) + max_output_tokens: int | OutputHandle[int] = connect_field( + default=65535, description="Maximum number of tokens to generate" + ) + system_instruction: str | OutputHandle[str] | None = connect_field( + default=None, description="System instruction to guide the model's behavior" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Gemini_3_Pro + @classmethod def get_node_type(cls): - return "replicate.text.generate.Deepseek_R1" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode -class Llama3_1_405B_Instruct(GraphNode): - """Meta's flagship 405 billion parameter language model, fine-tuned for chat completions""" +class Llama3_1_405B_Instruct(SingleOutputGraphNode[str], GraphNode[str]): + """ + Meta's flagship 405 billion parameter language model, fine-tuned for chat completions + """ - top_k: int | GraphNode | tuple[GraphNode, str] = Field( + top_k: int | OutputHandle[int] = connect_field( default=50, description="The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering).", ) - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=0.9, description="A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751).", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Prompt" - ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field(default="", description="Prompt") + max_tokens: int | OutputHandle[int] = connect_field( default=512, description="The maximum number of tokens the model should generate as output.", ) - min_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + min_tokens: int | OutputHandle[int] = connect_field( default=0, description="The minimum number of tokens the model should generate as output.", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=0.6, description="The value used to modulate the next token probabilities.", ) - system_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + system_prompt: str | OutputHandle[str] = connect_field( default="You are a helpful assistant.", description="System prompt to send to the model. This is prepended to the prompt and helps guide system behavior. Ignored for non-chat models.", ) - stop_sequences: str | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, + stop_sequences: str | OutputHandle[str] = connect_field( + default="", description="A comma-separated list of sequences to stop generation at. For example, ',' will stop generation at the first instance of 'end' or ''.", ) - presence_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + prompt_template: str | OutputHandle[str] = connect_field( + default="", + description="A template to format the prompt with. If not provided, the default prompt template will be used.", + ) + presence_penalty: float | OutputHandle[float] = connect_field( default=0, description="Presence penalty" ) - frequency_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + frequency_penalty: float | OutputHandle[float] = connect_field( default=0, description="Frequency penalty" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Llama3_1_405B_Instruct + @classmethod def get_node_type(cls): - return "replicate.text.generate.Llama3_1_405B_Instruct" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode -class Llama3_70B(GraphNode): - """Base version of Llama 3, a 70 billion parameter language model from Meta.""" +class Llama3_70B(SingleOutputGraphNode[str], GraphNode[str]): + """ + Base version of Llama 3, a 70 billion parameter language model from Meta. + """ - top_k: int | GraphNode | tuple[GraphNode, str] = Field( + top_k: int | OutputHandle[int] = connect_field( default=50, description="The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering).", ) - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=0.9, description="A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751).", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Prompt" - ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field(default="", description="Prompt") + max_tokens: int | OutputHandle[int] = connect_field( default=512, description="The maximum number of tokens the model should generate as output.", ) - min_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + min_tokens: int | OutputHandle[int] = connect_field( default=0, description="The minimum number of tokens the model should generate as output.", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=0.6, description="The value used to modulate the next token probabilities.", ) - prompt_template: str | GraphNode | tuple[GraphNode, str] = Field( + prompt_template: str | OutputHandle[str] = connect_field( default="{prompt}", description="Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`.", ) - presence_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + presence_penalty: float | OutputHandle[float] = connect_field( default=1.15, description="Presence penalty" ) - frequency_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + frequency_penalty: float | OutputHandle[float] = connect_field( default=0.2, description="Frequency penalty" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Llama3_70B + @classmethod def get_node_type(cls): - return "replicate.text.generate.Llama3_70B" + return cls.get_node_class().get_node_type() -class Llama3_70B_Instruct(GraphNode): - """A 70 billion parameter language model from Meta, fine tuned for chat completions""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode - top_k: int | GraphNode | tuple[GraphNode, str] = Field( + +class Llama3_70B_Instruct(SingleOutputGraphNode[str], GraphNode[str]): + """ + A 70 billion parameter language model from Meta, fine tuned for chat completions + """ + + top_k: int | OutputHandle[int] = connect_field( default=50, description="The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering).", ) - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=0.9, description="A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751).", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Prompt" - ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field(default="", description="Prompt") + max_tokens: int | OutputHandle[int] = connect_field( default=512, description="The maximum number of tokens the model should generate as output.", ) - min_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + min_tokens: int | OutputHandle[int] = connect_field( default=0, description="The minimum number of tokens the model should generate as output.", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=0.6, description="The value used to modulate the next token probabilities.", ) - prompt_template: str | GraphNode | tuple[GraphNode, str] = Field( + prompt_template: str | OutputHandle[str] = connect_field( default="{prompt}", description="Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`.", ) - presence_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + presence_penalty: float | OutputHandle[float] = connect_field( default=1.15, description="Presence penalty" ) - frequency_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + frequency_penalty: float | OutputHandle[float] = connect_field( default=0.2, description="Frequency penalty" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Llama3_70B_Instruct + @classmethod def get_node_type(cls): - return "replicate.text.generate.Llama3_70B_Instruct" + return cls.get_node_class().get_node_type() -class Llama3_8B(GraphNode): - """Base version of Llama 3, an 8 billion parameter language model from Meta.""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + - top_k: int | GraphNode | tuple[GraphNode, str] = Field( +class Llama3_8B(SingleOutputGraphNode[str], GraphNode[str]): + """ + Base version of Llama 3, an 8 billion parameter language model from Meta. + """ + + top_k: int | OutputHandle[int] = connect_field( default=50, description="The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering).", ) - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=0.9, description="A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751).", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Prompt" - ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field(default="", description="Prompt") + max_tokens: int | OutputHandle[int] = connect_field( default=512, description="The maximum number of tokens the model should generate as output.", ) - min_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + min_tokens: int | OutputHandle[int] = connect_field( default=0, description="The minimum number of tokens the model should generate as output.", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=0.6, description="The value used to modulate the next token probabilities.", ) - prompt_template: str | GraphNode | tuple[GraphNode, str] = Field( + prompt_template: str | OutputHandle[str] = connect_field( default="{prompt}", description="Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`.", ) - presence_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + presence_penalty: float | OutputHandle[float] = connect_field( default=1.15, description="Presence penalty" ) - frequency_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + frequency_penalty: float | OutputHandle[float] = connect_field( default=0.2, description="Frequency penalty" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Llama3_8B + @classmethod def get_node_type(cls): - return "replicate.text.generate.Llama3_8B" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode -class Llama3_8B_Instruct(GraphNode): - """An 8 billion parameter language model from Meta, fine tuned for chat completions""" +class Llama3_8B_Instruct(SingleOutputGraphNode[str], GraphNode[str]): + """ + An 8 billion parameter language model from Meta, fine tuned for chat completions + """ - top_k: int | GraphNode | tuple[GraphNode, str] = Field( + top_k: int | OutputHandle[int] = connect_field( default=50, description="The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering).", ) - top_p: float | GraphNode | tuple[GraphNode, str] = Field( + top_p: float | OutputHandle[float] = connect_field( default=0.9, description="A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751).", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( - default="", description="Prompt" - ) - max_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field(default="", description="Prompt") + max_tokens: int | OutputHandle[int] = connect_field( default=512, description="The maximum number of tokens the model should generate as output.", ) - min_tokens: int | GraphNode | tuple[GraphNode, str] = Field( + min_tokens: int | OutputHandle[int] = connect_field( default=0, description="The minimum number of tokens the model should generate as output.", ) - temperature: float | GraphNode | tuple[GraphNode, str] = Field( + temperature: float | OutputHandle[float] = connect_field( default=0.6, description="The value used to modulate the next token probabilities.", ) - prompt_template: str | GraphNode | tuple[GraphNode, str] = Field( + prompt_template: str | OutputHandle[str] = connect_field( default="{prompt}", description="Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`.", ) - presence_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + presence_penalty: float | OutputHandle[float] = connect_field( default=1.15, description="Presence penalty" ) - frequency_penalty: float | GraphNode | tuple[GraphNode, str] = Field( + frequency_penalty: float | OutputHandle[float] = connect_field( default=0.2, description="Frequency penalty" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Llama3_8B_Instruct + @classmethod def get_node_type(cls): - return "replicate.text.generate.Llama3_8B_Instruct" + return cls.get_node_class().get_node_type() -class LlamaGuard_3_11B_Vision(GraphNode): - """A Llama-3.2-11B pretrained model, fine-tuned for content safety classification""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + + +class LlamaGuard_3_11B_Vision(SingleOutputGraphNode[str], GraphNode[str]): + """ + A Llama-3.2-11B pretrained model, fine-tuned for content safety classification + """ - image: str | None | GraphNode | tuple[GraphNode, str] = Field( + image: str | OutputHandle[str] | None = connect_field( default=None, description="Image to moderate" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="Which one should I buy?", description="User message to moderate" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.LlamaGuard_3_11B_Vision + @classmethod def get_node_type(cls): - return "replicate.text.generate.LlamaGuard_3_11B_Vision" + return cls.get_node_class().get_node_type() -class LlamaGuard_3_8B(GraphNode): - """A Llama-3.1-8B pretrained model, fine-tuned for content safety classification""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode + - prompt: str | GraphNode | tuple[GraphNode, str] = Field( +class LlamaGuard_3_8B(SingleOutputGraphNode[str], GraphNode[str]): + """ + A Llama-3.1-8B pretrained model, fine-tuned for content safety classification + """ + + prompt: str | OutputHandle[str] = connect_field( default="I forgot how to kill a process in Linux, can you help?", description="User message to moderate", ) - assistant: str | None | GraphNode | tuple[GraphNode, str] = Field( + assistant: str | OutputHandle[str] | None = connect_field( default=None, description="Assistant response to classify" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.LlamaGuard_3_8B + @classmethod def get_node_type(cls): - return "replicate.text.generate.LlamaGuard_3_8B" + return cls.get_node_class().get_node_type() -class Snowflake_Arctic_Instruct(GraphNode): - """An efficient, intelligent, and truly open-source language model""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.text.generate +from nodetool.workflows.base_node import BaseNode - name: str | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description=None - ) - name_file: str | None | GraphNode | tuple[GraphNode, str] = Field( + +class Snowflake_Arctic_Instruct(SingleOutputGraphNode[str], GraphNode[str]): + """ + An efficient, intelligent, and truly open-source language model + """ + + name: str | OutputHandle[str] | None = connect_field(default=None, description=None) + name_file: str | OutputHandle[str] | None = connect_field( default=None, description=None ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.text.generate.Snowflake_Arctic_Instruct + @classmethod def get_node_type(cls): - return "replicate.text.generate.Snowflake_Arctic_Instruct" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/video/enhance.py b/src/nodetool/dsl/replicate/video/enhance.py new file mode 100644 index 0000000..c246cc5 --- /dev/null +++ b/src/nodetool/dsl/replicate/video/enhance.py @@ -0,0 +1,99 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + +from pydantic import BaseModel, Field +import typing +from typing import Any +import nodetool.metadata.types +import nodetool.metadata.types as types +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.enhance +from nodetool.workflows.base_node import BaseNode + + +class Runway_Upscale_V1( + SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef] +): + """ + Upscale videos by 4x, up to a maximum of 4k + """ + + video: types.VideoRef | OutputHandle[types.VideoRef] = connect_field( + default=types.VideoRef( + type="video", + uri="", + asset_id=None, + data=None, + metadata=None, + duration=None, + format=None, + ), + description="Video to upscale. Videos must be shorter than 40s, less than 4096px per side, and less than 16MB.", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.enhance.Runway_Upscale_V1 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.enhance +from nodetool.workflows.base_node import BaseNode + + +class Topaz_Video_Upscale( + SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef] +): + """ + Video Upscaling from Topaz Labs + """ + + Target_resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.enhance.Topaz_Video_Upscale.Target_resolution + ) + + video: types.VideoRef | OutputHandle[types.VideoRef] = connect_field( + default=types.VideoRef( + type="video", + uri="", + asset_id=None, + data=None, + metadata=None, + duration=None, + format=None, + ), + description="Video file to upscale", + ) + target_fps: int | OutputHandle[int] = connect_field( + default=60, description="Target FPS (choose from 15fps to 120fps)" + ) + target_resolution: ( + nodetool.nodes.replicate.video.enhance.Topaz_Video_Upscale.Target_resolution + ) = Field( + default=nodetool.nodes.replicate.video.enhance.Topaz_Video_Upscale.Target_resolution( + "1080p" + ), + description="Target resolution", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.enhance.Topaz_Video_Upscale + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/dsl/replicate/video/generate.py b/src/nodetool/dsl/replicate/video/generate.py index 75a778d..fb66568 100644 --- a/src/nodetool/dsl/replicate/video/generate.py +++ b/src/nodetool/dsl/replicate/video/generate.py @@ -1,50 +1,224 @@ +# This file is auto-generated by nodetool.dsl.codegen. +# Please do not edit this file manually. + +# Instead, edit the node class in the source module and run the following commands to regenerate the DSL: +# nodetool package scan +# nodetool codegen + from pydantic import BaseModel, Field import typing from typing import Any import nodetool.metadata.types import nodetool.metadata.types as types -from nodetool.dsl.graph import GraphNode +from nodetool.dsl.graph import GraphNode, SingleOutputGraphNode + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class AudioToWaveform(GraphNode): - """Create a waveform video from audio""" +class AudioToWaveform(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Create a waveform video from audio + """ - audio: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + audio: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Audio file to create waveform from", ) - bg_color: str | GraphNode | tuple[GraphNode, str] = Field( + bg_color: str | OutputHandle[str] = connect_field( default="#000000", description="Background color of waveform" ) - fg_alpha: float | GraphNode | tuple[GraphNode, str] = Field( + fg_alpha: float | OutputHandle[float] = connect_field( default=0.75, description="Opacity of foreground waveform" ) - bar_count: int | GraphNode | tuple[GraphNode, str] = Field( + bar_count: int | OutputHandle[int] = connect_field( default=100, description="Number of bars in waveform" ) - bar_width: float | GraphNode | tuple[GraphNode, str] = Field( + bar_width: float | OutputHandle[float] = connect_field( default=0.4, description="Width of bars in waveform. 1 represents full width, 0.5 represents half width, etc.", ) - bars_color: str | GraphNode | tuple[GraphNode, str] = Field( + bars_color: str | OutputHandle[str] = connect_field( default="#ffffff", description="Color of waveform bars" ) - caption_text: str | GraphNode | tuple[GraphNode, str] = Field( + caption_text: str | OutputHandle[str] = connect_field( default="", description="Caption text for the video" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.AudioToWaveform + @classmethod def get_node_type(cls): - return "replicate.video.generate.AudioToWaveform" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Gen4_Aleph(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + A new way to edit, transform and generate video + """ + + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Gen4_Aleph.Aspect_ratio + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + video: str | OutputHandle[str] | None = connect_field( + default=None, + description="Input video to generate from. Videos must be less than 16MB. Only 5s of the input video will be used.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for video generation" + ) + aspect_ratio: nodetool.nodes.replicate.video.generate.Gen4_Aleph.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.video.generate.Gen4_Aleph.Aspect_ratio( + "16:9" + ), + description="Video aspect ratio", + ) + ) + reference_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="Reference image to influence the style or content of the output.", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Gen4_Aleph + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Gen4_Turbo(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Generate 5s and 10s 720p videos fast + """ + + Duration: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Gen4_Turbo.Duration + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Gen4_Turbo.Aspect_ratio + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + image: str | OutputHandle[str] | None = connect_field( + default=None, description="Initial image for video generation (first frame)" + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for video generation" + ) + duration: nodetool.nodes.replicate.video.generate.Gen4_Turbo.Duration = Field( + default=nodetool.nodes.replicate.video.generate.Gen4_Turbo.Duration(5), + description="Duration of the output video in seconds", + ) + aspect_ratio: nodetool.nodes.replicate.video.generate.Gen4_Turbo.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.video.generate.Gen4_Turbo.Aspect_ratio( + "16:9" + ), + description="Video aspect ratio", + ) + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Gen4_Turbo + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Hailuo_02(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Hailuo 2 is a text-to-video and image-to-video model that can make 6s or 10s videos at 768p (standard) or 1080p (pro). It excels at real world physics. + """ + + Duration: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Hailuo_02.Duration + ) + Resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Hailuo_02.Resolution + ) + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for generation" + ) + duration: nodetool.nodes.replicate.video.generate.Hailuo_02.Duration = Field( + default=nodetool.nodes.replicate.video.generate.Hailuo_02.Duration(6), + description="Duration of the video in seconds. 10 seconds is only available for 768p resolution.", + ) + resolution: nodetool.nodes.replicate.video.generate.Hailuo_02.Resolution = Field( + default=nodetool.nodes.replicate.video.generate.Hailuo_02.Resolution("1080p"), + description="Pick between standard 512p, 768p, or pro 1080p resolution. The pro model is not just high resolution, it is also higher quality.", + ) + last_frame_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="Last frame image for video generation. The final frame of the output video will match this image.", + ) + prompt_optimizer: bool | OutputHandle[bool] = connect_field( + default=True, description="Use prompt optimizer" + ) + first_frame_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="First frame image for video generation. The output video will have the same aspect ratio as this image.", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Hailuo_02 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class HotshotXL(GraphNode): - """😊 Hotshot-XL is an AI text-to-GIF model trained to work alongside Stable Diffusion XL""" +class HotshotXL(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + 😊 Hotshot-XL is an AI text-to-GIF model trained to work alongside Stable Diffusion XL + """ Width: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.HotshotXL.Width @@ -55,85 +229,209 @@ class HotshotXL(GraphNode): Scheduler: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.HotshotXL.Scheduler ) - mp4: bool | GraphNode | tuple[GraphNode, str] = Field( + + mp4: bool | OutputHandle[bool] = connect_field( default=False, description="Save as mp4, False for GIF" ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field( default=30, description="Number of denoising steps" ) width: nodetool.nodes.replicate.video.generate.HotshotXL.Width = Field( - default=nodetool.nodes.replicate.video.generate.HotshotXL.Width._672, + default=nodetool.nodes.replicate.video.generate.HotshotXL.Width(672), description="Width of the output", ) height: nodetool.nodes.replicate.video.generate.HotshotXL.Height = Field( - default=nodetool.nodes.replicate.video.generate.HotshotXL.Height._384, + default=nodetool.nodes.replicate.video.generate.HotshotXL.Height(384), description="Height of the output", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="a camel smoking a cigarette, hd, high quality", description="Input prompt", ) scheduler: nodetool.nodes.replicate.video.generate.HotshotXL.Scheduler = Field( - default=nodetool.nodes.replicate.video.generate.HotshotXL.Scheduler.EULERANCESTRALDISCRETESCHEDULER, + default=nodetool.nodes.replicate.video.generate.HotshotXL.Scheduler( + "EulerAncestralDiscreteScheduler" + ), description="Select a Scheduler", ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="blurry", description="Negative prompt" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.HotshotXL + @classmethod def get_node_type(cls): - return "replicate.video.generate.HotshotXL" + return cls.get_node_class().get_node_type() -class Hunyuan_Video(GraphNode): - """A state-of-the-art text-to-video generation model capable of creating high-quality videos with realistic motion from text descriptions""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Hunyuan_Video(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + A state-of-the-art text-to-video generation model capable of creating high-quality videos with realistic motion from text descriptions + """ - fps: int | GraphNode | tuple[GraphNode, str] = Field( + fps: int | OutputHandle[int] = connect_field( default=24, description="Frames per second of the output video" ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed (leave empty for random)" ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=864, description="Width of the video in pixels (must be divisible by 16)", ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=480, description="Height of the video in pixels (must be divisible by 16)", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="A cat walks on the grass, realistic style", description="The prompt to guide the video generation", ) - infer_steps: int | GraphNode | tuple[GraphNode, str] = Field( + infer_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) - video_length: int | GraphNode | tuple[GraphNode, str] = Field( + video_length: int | OutputHandle[int] = connect_field( default=129, description="Number of frames to generate (must be 4k+1, ex: 49 or 129)", ) - embedded_guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + embedded_guidance_scale: float | OutputHandle[float] = connect_field( default=6, description="Guidance scale" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Hunyuan_Video + @classmethod def get_node_type(cls): - return "replicate.video.generate.Hunyuan_Video" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Kling_Lip_Sync(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Add lip-sync to any video with an audio file or text + """ + + Voice_id: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Kling_Lip_Sync.Voice_id + ) + + text: str | OutputHandle[str] | None = connect_field( + default=None, description="Text content for lip sync (if not using audio)" + ) + video_id: str | OutputHandle[str] | None = connect_field( + default=None, + description="ID of a video generated by Kling. Cannot be used with video_url.", + ) + voice_id: nodetool.nodes.replicate.video.generate.Kling_Lip_Sync.Voice_id = Field( + default=nodetool.nodes.replicate.video.generate.Kling_Lip_Sync.Voice_id( + "en_AOT" + ), + description="Voice ID for speech synthesis (if using text and not audio)", + ) + video_url: str | OutputHandle[str] | None = connect_field( + default=None, + description="URL of a video for lip syncing. It can be an .mp4 or .mov file, should be less than 100MB, with a duration of 2-10 seconds, and a resolution of 720p-1080p (720-1920px dimensions). Cannot be used with video_id.", + ) + audio_file: str | OutputHandle[str] | None = connect_field( + default=None, + description="Audio file for lip sync. Must be .mp3, .wav, .m4a, or .aac and less than 5MB.", + ) + voice_speed: float | OutputHandle[float] = connect_field( + default=1, description="Speech rate (only used if using text and not audio)" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Kling_Lip_Sync + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Kling_V2_1(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Use Kling v2.1 to generate 5s and 10s videos in 720p and 1080p resolution from a starting image (image-to-video) + """ + + Mode: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Kling_V2_1.Mode + ) + Duration: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Kling_V2_1.Duration + ) + + mode: nodetool.nodes.replicate.video.generate.Kling_V2_1.Mode = Field( + default=nodetool.nodes.replicate.video.generate.Kling_V2_1.Mode("standard"), + description="Standard has a resolution of 720p, pro is 1080p. Both are 24fps.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for video generation" + ) + duration: nodetool.nodes.replicate.video.generate.Kling_V2_1.Duration = Field( + default=nodetool.nodes.replicate.video.generate.Kling_V2_1.Duration(5), + description="Duration of the video in seconds", + ) + end_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="Last frame of the video (pro mode is required when this parameter is set)", + ) + start_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="First frame of the video. You must use a start image with kling-v2.1.", + ) + negative_prompt: str | OutputHandle[str] = connect_field( + default="", description="Things you do not want to see in the video" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Kling_V2_1 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate -import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class LTX_Video(GraphNode): - """LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched.""" +class LTX_Video(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. + """ Model: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.LTX_Video.Model @@ -147,60 +445,184 @@ class LTX_Video(GraphNode): Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.LTX_Video.Aspect_ratio ) - cfg: float | GraphNode | tuple[GraphNode, str] = Field( + + cfg: float | OutputHandle[float] = connect_field( default=3, description="How strongly the video follows the prompt" ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Set a seed for reproducibility. Random by default." ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="Optional input image to use as the starting frame", ) model: nodetool.nodes.replicate.video.generate.LTX_Video.Model = Field( - default=nodetool.nodes.replicate.video.generate.LTX_Video.Model._0_9_1, + default=nodetool.nodes.replicate.video.generate.LTX_Video.Model("0.9.1"), description="Model version to use", ) - steps: int | GraphNode | tuple[GraphNode, str] = Field( + steps: int | OutputHandle[int] = connect_field( default=30, description="Number of steps" ) length: nodetool.nodes.replicate.video.generate.LTX_Video.Length = Field( - default=nodetool.nodes.replicate.video.generate.LTX_Video.Length._97, + default=nodetool.nodes.replicate.video.generate.LTX_Video.Length(97), description="Length of the output video in frames", ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="best quality, 4k, HDR, a tracking shot of a beautiful scene", description="Text prompt for the video. This model needs long descriptive prompts, if the prompt is too short the quality won't be good.", ) target_size: nodetool.nodes.replicate.video.generate.LTX_Video.Target_size = Field( - default=nodetool.nodes.replicate.video.generate.LTX_Video.Target_size._640, + default=nodetool.nodes.replicate.video.generate.LTX_Video.Target_size(640), description="Target size for the output video", ) aspect_ratio: nodetool.nodes.replicate.video.generate.LTX_Video.Aspect_ratio = ( Field( - default=nodetool.nodes.replicate.video.generate.LTX_Video.Aspect_ratio._3_2, + default=nodetool.nodes.replicate.video.generate.LTX_Video.Aspect_ratio( + "3:2" + ), description="Aspect ratio of the output video. Ignored if an image is provided.", ) ) - negative_prompt: str | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] = connect_field( default="low quality, worst quality, deformed, distorted", description="Things you do not want to see in your video", ) - image_noise_scale: float | GraphNode | tuple[GraphNode, str] = Field( + image_noise_scale: float | OutputHandle[float] = connect_field( default=0.15, description="Lower numbers stick more closely to the input image" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.LTX_Video + @classmethod def get_node_type(cls): - return "replicate.video.generate.LTX_Video" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Lipsync_2(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Generate realistic lipsyncs with Sync Labs' 2.0 model + """ + + Sync_mode: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Lipsync_2.Sync_mode + ) + + audio: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), + description="Input audio file (.wav)", + ) + video: types.VideoRef | OutputHandle[types.VideoRef] = connect_field( + default=types.VideoRef( + type="video", + uri="", + asset_id=None, + data=None, + metadata=None, + duration=None, + format=None, + ), + description="Input video file (.mp4)", + ) + sync_mode: nodetool.nodes.replicate.video.generate.Lipsync_2.Sync_mode = Field( + default=nodetool.nodes.replicate.video.generate.Lipsync_2.Sync_mode("loop"), + description="Lipsync mode when audio and video durations are out of sync", + ) + temperature: float | OutputHandle[float] = connect_field( + default=0.5, description="How expressive lipsync can be (0-1)" + ) + active_speaker: bool | OutputHandle[bool] = connect_field( + default=False, + description="Whether to detect active speaker (i.e. whoever is speaking in the clip will be used for lipsync)", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Lipsync_2 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + +class Lipsync_2_Pro(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Studio-grade lipsync in minutes, not weeks + """ -class Music_01(GraphNode): - """Quickly generate up to 1 minute of music with lyrics and vocals in the style of a reference track""" + Sync_mode: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Lipsync_2_Pro.Sync_mode + ) + + audio: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), + description="Input audio file (.wav)", + ) + video: types.VideoRef | OutputHandle[types.VideoRef] = connect_field( + default=types.VideoRef( + type="video", + uri="", + asset_id=None, + data=None, + metadata=None, + duration=None, + format=None, + ), + description="Input video file (.mp4)", + ) + sync_mode: nodetool.nodes.replicate.video.generate.Lipsync_2_Pro.Sync_mode = Field( + default=nodetool.nodes.replicate.video.generate.Lipsync_2_Pro.Sync_mode("loop"), + description="Lipsync mode when audio and video durations are out of sync", + ) + temperature: float | OutputHandle[float] = connect_field( + default=0.5, description="How expressive lipsync can be (0-1)" + ) + active_speaker: bool | OutputHandle[bool] = connect_field( + default=False, + description="Whether to detect active speaker (i.e. whoever is speaking in the clip will be used for lipsync)", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Lipsync_2_Pro + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Music_01(SingleOutputGraphNode[types.AudioRef], GraphNode[types.AudioRef]): + """ + Quickly generate up to 1 minute of music with lyrics and vocals in the style of a reference track + """ Bitrate: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.Music_01.Bitrate @@ -208,158 +630,314 @@ class Music_01(GraphNode): Sample_rate: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.Music_01.Sample_rate ) - lyrics: str | GraphNode | tuple[GraphNode, str] = Field( + + lyrics: str | OutputHandle[str] = connect_field( default="", - description="Lyrics with optional formatting. You can use a newline to separate each line of lyrics. You can use two newlines to add a pause between lines. You can use double hash marks (##) at the beginning and end of the lyrics to add accompaniment.", + description="Lyrics with optional formatting. You can use a newline to separate each line of lyrics. You can use two newlines to add a pause between lines. You can use double hash marks (##) at the beginning and end of the lyrics to add accompaniment. Maximum 350 to 400 characters.", ) bitrate: nodetool.nodes.replicate.video.generate.Music_01.Bitrate = Field( - default=nodetool.nodes.replicate.video.generate.Music_01.Bitrate._256000, + default=nodetool.nodes.replicate.video.generate.Music_01.Bitrate(256000), description="Bitrate for the generated music", ) - voice_id: str | None | GraphNode | tuple[GraphNode, str] = Field( + voice_id: str | OutputHandle[str] | None = connect_field( default=None, description="Reuse a previously uploaded voice ID" ) - song_file: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + song_file: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Reference song, should contain music and vocals. Must be a .wav or .mp3 file longer than 15 seconds.", ) - voice_file: types.AudioRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.AudioRef(type="audio", uri="", asset_id=None, data=None), + voice_file: types.AudioRef | OutputHandle[types.AudioRef] = connect_field( + default=types.AudioRef( + type="audio", uri="", asset_id=None, data=None, metadata=None + ), description="Voice reference. Must be a .wav or .mp3 file longer than 15 seconds. If only a voice reference is given, an a cappella vocal hum will be generated.", ) sample_rate: nodetool.nodes.replicate.video.generate.Music_01.Sample_rate = Field( - default=nodetool.nodes.replicate.video.generate.Music_01.Sample_rate._44100, + default=nodetool.nodes.replicate.video.generate.Music_01.Sample_rate(44100), description="Sample rate for the generated music", ) - instrumental_id: str | None | GraphNode | tuple[GraphNode, str] = Field( + instrumental_id: str | OutputHandle[str] | None = connect_field( default=None, description="Reuse a previously uploaded instrumental ID" ) - instrumental_file: str | None | GraphNode | tuple[GraphNode, str] = Field( + instrumental_file: str | OutputHandle[str] | None = connect_field( default=None, description="Instrumental reference. Must be a .wav or .mp3 file longer than 15 seconds. If only an instrumental reference is given, a track without vocals will be generated.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Music_01 + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Pixverse_V5(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Create 5s-8s videos with enhanced character movement, visual effects, and exclusive 1080p-8s support. Optimized for anime characters and complex actions + """ + + Effect: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Pixverse_V5.Effect + ) + Quality: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Pixverse_V5.Quality + ) + Duration: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Pixverse_V5.Duration + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Pixverse_V5.Aspect_ratio + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" + ) + image: str | OutputHandle[str] | None = connect_field( + default=None, description="Image to use for the first frame of the video" + ) + effect: nodetool.nodes.replicate.video.generate.Pixverse_V5.Effect = Field( + default=nodetool.nodes.replicate.video.generate.Pixverse_V5.Effect("None"), + description="Special effect to apply to the video. V5 supports effects. Does not work with last_frame_image.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for video generation" + ) + quality: nodetool.nodes.replicate.video.generate.Pixverse_V5.Quality = Field( + default=nodetool.nodes.replicate.video.generate.Pixverse_V5.Quality("540p"), + description="Resolution of the video. 360p and 540p cost the same, but 720p and 1080p cost more. V5 supports 1080p with 8 second duration.", + ) + duration: nodetool.nodes.replicate.video.generate.Pixverse_V5.Duration = Field( + default=nodetool.nodes.replicate.video.generate.Pixverse_V5.Duration(5), + description="Duration of the video in seconds. 8 second videos cost twice as much as 5 second videos. V5 supports 1080p with 8 second duration.", + ) + aspect_ratio: nodetool.nodes.replicate.video.generate.Pixverse_V5.Aspect_ratio = ( + Field( + default=nodetool.nodes.replicate.video.generate.Pixverse_V5.Aspect_ratio( + "16:9" + ), + description="Aspect ratio of the video", + ) + ) + negative_prompt: str | OutputHandle[str] = connect_field( + default="", description="Negative prompt to avoid certain elements in the video" + ) + last_frame_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="Use to generate a video that transitions from the first image to the last image. Must be used with image.", + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Pixverse_V5 + @classmethod def get_node_type(cls): - return "replicate.video.generate.Music_01" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class Ray(GraphNode): - """Fast, high quality text-to-video and image-to-video (Also known as Dream Machine)""" +class Ray(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Fast, high quality text-to-video and image-to-video (Also known as Dream Machine) + """ Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.Ray.Aspect_ratio ) - loop: bool | GraphNode | tuple[GraphNode, str] = Field( - default=False, description="Whether the video should loop" + + loop: bool | OutputHandle[bool] = connect_field( + default=False, + description="Whether the video should loop, with the last frame matching the first frame for smooth, continuous playback. This input is ignored if end_image_url or end_video_id are set.", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt for video generation" ) + end_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="An optional last frame of the video to use as the ending frame.", + ) + start_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="An optional first frame of the video to use as the starting frame.", + ) aspect_ratio: nodetool.nodes.replicate.video.generate.Ray.Aspect_ratio = Field( - default=nodetool.nodes.replicate.video.generate.Ray.Aspect_ratio._16_9, - description="Aspect ratio of the video (e.g. '16:9'). Ignored if a start or end frame or video ID is given.", + default=nodetool.nodes.replicate.video.generate.Ray.Aspect_ratio("16:9"), + description="Aspect ratio of the video. Ignored if a start frame, end frame or video ID is given.", ) - end_video_id: str | None | GraphNode | tuple[GraphNode, str] = Field( + end_video_id: str | OutputHandle[str] | None = connect_field( default=None, description="Prepend a new video generation to the beginning of an existing one (Also called 'reverse extend'). You can combine this with start_image_url, or start_video_id.", ) - end_image_url: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + end_image_url: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="URL of an image to use as the ending frame", ) - start_video_id: str | None | GraphNode | tuple[GraphNode, str] = Field( + start_video_id: str | OutputHandle[str] | None = connect_field( default=None, description="Continue or extend a video generation with a new generation. You can combine this with end_image_url, or end_video_id.", ) - start_image_url: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), + start_image_url: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), description="URL of an image to use as the starting frame", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Ray + @classmethod def get_node_type(cls): - return "replicate.video.generate.Ray" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class RobustVideoMatting(GraphNode): - """extract foreground of a video""" +class RobustVideoMatting( + SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef] +): + """ + extract foreground of a video + """ Output_type: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.RobustVideoMatting.Output_type ) - input_video: types.VideoRef | GraphNode | tuple[GraphNode, str] = Field( + + input_video: types.VideoRef | OutputHandle[types.VideoRef] = connect_field( default=types.VideoRef( - type="video", uri="", asset_id=None, data=None, duration=None, format=None + type="video", + uri="", + asset_id=None, + data=None, + metadata=None, + duration=None, + format=None, ), description="Video to segment.", ) output_type: ( nodetool.nodes.replicate.video.generate.RobustVideoMatting.Output_type ) = Field( - default=nodetool.nodes.replicate.video.generate.RobustVideoMatting.Output_type.GREEN_SCREEN, + default=nodetool.nodes.replicate.video.generate.RobustVideoMatting.Output_type( + "green-screen" + ), description=None, ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.RobustVideoMatting + @classmethod def get_node_type(cls): - return "replicate.video.generate.RobustVideoMatting" + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class Video_01(GraphNode): - """Generate 6s videos with prompts or images. (Also known as Hailuo). Use a subject reference to make a video with a character and the S2V-01 model.""" +class Video_01(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Generate 6s videos with prompts or images. (Also known as Hailuo). Use a subject reference to make a video with a character and the S2V-01 model. + """ - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description="Text prompt for image generation" + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for generation" ) - prompt_optimizer: bool | GraphNode | tuple[GraphNode, str] = Field( + prompt_optimizer: bool | OutputHandle[bool] = connect_field( default=True, description="Use prompt optimizer" ) - first_frame_image: str | None | GraphNode | tuple[GraphNode, str] = Field( + first_frame_image: str | OutputHandle[str] | None = connect_field( default=None, description="First frame image for video generation. The output video will have the same aspect ratio as this image.", ) - subject_reference: str | None | GraphNode | tuple[GraphNode, str] = Field( + subject_reference: str | OutputHandle[str] | None = connect_field( default=None, - description="An optional character reference image to use as the subject in the generated video", + description="An optional character reference image to use as the subject in the generated video (this will use the S2V-01 model)", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Video_01 + @classmethod def get_node_type(cls): - return "replicate.video.generate.Video_01" + return cls.get_node_class().get_node_type() -class Video_01_Live(GraphNode): - """An image-to-video (I2V) model specifically trained for Live2D and general animation use cases""" +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description="Text prompt for image generation" + +class Video_01_Live(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + An image-to-video (I2V) model specifically trained for Live2D and general animation use cases + """ + + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for generation" ) - prompt_optimizer: bool | GraphNode | tuple[GraphNode, str] = Field( + prompt_optimizer: bool | OutputHandle[bool] = connect_field( default=True, description="Use prompt optimizer" ) - first_frame_image: str | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description="First frame image for video generation" + first_frame_image: str | OutputHandle[str] | None = connect_field( + default=None, + description="First frame image for video generation. The output video will have the same aspect ratio as this image.", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Video_01_Live + @classmethod def get_node_type(cls): - return "replicate.video.generate.Video_01_Live" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate -import nodetool.nodes.replicate.video.generate -import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class Wan_2_1_1_3B(GraphNode): - """Generate 5s 480p videos. Wan is an advanced and powerful visual generation model developed by Tongyi Lab of Alibaba Group""" +class Wan_2_1_1_3B(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Generate 5s 480p videos. Wan is an advanced and powerful visual generation model developed by Tongyi Lab of Alibaba Group + """ Frame_num: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Frame_num @@ -370,155 +948,344 @@ class Wan_2_1_1_3B(GraphNode): Aspect_ratio: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Aspect_ratio ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed for reproducible results (leave blank for random)", ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Text prompt describing what you want to generate" ) frame_num: nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Frame_num = Field( - default=nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Frame_num._81, + default=nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Frame_num(81), description="Video duration in frames (based on standard 16fps playback)", ) resolution: nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Resolution = Field( - default=nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Resolution._480P, + default=nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Resolution("480p"), description="Video resolution", ) aspect_ratio: nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Aspect_ratio = ( Field( - default=nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Aspect_ratio._16_9, + default=nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Aspect_ratio( + "16:9" + ), description="Video aspect ratio", ) ) - sample_shift: float | GraphNode | tuple[GraphNode, str] = Field( + sample_shift: float | OutputHandle[float] = connect_field( default=8, description="Sampling shift factor for flow matching (recommended range: 8-12)", ) - sample_steps: int | GraphNode | tuple[GraphNode, str] = Field( + sample_steps: int | OutputHandle[int] = connect_field( default=30, description="Number of sampling steps (higher = better quality but slower)", ) - sample_guide_scale: float | GraphNode | tuple[GraphNode, str] = Field( + sample_guide_scale: float | OutputHandle[float] = connect_field( default=6, description="Classifier free guidance scale (higher values strengthen prompt adherence)", ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B + @classmethod def get_node_type(cls): - return "replicate.video.generate.Wan_2_1_1_3B" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate -import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class Wan_2_1_I2V_480p(GraphNode): - """Accelerated inference for Wan 2.1 14B image to video, a comprehensive and open suite of video foundation models that pushes the boundaries of video generation.""" +class Wan_2_1_I2V_480p( + SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef] +): + """ + Accelerated inference for Wan 2.1 14B image to video, a comprehensive and open suite of video foundation models that pushes the boundaries of video generation. + """ - Max_area: typing.ClassVar[type] = ( - nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Max_area - ) Fast_mode: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Fast_mode ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description="Random seed. Leave blank for random" + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Aspect_ratio ) - image: types.ImageRef | GraphNode | tuple[GraphNode, str] = Field( - default=types.ImageRef(type="image", uri="", asset_id=None, data=None), - description="Input image to start generating from", + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Set for reproducible generation" ) - prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( - default=None, description="Prompt for video generation" + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Image for use as the initial frame of the video.", ) - max_area: nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Max_area = Field( - default=nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Max_area._832X480, - description="Maximum area of generated image. The input image will shrink to fit these dimensions", + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Text prompt for image generation" ) fast_mode: nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Fast_mode = ( Field( - default=nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Fast_mode.OFF, + default=nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Fast_mode( + "Balanced" + ), description="Speed up generation with different levels of acceleration. Faster modes may degrade quality somewhat. The speedup is dependent on the content, so different videos may see different speedups.", ) ) - num_frames: int | GraphNode | tuple[GraphNode, str] = Field( - default=81, description="Number of video frames" + lora_scale: float | OutputHandle[float] = connect_field( + default=1, + description="Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. You may still need to experiment to find the best value for your particular lora.", ) - sample_shift: float | GraphNode | tuple[GraphNode, str] = Field( - default=3, description="Sample shift factor" + aspect_ratio: ( + nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Aspect_ratio( + "16:9" + ), + description="Aspect ratio of the output video.", ) - sample_steps: int | GraphNode | tuple[GraphNode, str] = Field( - default=30, - description="Number of generation steps. Fewer steps means faster generation, at the expensive of output quality. 30 steps is sufficient for most prompts", + lora_weights: str | OutputHandle[str] | None = connect_field( + default=None, + description="Load LoRA weights. Supports HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet.", + ) + sample_shift: int | OutputHandle[int] = connect_field( + default=3, description="Flow shift parameter for video generation" + ) + sample_steps: int | OutputHandle[int] = connect_field( + default=30, description="Number of inference steps" + ) + negative_prompt: str | OutputHandle[str] = connect_field( + default="", description="Negative prompt to avoid certain elements" + ) + sample_guide_scale: float | OutputHandle[float] = connect_field( + default=5, description="Guidance scale for generation" + ) + disable_safety_checker: bool | OutputHandle[bool] = connect_field( + default=False, description="Disable safety checker for generated videos" + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Wan_2_2_I2V_Fast( + SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef] +): + """ + A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B image-to-video + """ + + Resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Resolution + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Aspect_ratio + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Leave blank for random" + ) + image: types.ImageRef | OutputHandle[types.ImageRef] = connect_field( + default=types.ImageRef( + type="image", uri="", asset_id=None, data=None, metadata=None + ), + description="Input image to generate video from.", + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Prompt for video generation" + ) + go_fast: bool | OutputHandle[bool] = connect_field( + default=True, description="Go fast" + ) + num_frames: int | OutputHandle[int] = connect_field( + default=81, + description="Number of video frames. 81 frames give the best results", + ) + resolution: nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Resolution = ( + Field( + default=nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Resolution( + "720p" + ), + description="Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px", + ) ) - frames_per_second: int | GraphNode | tuple[GraphNode, str] = Field( + aspect_ratio: ( + nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Aspect_ratio( + "16:9" + ), + description="Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px", + ) + sample_shift: float | OutputHandle[float] = connect_field( + default=12, description="Sample shift factor" + ) + frames_per_second: int | OutputHandle[int] = connect_field( + default=16, + description="Frames per second. Note that the pricing of this model is based on the video duration at 16 fps", + ) + disable_safety_checker: bool | OutputHandle[bool] = connect_field( + default=False, description="Disable safety checker for generated video." + ) + + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast + + @classmethod + def get_node_type(cls): + return cls.get_node_class().get_node_type() + + +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field +import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode + + +class Wan_2_2_T2V_Fast( + SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef] +): + """ + A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B text-to-video + """ + + Resolution: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Resolution + ) + Aspect_ratio: typing.ClassVar[type] = ( + nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Aspect_ratio + ) + + seed: int | OutputHandle[int] | None = connect_field( + default=None, description="Random seed. Leave blank for random" + ) + prompt: str | OutputHandle[str] | None = connect_field( + default=None, description="Prompt for video generation" + ) + go_fast: bool | OutputHandle[bool] = connect_field( + default=True, description="Go fast" + ) + num_frames: int | OutputHandle[int] = connect_field( + default=81, + description="Number of video frames. 81 frames give the best results", + ) + resolution: nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Resolution = ( + Field( + default=nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Resolution( + "720p" + ), + description="Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px", + ) + ) + aspect_ratio: ( + nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Aspect_ratio + ) = Field( + default=nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Aspect_ratio( + "16:9" + ), + description="Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px", + ) + sample_shift: float | OutputHandle[float] = connect_field( + default=12, description="Sample shift factor" + ) + frames_per_second: int | OutputHandle[int] = connect_field( default=16, description="Frames per second. Note that the pricing of this model is based on the video duration at 16 fps", ) - sample_guide_scale: float | GraphNode | tuple[GraphNode, str] = Field( - default=5, - description="Higher guide scale makes prompt adherence better, but can reduce variation", + disable_safety_checker: bool | OutputHandle[bool] = connect_field( + default=False, description="Disable safety checker for generated video." ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast + @classmethod def get_node_type(cls): - return "replicate.video.generate.Wan_2_1_I2V_480p" + return cls.get_node_class().get_node_type() +import typing +from pydantic import Field +from nodetool.dsl.handles import OutputHandle, OutputsProxy, connect_field import nodetool.nodes.replicate.video.generate +from nodetool.workflows.base_node import BaseNode -class Zeroscope_V2_XL(GraphNode): - """Zeroscope V2 XL & 576w""" +class Zeroscope_V2_XL(SingleOutputGraphNode[types.VideoRef], GraphNode[types.VideoRef]): + """ + Zeroscope V2 XL & 576w + """ Model: typing.ClassVar[type] = ( nodetool.nodes.replicate.video.generate.Zeroscope_V2_XL.Model ) - fps: int | GraphNode | tuple[GraphNode, str] = Field( + + fps: int | OutputHandle[int] = connect_field( default=8, description="fps for the output video" ) - seed: int | None | GraphNode | tuple[GraphNode, str] = Field( + seed: int | OutputHandle[int] | None = connect_field( default=None, description="Random seed. Leave blank to randomize the seed" ) model: nodetool.nodes.replicate.video.generate.Zeroscope_V2_XL.Model = Field( - default=nodetool.nodes.replicate.video.generate.Zeroscope_V2_XL.Model.XL, + default=nodetool.nodes.replicate.video.generate.Zeroscope_V2_XL.Model("xl"), description="Model to use", ) - width: int | GraphNode | tuple[GraphNode, str] = Field( + width: int | OutputHandle[int] = connect_field( default=576, description="Width of the output video" ) - height: int | GraphNode | tuple[GraphNode, str] = Field( + height: int | OutputHandle[int] = connect_field( default=320, description="Height of the output video" ) - prompt: str | GraphNode | tuple[GraphNode, str] = Field( + prompt: str | OutputHandle[str] = connect_field( default="An astronaut riding a horse", description="Input prompt" ) - batch_size: int | GraphNode | tuple[GraphNode, str] = Field( + batch_size: int | OutputHandle[int] = connect_field( default=1, description="Batch size" ) - init_video: str | None | GraphNode | tuple[GraphNode, str] = Field( + init_video: str | OutputHandle[str] | None = connect_field( default=None, description="URL of the initial video (optional)" ) - num_frames: int | GraphNode | tuple[GraphNode, str] = Field( + num_frames: int | OutputHandle[int] = connect_field( default=24, description="Number of frames for the output video" ) - init_weight: float | GraphNode | tuple[GraphNode, str] = Field( + init_weight: float | OutputHandle[float] = connect_field( default=0.5, description="Strength of init_video" ) - guidance_scale: float | GraphNode | tuple[GraphNode, str] = Field( + guidance_scale: float | OutputHandle[float] = connect_field( default=7.5, description="Guidance scale" ) - negative_prompt: str | None | GraphNode | tuple[GraphNode, str] = Field( + negative_prompt: str | OutputHandle[str] | None = connect_field( default=None, description="Negative prompt" ) - remove_watermark: bool | GraphNode | tuple[GraphNode, str] = Field( + remove_watermark: bool | OutputHandle[bool] = connect_field( default=False, description="Remove watermark" ) - num_inference_steps: int | GraphNode | tuple[GraphNode, str] = Field( + num_inference_steps: int | OutputHandle[int] = connect_field( default=50, description="Number of denoising steps" ) + @classmethod + def get_node_class(cls) -> type[BaseNode]: + return nodetool.nodes.replicate.video.generate.Zeroscope_V2_XL + @classmethod def get_node_type(cls): - return "replicate.video.generate.Zeroscope_V2_XL" + return cls.get_node_class().get_node_type() diff --git a/src/nodetool/nodes/replicate/gencode.py b/src/nodetool/nodes/replicate/gencode.py index d874642..5e3cee3 100644 --- a/src/nodetool/nodes/replicate/gencode.py +++ b/src/nodetool/nodes/replicate/gencode.py @@ -1102,6 +1102,25 @@ "namespace": "video.generate", "return_type": VideoRef, }, + # === New models added 2026-01-17 === + { + "model_id": "black-forest-labs/flux-2-klein-4b", + "node_name": "Flux_2_Klein_4B", + "namespace": "image.generate", + "return_type": ImageRef, + }, + { + "model_id": "black-forest-labs/flux-2-max", + "node_name": "Flux_2_Max", + "namespace": "image.generate", + "return_type": ImageRef, + }, + { + "model_id": "google/gemini-3-pro", + "node_name": "Gemini_3_Pro", + "namespace": "text.generate", + "return_type": str, + }, ] if __name__ == "__main__": diff --git a/src/nodetool/nodes/replicate/image/generate.py b/src/nodetool/nodes/replicate/image/generate.py index 773fbe9..77e04a8 100644 --- a/src/nodetool/nodes/replicate/image/generate.py +++ b/src/nodetool/nodes/replicate/image/generate.py @@ -46,7 +46,7 @@ def get_model_info(cls): "owner": "logerzhu", "is_official": False, "paper_url": None, - "run_count": 620633, + "run_count": 626159, "url": "https://replicate.com/logerzhu/ad-inpaint", "visibility": "public", "weights_url": None, @@ -123,11 +123,11 @@ def get_model_info(cls): "github_url": "https://github.com/fofr/cog-consistent-character", "license_url": "https://github.com/fofr/cog-consistent-character/blob/main/LICENSE", "name": "consistent-character", - "owner": "fofr", + "owner": "sdxl-based", "is_official": False, "paper_url": None, - "run_count": 1240530, - "url": "https://replicate.com/fofr/consistent-character", + "run_count": 1409575, + "url": "https://replicate.com/sdxl-based/consistent-character", "visibility": "public", "weights_url": None, } @@ -237,7 +237,7 @@ def get_model_info(cls): "owner": "fofr", "is_official": False, "paper_url": "https://arxiv.org/abs/2404.16022", - "run_count": 304925, + "run_count": 323697, "url": "https://replicate.com/fofr/pulid-base", "visibility": "public", "weights_url": None, @@ -372,7 +372,7 @@ def get_model_info(cls): "owner": "stability-ai", "is_official": False, "paper_url": "https://arxiv.org/abs/2112.10752", - "run_count": 110689290, + "run_count": 110887346, "url": "https://replicate.com/stability-ai/stable-diffusion", "visibility": "public", "weights_url": None, @@ -435,15 +435,13 @@ class StableDiffusion3_5_Medium(ReplicateNode): """2.5 billion parameter image model with improved MMDiT-X architecture""" class Aspect_ratio(str, Enum): - _1_1 = "1:1" _16_9 = "16:9" + _1_1 = "1:1" _21_9 = "21:9" - _3_2 = "3:2" _2_3 = "2:3" + _3_2 = "3:2" _4_5 = "4:5" _5_4 = "5:4" - _3_4 = "3:4" - _4_3 = "4:3" _9_16 = "9:16" _9_21 = "9:21" @@ -458,7 +456,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "stability-ai/stable-diffusion-3.5-medium:382c03890d801cb8950e2223983ab2f05383800473c1765a9211af752206d2ae" + return "stability-ai/stable-diffusion-3.5-medium:1323a3a68cbf2b58c708f38fba9557e39d68a77cb287a8d7372ba0443f6f0767" @classmethod def get_hardware(cls): @@ -476,7 +474,7 @@ def get_model_info(cls): "owner": "stability-ai", "is_official": True, "paper_url": "https://arxiv.org/abs/2403.03206", - "run_count": 66622, + "run_count": 98758, "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-medium", "visibility": "public", "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-medium", @@ -489,8 +487,8 @@ def return_type(cls): cfg: float = Field( title="Cfg", description="The guidance scale tells the model how similar the output should be to the prompt.", - ge=0.0, - le=20.0, + ge=1.0, + le=10.0, default=5, ) seed: int | None = Field( @@ -502,15 +500,8 @@ def return_type(cls): default=types.ImageRef(), description="Input image for image to image mode. The aspect ratio of your output will match this image.", ) - steps: int = Field( - title="Steps", - description="Number of steps to run the sampler for.", - ge=1.0, - le=50.0, - default=40, - ) - prompt: str = Field( - title="Prompt", description="Text prompt for image generation", default="" + prompt: str | None = Field( + title="Prompt", description="Text prompt for image generation", default=None ) aspect_ratio: Aspect_ratio = Field( description="The aspect ratio of your output image. This value is ignored if you are using an input image.", @@ -519,16 +510,16 @@ def return_type(cls): output_format: Output_format = Field( description="Format of the output images", default="webp" ) - output_quality: int = Field( - title="Output Quality", - description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - ge=0.0, - le=100.0, - default=90, + negative_prompt: str | None = Field( + title="Negative Prompt", + description="What you do not want to see in the image", + default=None, ) prompt_strength: float = Field( title="Prompt Strength", description="Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", + ge=0.0, + le=1.0, default=0.85, ) @@ -537,15 +528,13 @@ class StableDiffusion3_5_Large(ReplicateNode): """A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, thanks to Query-Key Normalization.""" class Aspect_ratio(str, Enum): - _1_1 = "1:1" _16_9 = "16:9" + _1_1 = "1:1" _21_9 = "21:9" - _3_2 = "3:2" _2_3 = "2:3" + _3_2 = "3:2" _4_5 = "4:5" _5_4 = "5:4" - _3_4 = "3:4" - _4_3 = "4:3" _9_16 = "9:16" _9_21 = "9:21" @@ -560,7 +549,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "stability-ai/stable-diffusion-3.5-large:e6c4657fe1b3f078fb26d68a1413bc8013e2b085504dd84a33e26e16fb95a593" + return "stability-ai/stable-diffusion-3.5-large:2fdf9488b53c1e0fd3aef7b477def1c00d1856a38466733711f9c769942598f5" @classmethod def get_hardware(cls): @@ -578,7 +567,7 @@ def get_model_info(cls): "owner": "stability-ai", "is_official": True, "paper_url": "https://arxiv.org/abs/2403.03206", - "run_count": 1641628, + "run_count": 1854781, "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-large", "visibility": "public", "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large", @@ -591,9 +580,9 @@ def return_type(cls): cfg: float = Field( title="Cfg", description="The guidance scale tells the model how similar the output should be to the prompt.", - ge=0.0, - le=20.0, - default=3.5, + ge=1.0, + le=10.0, + default=5, ) seed: int | None = Field( title="Seed", @@ -604,15 +593,8 @@ def return_type(cls): default=types.ImageRef(), description="Input image for image to image mode. The aspect ratio of your output will match this image.", ) - steps: int = Field( - title="Steps", - description="Number of steps to run the sampler for.", - ge=1.0, - le=50.0, - default=35, - ) - prompt: str = Field( - title="Prompt", description="Text prompt for image generation", default="" + prompt: str | None = Field( + title="Prompt", description="Text prompt for image generation", default=None ) aspect_ratio: Aspect_ratio = Field( description="The aspect ratio of your output image. This value is ignored if you are using an input image.", @@ -621,16 +603,16 @@ def return_type(cls): output_format: Output_format = Field( description="Format of the output images", default="webp" ) - output_quality: int = Field( - title="Output Quality", - description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - ge=0.0, - le=100.0, - default=90, + negative_prompt: str | None = Field( + title="Negative Prompt", + description="What you do not want to see in the image", + default=None, ) prompt_strength: float = Field( title="Prompt Strength", description="Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", + ge=0.0, + le=1.0, default=0.85, ) @@ -639,15 +621,13 @@ class StableDiffusion3_5_Large_Turbo(ReplicateNode): """A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, with a focus on fewer inference steps""" class Aspect_ratio(str, Enum): - _1_1 = "1:1" _16_9 = "16:9" + _1_1 = "1:1" _21_9 = "21:9" - _3_2 = "3:2" _2_3 = "2:3" + _3_2 = "3:2" _4_5 = "4:5" _5_4 = "5:4" - _3_4 = "3:4" - _4_3 = "4:3" _9_16 = "9:16" _9_21 = "9:21" @@ -662,7 +642,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "stability-ai/stable-diffusion-3.5-large-turbo:a0963ecbded701e4bef0c9a065296195805a18a598b3981cd4217be168b7b259" + return "stability-ai/stable-diffusion-3.5-large-turbo:6ce89263555dde3393564e799f1310ee247c5339c3c665250b5dd5d26b7bcc3d" @classmethod def get_hardware(cls): @@ -680,7 +660,7 @@ def get_model_info(cls): "owner": "stability-ai", "is_official": True, "paper_url": "https://arxiv.org/abs/2403.03206", - "run_count": 785570, + "run_count": 881463, "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-large-turbo", "visibility": "public", "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large-turbo", @@ -693,8 +673,8 @@ def return_type(cls): cfg: float = Field( title="Cfg", description="The guidance scale tells the model how similar the output should be to the prompt.", - ge=0.0, - le=20.0, + ge=1.0, + le=10.0, default=1, ) seed: int | None = Field( @@ -706,15 +686,8 @@ def return_type(cls): default=types.ImageRef(), description="Input image for image to image mode. The aspect ratio of your output will match this image.", ) - steps: int = Field( - title="Steps", - description="Number of steps to run the sampler for.", - ge=1.0, - le=10.0, - default=4, - ) - prompt: str = Field( - title="Prompt", description="Text prompt for image generation", default="" + prompt: str | None = Field( + title="Prompt", description="Text prompt for image generation", default=None ) aspect_ratio: Aspect_ratio = Field( description="The aspect ratio of your output image. This value is ignored if you are using an input image.", @@ -723,16 +696,16 @@ def return_type(cls): output_format: Output_format = Field( description="Format of the output images", default="webp" ) - output_quality: int = Field( - title="Output Quality", - description="Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - ge=0.0, - le=100.0, - default=90, + negative_prompt: str | None = Field( + title="Negative Prompt", + description="What you do not want to see in the image", + default=None, ) prompt_strength: float = Field( title="Prompt Strength", description="Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", + ge=0.0, + le=1.0, default=0.85, ) @@ -755,7 +728,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "luma/photon-flash:4235af608e50dac14e9244198cef089049efbd83ba05f2aa4e271076a6f613ee" + return "luma/photon-flash:8cee7d47f81d8f4f77c1aec44ffb3d1ce09d36388db637ceaa8a6cbcf30b63e1" @classmethod def get_hardware(cls): @@ -773,7 +746,7 @@ def get_model_info(cls): "owner": "luma", "is_official": True, "paper_url": None, - "run_count": 160876, + "run_count": 241790, "url": "https://replicate.com/luma/photon-flash", "visibility": "public", "weights_url": None, @@ -885,7 +858,7 @@ def get_model_info(cls): "owner": "stability-ai", "is_official": False, "paper_url": "https://arxiv.org/abs/2307.01952", - "run_count": 81922282, + "run_count": 83548078, "url": "https://replicate.com/stability-ai/sdxl", "visibility": "public", "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0", @@ -1028,7 +1001,7 @@ def get_model_info(cls): "owner": "swartype", "is_official": False, "paper_url": None, - "run_count": 655581, + "run_count": 657578, "url": "https://replicate.com/swartype/sdxl-pixar", "visibility": "public", "weights_url": None, @@ -1171,7 +1144,7 @@ def get_model_info(cls): "owner": "fofr", "is_official": False, "paper_url": None, - "run_count": 10580484, + "run_count": 11600436, "url": "https://replicate.com/fofr/sdxl-emoji", "visibility": "public", "weights_url": None, @@ -1344,7 +1317,7 @@ def get_model_info(cls): "owner": "stability-ai", "is_official": False, "paper_url": None, - "run_count": 20607133, + "run_count": 20918420, "url": "https://replicate.com/stability-ai/stable-diffusion-inpainting", "visibility": "public", "weights_url": None, @@ -1478,7 +1451,7 @@ def get_model_info(cls): "owner": "ai-forever", "is_official": False, "paper_url": None, - "run_count": 10025570, + "run_count": 10028886, "url": "https://replicate.com/ai-forever/kandinsky-2.2", "visibility": "public", "weights_url": None, @@ -1586,7 +1559,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 479520052, + "run_count": 595298042, "url": "https://replicate.com/black-forest-labs/flux-schnell", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell", @@ -1695,7 +1668,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 26579834, + "run_count": 37700525, "url": "https://replicate.com/black-forest-labs/flux-dev", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev", @@ -1800,7 +1773,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "black-forest-labs/flux-pro:1e237aa703bf3a8ab480d5b595563128807af649c50afc0b4f22a9174e90d1d6" + return "black-forest-labs/flux-pro:ce4035b99fc7bac18bc2f0384632858f126f6b4d96c88603a898a76b8e0c4ac2" @classmethod def get_hardware(cls): @@ -1818,7 +1791,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 12953670, + "run_count": 13823006, "url": "https://replicate.com/black-forest-labs/flux-pro", "visibility": "public", "weights_url": None, @@ -1834,11 +1807,7 @@ def return_type(cls): default=None, ) steps: int = Field( - title="Steps", - description="Number of diffusion steps", - ge=1.0, - le=50.0, - default=25, + title="Steps", description="Deprecated", ge=1.0, le=50.0, default=25 ) width: int | None = Field( title="Width", @@ -1865,11 +1834,7 @@ def return_type(cls): default=3, ) interval: float = Field( - title="Interval", - description="Interval is a setting that increases the variance in possible outputs letting the model be a tad more dynamic in what outputs it may produce in terms of composition, color, detail, and prompt interpretation. Setting this value low will ensure strong prompt following with more consistent outputs, setting it higher will produce more dynamic or varied outputs.", - ge=1.0, - le=4.0, - default=2, + title="Interval", description="Deprecated", ge=1.0, le=4.0, default=2 ) aspect_ratio: Aspect_ratio = Field( description="Aspect ratio for the generated image", default="1:1" @@ -1929,7 +1894,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "black-forest-labs/flux-1.1-pro-ultra:c6e5086a542c99e7e523a83d3017654e8618fe64ef427c772a1def05bb599f0c" + return "black-forest-labs/flux-1.1-pro-ultra:5ea10f739af9f6d4002fae9aee4c15be14c3c8d7f8b309e634bf68df09159863" @classmethod def get_hardware(cls): @@ -1947,7 +1912,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": "https://blackforestlabs.ai/flux-1-1-ultra/", - "run_count": 17061527, + "run_count": 19829925, "url": "https://replicate.com/black-forest-labs/flux-1.1-pro-ultra", "visibility": "public", "weights_url": None, @@ -2046,7 +2011,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 4295070, + "run_count": 5515178, "url": "https://replicate.com/black-forest-labs/flux-dev-lora", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev", @@ -2207,7 +2172,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 3155100, + "run_count": 3635708, "url": "https://replicate.com/black-forest-labs/flux-schnell-lora", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell", @@ -2292,7 +2257,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "black-forest-labs/flux-depth-pro:7fb973185be54efe985eea279746857c32a7f455a3963a6ea9ee18ed982b0afa" + return "black-forest-labs/flux-depth-pro:0e370dce5fdf15aa8b5fe2491474be45628756e8fba97574bfb3bcab46d09fff" @classmethod def get_hardware(cls): @@ -2310,7 +2275,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 243221, + "run_count": 286281, "url": "https://replicate.com/black-forest-labs/flux-depth-pro", "visibility": "public", "weights_url": None, @@ -2340,7 +2305,7 @@ def return_type(cls): description="Controls the balance between adherence to the text as well as image prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", ge=1.0, le=100.0, - default=15, + default=30, ) control_image: types.ImageRef = Field( default=types.ImageRef(), @@ -2376,7 +2341,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "black-forest-labs/flux-canny-pro:d042532044840da9fdd8761d2a9e829ebec76662818d0929a035cc3cf14e2661" + return "black-forest-labs/flux-canny-pro:835f0372c2cf4b2e494c2b8626288212ea5c2694ccc2e29f00dfb8cbf2a5e0ce" @classmethod def get_hardware(cls): @@ -2394,7 +2359,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 346281, + "run_count": 406730, "url": "https://replicate.com/black-forest-labs/flux-canny-pro", "visibility": "public", "weights_url": None, @@ -2470,7 +2435,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "black-forest-labs/flux-fill-pro:10b45d01bb46cffc8d7893b36d720e369d732bb2e48ca3db469a18929eff359d" + return "black-forest-labs/flux-fill-pro:2d4197724d8ed13cc78191e794ebbe6aeedcfe4c5b36f464794732d5ccb9735f" @classmethod def get_hardware(cls): @@ -2488,7 +2453,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 2903217, + "run_count": 3665155, "url": "https://replicate.com/black-forest-labs/flux-fill-pro", "visibility": "public", "weights_url": None, @@ -2588,7 +2553,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 676030, + "run_count": 1008751, "url": "https://replicate.com/black-forest-labs/flux-depth-dev", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Depth-dev", @@ -2698,7 +2663,7 @@ def get_model_info(cls): "owner": "bytedance", "is_official": False, "paper_url": "https://arxiv.org/abs/2404.13686", - "run_count": 16758732, + "run_count": 20356749, "url": "https://replicate.com/bytedance/hyper-flux-8step", "visibility": "public", "weights_url": "https://huggingface.co/ByteDance/Hyper-SD", @@ -2826,7 +2791,7 @@ def get_model_info(cls): "owner": "fofr", "is_official": False, "paper_url": None, - "run_count": 3569, + "run_count": 3598, "url": "https://replicate.com/fofr/flux-mona-lisa", "visibility": "public", "weights_url": None, @@ -3007,7 +2972,7 @@ def get_model_info(cls): "owner": "adirik", "is_official": False, "paper_url": None, - "run_count": 112093, + "run_count": 130021, "url": "https://replicate.com/adirik/flux-cinestill", "visibility": "public", "weights_url": None, @@ -3188,7 +3153,7 @@ def get_model_info(cls): "owner": "fofr", "is_official": False, "paper_url": None, - "run_count": 2153418, + "run_count": 2815652, "url": "https://replicate.com/fofr/flux-black-light", "visibility": "public", "weights_url": None, @@ -3369,7 +3334,7 @@ def get_model_info(cls): "owner": "igorriti", "is_official": False, "paper_url": None, - "run_count": 17471, + "run_count": 19605, "url": "https://replicate.com/igorriti/flux-360", "visibility": "public", "weights_url": "https://huggingface.co/igorriti/flux-360", @@ -3563,7 +3528,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "recraft-ai/recraft-v3:0fea59248a8a1ddb8197792577f6627ec65482abc49f50c6e9da40ca8729d24d" + return "recraft-ai/recraft-v3:9507e61ddace8b3a238371b17a61be203747c5081ea6070fecd3c40d27318922" @classmethod def get_hardware(cls): @@ -3581,7 +3546,7 @@ def get_model_info(cls): "owner": "recraft-ai", "is_official": True, "paper_url": "https://recraft.ai", - "run_count": 5772722, + "run_count": 7571833, "url": "https://replicate.com/recraft-ai/recraft-v3", "visibility": "public", "weights_url": None, @@ -3678,7 +3643,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "recraft-ai/recraft-20b:490786c27cc3bb60da5868e2c9ccdf28870d5e0b50be8d68a6740e90b85c1f2c" + return "recraft-ai/recraft-20b:c303fbbc72c026aa4315e5efc5dd9d8a1dfb60927c84c8c32214cd1d39028701" @classmethod def get_hardware(cls): @@ -3696,7 +3661,7 @@ def get_model_info(cls): "owner": "recraft-ai", "is_official": True, "paper_url": "https://recraft.ai", - "run_count": 270710, + "run_count": 304725, "url": "https://replicate.com/recraft-ai/recraft-20b", "visibility": "public", "weights_url": None, @@ -3788,7 +3753,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "recraft-ai/recraft-20b-svg:7117a9c982052bc25c5e869896b20d8108c847fef4c3be7c6b129e68a7382106" + return "recraft-ai/recraft-20b-svg:666dcf90f18786723e083609cee6c84a0f162cc73d7066fd2d3ad3cb6ba88b1c" @classmethod def get_hardware(cls): @@ -3806,7 +3771,7 @@ def get_model_info(cls): "owner": "recraft-ai", "is_official": True, "paper_url": "https://recraft.ai/", - "run_count": 50212, + "run_count": 86128, "url": "https://replicate.com/recraft-ai/recraft-20b-svg", "visibility": "public", "weights_url": None, @@ -3882,7 +3847,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "recraft-ai/recraft-v3-svg:81deed12bf1c7e762e46f53df3f85b4369abf876b1df1777ce795e0d7d5849e4" + return "recraft-ai/recraft-v3-svg:df041379628fa1d16bd406409930775b0904dc2bc0f3e3f38ecd2a4389e9329d" @classmethod def get_hardware(cls): @@ -3900,7 +3865,7 @@ def get_model_info(cls): "owner": "recraft-ai", "is_official": True, "paper_url": "https://recraft.ai", - "run_count": 274401, + "run_count": 347500, "url": "https://replicate.com/recraft-ai/recraft-v3-svg", "visibility": "public", "weights_url": None, @@ -3960,7 +3925,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 140541, + "run_count": 194833, "url": "https://replicate.com/black-forest-labs/flux-canny-dev", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Canny-dev", @@ -4061,7 +4026,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 874830, + "run_count": 1375100, "url": "https://replicate.com/black-forest-labs/flux-fill-dev", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Fill-dev", @@ -4192,7 +4157,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 58577, + "run_count": 67017, "url": "https://replicate.com/black-forest-labs/flux-redux-schnell", "visibility": "public", "weights_url": None, @@ -4297,7 +4262,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 251140, + "run_count": 286582, "url": "https://replicate.com/black-forest-labs/flux-redux-dev", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev", @@ -4387,7 +4352,7 @@ def get_model_info(cls): "owner": "lucataco", "is_official": False, "paper_url": None, - "run_count": 3245250, + "run_count": 3443485, "url": "https://replicate.com/lucataco/sdxl-controlnet", "visibility": "public", "weights_url": None, @@ -4519,7 +4484,7 @@ def get_model_info(cls): "owner": "catacolabs", "is_official": False, "paper_url": None, - "run_count": 399798, + "run_count": 401404, "url": "https://replicate.com/catacolabs/sdxl-ad-inpaint", "visibility": "public", "weights_url": None, @@ -4642,7 +4607,7 @@ def get_model_info(cls): "owner": "ai-forever", "is_official": False, "paper_url": None, - "run_count": 10025570, + "run_count": 10028886, "url": "https://replicate.com/ai-forever/kandinsky-2.2", "visibility": "public", "weights_url": None, @@ -4738,7 +4703,7 @@ def get_model_info(cls): "owner": "bytedance", "is_official": False, "paper_url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_report.pdf", - "run_count": 1025961470, + "run_count": 1031639158, "url": "https://replicate.com/bytedance/sdxl-lightning-4step", "visibility": "public", "weights_url": "https://huggingface.co/ByteDance/SDXL-Lightning", @@ -4843,7 +4808,7 @@ def get_model_info(cls): "owner": "playgroundai", "is_official": False, "paper_url": "https://arxiv.org/abs/2206.00364", - "run_count": 2651203, + "run_count": 2853954, "url": "https://replicate.com/playgroundai/playground-v2.5-1024px-aesthetic", "visibility": "public", "weights_url": "https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic", @@ -4970,7 +4935,7 @@ def get_model_info(cls): "owner": "datacte", "is_official": False, "paper_url": None, - "run_count": 10742634, + "run_count": 11525060, "url": "https://replicate.com/datacte/proteus-v0.2", "visibility": "public", "weights_url": None, @@ -5084,7 +5049,7 @@ def get_model_info(cls): "owner": "datacte", "is_official": False, "paper_url": None, - "run_count": 4433251, + "run_count": 5149558, "url": "https://replicate.com/datacte/proteus-v0.3", "visibility": "public", "weights_url": "https://huggingface.co/dataautogpt3/ProteusV0.3", @@ -5199,7 +5164,7 @@ def get_model_info(cls): "owner": "fofr", "is_official": False, "paper_url": None, - "run_count": 1475296, + "run_count": 1891976, "url": "https://replicate.com/fofr/sticker-maker", "visibility": "public", "weights_url": None, @@ -5281,7 +5246,7 @@ def get_model_info(cls): "owner": "fofr", "is_official": False, "paper_url": None, - "run_count": 1134295, + "run_count": 1274774, "url": "https://replicate.com/fofr/style-transfer", "visibility": "public", "weights_url": None, @@ -5389,7 +5354,7 @@ def get_model_info(cls): "owner": "fofr", "is_official": False, "paper_url": None, - "run_count": 58091, + "run_count": 61563, "url": "https://replicate.com/fofr/illusions", "visibility": "public", "weights_url": None, @@ -5561,7 +5526,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "ideogram-ai/ideogram-v2:39ec2c0b3642ba5bc9357978a8fd060c7e363643c192776e38dd9b2b2c403442" + return "ideogram-ai/ideogram-v2:3e6071946ab5319b3bcc37a4d00083e743dfdff5be386df6a2ff1f212fc7365b" @classmethod def get_hardware(cls): @@ -5579,7 +5544,7 @@ def get_model_info(cls): "owner": "ideogram-ai", "is_official": True, "paper_url": "https://ideogram.ai/", - "run_count": 2410715, + "run_count": 2628423, "url": "https://replicate.com/ideogram-ai/ideogram-v2", "visibility": "public", "weights_url": "https://ideogram.ai/", @@ -5736,7 +5701,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "ideogram-ai/ideogram-v2-turbo:35eacd3dbd088d6421f7ee27646701b5e03ec5a9a0f68f43112fa228d6fc2522" + return "ideogram-ai/ideogram-v2-turbo:7cef9d520d672bb802588ad0d13151bc51aee9a408c270aebf25d6530045dd29" @classmethod def get_hardware(cls): @@ -5754,7 +5719,7 @@ def get_model_info(cls): "owner": "ideogram-ai", "is_official": True, "paper_url": "https://ideogram.ai/", - "run_count": 2526126, + "run_count": 2864349, "url": "https://replicate.com/ideogram-ai/ideogram-v2-turbo", "visibility": "public", "weights_url": "https://ideogram.ai/", @@ -5911,7 +5876,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "ideogram-ai/ideogram-v2a:1751e040eb5e766b3eea4f9e69160987e1854c28a87a08882c930ecc6cef0305" + return "ideogram-ai/ideogram-v2a:8b85e4363b03c25f1d248d0f7e3e118503f2b33773a51bab414603bd52f6112d" @classmethod def get_hardware(cls): @@ -5924,12 +5889,12 @@ def get_model_info(cls): "created_at": "2025-02-27T11:03:37.256216Z", "description": "Like Ideogram v2, but faster and cheaper", "github_url": None, - "license_url": "https://about.ideogram.ai/legal/api-tos", + "license_url": "https://ideogram.ai/legal/api-tos", "name": "ideogram-v2a", "owner": "ideogram-ai", "is_official": True, "paper_url": "https://ideogram.ai/", - "run_count": 1518198, + "run_count": 2008308, "url": "https://replicate.com/ideogram-ai/ideogram-v2a", "visibility": "public", "weights_url": None, @@ -5991,7 +5956,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "google/imagen-3:3e0b477743ff405dc5b77dd73456d7ef96705a9aad479c668d57743ce1d4ca96" + return "google/imagen-3:f01b3b9332c7b6ca2c6193268faff77052d4a13ed024ee18f85ec577e2b0da69" @classmethod def get_hardware(cls): @@ -6009,7 +5974,7 @@ def get_model_info(cls): "owner": "google", "is_official": True, "paper_url": "https://deepmind.google/technologies/imagen-3/", - "run_count": 1536755, + "run_count": 1913817, "url": "https://replicate.com/google/imagen-3", "visibility": "public", "weights_url": None, @@ -6079,7 +6044,7 @@ def get_model_info(cls): "owner": "qwen", "is_official": True, "paper_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-Image/Qwen_Image.pdf", - "run_count": 381758, + "run_count": 1384997, "url": "https://replicate.com/qwen/qwen-image", "visibility": "public", "weights_url": "https://huggingface.co/Qwen/Qwen-Image", @@ -6177,14 +6142,6 @@ def return_type(cls): class Qwen_Image_Edit(ReplicateNode): """Edit images using a prompt. This model extends Qwen-Image’s unique text rendering capabilities to image editing tasks, enabling precise text editing""" - class Aspect_ratio(str, Enum): - _1_1 = "1:1" - _16_9 = "16:9" - _9_16 = "9:16" - _4_3 = "4:3" - _3_4 = "3:4" - MATCH_INPUT_IMAGE = "match_input_image" - class Output_format(str, Enum): WEBP = "webp" JPG = "jpg" @@ -6196,7 +6153,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "qwen/qwen-image-edit:f1d0e682b391956e6e8399320775082e4511adf1f2f0f2250d823dae5fa5ff42" + return "qwen/qwen-image-edit:a072e0d160ef0501120a390f602404655e467a6f591f6574f5742df0b67cbba7" @classmethod def get_hardware(cls): @@ -6214,7 +6171,7 @@ def get_model_info(cls): "owner": "qwen", "is_official": True, "paper_url": "https://arxiv.org/abs/2508.02324", - "run_count": 305878, + "run_count": 1473364, "url": "https://replicate.com/qwen/qwen-image-edit", "visibility": "public", "weights_url": "https://huggingface.co/Qwen/Qwen-Image-Edit", @@ -6243,9 +6200,6 @@ def return_type(cls): description="Run faster predictions with additional optimizations.", default=True, ) - aspect_ratio: Aspect_ratio = Field( - description="Aspect ratio for the generated image", default="match_input_image" - ) output_format: Output_format = Field( description="Format of the output images", default="webp" ) @@ -6254,7 +6208,7 @@ def return_type(cls): description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", ge=0.0, le=100.0, - default=95, + default=80, ) disable_safety_checker: bool = Field( title="Disable Safety Checker", @@ -6293,7 +6247,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "bytedance/seedream-4:254faac883c3a411e95cc95d0fb02274a81e388aaa4394b3ce5b7d2a9f7a6569" + return "bytedance/seedream-4:cf7d431991436f19d1c8dad83fe463c729c816d7a21056c5105e75c84a0aa7e9" @classmethod def get_hardware(cls): @@ -6302,7 +6256,7 @@ def get_hardware(cls): @classmethod def get_model_info(cls): return { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/55be80c2-0d5c-496b-8570-8cc101268fc4/tmp4lklv3vn.jpg", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/53dda182-2998-4fde-b235-e1b2a09b0484/seedream4-sm.jpg", "created_at": "2025-09-09T11:23:42.672377Z", "description": "Unified text-to-image generation and precise single-sentence editing at up to 4K resolution", "github_url": None, @@ -6311,7 +6265,7 @@ def get_model_info(cls): "owner": "bytedance", "is_official": True, "paper_url": None, - "run_count": 329053, + "run_count": 22735341, "url": "https://replicate.com/bytedance/seedream-4", "visibility": "public", "weights_url": None, @@ -6358,6 +6312,11 @@ def return_type(cls): description="Image aspect ratio. Only used when size is not 'custom'. Use 'match_input_image' to automatically match the input image's aspect ratio.", default="match_input_image", ) + enhance_prompt: bool = Field( + title="Enhance Prompt", + description="Enable prompt enhancement for higher quality results, this will take longer to generate.", + default=True, + ) sequential_image_generation: Sequential_image_generation = Field( description="Group image generation mode. 'disabled' generates a single image. 'auto' lets the model decide whether to generate multiple related images (e.g., story scenes, character variations).", default="disabled", @@ -6389,7 +6348,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "google/imagen-4-fast:66d2e7bb79b1133740ff901fb1f8967b9befe70e3ae7ef056e4bc30ddf3dcf9e" + return "google/imagen-4-fast:c0704c9b0a3c3f4853fd28d0dc24d4e820ebc7e4e4ecebd6ce55b4bbea0aa423" @classmethod def get_hardware(cls): @@ -6407,7 +6366,7 @@ def get_model_info(cls): "owner": "google", "is_official": True, "paper_url": None, - "run_count": 741596, + "run_count": 3681652, "url": "https://replicate.com/google/imagen-4-fast", "visibility": "public", "weights_url": None, @@ -6607,7 +6566,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "ideogram-ai/ideogram-v3-turbo:c238db25556f295de040a59b462cc212bb8ceb282bf2fc6bee6fbaf4ab014f23" + return "ideogram-ai/ideogram-v3-turbo:d9b3748f95c0fe3e71f010f8cc5d80e8f5252acd0e74b1c294ee889eea52a47b" @classmethod def get_hardware(cls): @@ -6625,7 +6584,7 @@ def get_model_info(cls): "owner": "ideogram-ai", "is_official": True, "paper_url": "https://about.ideogram.ai/3.0", - "run_count": 1759749, + "run_count": 6348164, "url": "https://replicate.com/ideogram-ai/ideogram-v3-turbo", "visibility": "public", "weights_url": None, @@ -6708,7 +6667,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "black-forest-labs/flux-kontext-pro:2dfe45debca13e5ecfad755ef6ca9943fc56a6effb306f4c6e2ea4762df6e53e" + return "black-forest-labs/flux-kontext-pro:897a70f5a7dbd8a0611413b3b98cf417b45f266bd595c571a22947619d9ae462" @classmethod def get_hardware(cls): @@ -6726,7 +6685,7 @@ def get_model_info(cls): "owner": "black-forest-labs", "is_official": True, "paper_url": None, - "run_count": 22556785, + "run_count": 43209235, "url": "https://replicate.com/black-forest-labs/flux-kontext-pro", "visibility": "public", "weights_url": "https://huggingface.co/black-forest-labs", @@ -6791,7 +6750,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "minimax/image-01:47ca89ad46682c1dd0ca335601cd7ea2eb10fb94ce4e0a5abafa7e74f23ae7b6" + return "minimax/image-01:928f3bd6ac899108d0ab8cf7f91dfa39a03eda0175e94c9b4cd075776dececf0" @classmethod def get_hardware(cls): @@ -6809,7 +6768,7 @@ def get_model_info(cls): "owner": "minimax", "is_official": True, "paper_url": None, - "run_count": 1525946, + "run_count": 2456660, "url": "https://replicate.com/minimax/image-01", "visibility": "public", "weights_url": None, @@ -6838,3 +6797,475 @@ def return_type(cls): description="An optional character reference image (human face) to use as the subject in the generated image(s).", default=None, ) + + +class Flux_2_Pro(ReplicateNode): + """High-quality image generation and editing with support for eight reference images""" + + class Resolution(str, Enum): + MATCH_INPUT_IMAGE = "match_input_image" + _0_5_MP = "0.5 MP" + _1_MP = "1 MP" + _2_MP = "2 MP" + _4_MP = "4 MP" + + class Aspect_ratio(str, Enum): + MATCH_INPUT_IMAGE = "match_input_image" + CUSTOM = "custom" + _1_1 = "1:1" + _16_9 = "16:9" + _3_2 = "3:2" + _2_3 = "2:3" + _4_5 = "4:5" + _5_4 = "5:4" + _9_16 = "9:16" + _3_4 = "3:4" + _4_3 = "4:3" + + class Output_format(str, Enum): + WEBP = "webp" + JPG = "jpg" + PNG = "png" + + @classmethod + def get_basic_fields(cls): + return ["seed", "width", "height"] + + @classmethod + def replicate_model_id(cls): + return "black-forest-labs/flux-2-pro:285631b5656a1839331cd9af0d82da820e2075db12046d1d061c681b2f206bc6" + + @classmethod + def get_hardware(cls): + return "None" + + @classmethod + def get_model_info(cls): + return { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/5a8b527e-f298-45db-b51a-4e1cc7d5f1eb/flux-2-pro-sm.jpg", + "created_at": "2025-11-14T22:48:19.258717Z", + "description": "High-quality image generation and editing with support for eight reference images", + "github_url": None, + "license_url": None, + "name": "flux-2-pro", + "owner": "black-forest-labs", + "is_official": True, + "paper_url": None, + "run_count": 1470916, + "url": "https://replicate.com/black-forest-labs/flux-2-pro", + "visibility": "public", + "weights_url": None, + } + + @classmethod + def return_type(cls): + return types.ImageRef + + seed: int | None = Field( + title="Seed", + description="Random seed. Set for reproducible generation", + default=None, + ) + width: int | None = Field( + title="Width", + description="Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ge=256.0, + le=2048.0, + default=None, + ) + height: int | None = Field( + title="Height", + description="Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ge=256.0, + le=2048.0, + default=None, + ) + prompt: str | None = Field( + title="Prompt", description="Text prompt for image generation", default=None + ) + resolution: Resolution = Field( + description="Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP).", + default="1 MP", + ) + aspect_ratio: Aspect_ratio = Field( + description="Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio.", + default="1:1", + ) + input_images: list = Field( + title="Input Images", + description="List of input images for image-to-image generation. Maximum 8 images. Must be jpeg, png, gif, or webp.", + default=[], + ) + output_format: Output_format = Field( + description="Format of the output images.", default="webp" + ) + output_quality: int = Field( + title="Output Quality", + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ge=0.0, + le=100.0, + default=80, + ) + safety_tolerance: int = Field( + title="Safety Tolerance", + description="Safety tolerance, 1 is most strict and 5 is most permissive", + ge=1.0, + le=5.0, + default=2, + ) + + +class Flux_2_Flex(ReplicateNode): + """Max-quality image generation and editing with support for ten reference images""" + + class Resolution(str, Enum): + MATCH_INPUT_IMAGE = "match_input_image" + _0_5_MP = "0.5 MP" + _1_MP = "1 MP" + _2_MP = "2 MP" + _4_MP = "4 MP" + + class Aspect_ratio(str, Enum): + MATCH_INPUT_IMAGE = "match_input_image" + CUSTOM = "custom" + _1_1 = "1:1" + _16_9 = "16:9" + _3_2 = "3:2" + _2_3 = "2:3" + _4_5 = "4:5" + _5_4 = "5:4" + _9_16 = "9:16" + _3_4 = "3:4" + _4_3 = "4:3" + + class Output_format(str, Enum): + WEBP = "webp" + JPG = "jpg" + PNG = "png" + + @classmethod + def get_basic_fields(cls): + return ["seed", "steps", "width"] + + @classmethod + def replicate_model_id(cls): + return "black-forest-labs/flux-2-flex:57df51f07c4bc4457b768277b1bb754a0c35b9f02c2ce48582a8b3a48fe0a2c3" + + @classmethod + def get_hardware(cls): + return "None" + + @classmethod + def get_model_info(cls): + return { + "cover_image_url": "https://replicate.delivery/xezq/DxBvdhGcpX6FLxoUikZhQdbYs87OMEv83563fspgBuXS7a2KA/tmp249z689p.webp", + "created_at": "2025-11-25T10:38:39.577145Z", + "description": "Max-quality image generation and editing with support for ten reference images", + "github_url": None, + "license_url": None, + "name": "flux-2-flex", + "owner": "black-forest-labs", + "is_official": True, + "paper_url": None, + "run_count": 85730, + "url": "https://replicate.com/black-forest-labs/flux-2-flex", + "visibility": "public", + "weights_url": None, + } + + @classmethod + def return_type(cls): + return types.ImageRef + + seed: int | None = Field( + title="Seed", + description="Random seed. Set for reproducible generation", + default=None, + ) + steps: int = Field( + title="Steps", + description="Number of inference steps", + ge=1.0, + le=50.0, + default=30, + ) + width: int | None = Field( + title="Width", + description="Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ge=256.0, + le=2048.0, + default=None, + ) + height: int | None = Field( + title="Height", + description="Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ge=256.0, + le=2048.0, + default=None, + ) + prompt: str | None = Field( + title="Prompt", description="Text prompt for image generation", default=None + ) + guidance: float = Field( + title="Guidance", + description="Guidance scale for generation. Controls how closely the output follows the prompt", + ge=1.5, + le=10.0, + default=4.5, + ) + resolution: Resolution = Field( + description="Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP).", + default="1 MP", + ) + aspect_ratio: Aspect_ratio = Field( + description="Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio.", + default="1:1", + ) + input_images: list = Field( + title="Input Images", + description="List of input images for image-to-image generation. Maximum 10 images. Must be jpeg, png, gif, or webp.", + default=[], + ) + output_format: Output_format = Field( + description="Format of the output images.", default="webp" + ) + output_quality: int = Field( + title="Output Quality", + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ge=0.0, + le=100.0, + default=80, + ) + safety_tolerance: int = Field( + title="Safety Tolerance", + description="Safety tolerance, 1 is most strict and 5 is most permissive", + ge=1.0, + le=5.0, + default=2, + ) + prompt_upsampling: bool = Field( + title="Prompt Upsampling", + description="Automatically modify the prompt for more creative generation", + default=True, + ) + + +class Flux_2_Klein_4B(ReplicateNode): + """Very fast image generation and editing model. 4 steps distilled, sub-second inference for production and near real-time applications.""" + + class Aspect_ratio(str, Enum): + _1_1 = "1:1" + _16_9 = "16:9" + _9_16 = "9:16" + _3_2 = "3:2" + _2_3 = "2:3" + _4_3 = "4:3" + _3_4 = "3:4" + _5_4 = "5:4" + _4_5 = "4:5" + _21_9 = "21:9" + _9_21 = "9:21" + MATCH_INPUT_IMAGE = "match_input_image" + + class Output_format(str, Enum): + WEBP = "webp" + JPG = "jpg" + PNG = "png" + + class Output_megapixels(str, Enum): + _0_25 = "0.25" + _0_5 = "0.5" + _1 = "1" + _2 = "2" + _4 = "4" + + @classmethod + def get_basic_fields(cls): + return ["seed", "images", "prompt"] + + @classmethod + def replicate_model_id(cls): + return "black-forest-labs/flux-2-klein-4b:8e9c42d77b10a2a41af823ac4500f7545be6ebc4e745830fc3f3de10de200542" + + @classmethod + def get_hardware(cls): + return "None" + + @classmethod + def get_model_info(cls): + return { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e32c60b0-a5e4-4846-b5e9-752df87ed6c5/replicate-klein-cover.jpg", + "created_at": "2026-01-15T11:21:33.057246Z", + "description": "Very fast image generation and editing model. 4 steps distilled, sub-second inference for production and near real-time applications.", + "github_url": "https://github.com/black-forest-labs/flux2", + "license_url": "https://github.com/black-forest-labs/flux2/blob/main/LICENSE.md", + "name": "flux-2-klein-4b", + "owner": "black-forest-labs", + "is_official": True, + "paper_url": None, + "run_count": 13583, + "url": "https://replicate.com/black-forest-labs/flux-2-klein-4b", + "visibility": "public", + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.2-klein-4B", + } + + @classmethod + def return_type(cls): + return types.ImageRef + + seed: int | None = Field( + title="Seed", + description="Random seed. Set for reproducible generation", + default=None, + ) + images: list = Field( + title="Images", + description="List of input images for image-to-image generation. Maximum 5 images. Must be jpeg, png, gif, or webp.", + default=[], + ) + prompt: str | None = Field( + title="Prompt", description="Text prompt for image generation.", default=None + ) + go_fast: bool = Field( + title="Go Fast", + description="Run faster predictions with additional optimizations.", + default=False, + ) + aspect_ratio: Aspect_ratio = Field( + description="Aspect ratio for the generated image. Use 'match_input_image' to match the aspect ratio of the first input image.", + default="1:1", + ) + output_format: Output_format = Field( + description="Format of the output images", default="jpg" + ) + output_quality: int = Field( + title="Output Quality", + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs.", + ge=0.0, + le=100.0, + default=95, + ) + output_megapixels: Output_megapixels = Field( + description="Resolution of the output image in megapixels", default="1" + ) + disable_safety_checker: bool = Field( + title="Disable Safety Checker", + description="Disable safety checker for generated images.", + default=False, + ) + + +class Flux_2_Max(ReplicateNode): + """The highest fidelity image model from Black Forest Labs""" + + class Resolution(str, Enum): + MATCH_INPUT_IMAGE = "match_input_image" + _0_5_MP = "0.5 MP" + _1_MP = "1 MP" + _2_MP = "2 MP" + _4_MP = "4 MP" + + class Aspect_ratio(str, Enum): + MATCH_INPUT_IMAGE = "match_input_image" + CUSTOM = "custom" + _1_1 = "1:1" + _16_9 = "16:9" + _3_2 = "3:2" + _2_3 = "2:3" + _4_5 = "4:5" + _5_4 = "5:4" + _9_16 = "9:16" + _3_4 = "3:4" + _4_3 = "4:3" + + class Output_format(str, Enum): + WEBP = "webp" + JPG = "jpg" + PNG = "png" + + @classmethod + def get_basic_fields(cls): + return ["seed", "width", "height"] + + @classmethod + def replicate_model_id(cls): + return "black-forest-labs/flux-2-max:c9a020854ba37d5fe801ab712570d7e437b17c148843fe96dbcb7cadd160a8f7" + + @classmethod + def get_hardware(cls): + return "None" + + @classmethod + def get_model_info(cls): + return { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8147cff6-abe5-4842-9f6d-24fe06c626b9/flux-2-max-cover.jpg", + "created_at": "2025-12-16T14:37:45.724046Z", + "description": "The highest fidelity image model from Black Forest Labs", + "github_url": None, + "license_url": None, + "name": "flux-2-max", + "owner": "black-forest-labs", + "is_official": True, + "paper_url": None, + "run_count": 196830, + "url": "https://replicate.com/black-forest-labs/flux-2-max", + "visibility": "public", + "weights_url": None, + } + + @classmethod + def return_type(cls): + return types.ImageRef + + seed: int | None = Field( + title="Seed", + description="Random seed. Set for reproducible generation", + default=None, + ) + width: int | None = Field( + title="Width", + description="Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ge=256.0, + le=2048.0, + default=None, + ) + height: int | None = Field( + title="Height", + description="Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + ge=256.0, + le=2048.0, + default=None, + ) + prompt: str | None = Field( + title="Prompt", description="Text prompt for image generation", default=None + ) + resolution: Resolution = Field( + description="Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP).", + default="1 MP", + ) + aspect_ratio: Aspect_ratio = Field( + description="Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio.", + default="1:1", + ) + input_images: list = Field( + title="Input Images", + description="List of input images for image-to-image generation. Maximum 8 images. Must be jpeg, png, gif, or webp.", + default=[], + ) + output_format: Output_format = Field( + description="Format of the output images.", default="webp" + ) + output_quality: int = Field( + title="Output Quality", + description="Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + ge=0.0, + le=100.0, + default=80, + ) + safety_tolerance: int = Field( + title="Safety Tolerance", + description="Safety tolerance, 1 is most strict and 5 is most permissive", + ge=1.0, + le=5.0, + default=2, + ) diff --git a/src/nodetool/nodes/replicate/text/generate.py b/src/nodetool/nodes/replicate/text/generate.py index f280631..0d3b4c6 100644 --- a/src/nodetool/nodes/replicate/text/generate.py +++ b/src/nodetool/nodes/replicate/text/generate.py @@ -33,7 +33,7 @@ def get_model_info(cls): "owner": "meta", "is_official": True, "paper_url": None, - "run_count": 51025551, + "run_count": 51164719, "url": "https://replicate.com/meta/meta-llama-3-8b", "visibility": "public", "weights_url": None, @@ -109,7 +109,7 @@ def get_model_info(cls): "owner": "meta", "is_official": True, "paper_url": None, - "run_count": 379769007, + "run_count": 396649837, "url": "https://replicate.com/meta/meta-llama-3-8b-instruct", "visibility": "public", "weights_url": None, @@ -185,7 +185,7 @@ def get_model_info(cls): "owner": "meta", "is_official": True, "paper_url": None, - "run_count": 841369, + "run_count": 853064, "url": "https://replicate.com/meta/meta-llama-3-70b", "visibility": "public", "weights_url": None, @@ -261,7 +261,7 @@ def get_model_info(cls): "owner": "meta", "is_official": True, "paper_url": None, - "run_count": 379769007, + "run_count": 396649837, "url": "https://replicate.com/meta/meta-llama-3-8b-instruct", "visibility": "public", "weights_url": None, @@ -337,7 +337,7 @@ def get_model_info(cls): "owner": "meta", "is_official": True, "paper_url": None, - "run_count": 160492085, + "run_count": 164531632, "url": "https://replicate.com/meta/meta-llama-3-70b-instruct", "visibility": "public", "weights_url": None, @@ -395,7 +395,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "meta/meta-llama-3.1-405b-instruct:e6cb7fc3ed90eae2c879c48deda8f49152391ad66349fe7694be24089c29f71c" + return "meta/meta-llama-3.1-405b-instruct:4ff591d23f09abef843c126a3c526bffb037a4e854e0af5af133a4d0f4243181" @classmethod def get_hardware(cls): @@ -413,7 +413,7 @@ def get_model_info(cls): "owner": "meta", "is_official": True, "paper_url": None, - "run_count": 6447804, + "run_count": 6990400, "url": "https://replicate.com/meta/meta-llama-3.1-405b-instruct", "visibility": "public", "weights_url": None, @@ -454,10 +454,15 @@ def return_type(cls): description="System prompt to send to the model. This is prepended to the prompt and helps guide system behavior. Ignored for non-chat models.", default="You are a helpful assistant.", ) - stop_sequences: str | None = Field( + stop_sequences: str = Field( title="Stop Sequences", description="A comma-separated list of sequences to stop generation at. For example, ',' will stop generation at the first instance of 'end' or ''.", - default=None, + default="", + ) + prompt_template: str = Field( + title="Prompt Template", + description="A template to format the prompt with. If not provided, the default prompt template will be used.", + default="", ) presence_penalty: float = Field( title="Presence Penalty", description="Presence penalty", default=0 @@ -494,7 +499,7 @@ def get_model_info(cls): "owner": "meta", "is_official": False, "paper_url": "https://arxiv.org/abs/2312.06674", - "run_count": 1474, + "run_count": 1506, "url": "https://replicate.com/meta/llama-guard-3-11b-vision", "visibility": "public", "weights_url": "https://huggingface.co/meta-llama/Llama-Guard-3-11B-Vision", @@ -541,7 +546,7 @@ def get_model_info(cls): "owner": "meta", "is_official": False, "paper_url": "https://arxiv.org/abs/2407.21783", - "run_count": 356535, + "run_count": 359949, "url": "https://replicate.com/meta/llama-guard-3-8b", "visibility": "public", "weights_url": "https://huggingface.co/meta-llama/Llama-Guard-3-8B", @@ -588,7 +593,7 @@ def get_model_info(cls): "owner": "snowflake", "is_official": True, "paper_url": None, - "run_count": 1979650, + "run_count": 1996658, "url": "https://replicate.com/snowflake/snowflake-arctic-instruct", "visibility": "public", "weights_url": None, @@ -629,7 +634,7 @@ def get_model_info(cls): "owner": "anthropic", "is_official": True, "paper_url": None, - "run_count": 2684220, + "run_count": 3612938, "url": "https://replicate.com/anthropic/claude-3.7-sonnet", "visibility": "public", "weights_url": None, @@ -673,7 +678,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "deepseek-ai/deepseek-r1:d0426501ce0499770ac3d3494e9f3c7c03f9b10e569212f6148a4fd337ec3ece" + return "deepseek-ai/deepseek-r1:fec99f91f58ce5302af6d4cfd8638846925f47e0cd39a4554637806e8379766d" @classmethod def get_hardware(cls): @@ -691,7 +696,7 @@ def get_model_info(cls): "owner": "deepseek-ai", "is_official": True, "paper_url": None, - "run_count": 2027425, + "run_count": 2167639, "url": "https://replicate.com/deepseek-ai/deepseek-r1", "visibility": "public", "weights_url": "https://huggingface.co/deepseek-ai/DeepSeek-R1", @@ -708,7 +713,7 @@ def return_type(cls): max_tokens: int = Field( title="Max Tokens", description="The maximum number of tokens the model should generate as output.", - default=20480, + default=2048, ) temperature: float = Field( title="Temperature", @@ -748,7 +753,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "openai/gpt-5-structured:dce923827d0d1384c9b16aeb95d3f21a34e4b5a6deffdf160d952917dbc545e1" + return "openai/gpt-5-structured:4e32e66191d7bdfcabf4398892aa77f0352964520ae6bc545ed60add03090d91" @classmethod def get_hardware(cls): @@ -766,7 +771,7 @@ def get_model_info(cls): "owner": "openai", "is_official": True, "paper_url": None, - "run_count": 42702, + "run_count": 354745, "url": "https://replicate.com/openai/gpt-5-structured", "visibility": "public", "weights_url": None, @@ -857,7 +862,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "openai/gpt-5:857113f52713e87828867975887fb4d369789052c5c63076933548b2720044da" + return "openai/gpt-5:e66760af5e83560f7d8d71e3420dce9362cea9ac41a492e5ba41e40405b62c55" @classmethod def get_hardware(cls): @@ -866,7 +871,7 @@ def get_hardware(cls): @classmethod def get_model_info(cls): return { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/df3c6e87-cc46-40d9-a48f-381f80c7b10f/Screenshot_2025-08-07_at_1.04..png", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/93d32638-644c-4926-8d07-ad01eec112fb/gpt-5-sm.jpg", "created_at": "2025-08-07T01:46:29.933808Z", "description": "OpenAI's new model excelling at coding, writing, and reasoning.", "github_url": None, @@ -875,7 +880,7 @@ def get_model_info(cls): "owner": "openai", "is_official": True, "paper_url": None, - "run_count": 127403, + "run_count": 973200, "url": "https://replicate.com/openai/gpt-5", "visibility": "public", "weights_url": None, @@ -940,7 +945,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "openai/gpt-5-mini:ee1342634b9ffcd6c76f6ea5b8f3ca0964b3eb469fc552ad937aa214e6d20636" + return "openai/gpt-5-mini:ea9e381ae5a1370344caf7103b2efd367cc37f30e42b7acc6c3bcb2b140182e1" @classmethod def get_hardware(cls): @@ -958,7 +963,7 @@ def get_model_info(cls): "owner": "openai", "is_official": True, "paper_url": None, - "run_count": 45503, + "run_count": 718804, "url": "https://replicate.com/openai/gpt-5-mini", "visibility": "public", "weights_url": None, @@ -1023,7 +1028,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "openai/gpt-5-nano:81858e36d5992ce06c1510cbe0a5e46c7ff17418424bd13da7c2443c4b318e40" + return "openai/gpt-5-nano:7ac1cc959145e65a06f2931cc378602226a85b286c00431baa32905550501923" @classmethod def get_hardware(cls): @@ -1041,7 +1046,7 @@ def get_model_info(cls): "owner": "openai", "is_official": True, "paper_url": None, - "run_count": 40105, + "run_count": 3792355, "url": "https://replicate.com/openai/gpt-5-nano", "visibility": "public", "weights_url": None, @@ -1095,7 +1100,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "openai/gpt-4.1:90d0a88c78740b21d9c98d5b245bce12f06bb2aecf074c1b3108748c2f26ed9c" + return "openai/gpt-4.1:12500eb28df96f9b9a30ae89f02652414f9d692ad391cea2c326015aa719e1a2" @classmethod def get_hardware(cls): @@ -1113,7 +1118,7 @@ def get_model_info(cls): "owner": "openai", "is_official": True, "paper_url": None, - "run_count": 117824, + "run_count": 273259, "url": "https://replicate.com/openai/gpt-4.1", "visibility": "public", "weights_url": None, @@ -1187,7 +1192,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "openai/gpt-4.1-mini:2e47757e2b7aa34decf05335dc78ad7968386e8aacd345dd045b6dfeb622cd69" + return "openai/gpt-4.1-mini:029d04e27c11b0898c24e0d8ae12c93dee8edbf3ff59a839e8a4a896691b733a" @classmethod def get_hardware(cls): @@ -1205,7 +1210,7 @@ def get_model_info(cls): "owner": "openai", "is_official": True, "paper_url": None, - "run_count": 1153729, + "run_count": 1388612, "url": "https://replicate.com/openai/gpt-4.1-mini", "visibility": "public", "weights_url": None, @@ -1279,7 +1284,7 @@ def get_basic_fields(cls): @classmethod def replicate_model_id(cls): - return "openai/gpt-4.1-nano:ec69f9c119aaf7d5a851b4dc9d08337a16906ee397a5d3d492fd52fbc59ea2a1" + return "openai/gpt-4.1-nano:d16a8857696f4bb42006b2f3799b590111a7365280f9b7f0c898f8e2ee3b8ea2" @classmethod def get_hardware(cls): @@ -1297,7 +1302,7 @@ def get_model_info(cls): "owner": "openai", "is_official": True, "paper_url": None, - "run_count": 366855, + "run_count": 1017580, "url": "https://replicate.com/openai/gpt-4.1-nano", "visibility": "public", "weights_url": None, @@ -1365,13 +1370,17 @@ def return_type(cls): class Deepseek_V3_1(ReplicateNode): """Latest hybrid thinking model from Deepseek""" + class Thinking(str, Enum): + MEDIUM = "medium" + NONE = "None" + @classmethod def get_basic_fields(cls): - return ["top_p", "prompt", "max_tokens"] + return ["top_p", "prompt", "thinking"] @classmethod def replicate_model_id(cls): - return "deepseek-ai/deepseek-v3.1:a25971b28df7bdd9891b77e1877207aa953d1dd92cc3f1903565f94b12f3f0ba" + return "deepseek-ai/deepseek-v3.1:279f6b0991efaba468503a13d7726829cd76ea12076af7521a41578c2f19f581" @classmethod def get_hardware(cls): @@ -1389,7 +1398,7 @@ def get_model_info(cls): "owner": "deepseek-ai", "is_official": True, "paper_url": None, - "run_count": 2927, + "run_count": 240678, "url": "https://replicate.com/deepseek-ai/deepseek-v3.1", "visibility": "public", "weights_url": None, @@ -1400,34 +1409,121 @@ def return_type(cls): return str top_p: float = Field( - title="Top P", description="Top-p (nucleus) sampling", ge=0.0, le=1.0, default=1 + title="Top P", description="Top-p (nucleus) sampling", default=1 + ) + prompt: str = Field( + title="Prompt", + description="Prompt", + default="Why are you better than Deepseek v3?", + ) + thinking: Thinking = Field( + description="Reasoning effort level for DeepSeek models. Use 'medium' for enhanced reasoning or leave as None for default behavior.", + default="None", ) - prompt: str = Field(title="Prompt", description="Prompt", default="") max_tokens: int = Field( title="Max Tokens", description="The maximum number of tokens the model should generate as output.", - ge=1.0, - le=16384.0, default=1024, ) temperature: float = Field( title="Temperature", description="The value used to modulate the next token probabilities.", - ge=0.0, - le=2.0, default=0.1, ) presence_penalty: float = Field( - title="Presence Penalty", - description="Presence penalty", - ge=-2.0, - le=2.0, - default=0, + title="Presence Penalty", description="Presence penalty", default=0 ) frequency_penalty: float = Field( - title="Frequency Penalty", - description="Frequency penalty", - ge=-2.0, + title="Frequency Penalty", description="Frequency penalty", default=0 + ) + + +class Gemini_3_Pro(ReplicateNode): + """Google's most advanced reasoning Gemini model""" + + class Thinking_level(str, Enum): + LOW = "low" + HIGH = "high" + + @classmethod + def get_basic_fields(cls): + return ["audio", "top_p", "images"] + + @classmethod + def replicate_model_id(cls): + return "google/gemini-3-pro:6c727b6aa9d5663b515ff4d6d36520213d9991d5078adeafce44e6e49ed6f6ac" + + @classmethod + def get_hardware(cls): + return "None" + + @classmethod + def get_model_info(cls): + return { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/491d3732-fa76-4f92-aa17-d073f38c1a77/Gemini-3.png", + "created_at": "2025-11-18T17:15:58.365236Z", + "description": "Google's most advanced reasoning Gemini model", + "github_url": None, + "license_url": None, + "name": "gemini-3-pro", + "owner": "google", + "is_official": True, + "paper_url": None, + "run_count": 481985, + "url": "https://replicate.com/google/gemini-3-pro", + "visibility": "public", + "weights_url": None, + } + + @classmethod + def return_type(cls): + return str + + audio: str | None = Field( + title="Audio", + description="Input audio to send with the prompt (max 1 audio file, up to 8.4 hours)", + default=None, + ) + top_p: float = Field( + title="Top P", + description="Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass", + ge=0.0, + le=1.0, + default=0.95, + ) + images: list = Field( + title="Images", + description="Input images to send with the prompt (max 10 images, each up to 7MB)", + default=[], + ) + prompt: str | None = Field( + title="Prompt", description="The text prompt to send to the model", default=None + ) + videos: list = Field( + title="Videos", + description="Input videos to send with the prompt (max 10 videos, each up to 45 minutes)", + default=[], + ) + temperature: float = Field( + title="Temperature", + description="Sampling temperature between 0 and 2", + ge=0.0, le=2.0, - default=0, + default=1, + ) + thinking_level: typing.Optional[Thinking_level] = Field( + description="Thinking level for reasoning (low or high). Replaces thinking_budget for Gemini 3 models.", + default=None, + ) + max_output_tokens: int = Field( + title="Max Output Tokens", + description="Maximum number of tokens to generate", + ge=1.0, + le=65535.0, + default=65535, + ) + system_instruction: str | None = Field( + title="System Instruction", + description="System instruction to guide the model's behavior", + default=None, ) diff --git a/src/nodetool/package_metadata/nodetool-replicate.json b/src/nodetool/package_metadata/nodetool-replicate.json index ce7611f..9d14017 100644 --- a/src/nodetool/package_metadata/nodetool-replicate.json +++ b/src/nodetool/package_metadata/nodetool-replicate.json @@ -1,315 +1,310 @@ { "name": "nodetool-replicate", "description": "Replicate support for Nodetool", - "version": "0.6.2-rc.18", + "version": "0.6.2-rc.26", "authors": [ "Matthias Georgi " ], "repo_id": "", "nodes": [ { - "title": "Audio To Waveform", - "description": "Create a waveform video from audio", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.AudioToWaveform", + "title": "Claude 3 7 Sonnet", + "description": "The most intelligent Claude model and the first hybrid reasoning model on the market (claude-3-7-sonnet-20250219)", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Claude_3_7_Sonnet", "properties": [ { - "name": "audio", - "type": { - "type": "audio" - }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Audio", - "description": "Audio file to create waveform from" - }, - { - "name": "bg_color", + "name": "image", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "#000000", - "title": "Bg Color", - "description": "Background color of waveform" + "default": null, + "title": "Image", + "description": "Optional input image. Images are priced as (width px * height px)/750 input tokens" }, { - "name": "fg_alpha", + "name": "prompt", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0.75, - "title": "Fg Alpha", - "description": "Opacity of foreground waveform" + "default": null, + "title": "Prompt", + "description": "Input prompt" }, { - "name": "bar_count", + "name": "max_tokens", "type": { "type": "int" }, - "default": 100, - "title": "Bar Count", - "description": "Number of bars in waveform" - }, - { - "name": "bar_width", - "type": { - "type": "float" - }, - "default": 0.4, - "title": "Bar Width", - "description": "Width of bars in waveform. 1 represents full width, 0.5 represents half width, etc." + "default": 8192, + "title": "Max Tokens", + "description": "Maximum number of output tokens", + "min": 1024.0, + "max": 64000.0 }, { - "name": "bars_color", + "name": "system_prompt", "type": { "type": "str" }, - "default": "#ffffff", - "title": "Bars Color", - "description": "Color of waveform bars" + "default": "", + "title": "System Prompt", + "description": "System prompt" }, { - "name": "caption_text", + "name": "max_image_resolution", "type": { - "type": "str" + "type": "float" }, - "default": "", - "title": "Caption Text", - "description": "Caption text for the video" + "default": 0.5, + "title": "Max Image Resolution", + "description": "Maximum image resolution in megapixels. Scales down image before sending it to Claude, to save time and money.", + "min": 0.001, + "max": 2.0 } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/5d5cad9c-d4ba-44e1-8c4f-dc08648bbf5e/fofr_a_waveform_bar_chart_video_e.png", - "created_at": "2023-06-13T15:26:38.672021Z", - "description": "Create a waveform video from audio", - "github_url": "https://github.com/fofr/audio-to-waveform", - "license_url": "https://github.com/fofr/audio-to-waveform/blob/main/LICENSE", - "name": "audio-to-waveform", - "owner": "fofr", - "is_official": false, - "paper_url": "https://gradio.app/docs/#make_waveform", - "run_count": 383547, - "url": "https://replicate.com/fofr/audio-to-waveform", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/56aed331-fb30-4e82-9708-b63b2fa90699/claude-3.7-logo.webp", + "created_at": "2025-02-25T15:21:57.270034Z", + "description": "The most intelligent Claude model and the first hybrid reasoning model on the market (claude-3-7-sonnet-20250219)", + "github_url": null, + "license_url": "https://www.anthropic.com/legal/consumer-terms", + "name": "claude-3.7-sonnet", + "owner": "anthropic", + "is_official": true, + "paper_url": null, + "run_count": 3612938, + "url": "https://replicate.com/anthropic/claude-3.7-sonnet", "visibility": "public", "weights_url": null }, "basic_fields": [ - "audio", - "bg_color", - "fg_alpha" + "image", + "prompt", + "max_tokens" ] }, { - "title": "Gen 4 Aleph", - "description": "A new way to edit, transform and generate video", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Gen4_Aleph", + "title": "Deepseek R 1", + "description": "A reasoning model trained with reinforcement learning, on par with OpenAI o1", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Deepseek_R1", "properties": [ { - "name": "seed", + "name": "top_p", "type": { - "type": "int", - "optional": true + "type": "float" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": 1, + "title": "Top P", + "description": "Top-p (nucleus) sampling" }, { - "name": "video", + "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, - "title": "Video", - "description": "Input video to generate from. Videos must be less than 16MB. Only 5s of the input video will be used." + "default": "", + "title": "Prompt", + "description": "Prompt" }, { - "name": "prompt", + "name": "max_tokens", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for video generation" + "default": 2048, + "title": "Max Tokens", + "description": "The maximum number of tokens the model should generate as output." }, { - "name": "aspect_ratio", + "name": "temperature", "type": { - "type": "enum", - "values": [ - "16:9", - "9:16", - "4:3", - "3:4", - "1:1", - "21:9" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Gen4_Aleph.Aspect_ratio" + "type": "float" }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Video aspect ratio" + "default": 0.1, + "title": "Temperature", + "description": "The value used to modulate the next token probabilities." }, { - "name": "reference_image", + "name": "presence_penalty", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Reference Image", - "description": "Reference image to influence the style or content of the output." + "default": 0, + "title": "Presence Penalty", + "description": "Presence penalty" + }, + { + "name": "frequency_penalty", + "type": { + "type": "float" + }, + "default": 0, + "title": "Frequency Penalty", + "description": "Frequency penalty" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b8148ec5-c33f-4e04-a006-2d5c7d4d092a/combined_left_right.mp4", - "created_at": "2025-08-05T09:25:34.423358Z", - "description": "A new way to edit, transform and generate video", - "github_url": null, - "license_url": null, - "name": "gen4-aleph", - "owner": "runwayml", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/302182ab-af74-4963-97f2-6121a80c61d7/deepseek-r1-cover.webp", + "created_at": "2025-01-29T02:46:11.806773Z", + "description": "A reasoning model trained with reinforcement learning, on par with OpenAI o1", + "github_url": "https://github.com/deepseek-ai/DeepSeek-R1", + "license_url": "https://github.com/deepseek-ai/DeepSeek-R1/blob/main/LICENSE", + "name": "deepseek-r1", + "owner": "deepseek-ai", "is_official": true, - "paper_url": "https://runwayml.com/research/introducing-runway-aleph", - "run_count": 10340, - "url": "https://replicate.com/runwayml/gen4-aleph", + "paper_url": null, + "run_count": 2167639, + "url": "https://replicate.com/deepseek-ai/deepseek-r1", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/deepseek-ai/DeepSeek-R1" }, "basic_fields": [ - "seed", - "video", - "prompt" + "top_p", + "prompt", + "max_tokens" ] }, { - "title": "Gen 4 Turbo", - "description": "Generate 5s and 10s 720p videos fast", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Gen4_Turbo", + "title": "Deepseek V 3 1", + "description": "Latest hybrid thinking model from Deepseek", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Deepseek_V3_1", "properties": [ { - "name": "seed", + "name": "top_p", "type": { - "type": "int", - "optional": true + "type": "float" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": 1, + "title": "Top P", + "description": "Top-p (nucleus) sampling" }, { - "name": "image", + "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, - "title": "Image", - "description": "Initial image for video generation (first frame)" + "default": "Why are you better than Deepseek v3?", + "title": "Prompt", + "description": "Prompt" }, { - "name": "prompt", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Prompt", - "description": "Text prompt for video generation" - }, - { - "name": "duration", + "name": "thinking", "type": { "type": "enum", "values": [ - 5, - 10 + "medium", + "None" ], - "type_name": "nodetool.nodes.replicate.video.generate.Gen4_Turbo.Duration" + "type_name": "nodetool.nodes.replicate.text.generate.Deepseek_V3_1.Thinking" }, - "default": 5, - "title": "Duration", - "description": "Duration of the output video in seconds" + "default": "None", + "title": "Thinking", + "description": "Reasoning effort level for DeepSeek models. Use 'medium' for enhanced reasoning or leave as None for default behavior." }, { - "name": "aspect_ratio", + "name": "max_tokens", "type": { - "type": "enum", - "values": [ - "16:9", - "9:16", - "4:3", - "3:4", - "1:1", - "21:9" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Gen4_Turbo.Aspect_ratio" + "type": "int" }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Video aspect ratio" + "default": 1024, + "title": "Max Tokens", + "description": "The maximum number of tokens the model should generate as output." + }, + { + "name": "temperature", + "type": { + "type": "float" + }, + "default": 0.1, + "title": "Temperature", + "description": "The value used to modulate the next token probabilities." + }, + { + "name": "presence_penalty", + "type": { + "type": "float" + }, + "default": 0, + "title": "Presence Penalty", + "description": "Presence penalty" + }, + { + "name": "frequency_penalty", + "type": { + "type": "float" + }, + "default": 0, + "title": "Frequency Penalty", + "description": "Frequency penalty" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/32f1975a-faa7-419b-8781-01c2f1593dc4/replicate-prediction-y3p6xca9r.mp4", - "created_at": "2025-07-21T16:53:27.233701Z", - "description": "Generate 5s and 10s 720p videos fast", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8d444a48-2b5e-46ba-80dd-bfbdae41ffb8/tmp2xmj7b2x.jpg", + "created_at": "2025-08-25T18:41:12.219732Z", + "description": "Latest hybrid thinking model from Deepseek", "github_url": null, "license_url": null, - "name": "gen4-turbo", - "owner": "runwayml", + "name": "deepseek-v3.1", + "owner": "deepseek-ai", "is_official": true, "paper_url": null, - "run_count": 15898, - "url": "https://replicate.com/runwayml/gen4-turbo", + "run_count": 240678, + "url": "https://replicate.com/deepseek-ai/deepseek-v3.1", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "image", - "prompt" + "top_p", + "prompt", + "thinking" ] }, { - "title": "Hailuo 02", - "description": "Hailuo 2 is a text-to-video and image-to-video model that can make 6s or 10s videos at 768p (standard) or 1080p (pro). It excels at real world physics.", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Hailuo_02", + "title": "GPT 4 1", + "description": "OpenAI's Flagship GPT model for complex tasks.", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.GPT_4_1", "properties": [ + { + "name": "top_p", + "type": { + "type": "float" + }, + "default": 1, + "title": "Top P", + "description": "Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", + "min": 0.0, + "max": 1.0 + }, { "name": "prompt", "type": { @@ -318,535 +313,483 @@ }, "default": null, "title": "Prompt", - "description": "Text prompt for generation" + "description": "The prompt to send to the model. Do not use if using messages." }, { - "name": "duration", + "name": "messages", "type": { - "type": "enum", - "values": [ - 6, - 10 - ], - "type_name": "nodetool.nodes.replicate.video.generate.Hailuo_02.Duration" + "type": "list" }, - "default": 6, - "title": "Duration", - "description": "Duration of the video in seconds. 10 seconds is only available for 768p resolution." + "default": [], + "title": "Messages", + "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." }, { - "name": "resolution", + "name": "image_input", "type": { - "type": "enum", - "values": [ - "512p", - "768p", - "1080p" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Hailuo_02.Resolution" + "type": "list" }, - "default": "1080p", - "title": "Resolution", - "description": "Pick between standard 512p, 768p, or pro 1080p resolution. The pro model is not just high resolution, it is also higher quality." + "default": [], + "title": "Image Input", + "description": "List of images to send to the model" }, { - "name": "last_frame_image", + "name": "temperature", + "type": { + "type": "float" + }, + "default": 1, + "title": "Temperature", + "description": "Sampling temperature between 0 and 2", + "min": 0.0, + "max": 2.0 + }, + { + "name": "system_prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Last Frame Image", - "description": "Last frame image for video generation. The final frame of the output video will match this image." + "title": "System Prompt", + "description": "System prompt to set the assistant's behavior" }, { - "name": "prompt_optimizer", + "name": "presence_penalty", "type": { - "type": "bool" + "type": "float" }, - "default": true, - "title": "Prompt Optimizer", - "description": "Use prompt optimizer" + "default": 0, + "title": "Presence Penalty", + "description": "Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", + "min": -2.0, + "max": 2.0 }, { - "name": "first_frame_image", + "name": "frequency_penalty", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "First Frame Image", - "description": "First frame image for video generation. The output video will have the same aspect ratio as this image." + "default": 0, + "title": "Frequency Penalty", + "description": "Frequency penalty parameter - positive values penalize the repetition of tokens.", + "min": -2.0, + "max": 2.0 + }, + { + "name": "max_completion_tokens", + "type": { + "type": "int" + }, + "default": 4096, + "title": "Max Completion Tokens", + "description": "Maximum number of completion tokens to generate" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e2953b9d-ef83-4a4a-b90f-1ef168223bf2/tmpbufkswx1.mp4", - "created_at": "2025-07-02T11:02:01.844243Z", - "description": "Hailuo 2 is a text-to-video and image-to-video model that can make 6s or 10s videos at 768p (standard) or 1080p (pro). It excels at real world physics.", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8dbaab0b-d3e7-4bae-8772-d7e1f879d537/gpt-4.1.webp", + "created_at": "2025-05-01T04:55:34.442201Z", + "description": "OpenAI's Flagship GPT model for complex tasks.", "github_url": null, - "license_url": null, - "name": "hailuo-02", - "owner": "minimax", + "license_url": "https://openai.com/policies/", + "name": "gpt-4.1", + "owner": "openai", "is_official": true, "paper_url": null, - "run_count": 95634, - "url": "https://replicate.com/minimax/hailuo-02", + "run_count": 273259, + "url": "https://replicate.com/openai/gpt-4.1", "visibility": "public", "weights_url": null }, "basic_fields": [ + "top_p", "prompt", - "duration", - "resolution" + "messages" ] }, { - "title": "Hotshot XL", - "description": "\ud83d\ude0a Hotshot-XL is an AI text-to-GIF model trained to work alongside Stable Diffusion XL", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.HotshotXL", + "title": "GPT 4 1 Mini", + "description": "Fast, affordable version of GPT-4.1", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.GPT_4_1_Mini", "properties": [ { - "name": "mp4", + "name": "top_p", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Mp4", - "description": "Save as mp4, False for GIF" + "default": 1, + "title": "Top P", + "description": "Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", + "min": 0.0, + "max": 1.0 }, { - "name": "seed", + "name": "prompt", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "title": "Prompt", + "description": "The prompt to send to the model. Do not use if using messages." }, { - "name": "steps", + "name": "messages", "type": { - "type": "int" + "type": "list" }, - "default": 30, - "title": "Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "default": [], + "title": "Messages", + "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." }, { - "name": "width", + "name": "image_input", "type": { - "type": "enum", - "values": [ - 256, - 320, - 384, - 448, - 512, - 576, - 640, - 672, - 704, - 768, - 832, - 896, - 960, - 1024 - ], - "type_name": "nodetool.nodes.replicate.video.generate.HotshotXL.Width" + "type": "list" }, - "default": 672, - "title": "Width", - "description": "Width of the output" + "default": [], + "title": "Image Input", + "description": "List of images to send to the model" }, { - "name": "height", + "name": "temperature", "type": { - "type": "enum", - "values": [ - 256, - 320, - 384, - 448, - 512, - 576, - 640, - 672, - 704, - 768, - 832, - 896, - 960, - 1024 - ], - "type_name": "nodetool.nodes.replicate.video.generate.HotshotXL.Height" + "type": "float" }, - "default": 384, - "title": "Height", - "description": "Height of the output" + "default": 1, + "title": "Temperature", + "description": "Sampling temperature between 0 and 2", + "min": 0.0, + "max": 2.0 }, { - "name": "prompt", + "name": "system_prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "a camel smoking a cigarette, hd, high quality", - "title": "Prompt", - "description": "Input prompt" + "default": null, + "title": "System Prompt", + "description": "System prompt to set the assistant's behavior" }, { - "name": "scheduler", + "name": "presence_penalty", "type": { - "type": "enum", - "values": [ - "DDIMScheduler", - "DPMSolverMultistepScheduler", - "HeunDiscreteScheduler", - "KarrasDPM", - "EulerAncestralDiscreteScheduler", - "EulerDiscreteScheduler", - "PNDMScheduler" - ], - "type_name": "nodetool.nodes.replicate.video.generate.HotshotXL.Scheduler" + "type": "float" }, - "default": "EulerAncestralDiscreteScheduler", - "title": "Scheduler", - "description": "Select a Scheduler" + "default": 0, + "title": "Presence Penalty", + "description": "Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", + "min": -2.0, + "max": 2.0 }, { - "name": "negative_prompt", + "name": "frequency_penalty", "type": { - "type": "str" + "type": "float" }, - "default": "blurry", - "title": "Negative Prompt", - "description": "Negative prompt" + "default": 0, + "title": "Frequency Penalty", + "description": "Frequency penalty parameter - positive values penalize the repetition of tokens.", + "min": -2.0, + "max": 2.0 + }, + { + "name": "max_completion_tokens", + "type": { + "type": "int" + }, + "default": 4096, + "title": "Max Completion Tokens", + "description": "Maximum number of completion tokens to generate" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/70393e62-deab-4f95-ace7-eaeb8a9800db/compressed.gif", - "created_at": "2023-10-05T04:09:21.646870Z", - "description": "\ud83d\ude0a Hotshot-XL is an AI text-to-GIF model trained to work alongside Stable Diffusion XL", - "github_url": "https://github.com/lucataco/cog-hotshot-xl", - "license_url": "https://github.com/hotshotco/Hotshot-XL/blob/main/LICENSE", - "name": "hotshot-xl", - "owner": "lucataco", - "is_official": false, - "paper_url": "https://huggingface.co/hotshotco/SDXL-512", - "run_count": 782529, - "url": "https://replicate.com/lucataco/hotshot-xl", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/6f1609f1-ba45-4513-bfd6-7dfcb95efad8/Screenshot_2025-05-01_at_12.03.png", + "created_at": "2025-05-01T06:57:43.806670Z", + "description": "Fast, affordable version of GPT-4.1", + "github_url": null, + "license_url": "https://openai.com/policies/", + "name": "gpt-4.1-mini", + "owner": "openai", + "is_official": true, + "paper_url": null, + "run_count": 1388612, + "url": "https://replicate.com/openai/gpt-4.1-mini", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mp4", - "seed", - "steps" + "top_p", + "prompt", + "messages" ] }, { - "title": "Hunyuan Video", - "description": "A state-of-the-art text-to-video generation model capable of creating high-quality videos with realistic motion from text descriptions", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Hunyuan_Video", + "title": "GPT 4 1 Nano", + "description": "Fastest, most cost-effective GPT-4.1 model from OpenAI", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.GPT_4_1_Nano", "properties": [ { - "name": "fps", + "name": "top_p", "type": { - "type": "int" + "type": "float" }, - "default": 24, - "title": "Fps", - "description": "Frames per second of the output video", - "min": 1.0 + "default": 1, + "title": "Top P", + "description": "Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", + "min": 0.0, + "max": 1.0 }, { - "name": "seed", + "name": "prompt", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed (leave empty for random)" + "title": "Prompt", + "description": "The prompt to send to the model. Do not use if using messages." }, { - "name": "width", + "name": "messages", "type": { - "type": "int" + "type": "list" }, - "default": 864, - "title": "Width", - "description": "Width of the video in pixels (must be divisible by 16)", - "min": 16.0, - "max": 1280.0 + "default": [], + "title": "Messages", + "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." }, { - "name": "height", + "name": "image_input", "type": { - "type": "int" + "type": "list" }, - "default": 480, - "title": "Height", - "description": "Height of the video in pixels (must be divisible by 16)", - "min": 16.0, - "max": 1280.0 + "default": [], + "title": "Image Input", + "description": "List of images to send to the model" }, { - "name": "prompt", + "name": "temperature", "type": { - "type": "str" + "type": "float" }, - "default": "A cat walks on the grass, realistic style", - "title": "Prompt", - "description": "The prompt to guide the video generation" + "default": 1, + "title": "Temperature", + "description": "Sampling temperature between 0 and 2", + "min": 0.0, + "max": 2.0 }, { - "name": "infer_steps", + "name": "system_prompt", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 50, - "title": "Infer Steps", - "description": "Number of denoising steps", - "min": 1.0 + "default": null, + "title": "System Prompt", + "description": "System prompt to set the assistant's behavior" }, { - "name": "video_length", + "name": "presence_penalty", "type": { - "type": "int" + "type": "float" }, - "default": 129, - "title": "Video Length", - "description": "Number of frames to generate (must be 4k+1, ex: 49 or 129)", - "min": 1.0, - "max": 200.0 + "default": 0, + "title": "Presence Penalty", + "description": "Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", + "min": -2.0, + "max": 2.0 }, { - "name": "embedded_guidance_scale", + "name": "frequency_penalty", "type": { "type": "float" }, - "default": 6, - "title": "Embedded Guidance Scale", - "description": "Guidance scale", - "min": 1.0, - "max": 10.0 + "default": 0, + "title": "Frequency Penalty", + "description": "Frequency penalty parameter - positive values penalize the repetition of tokens.", + "min": -2.0, + "max": 2.0 + }, + { + "name": "max_completion_tokens", + "type": { + "type": "int" + }, + "default": 4096, + "title": "Max Completion Tokens", + "description": "Maximum number of completion tokens to generate" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3bebc89d-37c7-47ea-9a7b-a334b76eea87/hunyuan-featured.webp", - "created_at": "2024-12-03T14:21:37.443615Z", - "description": "A state-of-the-art text-to-video generation model capable of creating high-quality videos with realistic motion from text descriptions", - "github_url": "https://github.com/zsxkib/HunyuanVideo/tree/replicate", - "license_url": "https://huggingface.co/tencent/HunyuanVideo/blob/main/LICENSE", - "name": "hunyuan-video", - "owner": "tencent", - "is_official": false, - "paper_url": "https://github.com/Tencent/HunyuanVideo/blob/main/assets/hunyuanvideo.pdf", - "run_count": 112508, - "url": "https://replicate.com/tencent/hunyuan-video", - "visibility": "public", - "weights_url": "https://huggingface.co/tencent/HunyuanVideo" - }, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/f2c12cca-5859-407a-9189-0509526e4757/Screenshot_2025-05-01_at_12.29.png", + "created_at": "2025-05-01T07:26:10.557033Z", + "description": "Fastest, most cost-effective GPT-4.1 model from OpenAI", + "github_url": null, + "license_url": "https://openai.com/policies/", + "name": "gpt-4.1-nano", + "owner": "openai", + "is_official": true, + "paper_url": null, + "run_count": 1017580, + "url": "https://replicate.com/openai/gpt-4.1-nano", + "visibility": "public", + "weights_url": null + }, "basic_fields": [ - "fps", - "seed", - "width" + "top_p", + "prompt", + "messages" ] }, { - "title": "Kling Lip Sync", - "description": "Add lip-sync to any video with an audio file or text", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Kling_Lip_Sync", + "title": "GPT 5", + "description": "OpenAI's new model excelling at coding, writing, and reasoning.", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.GPT_5", "properties": [ { - "name": "text", + "name": "prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Text", - "description": "Text content for lip sync (if not using audio)" + "title": "Prompt", + "description": "The prompt to send to the model. Do not use if using messages." }, { - "name": "video_id", + "name": "messages", "type": { - "type": "str", - "optional": true + "type": "list" }, - "default": null, - "title": "Video Id", - "description": "ID of a video generated by Kling. Cannot be used with video_url." + "default": [], + "title": "Messages", + "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." }, { - "name": "voice_id", + "name": "verbosity", "type": { "type": "enum", "values": [ - "en_AOT", - "en_oversea_male1", - "en_girlfriend_4_speech02", - "en_chat_0407_5-1", - "en_uk_boy1", - "en_PeppaPig_platform", - "en_ai_huangzhong_712", - "en_calm_story1", - "en_uk_man2", - "en_reader_en_m-v1", - "en_commercial_lady_en_f-v1", - "zh_genshin_vindi2", - "zh_zhinen_xuesheng", - "zh_tiyuxi_xuedi", - "zh_ai_shatang", - "zh_genshin_klee2", - "zh_genshin_kirara", - "zh_ai_kaiya", - "zh_tiexin_nanyou", - "zh_ai_chenjiahao_712", - "zh_girlfriend_1_speech02", - "zh_chat1_female_new-3", - "zh_girlfriend_2_speech02", - "zh_cartoon-boy-07", - "zh_cartoon-girl-01", - "zh_ai_huangyaoshi_712", - "zh_you_pingjing", - "zh_ai_laoguowang_712", - "zh_chengshu_jiejie", - "zh_zhuxi_speech02", - "zh_uk_oldman3", - "zh_laopopo_speech02", - "zh_heainainai_speech02", - "zh_dongbeilaotie_speech02", - "zh_chongqingxiaohuo_speech02", - "zh_chuanmeizi_speech02", - "zh_chaoshandashu_speech02", - "zh_ai_taiwan_man2_speech02", - "zh_xianzhanggui_speech02", - "zh_tianjinjiejie_speech02", - "zh_diyinnansang_DB_CN_M_04-v2", - "zh_yizhipiannan-v1", - "zh_guanxiaofang-v2", - "zh_tianmeixuemei-v1", - "zh_daopianyansang-v1", - "zh_mengwa-v1" + "low", + "medium", + "high" ], - "type_name": "nodetool.nodes.replicate.video.generate.Kling_Lip_Sync.Voice_id" + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5.Verbosity" }, - "default": "en_AOT", - "title": "Voice Id", - "description": "Voice ID for speech synthesis (if using text and not audio)" + "default": "medium", + "title": "Verbosity", + "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." }, { - "name": "video_url", + "name": "image_input", "type": { - "type": "str", - "optional": true + "type": "list" }, - "default": null, - "title": "Video Url", - "description": "URL of a video for lip syncing. It can be an .mp4 or .mov file, should be less than 100MB, with a duration of 2-10 seconds, and a resolution of 720p-1080p (720-1920px dimensions). Cannot be used with video_id." + "default": [], + "title": "Image Input", + "description": "List of images to send to the model" }, { - "name": "audio_file", + "name": "system_prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Audio File", - "description": "Audio file for lip sync. Must be .mp3, .wav, .m4a, or .aac and less than 5MB." + "title": "System Prompt", + "description": "System prompt to set the assistant's behavior" }, { - "name": "voice_speed", + "name": "reasoning_effort", "type": { - "type": "float" + "type": "enum", + "values": [ + "minimal", + "low", + "medium", + "high" + ], + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5.Reasoning_effort" }, - "default": 1, - "title": "Voice Speed", - "description": "Speech rate (only used if using text and not audio)", - "min": 0.8, - "max": 2.0 + "default": "minimal", + "title": "Reasoning Effort", + "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + }, + { + "name": "max_completion_tokens", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Max Completion Tokens", + "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/92rRwTYlfo0BLSIIcirPaRwPtJhN0lrl4ww79omyef38rCdpA/tmp2ni84f_5.mp4", - "created_at": "2025-05-18T20:54:54.551885Z", - "description": "Add lip-sync to any video with an audio file or text", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/93d32638-644c-4926-8d07-ad01eec112fb/gpt-5-sm.jpg", + "created_at": "2025-08-07T01:46:29.933808Z", + "description": "OpenAI's new model excelling at coding, writing, and reasoning.", "github_url": null, "license_url": null, - "name": "kling-lip-sync", - "owner": "kwaivgi", + "name": "gpt-5", + "owner": "openai", "is_official": true, "paper_url": null, - "run_count": 12996, - "url": "https://replicate.com/kwaivgi/kling-lip-sync", + "run_count": 973200, + "url": "https://replicate.com/openai/gpt-5", "visibility": "public", "weights_url": null }, "basic_fields": [ - "text", - "video_id", - "voice_id" + "prompt", + "messages", + "verbosity" ] }, { - "title": "Kling V 2 1", - "description": "Use Kling v2.1 to generate 5s and 10s videos in 720p and 1080p resolution from a starting image (image-to-video)", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Kling_V2_1", + "title": "GPT 5 Mini", + "description": "Faster version of OpenAI's flagship GPT-5 model", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.GPT_5_Mini", "properties": [ - { - "name": "mode", - "type": { - "type": "enum", - "values": [ - "standard", - "pro" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Kling_V2_1.Mode" - }, - "default": "standard", - "title": "Mode", - "description": "Standard has a resolution of 720p, pro is 1080p. Both are 24fps." - }, { "name": "prompt", "type": { @@ -855,1597 +798,1300 @@ }, "default": null, "title": "Prompt", - "description": "Text prompt for video generation" + "description": "The prompt to send to the model. Do not use if using messages." }, { - "name": "duration", + "name": "messages", + "type": { + "type": "list" + }, + "default": [], + "title": "Messages", + "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." + }, + { + "name": "verbosity", "type": { "type": "enum", "values": [ - 5, - 10 + "low", + "medium", + "high" ], - "type_name": "nodetool.nodes.replicate.video.generate.Kling_V2_1.Duration" + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Mini.Verbosity" }, - "default": 5, - "title": "Duration", - "description": "Duration of the video in seconds" + "default": "medium", + "title": "Verbosity", + "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." }, { - "name": "end_image", + "name": "image_input", "type": { - "type": "str", - "optional": true + "type": "list" }, - "default": null, - "title": "End Image", - "description": "Last frame of the video (pro mode is required when this parameter is set)" + "default": [], + "title": "Image Input", + "description": "List of images to send to the model" }, { - "name": "start_image", + "name": "system_prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Start Image", - "description": "First frame of the video. You must use a start image with kling-v2.1." + "title": "System Prompt", + "description": "System prompt to set the assistant's behavior" }, { - "name": "negative_prompt", + "name": "reasoning_effort", "type": { - "type": "str" + "type": "enum", + "values": [ + "minimal", + "low", + "medium", + "high" + ], + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Mini.Reasoning_effort" }, - "default": "", - "title": "Negative Prompt", - "description": "Things you do not want to see in the video" - } - ], - "outputs": [ + "default": "minimal", + "title": "Reasoning Effort", + "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + }, { + "name": "max_completion_tokens", "type": { - "type": "video" + "type": "int", + "optional": true + }, + "default": null, + "title": "Max Completion Tokens", + "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + } + ], + "outputs": [ + { + "type": { + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a7690882-d1d2-44fb-b487-f41bd367adcf/replicate-prediction-2epyczsz.webp", - "created_at": "2025-06-19T18:53:08.443897Z", - "description": "Use Kling v2.1 to generate 5s and 10s videos in 720p and 1080p resolution from a starting image (image-to-video)", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/518903fa-a7de-4876-a79e-aac7fdeae577/Screenshot_2025-08-07_at_1.04..png", + "created_at": "2025-08-07T01:46:38.852666Z", + "description": "Faster version of OpenAI's flagship GPT-5 model", "github_url": null, "license_url": null, - "name": "kling-v2.1", - "owner": "kwaivgi", + "name": "gpt-5-mini", + "owner": "openai", "is_official": true, "paper_url": null, - "run_count": 1257619, - "url": "https://replicate.com/kwaivgi/kling-v2.1", + "run_count": 718804, + "url": "https://replicate.com/openai/gpt-5-mini", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mode", "prompt", - "duration" + "messages", + "verbosity" ] }, { - "title": "LTX Video", - "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched.", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.LTX_Video", + "title": "GPT 5 Nano", + "description": "Fastest, most cost-effective GPT-5 model from OpenAI", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.GPT_5_Nano", "properties": [ { - "name": "cfg", - "type": { - "type": "float" - }, - "default": 3, - "title": "Cfg", - "description": "How strongly the video follows the prompt", - "min": 1.0, - "max": 20.0 - }, - { - "name": "seed", + "name": "prompt", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Set a seed for reproducibility. Random by default." - }, - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Optional input image to use as the starting frame" - }, - { - "name": "model", - "type": { - "type": "enum", - "values": [ - "0.9.1", - "0.9" - ], - "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Model" - }, - "default": "0.9.1", - "title": "Model", - "description": "Model version to use" + "title": "Prompt", + "description": "The prompt to send to the model. Do not use if using messages." }, { - "name": "steps", + "name": "messages", "type": { - "type": "int" + "type": "list" }, - "default": 30, - "title": "Steps", - "description": "Number of steps", - "min": 1.0, - "max": 50.0 + "default": [], + "title": "Messages", + "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." }, { - "name": "length", + "name": "verbosity", "type": { "type": "enum", "values": [ - 97, - 129, - 161, - 193, - 225, - 257 + "low", + "medium", + "high" ], - "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Length" + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Nano.Verbosity" }, - "default": 97, - "title": "Length", - "description": "Length of the output video in frames" + "default": "medium", + "title": "Verbosity", + "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." }, { - "name": "prompt", + "name": "image_input", "type": { - "type": "str" + "type": "list" }, - "default": "best quality, 4k, HDR, a tracking shot of a beautiful scene", - "title": "Prompt", - "description": "Text prompt for the video. This model needs long descriptive prompts, if the prompt is too short the quality won't be good." + "default": [], + "title": "Image Input", + "description": "List of images to send to the model" }, { - "name": "target_size", + "name": "system_prompt", "type": { - "type": "enum", - "values": [ - 512, - 576, - 640, - 704, - 768, - 832, - 896, - 960, - 1024 - ], - "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Target_size" + "type": "str", + "optional": true }, - "default": 640, - "title": "Target Size", - "description": "Target size for the output video" + "default": null, + "title": "System Prompt", + "description": "System prompt to set the assistant's behavior" }, { - "name": "aspect_ratio", + "name": "reasoning_effort", "type": { "type": "enum", "values": [ - "1:1", - "1:2", - "2:1", - "2:3", - "3:2", - "3:4", - "4:3", - "4:5", - "5:4", - "9:16", - "16:9", - "9:21", - "21:9" + "minimal", + "low", + "medium", + "high" ], - "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Aspect_ratio" - }, - "default": "3:2", - "title": "Aspect Ratio", - "description": "Aspect ratio of the output video. Ignored if an image is provided." - }, - { - "name": "negative_prompt", - "type": { - "type": "str" + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Nano.Reasoning_effort" }, - "default": "low quality, worst quality, deformed, distorted", - "title": "Negative Prompt", - "description": "Things you do not want to see in your video" + "default": "minimal", + "title": "Reasoning Effort", + "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." }, { - "name": "image_noise_scale", + "name": "max_completion_tokens", "type": { - "type": "float" + "type": "int", + "optional": true }, - "default": 0.15, - "title": "Image Noise Scale", - "description": "Lower numbers stick more closely to the input image", - "min": 0.0, - "max": 1.0 + "default": null, + "title": "Max Completion Tokens", + "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/184609cb-a0c5-47c9-8fec-987fb21cc977/replicate-prediction-_QTChmfY.webp", - "created_at": "2024-11-29T14:15:01.460922Z", - "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched.", - "github_url": "https://github.com/Lightricks/LTX-Video", - "license_url": "https://github.com/Lightricks/LTX-Video/blob/main/LICENSE", - "name": "ltx-video", - "owner": "lightricks", - "is_official": false, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/fbb1068e-ae55-4d4f-9ee8-3e3da859f69f/Screenshot_2025-08-07_at_1.04.57P.png", + "created_at": "2025-08-07T01:46:49.288485Z", + "description": "Fastest, most cost-effective GPT-5 model from OpenAI", + "github_url": null, + "license_url": null, + "name": "gpt-5-nano", + "owner": "openai", + "is_official": true, "paper_url": null, - "run_count": 157441, - "url": "https://replicate.com/lightricks/ltx-video", + "run_count": 3792355, + "url": "https://replicate.com/openai/gpt-5-nano", "visibility": "public", - "weights_url": "https://huggingface.co/Lightricks/LTX-Video" + "weights_url": null }, "basic_fields": [ - "cfg", - "seed", - "image" + "prompt", + "messages", + "verbosity" ] }, { - "title": "Lipsync 2", - "description": "Generate realistic lipsyncs with Sync Labs' 2.0 model", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Lipsync_2", + "title": "GPT 5 Structured", + "description": "GPT-5 with support for structured outputs, web search and custom tools", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.GPT_5_Structured", "properties": [ { - "name": "audio", + "name": "model", "type": { - "type": "audio" - }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + "gpt-5", + "gpt-5-mini", + "gpt-5-nano" + ], + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Structured.Model" }, - "title": "Audio", - "description": "Input audio file (.wav)" - }, + "default": "gpt-5", + "title": "Model", + "description": "GPT-5 model to use." + }, { - "name": "video", + "name": "tools", "type": { - "type": "video" + "type": "list" }, - "default": { - "type": "video", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null, - "duration": null, - "format": null + "default": [], + "title": "Tools", + "description": "Tools to make available to the model. Should be a JSON object containing a list of tool definitions." + }, + { + "name": "prompt", + "type": { + "type": "str", + "optional": true }, - "title": "Video", - "description": "Input video file (.mp4)" + "default": null, + "title": "Prompt", + "description": "A simple text input to the model, equivalent to a text input with the user role. Ignored if input_item_list is provided." }, { - "name": "sync_mode", + "name": "verbosity", "type": { "type": "enum", "values": [ - "loop", - "bounce", - "cut_off", - "silence", - "remap" + "low", + "medium", + "high" ], - "type_name": "nodetool.nodes.replicate.video.generate.Lipsync_2.Sync_mode" + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Structured.Verbosity" }, - "default": "loop", - "title": "Sync Mode", - "description": "Lipsync mode when audio and video durations are out of sync" + "default": "medium", + "title": "Verbosity", + "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." }, { - "name": "temperature", + "name": "image_input", "type": { - "type": "float" + "type": "list" }, - "default": 0.5, - "title": "Temperature", - "description": "How expressive lipsync can be (0-1)", - "min": 0.0, - "max": 1.0 + "default": [], + "title": "Image Input", + "description": "List of images to send to the model" }, { - "name": "active_speaker", + "name": "json_schema", "type": { - "type": "bool" + "type": "dict" }, - "default": false, - "title": "Active Speaker", - "description": "Whether to detect active speaker (i.e. whoever is speaking in the clip will be used for lipsync)" - } - ], - "outputs": [ + "default": {}, + "title": "Json Schema", + "description": "A JSON schema that the response must conform to. For simple data structures we recommend using `simple_text_format_schema` which will be converted to a JSON schema for you." + }, { + "name": "instructions", "type": { - "type": "video" + "type": "str", + "optional": true }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/wJSCHDW1zvqcBtInTLFK9rW6N52db0y5FImHrJlyjYi12gQF/tmpr6cxkcvr.mp4", - "created_at": "2025-07-15T14:19:02.814147Z", - "description": "Generate realistic lipsyncs with Sync Labs' 2.0 model", - "github_url": null, - "license_url": null, - "name": "lipsync-2", - "owner": "sync", - "is_official": true, - "paper_url": null, - "run_count": 3382, - "url": "https://replicate.com/sync/lipsync-2", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "audio", - "video", - "sync_mode" - ] - }, - { - "title": "Lipsync 2 Pro", - "description": "Studio-grade lipsync in minutes, not weeks", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Lipsync_2_Pro", - "properties": [ + "default": null, + "title": "Instructions", + "description": "A system (or developer) message inserted into the model's context. When using along with previous_response_id, the instructions from a previous response will not be carried over to the next response. This makes it simple to swap out system (or developer) messages in new responses." + }, { - "name": "audio", + "name": "simple_schema", "type": { - "type": "audio" - }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "list" }, - "title": "Audio", - "description": "Input audio file (.wav)" + "default": [], + "title": "Simple Schema", + "description": "Create a JSON schema for the output to conform to. The schema will be created from a simple list of field specifications. Strings: 'thing' (defaults to string), 'thing:str', 'thing:string'. Booleans: 'is_a_thing:bool' or 'is_a_thing:boolean'. Numbers: 'count:number', 'count:int'. Lists: 'things:list' (defaults to list of strings), 'things:list:str', 'number_things:list:number', etc. Nested objects are not supported, use `json_schema` instead." }, { - "name": "video", + "name": "input_item_list", "type": { - "type": "video" - }, - "default": { - "type": "video", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null, - "duration": null, - "format": null + "type": "list" }, - "title": "Video", - "description": "Input video file (.mp4)" + "default": [], + "title": "Input Item List", + "description": "A list of one or many input items to the model, containing different content types. This parameter corresponds with the `input` OpenAI API parameter. For more details see: https://platform.openai.com/docs/api-reference/responses/create#responses_create-input. Similar to the `messages` parameter, but with more flexibility in the content types." }, { - "name": "sync_mode", + "name": "reasoning_effort", "type": { "type": "enum", "values": [ - "loop", - "bounce", - "cut_off", - "silence", - "remap" + "minimal", + "low", + "medium", + "high" ], - "type_name": "nodetool.nodes.replicate.video.generate.Lipsync_2_Pro.Sync_mode" + "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Structured.Reasoning_effort" }, - "default": "loop", - "title": "Sync Mode", - "description": "Lipsync mode when audio and video durations are out of sync" + "default": "minimal", + "title": "Reasoning Effort", + "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." }, { - "name": "temperature", + "name": "enable_web_search", "type": { - "type": "float" + "type": "bool" }, - "default": 0.5, - "title": "Temperature", - "description": "How expressive lipsync can be (0-1)", - "min": 0.0, - "max": 1.0 + "default": false, + "title": "Enable Web Search", + "description": "Allow GPT-5 to use web search for the response." }, { - "name": "active_speaker", + "name": "max_output_tokens", "type": { - "type": "bool" + "type": "int", + "optional": true }, - "default": false, - "title": "Active Speaker", - "description": "Whether to detect active speaker (i.e. whoever is speaking in the clip will be used for lipsync)" + "default": null, + "title": "Max Output Tokens", + "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + }, + { + "name": "previous_response_id", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Previous Response Id", + "description": "The ID of a previous response to continue from." } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/boKOqiuyz9omClm432RN1vzB3wejNr36em4lmJ2SC6If6KnqA/tmp47bgpsi_.mp4", - "created_at": "2025-08-27T19:58:34.559850Z", - "description": "Studio-grade lipsync in minutes, not weeks", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/60ebe2fc-dcd1-4185-90b2-bf0cc34c9688/replicate-prediction-qhzgvzbn7.jpg", + "created_at": "2025-08-14T15:32:22.469348Z", + "description": "GPT-5 with support for structured outputs, web search and custom tools", "github_url": null, "license_url": null, - "name": "lipsync-2-pro", - "owner": "sync", + "name": "gpt-5-structured", + "owner": "openai", "is_official": true, "paper_url": null, - "run_count": 560, - "url": "https://replicate.com/sync/lipsync-2-pro", + "run_count": 354745, + "url": "https://replicate.com/openai/gpt-5-structured", "visibility": "public", "weights_url": null }, "basic_fields": [ - "audio", - "video", - "sync_mode" + "model", + "tools", + "prompt" ] }, { - "title": "Music 01", - "description": "Quickly generate up to 1 minute of music with lyrics and vocals in the style of a reference track", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Music_01", + "title": "Gemini 3 Pro", + "description": "Google's most advanced reasoning Gemini model", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Gemini_3_Pro", "properties": [ { - "name": "lyrics", + "name": "audio", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "", - "title": "Lyrics", - "description": "Lyrics with optional formatting. You can use a newline to separate each line of lyrics. You can use two newlines to add a pause between lines. You can use double hash marks (##) at the beginning and end of the lyrics to add accompaniment. Maximum 350 to 400 characters." + "default": null, + "title": "Audio", + "description": "Input audio to send with the prompt (max 1 audio file, up to 8.4 hours)" }, { - "name": "bitrate", + "name": "top_p", "type": { - "type": "enum", - "values": [ - 32000, - 64000, - 128000, - 256000 - ], - "type_name": "nodetool.nodes.replicate.video.generate.Music_01.Bitrate" + "type": "float" }, - "default": 256000, - "title": "Bitrate", - "description": "Bitrate for the generated music" + "default": 0.95, + "title": "Top P", + "description": "Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass", + "min": 0.0, + "max": 1.0 }, { - "name": "voice_id", + "name": "images", "type": { - "type": "str", - "optional": true + "type": "list" }, - "default": null, - "title": "Voice Id", - "description": "Reuse a previously uploaded voice ID" + "default": [], + "title": "Images", + "description": "Input images to send with the prompt (max 10 images, each up to 7MB)" }, { - "name": "song_file", + "name": "prompt", "type": { - "type": "audio" - }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, - "title": "Song File", - "description": "Reference song, should contain music and vocals. Must be a .wav or .mp3 file longer than 15 seconds." + "default": null, + "title": "Prompt", + "description": "The text prompt to send to the model" }, { - "name": "voice_file", + "name": "videos", "type": { - "type": "audio" + "type": "list" }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": [], + "title": "Videos", + "description": "Input videos to send with the prompt (max 10 videos, each up to 45 minutes)" + }, + { + "name": "temperature", + "type": { + "type": "float" }, - "title": "Voice File", - "description": "Voice reference. Must be a .wav or .mp3 file longer than 15 seconds. If only a voice reference is given, an a cappella vocal hum will be generated." + "default": 1, + "title": "Temperature", + "description": "Sampling temperature between 0 and 2", + "min": 0.0, + "max": 2.0 }, { - "name": "sample_rate", + "name": "thinking_level", "type": { "type": "enum", + "optional": true, "values": [ - 16000, - 24000, - 32000, - 44100 + "low", + "high" ], - "type_name": "nodetool.nodes.replicate.video.generate.Music_01.Sample_rate" + "type_name": "nodetool.nodes.replicate.text.generate.Gemini_3_Pro.Thinking_level" }, - "default": 44100, - "title": "Sample Rate", - "description": "Sample rate for the generated music" + "default": null, + "title": "Thinking Level", + "description": "Thinking level for reasoning (low or high). Replaces thinking_budget for Gemini 3 models." }, { - "name": "instrumental_id", + "name": "max_output_tokens", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Instrumental Id", - "description": "Reuse a previously uploaded instrumental ID" + "default": 65535, + "title": "Max Output Tokens", + "description": "Maximum number of tokens to generate", + "min": 1.0, + "max": 65535.0 }, { - "name": "instrumental_file", + "name": "system_instruction", "type": { "type": "str", "optional": true }, "default": null, - "title": "Instrumental File", - "description": "Instrumental reference. Must be a .wav or .mp3 file longer than 15 seconds. If only an instrumental reference is given, a track without vocals will be generated." + "title": "System Instruction", + "description": "System instruction to guide the model's behavior" } ], "outputs": [ { "type": { - "type": "audio" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/1d2de931-15ff-48b0-9c4d-2f9200eb2913/music-01-cover.jpg", - "created_at": "2024-12-17T12:40:30.320043Z", - "description": "Quickly generate up to 1 minute of music with lyrics and vocals in the style of a reference track", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/491d3732-fa76-4f92-aa17-d073f38c1a77/Gemini-3.png", + "created_at": "2025-11-18T17:15:58.365236Z", + "description": "Google's most advanced reasoning Gemini model", "github_url": null, - "license_url": "https://intl.minimaxi.com/protocol/terms-of-service", - "name": "music-01", - "owner": "minimax", + "license_url": null, + "name": "gemini-3-pro", + "owner": "google", "is_official": true, "paper_url": null, - "run_count": 353804, - "url": "https://replicate.com/minimax/music-01", + "run_count": 481985, + "url": "https://replicate.com/google/gemini-3-pro", "visibility": "public", "weights_url": null }, "basic_fields": [ - "lyrics", - "bitrate", - "voice_id" + "audio", + "top_p", + "images" ] }, { - "title": "Pixverse V 5", - "description": "Create 5s-8s videos with enhanced character movement, visual effects, and exclusive 1080p-8s support. Optimized for anime characters and complex actions", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Pixverse_V5", + "title": "Llama 3 1 405B Instruct", + "description": "Meta's flagship 405 billion parameter language model, fine-tuned for chat completions", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Llama3_1_405B_Instruct", "properties": [ { - "name": "seed", + "name": "top_k", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": 50, + "title": "Top K", + "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." }, { - "name": "image", + "name": "top_p", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Image", - "description": "Image to use for the first frame of the video" + "default": 0.9, + "title": "Top P", + "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." }, { - "name": "effect", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "None", - "Let's YMCA!", - "Subject 3 Fever", - "Ghibli Live!", - "Suit Swagger", - "Muscle Surge", - "360\u00b0 Microwave", - "Warmth of Jesus", - "Emergency Beat", - "Anything, Robot", - "Kungfu Club", - "Mint in Box", - "Retro Anime Pop", - "Vogue Walk", - "Mega Dive", - "Evil Trigger" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Effect" + "type": "str" }, - "default": "None", - "title": "Effect", - "description": "Special effect to apply to the video. V5 supports effects. Does not work with last_frame_image." + "default": "", + "title": "Prompt", + "description": "Prompt" }, { - "name": "prompt", + "name": "max_tokens", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for video generation" + "default": 512, + "title": "Max Tokens", + "description": "The maximum number of tokens the model should generate as output." }, { - "name": "quality", + "name": "min_tokens", "type": { - "type": "enum", - "values": [ - "360p", - "540p", - "720p", - "1080p" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Quality" + "type": "int" }, - "default": "540p", - "title": "Quality", - "description": "Resolution of the video. 360p and 540p cost the same, but 720p and 1080p cost more. V5 supports 1080p with 8 second duration." + "default": 0, + "title": "Min Tokens", + "description": "The minimum number of tokens the model should generate as output." }, { - "name": "duration", + "name": "temperature", "type": { - "type": "enum", - "values": [ - 5, - 8 - ], - "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Duration" + "type": "float" }, - "default": 5, - "title": "Duration", - "description": "Duration of the video in seconds. 8 second videos cost twice as much as 5 second videos. V5 supports 1080p with 8 second duration." + "default": 0.6, + "title": "Temperature", + "description": "The value used to modulate the next token probabilities." }, { - "name": "aspect_ratio", + "name": "system_prompt", "type": { - "type": "enum", - "values": [ - "16:9", - "9:16", - "1:1" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Aspect_ratio" + "type": "str" }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Aspect ratio of the video" + "default": "You are a helpful assistant.", + "title": "System Prompt", + "description": "System prompt to send to the model. This is prepended to the prompt and helps guide system behavior. Ignored for non-chat models." }, { - "name": "negative_prompt", + "name": "stop_sequences", "type": { "type": "str" }, "default": "", - "title": "Negative Prompt", - "description": "Negative prompt to avoid certain elements in the video" + "title": "Stop Sequences", + "description": "A comma-separated list of sequences to stop generation at. For example, ',' will stop generation at the first instance of 'end' or ''." }, { - "name": "last_frame_image", + "name": "prompt_template", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, - "title": "Last Frame Image", - "description": "Use to generate a video that transitions from the first image to the last image. Must be used with image." + "default": "", + "title": "Prompt Template", + "description": "A template to format the prompt with. If not provided, the default prompt template will be used." + }, + { + "name": "presence_penalty", + "type": { + "type": "float" + }, + "default": 0, + "title": "Presence Penalty", + "description": "Presence penalty" + }, + { + "name": "frequency_penalty", + "type": { + "type": "float" + }, + "default": 0, + "title": "Frequency Penalty", + "description": "Frequency penalty" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/17daf77f-f059-4703-bbf8-284cfdf3a066/cover-tmp2sgncxf1.webp", - "created_at": "2025-08-27T16:59:19.868043Z", - "description": "Create 5s-8s videos with enhanced character movement, visual effects, and exclusive 1080p-8s support. Optimized for anime characters and complex actions", - "github_url": null, - "license_url": null, - "name": "pixverse-v5", - "owner": "pixverse", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/81ca001f-6a0a-4bef-b2f1-32466887df20/meta-logo.png", + "created_at": "2024-07-22T20:40:30.648238Z", + "description": "Meta's flagship 405 billion parameter language model, fine-tuned for chat completions", + "github_url": "https://github.com/meta-llama/llama-models/blob/main/models/llama3_1", + "license_url": "https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/LICENSE", + "name": "meta-llama-3.1-405b-instruct", + "owner": "meta", "is_official": true, "paper_url": null, - "run_count": 14438, - "url": "https://replicate.com/pixverse/pixverse-v5", + "run_count": 6990400, + "url": "https://replicate.com/meta/meta-llama-3.1-405b-instruct", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "image", - "effect" + "top_k", + "top_p", + "prompt" ] }, { - "title": "Ray", - "description": "Fast, high quality text-to-video and image-to-video (Also known as Dream Machine)", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Ray", + "title": "Llama 3 70B", + "description": "Base version of Llama 3, a 70 billion parameter language model from Meta.", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Llama3_70B", "properties": [ { - "name": "loop", + "name": "top_k", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Loop", - "description": "Whether the video should loop, with the last frame matching the first frame for smooth, continuous playback. This input is ignored if end_image_url or end_video_id are set." + "default": 50, + "title": "Top K", + "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." }, { - "name": "prompt", + "name": "top_p", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for video generation" + "default": 0.9, + "title": "Top P", + "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." }, { - "name": "end_image", + "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, - "title": "End Image", - "description": "An optional last frame of the video to use as the ending frame." + "default": "", + "title": "Prompt", + "description": "Prompt" }, { - "name": "start_image", + "name": "max_tokens", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Start Image", - "description": "An optional first frame of the video to use as the starting frame." + "default": 512, + "title": "Max Tokens", + "description": "The maximum number of tokens the model should generate as output." }, { - "name": "aspect_ratio", + "name": "min_tokens", "type": { - "type": "enum", - "values": [ - "1:1", - "3:4", - "4:3", - "9:16", - "16:9", - "9:21", - "21:9" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Ray.Aspect_ratio" + "type": "int" }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Aspect ratio of the video. Ignored if a start frame, end frame or video ID is given." + "default": 0, + "title": "Min Tokens", + "description": "The minimum number of tokens the model should generate as output." }, { - "name": "end_video_id", + "name": "temperature", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "End Video Id", - "description": "Prepend a new video generation to the beginning of an existing one (Also called 'reverse extend'). You can combine this with start_image_url, or start_video_id." + "default": 0.6, + "title": "Temperature", + "description": "The value used to modulate the next token probabilities." }, { - "name": "end_image_url", + "name": "prompt_template", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str" }, - "title": "End Image Url", - "description": "URL of an image to use as the ending frame" + "default": "{prompt}", + "title": "Prompt Template", + "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." }, { - "name": "start_video_id", + "name": "presence_penalty", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Start Video Id", - "description": "Continue or extend a video generation with a new generation. You can combine this with end_image_url, or end_video_id." + "default": 1.15, + "title": "Presence Penalty", + "description": "Presence penalty" }, { - "name": "start_image_url", + "name": "frequency_penalty", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "float" }, - "title": "Start Image Url", - "description": "URL of an image to use as the starting frame" + "default": 0.2, + "title": "Frequency Penalty", + "description": "Frequency penalty" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/496f8ab2-3a87-4fe7-9867-5572460c2b5e/ray-cover.webp", - "created_at": "2024-12-12T16:30:42.287210Z", - "description": "Fast, high quality text-to-video and image-to-video (Also known as Dream Machine)", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/8e044b4c-0b20-4717-83bd-a94d89fb0dbe/meta-logo.png", + "created_at": "2024-04-17T18:05:18.044746Z", + "description": "Base version of Llama 3, a 70 billion parameter language model from Meta.", "github_url": null, - "license_url": "https://lumalabs.ai/dream-machine/api/terms", - "name": "ray", - "owner": "luma", + "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", + "name": "meta-llama-3-70b", + "owner": "meta", "is_official": true, - "paper_url": "https://lumalabs.ai/dream-machine", - "run_count": 53087, - "url": "https://replicate.com/luma/ray", + "paper_url": null, + "run_count": 853064, + "url": "https://replicate.com/meta/meta-llama-3-70b", "visibility": "public", "weights_url": null }, "basic_fields": [ - "loop", - "prompt", - "end_image" + "top_k", + "top_p", + "prompt" ] }, { - "title": "Robust Video Matting", - "description": "extract foreground of a video", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.RobustVideoMatting", + "title": "Llama 3 70B Instruct", + "description": "A 70 billion parameter language model from Meta, fine tuned for chat completions", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Llama3_70B_Instruct", "properties": [ { - "name": "input_video", + "name": "top_k", "type": { - "type": "video" - }, - "default": { - "type": "video", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null, - "duration": null, - "format": null + "type": "int" }, - "title": "Input Video", - "description": "Video to segment." + "default": 50, + "title": "Top K", + "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." }, { - "name": "output_type", - "type": { - "type": "enum", - "values": [ - "green-screen", - "alpha-mask", - "foreground-mask" - ], - "type_name": "nodetool.nodes.replicate.video.generate.RobustVideoMatting.Output_type" - }, - "default": "green-screen", - "title": "Output Type" - } - ], - "outputs": [ - { + "name": "top_p", "type": { - "type": "video" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/1f92fd8f-2b90-4998-b5ae-1e23678ab004/showreel.gif", - "created_at": "2022-11-25T14:06:18.152759Z", - "description": "extract foreground of a video", - "github_url": "https://github.com/PeterL1n/RobustVideoMatting", - "license_url": "https://github.com/PeterL1n/RobustVideoMatting/blob/master/LICENSE", - "name": "robust_video_matting", - "owner": "arielreplicate", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2108.11515", - "run_count": 59497, - "url": "https://replicate.com/arielreplicate/robust_video_matting", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "input_video", - "output_type" - ] - }, - { - "title": "Video 01", - "description": "Generate 6s videos with prompts or images. (Also known as Hailuo). Use a subject reference to make a video with a character and the S2V-01 model.", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Video_01", - "properties": [ + "default": 0.9, + "title": "Top P", + "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." + }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "", "title": "Prompt", - "description": "Text prompt for generation" + "description": "Prompt" }, { - "name": "prompt_optimizer", + "name": "max_tokens", "type": { - "type": "bool" + "type": "int" }, - "default": true, - "title": "Prompt Optimizer", - "description": "Use prompt optimizer" + "default": 512, + "title": "Max Tokens", + "description": "The maximum number of tokens the model should generate as output." }, { - "name": "first_frame_image", + "name": "min_tokens", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "First Frame Image", - "description": "First frame image for video generation. The output video will have the same aspect ratio as this image." - }, - { - "name": "subject_reference", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Subject Reference", - "description": "An optional character reference image to use as the subject in the generated video (this will use the S2V-01 model)" - } - ], - "outputs": [ + "default": 0, + "title": "Min Tokens", + "description": "The minimum number of tokens the model should generate as output." + }, { + "name": "temperature", "type": { - "type": "video" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b56c831c-4c68-4443-b69e-b71b105afe7f/minimax.webp", - "created_at": "2024-11-26T14:40:21.652537Z", - "description": "Generate 6s videos with prompts or images. (Also known as Hailuo). Use a subject reference to make a video with a character and the S2V-01 model.", - "github_url": null, - "license_url": "https://intl.minimaxi.com/protocol/terms-of-service", - "name": "video-01", - "owner": "minimax", - "is_official": true, - "paper_url": null, - "run_count": 582391, - "url": "https://replicate.com/minimax/video-01", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "prompt", - "prompt_optimizer", - "first_frame_image" - ] - }, - { - "title": "Video 01 Live", - "description": "An image-to-video (I2V) model specifically trained for Live2D and general animation use cases", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Video_01_Live", - "properties": [ + "default": 0.6, + "title": "Temperature", + "description": "The value used to modulate the next token probabilities." + }, { - "name": "prompt", + "name": "prompt_template", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for generation" + "default": "{prompt}", + "title": "Prompt Template", + "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." }, { - "name": "prompt_optimizer", + "name": "presence_penalty", "type": { - "type": "bool" + "type": "float" }, - "default": true, - "title": "Prompt Optimizer", - "description": "Use prompt optimizer" + "default": 1.15, + "title": "Presence Penalty", + "description": "Presence penalty" }, { - "name": "first_frame_image", + "name": "frequency_penalty", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "First Frame Image", - "description": "First frame image for video generation. The output video will have the same aspect ratio as this image." + "default": 0.2, + "title": "Frequency Penalty", + "description": "Frequency penalty" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/c202ad97-edd0-40b6-afaf-c99d71398d44/video-01-live-cover.webp", - "created_at": "2024-12-16T20:27:52.715593Z", - "description": "An image-to-video (I2V) model specifically trained for Live2D and general animation use cases", - "github_url": null, - "license_url": "https://intl.minimaxi.com/protocol/terms-of-service", - "name": "video-01-live", - "owner": "minimax", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3dcb020b-1fad-4101-84cf-88af9b20ac21/meta-logo.png", + "created_at": "2024-04-17T21:44:13.482460Z", + "description": "A 70 billion parameter language model from Meta, fine tuned for chat completions", + "github_url": "https://github.com/meta-llama/llama3", + "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", + "name": "meta-llama-3-70b-instruct", + "owner": "meta", "is_official": true, "paper_url": null, - "run_count": 165159, - "url": "https://replicate.com/minimax/video-01-live", + "run_count": 164531632, + "url": "https://replicate.com/meta/meta-llama-3-70b-instruct", "visibility": "public", "weights_url": null }, "basic_fields": [ - "prompt", - "prompt_optimizer", - "first_frame_image" + "top_k", + "top_p", + "prompt" ] }, { - "title": "Wan 2 1 1 3 B", - "description": "Generate 5s 480p videos. Wan is an advanced and powerful visual generation model developed by Tongyi Lab of Alibaba Group", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Wan_2_1_1_3B", + "title": "Llama 3 8B", + "description": "Base version of Llama 3, an 8 billion parameter language model from Meta.", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Llama3_8B", "properties": [ { - "name": "seed", + "name": "top_k", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Seed", - "description": "Random seed for reproducible results (leave blank for random)" + "default": 50, + "title": "Top K", + "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." + }, + { + "name": "top_p", + "type": { + "type": "float" + }, + "default": 0.9, + "title": "Top P", + "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "", "title": "Prompt", - "description": "Text prompt describing what you want to generate" + "description": "Prompt" }, { - "name": "frame_num", + "name": "max_tokens", "type": { - "type": "enum", - "values": [ - 17, - 33, - 49, - 65, - 81 - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Frame_num" + "type": "int" }, - "default": 81, - "title": "Frame Num", - "description": "Video duration in frames (based on standard 16fps playback)" + "default": 512, + "title": "Max Tokens", + "description": "The maximum number of tokens the model should generate as output." }, { - "name": "resolution", + "name": "min_tokens", "type": { - "type": "enum", - "values": [ - "480p" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Resolution" + "type": "int" }, - "default": "480p", - "title": "Resolution", - "description": "Video resolution" + "default": 0, + "title": "Min Tokens", + "description": "The minimum number of tokens the model should generate as output." }, { - "name": "aspect_ratio", + "name": "temperature", "type": { - "type": "enum", - "values": [ - "16:9", - "9:16" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Aspect_ratio" + "type": "float" }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Video aspect ratio" + "default": 0.6, + "title": "Temperature", + "description": "The value used to modulate the next token probabilities." }, { - "name": "sample_shift", + "name": "prompt_template", "type": { - "type": "float" + "type": "str" }, - "default": 8, - "title": "Sample Shift", - "description": "Sampling shift factor for flow matching (recommended range: 8-12)", - "min": 0.0, - "max": 20.0 + "default": "{prompt}", + "title": "Prompt Template", + "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." }, { - "name": "sample_steps", + "name": "presence_penalty", "type": { - "type": "int" + "type": "float" }, - "default": 30, - "title": "Sample Steps", - "description": "Number of sampling steps (higher = better quality but slower)", - "min": 10.0, - "max": 50.0 + "default": 1.15, + "title": "Presence Penalty", + "description": "Presence penalty" }, { - "name": "sample_guide_scale", + "name": "frequency_penalty", "type": { "type": "float" }, - "default": 6, - "title": "Sample Guide Scale", - "description": "Classifier free guidance scale (higher values strengthen prompt adherence)", - "min": 0.0, - "max": 20.0 + "default": 0.2, + "title": "Frequency Penalty", + "description": "Frequency penalty" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a07f6849-fd97-4f6b-9166-887e84b0cb47/replicate-prediction-0s06z711.webp", - "created_at": "2025-02-26T14:24:14.098215Z", - "description": "Generate 5s 480p videos. Wan is an advanced and powerful visual generation model developed by Tongyi Lab of Alibaba Group", - "github_url": "https://github.com/Wan-Video/Wan2.1", - "license_url": "https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md", - "name": "wan-2.1-1.3b", - "owner": "wan-video", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/dd9ac11a-edda-4d33-b413-6a721c44dfb0/meta-logo.png", + "created_at": "2024-04-17T18:04:26.049832Z", + "description": "Base version of Llama 3, an 8 billion parameter language model from Meta.", + "github_url": "https://github.com/meta-llama/llama3", + "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", + "name": "meta-llama-3-8b", + "owner": "meta", "is_official": true, - "paper_url": "https://wanxai.com/", - "run_count": 42222, - "url": "https://replicate.com/wan-video/wan-2.1-1.3b", + "paper_url": null, + "run_count": 51164719, + "url": "https://replicate.com/meta/meta-llama-3-8b", "visibility": "public", - "weights_url": "https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B" + "weights_url": null }, "basic_fields": [ - "seed", - "prompt", - "frame_num" + "top_k", + "top_p", + "prompt" ] }, { - "title": "Wan 2 1 I 2 V 480 p", - "description": "Accelerated inference for Wan 2.1 14B image to video, a comprehensive and open suite of video foundation models that pushes the boundaries of video generation.", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Wan_2_1_I2V_480p", + "title": "Llama 3 8B Instruct", + "description": "An 8 billion parameter language model from Meta, fine tuned for chat completions", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Llama3_8B_Instruct", "properties": [ { - "name": "seed", + "name": "top_k", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": 50, + "title": "Top K", + "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." }, { - "name": "image", + "name": "top_p", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "float" }, - "title": "Image", - "description": "Image for use as the initial frame of the video." + "default": 0.9, + "title": "Top P", + "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "", "title": "Prompt", - "description": "Text prompt for image generation" - }, - { - "name": "fast_mode", - "type": { - "type": "enum", - "values": [ - "Off", - "Balanced", - "Fast" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Fast_mode" - }, - "default": "Balanced", - "title": "Fast Mode", - "description": "Speed up generation with different levels of acceleration. Faster modes may degrade quality somewhat. The speedup is dependent on the content, so different videos may see different speedups." - }, - { - "name": "lora_scale", - "type": { - "type": "float" - }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. You may still need to experiment to find the best value for your particular lora.", - "min": 0.0, - "max": 4.0 - }, - { - "name": "aspect_ratio", - "type": { - "type": "enum", - "values": [ - "16:9", - "9:16" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Aspect_ratio" - }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Aspect ratio of the output video." + "description": "Prompt" }, { - "name": "lora_weights", + "name": "max_tokens", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Lora Weights", - "description": "Load LoRA weights. Supports HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet." + "default": 512, + "title": "Max Tokens", + "description": "The maximum number of tokens the model should generate as output." }, { - "name": "sample_shift", + "name": "min_tokens", "type": { "type": "int" }, - "default": 3, - "title": "Sample Shift", - "description": "Flow shift parameter for video generation", - "min": 0.0, - "max": 10.0 + "default": 0, + "title": "Min Tokens", + "description": "The minimum number of tokens the model should generate as output." }, { - "name": "sample_steps", + "name": "temperature", "type": { - "type": "int" + "type": "float" }, - "default": 30, - "title": "Sample Steps", - "description": "Number of inference steps", - "min": 1.0, - "max": 40.0 + "default": 0.6, + "title": "Temperature", + "description": "The value used to modulate the next token probabilities." }, { - "name": "negative_prompt", + "name": "prompt_template", "type": { "type": "str" }, - "default": "", - "title": "Negative Prompt", - "description": "Negative prompt to avoid certain elements" + "default": "{prompt}", + "title": "Prompt Template", + "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." }, { - "name": "sample_guide_scale", + "name": "presence_penalty", "type": { "type": "float" }, - "default": 5, - "title": "Sample Guide Scale", - "description": "Guidance scale for generation", - "min": 1.0, - "max": 10.0 + "default": 1.15, + "title": "Presence Penalty", + "description": "Presence penalty" }, { - "name": "disable_safety_checker", + "name": "frequency_penalty", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated videos" + "default": 0.2, + "title": "Frequency Penalty", + "description": "Frequency penalty" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/75f0346d-ec4c-4078-bb40-6705578c0d21/replicate-prediction-br080xq9.webp", - "created_at": "2025-02-26T20:09:34.365160Z", - "description": "Accelerated inference for Wan 2.1 14B image to video, a comprehensive and open suite of video foundation models that pushes the boundaries of video generation.", - "github_url": "https://github.com/Wan-Video/Wan2.1", - "license_url": "https://github.com/Wan-Video/Wan2.1/blob/main/LICENSE.txt", - "name": "wan-2.1-i2v-480p", - "owner": "wavespeedai", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/68b7dc1a-4767-4353-b066-212b0126b5de/meta-logo.png", + "created_at": "2024-04-17T21:44:58.480057Z", + "description": "An 8 billion parameter language model from Meta, fine tuned for chat completions", + "github_url": "https://github.com/meta-llama/llama3", + "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", + "name": "meta-llama-3-8b-instruct", + "owner": "meta", "is_official": true, "paper_url": null, - "run_count": 414154, - "url": "https://replicate.com/wavespeedai/wan-2.1-i2v-480p", + "run_count": 396649837, + "url": "https://replicate.com/meta/meta-llama-3-8b-instruct", "visibility": "public", - "weights_url": "https://huggingface.co/Wan-AI/Wan2.1-T2V-14B" + "weights_url": null }, "basic_fields": [ - "seed", - "image", + "top_k", + "top_p", "prompt" ] }, { - "title": "Wan 2 2 I 2 V Fast", - "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B image-to-video", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Wan_2_2_I2V_Fast", + "title": "Llama Guard 3 11B Vision", + "description": "A Llama-3.2-11B pretrained model, fine-tuned for content safety classification", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.LlamaGuard_3_11B_Vision", "properties": [ { - "name": "seed", + "name": "image", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Leave blank for random" + "title": "Image", + "description": "Image to moderate" }, { - "name": "image", + "name": "prompt", "type": { - "type": "image" + "type": "str" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": "Which one should I buy?", + "title": "Prompt", + "description": "User message to moderate" + } + ], + "outputs": [ + { + "type": { + "type": "str" }, - "title": "Image", - "description": "Input image to generate video from." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/d7d7e254-bf5a-458f-9754-791a7db8ba44/replicate-prediction-m8j_JCyBlXR.webp", + "created_at": "2024-12-23T20:39:23.769654Z", + "description": "A Llama-3.2-11B pretrained model, fine-tuned for content safety classification", + "github_url": "https://github.com/lucataco/cog-Llama-Guard-3-11B-Vision", + "license_url": "https://huggingface.co/meta-llama/Llama-3.2-1B/blob/main/LICENSE.txt", + "name": "llama-guard-3-11b-vision", + "owner": "meta", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2312.06674", + "run_count": 1506, + "url": "https://replicate.com/meta/llama-guard-3-11b-vision", + "visibility": "public", + "weights_url": "https://huggingface.co/meta-llama/Llama-Guard-3-11B-Vision" + }, + "basic_fields": [ + "image", + "prompt" + ] + }, + { + "title": "Llama Guard 3 8B", + "description": "A Llama-3.1-8B pretrained model, fine-tuned for content safety classification", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.LlamaGuard_3_8B", + "properties": [ { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "I forgot how to kill a process in Linux, can you help?", "title": "Prompt", - "description": "Prompt for video generation" + "description": "User message to moderate" }, { - "name": "go_fast", + "name": "assistant", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": true, - "title": "Go Fast", - "description": "Go fast" - }, + "default": null, + "title": "Assistant", + "description": "Assistant response to classify" + } + ], + "outputs": [ { - "name": "num_frames", "type": { - "type": "int" + "type": "str" }, - "default": 81, - "title": "Num Frames", - "description": "Number of video frames. 81 frames give the best results", - "min": 81.0, - "max": 121.0 - }, - { - "name": "resolution", - "type": { - "type": "enum", - "values": [ - "480p", - "720p" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Resolution" - }, - "default": "720p", - "title": "Resolution", - "description": "Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" - }, - { - "name": "aspect_ratio", - "type": { - "type": "enum", - "values": [ - "16:9", - "9:16" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Aspect_ratio" - }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" - }, - { - "name": "sample_shift", - "type": { - "type": "float" - }, - "default": 12, - "title": "Sample Shift", - "description": "Sample shift factor", - "min": 1.0, - "max": 20.0 - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/b59edf5b-6571-4673-8cd8-87488501f5b7/replicate-prediction-d2c_9x54OXs.webp", + "created_at": "2024-12-21T00:37:41.039448Z", + "description": "A Llama-3.1-8B pretrained model, fine-tuned for content safety classification", + "github_url": "https://github.com/lucataco/cog-Llama-Guard-3-8B", + "license_url": "https://huggingface.co/meta-llama/Llama-3.1-70B-Instruct/blob/main/LICENSE", + "name": "llama-guard-3-8b", + "owner": "meta", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2407.21783", + "run_count": 359949, + "url": "https://replicate.com/meta/llama-guard-3-8b", + "visibility": "public", + "weights_url": "https://huggingface.co/meta-llama/Llama-Guard-3-8B" + }, + "basic_fields": [ + "prompt", + "assistant" + ] + }, + { + "title": "Snowflake Arctic Instruct", + "description": "An efficient, intelligent, and truly open-source language model", + "namespace": "replicate.text.generate", + "node_type": "replicate.text.generate.Snowflake_Arctic_Instruct", + "properties": [ { - "name": "frames_per_second", + "name": "name", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 16, - "title": "Frames Per Second", - "description": "Frames per second. Note that the pricing of this model is based on the video duration at 16 fps", - "min": 5.0, - "max": 30.0 + "default": null, + "title": "Name" }, { - "name": "disable_safety_checker", + "name": "name_file", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated video." + "default": null, + "title": "Name File" } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e04b60c1-dbc9-4606-8b37-6da8c7e27f5e/replicate-prediction-xd6kc1a96.mp4", - "created_at": "2025-07-30T18:13:03.381058Z", - "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B image-to-video", - "github_url": null, - "license_url": null, - "name": "wan-2.2-i2v-fast", - "owner": "wan-video", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/793e32b4-913c-4036-a847-4afb38e42fc1/Snowflake_Arctic_Opengraph_120.png", + "created_at": "2024-04-24T00:08:29.300675Z", + "description": "An efficient, intelligent, and truly open-source language model", + "github_url": "https://github.com/Snowflake-Labs/snowflake-arctic", + "license_url": "https://www.apache.org/licenses/LICENSE-2.0", + "name": "snowflake-arctic-instruct", + "owner": "snowflake", "is_official": true, "paper_url": null, - "run_count": 946371, - "url": "https://replicate.com/wan-video/wan-2.2-i2v-fast", + "run_count": 1996658, + "url": "https://replicate.com/snowflake/snowflake-arctic-instruct", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "image", - "prompt" + "name", + "name_file" ] }, { - "title": "Wan 2 2 T 2 V Fast", - "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B text-to-video", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Wan_2_2_T2V_Fast", + "title": "GPT 4 o Transcribe", + "description": "A speech-to-text model that uses GPT-4o to transcribe audio", + "namespace": "replicate.audio.transcribe", + "node_type": "replicate.audio.transcribe.GPT4o_Transcribe", "properties": [ - { - "name": "seed", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Seed", - "description": "Random seed. Leave blank for random" - }, { "name": "prompt", "type": { @@ -2454,1600 +2100,1553 @@ }, "default": null, "title": "Prompt", - "description": "Prompt for video generation" - }, - { - "name": "go_fast", - "type": { - "type": "bool" - }, - "default": true, - "title": "Go Fast", - "description": "Go fast" - }, - { - "name": "num_frames", - "type": { - "type": "int" - }, - "default": 81, - "title": "Num Frames", - "description": "Number of video frames. 81 frames give the best results", - "min": 81.0, - "max": 121.0 + "description": "An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language." }, { - "name": "resolution", + "name": "language", "type": { - "type": "enum", - "values": [ - "480p", - "720p" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Resolution" + "type": "str", + "optional": true }, - "default": "720p", - "title": "Resolution", - "description": "Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" + "default": null, + "title": "Language", + "description": "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency." }, { - "name": "aspect_ratio", + "name": "audio_file", "type": { - "type": "enum", - "values": [ - "16:9", - "9:16" - ], - "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Aspect_ratio" + "type": "str", + "optional": true }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" + "default": null, + "title": "Audio File", + "description": "The audio file to transcribe. Supported formats: mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm" }, { - "name": "sample_shift", + "name": "temperature", "type": { "type": "float" }, - "default": 12, - "title": "Sample Shift", - "description": "Sample shift factor", - "min": 1.0, - "max": 20.0 - }, - { - "name": "frames_per_second", - "type": { - "type": "int" - }, - "default": 16, - "title": "Frames Per Second", - "description": "Frames per second. Note that the pricing of this model is based on the video duration at 16 fps", - "min": 5.0, - "max": 30.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" - }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated video." + "default": 0, + "title": "Temperature", + "description": "Sampling temperature between 0 and 1", + "min": 0.0, + "max": 1.0 } ], "outputs": [ { "type": { - "type": "video" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/08195778-ca4f-401d-b1eb-fecc242b97c0/output.mp4", - "created_at": "2025-07-30T11:03:52.081987Z", - "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B text-to-video", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b1aa75b9-0353-401e-a38f-5e129bee9658/4o-transcribe.webp", + "created_at": "2025-05-20T13:56:11.066606Z", + "description": "A speech-to-text model that uses GPT-4o to transcribe audio", "github_url": null, - "license_url": null, - "name": "wan-2.2-t2v-fast", - "owner": "wan-video", + "license_url": "https://openai.com/policies/", + "name": "gpt-4o-transcribe", + "owner": "openai", "is_official": true, "paper_url": null, - "run_count": 68296, - "url": "https://replicate.com/wan-video/wan-2.2-t2v-fast", + "run_count": 9029, + "url": "https://replicate.com/openai/gpt-4o-transcribe", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", "prompt", - "go_fast" + "language", + "audio_file" ] }, { - "title": "Zeroscope V 2 XL", - "description": "Zeroscope V2 XL & 576w", - "namespace": "replicate.video.generate", - "node_type": "replicate.video.generate.Zeroscope_V2_XL", + "title": "Incredibly Fast Whisper", + "description": "whisper-large-v3, incredibly fast, powered by Hugging Face Transformers! \ud83e\udd17", + "namespace": "replicate.audio.transcribe", + "node_type": "replicate.audio.transcribe.IncrediblyFastWhisper", "properties": [ { - "name": "fps", + "name": "task", "type": { - "type": "int" + "type": "enum", + "values": [ + "transcribe", + "translate" + ], + "type_name": "nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Task" }, - "default": 8, - "title": "Fps", - "description": "fps for the output video" + "default": "transcribe", + "title": "Task", + "description": "Task to perform: transcribe or translate to another language." }, { - "name": "seed", + "name": "audio", "type": { - "type": "int", + "type": "audio" + }, + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Audio", + "description": "Audio file" + }, + { + "name": "hf_token", + "type": { + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "title": "Hf Token", + "description": "Provide a hf.co/settings/token for Pyannote.audio to diarise the audio clips. You need to agree to the terms in 'https://huggingface.co/pyannote/speaker-diarization-3.1' and 'https://huggingface.co/pyannote/segmentation-3.0' first." }, { - "name": "model", + "name": "language", "type": { "type": "enum", "values": [ - "xl", - "576w", - "potat1", - "animov-512x" + "None", + "afrikaans", + "albanian", + "amharic", + "arabic", + "armenian", + "assamese", + "azerbaijani", + "bashkir", + "basque", + "belarusian", + "bengali", + "bosnian", + "breton", + "bulgarian", + "cantonese", + "catalan", + "chinese", + "croatian", + "czech", + "danish", + "dutch", + "english", + "estonian", + "faroese", + "finnish", + "french", + "galician", + "georgian", + "german", + "greek", + "gujarati", + "haitian creole", + "hausa", + "hawaiian", + "hebrew", + "hindi", + "hungarian", + "icelandic", + "indonesian", + "italian", + "japanese", + "javanese", + "kannada", + "kazakh", + "khmer", + "korean", + "lao", + "latin", + "latvian", + "lingala", + "lithuanian", + "luxembourgish", + "macedonian", + "malagasy", + "malay", + "malayalam", + "maltese", + "maori", + "marathi", + "mongolian", + "myanmar", + "nepali", + "norwegian", + "nynorsk", + "occitan", + "pashto", + "persian", + "polish", + "portuguese", + "punjabi", + "romanian", + "russian", + "sanskrit", + "serbian", + "shona", + "sindhi", + "sinhala", + "slovak", + "slovenian", + "somali", + "spanish", + "sundanese", + "swahili", + "swedish", + "tagalog", + "tajik", + "tamil", + "tatar", + "telugu", + "thai", + "tibetan", + "turkish", + "turkmen", + "ukrainian", + "urdu", + "uzbek", + "vietnamese", + "welsh", + "yiddish", + "yoruba" ], - "type_name": "nodetool.nodes.replicate.video.generate.Zeroscope_V2_XL.Model" + "type_name": "nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Language" }, - "default": "xl", - "title": "Model", - "description": "Model to use" + "default": "None", + "title": "Language", + "description": "Language spoken in the audio, specify 'None' to perform language detection." }, { - "name": "width", + "name": "timestamp", "type": { - "type": "int" + "type": "enum", + "values": [ + "chunk", + "word" + ], + "type_name": "nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Timestamp" }, - "default": 576, - "title": "Width", - "description": "Width of the output video", - "min": 256.0 + "default": "chunk", + "title": "Timestamp", + "description": "Whisper supports both chunked as well as word level timestamps." }, { - "name": "height", + "name": "batch_size", "type": { "type": "int" }, - "default": 320, - "title": "Height", - "description": "Height of the output video", - "min": 256.0 + "default": 24, + "title": "Batch Size", + "description": "Number of parallel batches you want to compute. Reduce if you face OOMs." }, { - "name": "prompt", + "name": "diarise_audio", + "type": { + "type": "bool" + }, + "default": false, + "title": "Diarise Audio", + "description": "Use Pyannote.audio to diarise the audio clips. You will need to provide hf_token below too." + } + ], + "outputs": [ + { "type": { "type": "str" }, - "default": "An astronaut riding a horse", - "title": "Prompt", - "description": "Input prompt" - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4c5d637c-c441-4857-9791-7c11111b38b4/52ebbd85-50a7-4741-b398-30e31.webp", + "created_at": "2023-11-13T13:28:53.689979Z", + "description": "whisper-large-v3, incredibly fast, powered by Hugging Face Transformers! \ud83e\udd17", + "github_url": "https://github.com/chenxwh/insanely-fast-whisper", + "license_url": "https://github.com/Vaibhavs10/insanely-fast-whisper/blob/main/LICENSE", + "name": "incredibly-fast-whisper", + "owner": "vaibhavs10", + "is_official": false, + "paper_url": null, + "run_count": 15309490, + "url": "https://replicate.com/vaibhavs10/incredibly-fast-whisper", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "task", + "audio", + "hf_token" + ] + }, + { + "title": "MMAudio", + "description": "Add sound to video using the MMAudio V2 model. An advanced AI model that synthesizes high-quality audio from video content, enabling seamless video-to-audio transformation.", + "namespace": "replicate.audio.generate", + "node_type": "replicate.audio.generate.MMAudio", + "properties": [ { - "name": "batch_size", + "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 1, - "title": "Batch Size", - "description": "Batch size", - "min": 1.0 + "default": null, + "title": "Seed", + "description": "Random seed. Use -1 or leave blank to randomize the seed", + "min": -1.0 }, { - "name": "init_video", + "name": "image", "type": { "type": "str", "optional": true }, "default": null, - "title": "Init Video", - "description": "URL of the initial video (optional)" + "title": "Image", + "description": "Optional image file for image-to-audio generation (experimental)" }, { - "name": "num_frames", + "name": "video", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 24, - "title": "Num Frames", - "description": "Number of frames for the output video" + "default": null, + "title": "Video", + "description": "Optional video file for video-to-audio generation" }, { - "name": "init_weight", + "name": "prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0.5, - "title": "Init Weight", - "description": "Strength of init_video" + "default": "", + "title": "Prompt", + "description": "Text prompt for generated audio" }, { - "name": "guidance_scale", + "name": "duration", "type": { "type": "float" }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Guidance scale", - "min": 1.0, - "max": 100.0 + "default": 8, + "title": "Duration", + "description": "Duration of output in seconds", + "min": 1.0 }, { - "name": "negative_prompt", + "name": "num_steps", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Negative Prompt", - "description": "Negative prompt" + "default": 25, + "title": "Num Steps", + "description": "Number of inference steps" }, { - "name": "remove_watermark", + "name": "cfg_strength", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Remove Watermark", - "description": "Remove watermark" + "default": 4.5, + "title": "Cfg Strength", + "description": "Guidance strength (CFG)", + "min": 1.0 }, { - "name": "num_inference_steps", + "name": "negative_prompt", "type": { - "type": "int" + "type": "str" }, - "default": 50, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "default": "music", + "title": "Negative Prompt", + "description": "Negative prompt to avoid certain sounds" } ], "outputs": [ { "type": { - "type": "video" + "type": "audio" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/d56e8888-a591-4edd-a9d3-2285b2ab66b4/1mrNnh8.jpg", - "created_at": "2023-06-24T18:30:41.874899Z", - "description": "Zeroscope V2 XL & 576w", - "github_url": "https://github.com/anotherjesse/cog-text2video", - "license_url": "https://github.com/anotherjesse/cog-text2video/blob/main/LICENSE", - "name": "zeroscope-v2-xl", - "owner": "anotherjesse", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/34262841-19bf-443c-9892-72488fec1ef2/mmaudio-cover.webp", + "created_at": "2024-12-11T14:46:16.273908Z", + "description": "Add sound to video using the MMAudio V2 model. An advanced AI model that synthesizes high-quality audio from video content, enabling seamless video-to-audio transformation.", + "github_url": "https://github.com/zsxkib/cog-mmaudio", + "license_url": "https://github.com/hkchengrex/MMAudio#MIT-1-ov-file", + "name": "mmaudio", + "owner": "zsxkib", "is_official": false, - "paper_url": "https://huggingface.co/cerspense/zeroscope_v2_576w", - "run_count": 293579, - "url": "https://replicate.com/anotherjesse/zeroscope-v2-xl", + "paper_url": "https://hkchengrex.github.io/MMAudio", + "run_count": 3135924, + "url": "https://replicate.com/zsxkib/mmaudio", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/hkchengrex/MMAudio/tree/main" }, "basic_fields": [ - "fps", "seed", - "model" - ] - }, - { - "title": "Runway Upscale V 1", - "description": "Upscale videos by 4x, up to a maximum of 4k", - "namespace": "replicate.video.enhance", - "node_type": "replicate.video.enhance.Runway_Upscale_V1", - "properties": [ - { - "name": "video", - "type": { - "type": "video" - }, - "default": { - "type": "video", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null, - "duration": null, - "format": null - }, - "title": "Video", - "description": "Video to upscale. Videos must be shorter than 40s, less than 4096px per side, and less than 16MB." - } - ], - "outputs": [ - { - "type": { - "type": "video" - }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/NJxpchtMgYI5GdFnuUFrBUbNOoQe8GGpfrECUWID5HWQAXDVA/tmp1vhr_qld.mp4", - "created_at": "2025-07-22T16:20:08.063207Z", - "description": "Upscale videos by 4x, up to a maximum of 4k", - "github_url": null, - "license_url": null, - "name": "upscale-v1", - "owner": "runwayml", - "is_official": true, - "paper_url": null, - "run_count": 4938, - "url": "https://replicate.com/runwayml/upscale-v1", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ + "image", "video" ] }, { - "title": "Topaz Video Upscale", - "description": "Video Upscaling from Topaz Labs", - "namespace": "replicate.video.enhance", - "node_type": "replicate.video.enhance.Topaz_Video_Upscale", + "title": "Music Gen", + "description": "Generate music from a prompt or melody", + "namespace": "replicate.audio.generate", + "node_type": "replicate.audio.generate.MusicGen", "properties": [ { - "name": "video", + "name": "seed", "type": { - "type": "video" - }, - "default": { - "type": "video", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null, - "duration": null, - "format": null + "type": "int", + "optional": true }, - "title": "Video", - "description": "Video file to upscale" + "default": null, + "title": "Seed", + "description": "Seed for random number generator. If None or -1, a random seed will be used." }, { - "name": "target_fps", + "name": "top_k", "type": { "type": "int" }, - "default": 60, - "title": "Target Fps", - "description": "Target FPS (choose from 15fps to 120fps)", - "min": 15.0, - "max": 120.0 + "default": 250, + "title": "Top K", + "description": "Reduces sampling to the k most likely tokens." }, { - "name": "target_resolution", - "type": { - "type": "enum", - "values": [ - "720p", - "1080p", - "4k" - ], - "type_name": "nodetool.nodes.replicate.video.enhance.Topaz_Video_Upscale.Target_resolution" - }, - "default": "1080p", - "title": "Target Resolution", - "description": "Target resolution" - } - ], - "outputs": [ - { + "name": "top_p", "type": { - "type": "video" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8252807c-a5ac-4008-96a5-814201b4738a/topaz_img.png", - "created_at": "2025-04-24T21:56:18.449571Z", - "description": "Video Upscaling from Topaz Labs", - "github_url": null, - "license_url": null, - "name": "video-upscale", - "owner": "topazlabs", - "is_official": true, - "paper_url": null, - "run_count": 720556, - "url": "https://replicate.com/topazlabs/video-upscale", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "video", - "target_fps", - "target_resolution" - ] - }, - { - "title": "Ad Inpaint", - "description": "Product advertising image generator", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.AdInpaint", - "properties": [ + "default": 0, + "title": "Top P", + "description": "Reduces sampling to tokens with cumulative probability of p. When set to `0` (default), top_k sampling is used." + }, { - "name": "pixel", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "512 * 512", - "768 * 768", - "1024 * 1024" - ], - "type_name": "nodetool.nodes.replicate.image.generate.AdInpaint.Pixel" + "type": "str", + "optional": true }, - "default": "512 * 512", - "title": "Pixel", - "description": "image total pixel" + "default": null, + "title": "Prompt", + "description": "A description of the music you want to generate." }, { - "name": "scale", + "name": "duration", "type": { "type": "int" }, - "default": 3, - "title": "Scale", - "description": "Factor to scale image by (maximum: 4)", - "min": 0.0, - "max": 4.0 + "default": 8, + "title": "Duration", + "description": "Duration of the generated audio in seconds." }, { - "name": "prompt", + "name": "input_audio", "type": { "type": "str", "optional": true }, "default": null, - "title": "Prompt", - "description": "Product name or prompt" + "title": "Input Audio", + "description": "An audio file that will influence the generated music. If `continuation` is `True`, the generated music will be a continuation of the audio file. Otherwise, the generated music will mimic the audio file's melody." }, { - "name": "image_num", + "name": "temperature", "type": { - "type": "int" + "type": "float" }, "default": 1, - "title": "Image Num", - "description": "Number of image to generate", - "min": 0.0, - "max": 4.0 + "title": "Temperature", + "description": "Controls the 'conservativeness' of the sampling process. Higher temperature means more diversity." }, { - "name": "image_path", + "name": "continuation", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "bool" }, - "title": "Image Path", - "description": "input image" + "default": false, + "title": "Continuation", + "description": "If `True`, generated music will continue from `input_audio`. Otherwise, generated music will mimic `input_audio`'s melody." }, { - "name": "manual_seed", + "name": "model_version", "type": { - "type": "int" + "type": "enum", + "values": [ + "stereo-melody-large", + "stereo-large", + "melody-large", + "large" + ], + "type_name": "nodetool.nodes.replicate.audio.generate.MusicGen.Model_version" }, - "default": -1, - "title": "Manual Seed", - "description": "Manual Seed" + "default": "stereo-melody-large", + "title": "Model Version", + "description": "Model to use for generation" }, { - "name": "product_size", + "name": "output_format", "type": { "type": "enum", "values": [ - "Original", - "0.6 * width", - "0.5 * width", - "0.4 * width", - "0.3 * width", - "0.2 * width" + "wav", + "mp3" ], - "type_name": "nodetool.nodes.replicate.image.generate.AdInpaint.Product_size" + "type_name": "nodetool.nodes.replicate.audio.generate.MusicGen.Output_format" }, - "default": "Original", - "title": "Product Size", - "description": "Max product size" + "default": "wav", + "title": "Output Format", + "description": "Output format for generated audio." }, { - "name": "guidance_scale", + "name": "continuation_end", "type": { - "type": "float" + "type": "int", + "optional": true }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Guidance Scale" + "default": null, + "title": "Continuation End", + "description": "End time of the audio file to use for continuation. If -1 or None, will default to the end of the audio clip.", + "min": 0.0 }, { - "name": "negative_prompt", + "name": "continuation_start", "type": { - "type": "str" + "type": "int" }, - "default": "low quality, out of frame, illustration, 3d, sepia, painting, cartoons, sketch, watermark, text, Logo, advertisement", - "title": "Negative Prompt", - "description": "Anything you don't want in the photo" + "default": 0, + "title": "Continuation Start", + "description": "Start time of the audio file to use for continuation.", + "min": 0.0 }, { - "name": "num_inference_steps", + "name": "multi_band_diffusion", + "type": { + "type": "bool" + }, + "default": false, + "title": "Multi Band Diffusion", + "description": "If `True`, the EnCodec tokens will be decoded with MultiBand Diffusion. Only works with non-stereo models." + }, + { + "name": "normalization_strategy", + "type": { + "type": "enum", + "values": [ + "loudness", + "clip", + "peak", + "rms" + ], + "type_name": "nodetool.nodes.replicate.audio.generate.MusicGen.Normalization_strategy" + }, + "default": "loudness", + "title": "Normalization Strategy", + "description": "Strategy for normalizing audio." + }, + { + "name": "classifier_free_guidance", "type": { "type": "int" }, - "default": 20, - "title": "Num Inference Steps", - "description": "Inference Steps" + "default": 3, + "title": "Classifier Free Guidance", + "description": "Increases the influence of inputs on the output. Higher values produce lower-varience outputs that adhere more closely to inputs." } ], "outputs": [ { "type": { - "type": "image" + "type": "audio" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e21a425b-4cdb-445b-8b2f-5be1b26fb78d/ad_inpaint_2.jpg", - "created_at": "2023-04-03T11:25:28.290524Z", - "description": "Product advertising image generator", - "github_url": null, - "license_url": null, - "name": "ad-inpaint", - "owner": "logerzhu", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a921a8b3-3e9e-48ef-995c-29143ea11bec/musicgen.jpeg", + "created_at": "2023-06-12T19:22:05.525230Z", + "description": "Generate music from a prompt or melody", + "github_url": "https://github.com/replicate/cog-musicgen", + "license_url": "https://github.com/facebookresearch/audiocraft/blob/main/LICENSE_weights", + "name": "musicgen", + "owner": "meta", "is_official": false, - "paper_url": null, - "run_count": 620633, - "url": "https://replicate.com/logerzhu/ad-inpaint", + "paper_url": "https://arxiv.org/abs/2306.05284", + "run_count": 3013095, + "url": "https://replicate.com/meta/musicgen", "visibility": "public", "weights_url": null }, "basic_fields": [ - "pixel", - "scale", - "prompt" + "seed", + "top_k", + "top_p" ] }, { - "title": "Consistent Character", - "description": "Create images of a given character in different poses", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.ConsistentCharacter", + "title": "Realistic Voice Cloning", + "description": "Create song covers with any RVC v2 trained AI voice from audio files.", + "namespace": "replicate.audio.generate", + "node_type": "replicate.audio.generate.RealisticVoiceCloning", "properties": [ { - "name": "seed", + "name": "protect", "type": { - "type": "int", - "optional": true + "type": "float" }, - "default": null, - "title": "Seed", - "description": "Set a seed for reproducibility. Random by default." + "default": 0.33, + "title": "Protect", + "description": "Control how much of the original vocals' breath and voiceless consonants to leave in the AI vocals. Set 0.5 to disable.", + "min": 0.0, + "max": 0.5 }, { - "name": "prompt", + "name": "rvc_model", "type": { - "type": "str" + "type": "enum", + "values": [ + "Squidward", + "MrKrabs", + "Plankton", + "Drake", + "Vader", + "Trump", + "Biden", + "Obama", + "Guitar", + "Voilin", + "CUSTOM" + ], + "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Rvc_model" }, - "default": "A headshot photo", - "title": "Prompt", - "description": "Describe the subject. Include clothes and hairstyle for more consistency." + "default": "Squidward", + "title": "Rvc Model", + "description": "RVC model for a specific voice. If using a custom model, this should match the name of the downloaded model. If a 'custom_rvc_model_download_url' is provided, this will be automatically set to the name of the downloaded model." }, { - "name": "subject", + "name": "index_rate", "type": { - "type": "image" + "type": "float" + }, + "default": 0.5, + "title": "Index Rate", + "description": "Control how much of the AI's accent to leave in the vocals.", + "min": 0.0, + "max": 1.0 + }, + { + "name": "song_input", + "type": { + "type": "audio" }, "default": { - "type": "image", + "type": "audio", "uri": "", "asset_id": null, "data": null, "metadata": null }, - "title": "Subject", - "description": "An image of a person. Best images are square close ups of a face, but they do not have to be." - }, - { - "name": "output_format", - "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.ConsistentCharacter.Output_format" - }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "title": "Song Input", + "description": "Upload your audio file here." }, { - "name": "output_quality", + "name": "reverb_size", "type": { - "type": "int" + "type": "float" }, - "default": 80, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + "default": 0.15, + "title": "Reverb Size", + "description": "The larger the room, the longer the reverb time.", "min": 0.0, - "max": 100.0 + "max": 1.0 }, { - "name": "negative_prompt", + "name": "pitch_change", "type": { - "type": "str" + "type": "enum", + "values": [ + "no-change", + "male-to-female", + "female-to-male" + ], + "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_change" }, - "default": "", - "title": "Negative Prompt", - "description": "Things you do not want to see in your image" + "default": "no-change", + "title": "Pitch Change", + "description": "Adjust pitch of AI vocals. Options: `no-change`, `male-to-female`, `female-to-male`." }, { - "name": "randomise_poses", + "name": "rms_mix_rate", "type": { - "type": "bool" + "type": "float" }, - "default": true, - "title": "Randomise Poses", - "description": "Randomise the poses used." + "default": 0.25, + "title": "Rms Mix Rate", + "description": "Control how much to use the original vocal's loudness (0) or a fixed loudness (1).", + "min": 0.0, + "max": 1.0 }, { - "name": "number_of_outputs", + "name": "filter_radius", "type": { "type": "int" }, "default": 3, - "title": "Number Of Outputs", - "description": "The number of images to generate.", - "min": 1.0, - "max": 20.0 + "title": "Filter Radius", + "description": "If >=3: apply median filtering median filtering to the harvested pitch results.", + "min": 0.0, + "max": 7.0 }, { - "name": "disable_safety_checker", + "name": "output_format", "type": { - "type": "bool" + "type": "enum", + "values": [ + "mp3", + "wav" + ], + "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Output_format" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "default": "mp3", + "title": "Output Format", + "description": "wav for best quality and large file size, mp3 for decent quality and small file size." }, { - "name": "number_of_images_per_pose", - "type": { - "type": "int" - }, - "default": 1, - "title": "Number Of Images Per Pose", - "description": "The number of images to generate for each pose.", - "min": 1.0, - "max": 4.0 - } - ], - "outputs": [ - { + "name": "reverb_damping", "type": { - "type": "image" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/TOVBIdLIP6rPLdn4HUtnZHyvHwBAaXzCNUWenllOPD8hBw6JA/ComfyUI_00005_.webp", - "created_at": "2024-05-30T16:48:52.345721Z", - "description": "Create images of a given character in different poses", - "github_url": "https://github.com/fofr/cog-consistent-character", - "license_url": "https://github.com/fofr/cog-consistent-character/blob/main/LICENSE", - "name": "consistent-character", - "owner": "fofr", - "is_official": false, - "paper_url": null, - "run_count": 1240530, - "url": "https://replicate.com/fofr/consistent-character", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "seed", - "prompt", - "subject" - ] - }, - { - "title": "Flux 1 1 Pro Ultra", - "description": "FLUX1.1 [pro] in ultra and raw modes. Images are up to 4 megapixels. Use raw mode for realism.", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_1_1_Pro_Ultra", - "properties": [ + "default": 0.7, + "title": "Reverb Damping", + "description": "Absorption of high frequencies in the reverb.", + "min": 0.0, + "max": 1.0 + }, { - "name": "raw", + "name": "reverb_dryness", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Raw", - "description": "Generate less processed, more natural-looking images" + "default": 0.8, + "title": "Reverb Dryness", + "description": "Level of AI vocals without reverb.", + "min": 0.0, + "max": 1.0 }, { - "name": "seed", + "name": "reverb_wetness", "type": { - "type": "int", - "optional": true + "type": "float" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": 0.2, + "title": "Reverb Wetness", + "description": "Level of AI vocals with reverb.", + "min": 0.0, + "max": 1.0 }, { - "name": "prompt", + "name": "crepe_hop_length", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": 128, + "title": "Crepe Hop Length", + "description": "When `pitch_detection_algo` is set to `mangio-crepe`, this controls how often it checks for pitch changes in milliseconds. Lower values lead to longer conversions and higher risk of voice cracks, but better pitch accuracy." }, { - "name": "aspect_ratio", + "name": "pitch_change_all", "type": { - "type": "enum", - "values": [ - "21:9", - "16:9", - "3:2", - "4:3", - "5:4", - "1:1", - "4:5", - "3:4", - "2:3", - "9:16", - "9:21" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Aspect_ratio" + "type": "float" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" + "default": 0, + "title": "Pitch Change All", + "description": "Change pitch/key of background music, backup vocals and AI vocals in semitones. Reduces sound quality slightly." }, { - "name": "image_prompt", + "name": "main_vocals_volume_change", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Image Prompt", - "description": "Image to use with Flux Redux. This is used together with the text prompt to guide the generation towards the composition of the image_prompt. Must be jpeg, png, gif, or webp." + "default": 0, + "title": "Main Vocals Volume Change", + "description": "Control volume of main AI vocals. Use -3 to decrease the volume by 3 decibels, or 3 to increase the volume by 3 decibels." }, { - "name": "output_format", + "name": "pitch_detection_algorithm", "type": { "type": "enum", "values": [ - "jpg", - "png" + "rmvpe", + "mangio-crepe" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Output_format" + "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_detection_algorithm" }, - "default": "jpg", - "title": "Output Format", - "description": "Format of the output images." + "default": "rmvpe", + "title": "Pitch Detection Algorithm", + "description": "Best option is rmvpe (clarity in vocals), then mangio-crepe (smoother vocals)." }, { - "name": "safety_tolerance", + "name": "instrumental_volume_change", "type": { - "type": "int" + "type": "float" }, - "default": 2, - "title": "Safety Tolerance", - "description": "Safety tolerance, 1 is most strict and 6 is most permissive", - "min": 1.0, - "max": 6.0 + "default": 0, + "title": "Instrumental Volume Change", + "description": "Control volume of the background music/instrumentals." }, { - "name": "image_prompt_strength", + "name": "backup_vocals_volume_change", "type": { "type": "float" }, - "default": 0.1, - "title": "Image Prompt Strength", - "description": "Blend between the prompt and the image prompt.", - "min": 0.0, - "max": 1.0 + "default": 0, + "title": "Backup Vocals Volume Change", + "description": "Control volume of backup AI vocals." + }, + { + "name": "custom_rvc_model_download_url", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Custom Rvc Model Download Url", + "description": "URL to download a custom RVC model. If provided, the model will be downloaded (if it doesn't already exist) and used for prediction, regardless of the 'rvc_model' value." } ], "outputs": [ { "type": { - "type": "image" + "type": "audio" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8121c76b-fbff-41d9-834d-c70dea9d2191/flux-ultra-cover.jpg", - "created_at": "2024-11-06T19:13:05.091037Z", - "description": "FLUX1.1 [pro] in ultra and raw modes. Images are up to 4 megapixels. Use raw mode for realism.", - "github_url": null, - "license_url": "https://replicate.com/black-forest-labs/flux-pro#license", - "name": "flux-1.1-pro-ultra", - "owner": "black-forest-labs", - "is_official": true, - "paper_url": "https://blackforestlabs.ai/flux-1-1-ultra/", - "run_count": 17061527, - "url": "https://replicate.com/black-forest-labs/flux-1.1-pro-ultra", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/ce3d3d2c-5a06-413c-96ff-546fc96c90e2/Out_0_1024x1024.png", + "created_at": "2023-11-09T16:32:42.062982Z", + "description": "Create song covers with any RVC v2 trained AI voice from audio files.", + "github_url": "https://github.com/zsxkib/AICoverGen.git", + "license_url": "https://github.com/SociallyIneptWeeb/AICoverGen/blob/main/LICENSE", + "name": "realistic-voice-cloning", + "owner": "zsxkib", + "is_official": false, + "paper_url": null, + "run_count": 1026648, + "url": "https://replicate.com/zsxkib/realistic-voice-cloning", "visibility": "public", "weights_url": null }, "basic_fields": [ - "raw", - "seed", - "prompt" + "protect", + "rvc_model", + "index_rate" ] }, { - "title": "Flux 360", - "description": "Generate 360 panorama images.", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_360", + "title": "Riffusion", + "description": "Stable diffusion for real-time music generation", + "namespace": "replicate.audio.generate", + "node_type": "replicate.audio.generate.Riffusion", "properties": [ { - "name": "mask", + "name": "alpha", "type": { - "type": "image" + "type": "float" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 0.5, + "title": "Alpha", + "description": "Interpolation alpha if using two prompts. A value of 0 uses prompt_a fully, a value of 1 uses prompt_b fully", + "min": 0.0, + "max": 1.0 + }, + { + "name": "prompt_a", + "type": { + "type": "str" }, - "title": "Mask", - "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + "default": "funky synth solo", + "title": "Prompt A", + "description": "The prompt for your audio" }, { - "name": "seed", + "name": "prompt_b", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "title": "Prompt B", + "description": "The second prompt to interpolate with the first, leave blank if no interpolation" }, { - "name": "image", + "name": "denoising", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "float" }, - "title": "Image", - "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + "default": 0.75, + "title": "Denoising", + "description": "How much to transform input spectrogram", + "min": 0.0, + "max": 1.0 }, { - "name": "model", + "name": "seed_image_id", "type": { "type": "enum", "values": [ - "dev", - "schnell" + "agile", + "marim", + "mask_beat_lines_80", + "mask_gradient_dark", + "mask_gradient_top_70", + "mask_graident_top_fifth_75", + "mask_top_third_75", + "mask_top_third_95", + "motorway", + "og_beat", + "vibes" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Model" + "type_name": "nodetool.nodes.replicate.audio.generate.Riffusion.Seed_image_id" }, - "default": "dev", - "title": "Model", - "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." + "default": "vibes", + "title": "Seed Image Id", + "description": "Seed spectrogram to use" }, { - "name": "width", + "name": "num_inference_steps", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Width", - "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 - }, + "default": 50, + "title": "Num Inference Steps", + "description": "Number of steps to run the diffusion model", + "min": 1.0 + } + ], + "outputs": [ { - "name": "height", "type": { - "type": "int", - "optional": true + "type": "audio" }, - "default": null, - "title": "Height", - "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4154e53a-5c5d-4ac5-9da8-62a1fec212bf/riffusion.gif", + "created_at": "2022-12-16T07:31:34.983811Z", + "description": "Stable diffusion for real-time music generation", + "github_url": "https://github.com/riffusion/riffusion", + "license_url": "https://github.com/riffusion/riffusion/blob/main/LICENSE", + "name": "riffusion", + "owner": "riffusion", + "is_official": false, + "paper_url": "https://www.riffusion.com/about", + "run_count": 1044734, + "url": "https://replicate.com/riffusion/riffusion", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "alpha", + "prompt_a", + "prompt_b" + ] + }, + { + "title": "Style TTS 2", + "description": "Generates speech from text", + "namespace": "replicate.audio.generate", + "node_type": "replicate.audio.generate.StyleTTS2", + "properties": [ { - "name": "prompt", + "name": "beta", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Prompt", - "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." + "default": 0.7, + "title": "Beta", + "description": "Only used for long text inputs or in case of reference speaker, determines the prosody of the speaker. Use lower values to sample style based on previous or reference speech instead of text.", + "min": 0.0, + "max": 1.0 }, { - "name": "go_fast", + "name": "seed", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" + "default": 0, + "title": "Seed", + "description": "Seed for reproducibility" }, { - "name": "extra_lora", + "name": "text", "type": { "type": "str", "optional": true }, "default": null, - "title": "Extra Lora", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + "title": "Text", + "description": "Text to convert to speech" }, { - "name": "lora_scale", + "name": "alpha", "type": { "type": "float" }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 - }, - { - "name": "megapixels", - "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Megapixels" - }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" - }, - { - "name": "num_outputs", - "type": { - "type": "int" - }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": 0.3, + "title": "Alpha", + "description": "Only used for long text inputs or in case of reference speaker, determines the timbre of the speaker. Use lower values to sample style based on previous or reference speech instead of text.", + "min": 0.0, + "max": 1.0 }, { - "name": "aspect_ratio", + "name": "weights", "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21", - "custom" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Aspect_ratio" + "type": "str", + "optional": true }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" + "default": null, + "title": "Weights", + "description": "Replicate weights url for inference with model that is fine-tuned on new speakers. If provided, a reference speech must also be provided. If not provided, the default model will be used." }, { - "name": "output_format", + "name": "reference", "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Output_format" + "type": "audio" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" - }, - { - "name": "guidance_scale", - "type": { - "type": "float" + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": 3, - "title": "Guidance Scale", - "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", - "min": 0.0, - "max": 10.0 + "title": "Reference", + "description": "Reference speech to copy style from" }, { - "name": "output_quality", + "name": "diffusion_steps", "type": { "type": "int" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "default": 10, + "title": "Diffusion Steps", + "description": "Number of diffusion steps", "min": 0.0, - "max": 100.0 + "max": 50.0 }, { - "name": "prompt_strength", + "name": "embedding_scale", "type": { "type": "float" }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "default": 1, + "title": "Embedding Scale", + "description": "Embedding scale, use higher values for pronounced emotion", "min": 0.0, - "max": 1.0 - }, + "max": 5.0 + } + ], + "outputs": [ { - "name": "extra_lora_scale", "type": { - "type": "float" - }, - "default": 1, - "title": "Extra Lora Scale", - "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 - }, - { - "name": "replicate_weights", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Replicate Weights", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", - "min": 1.0, - "max": 50.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" - }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." - } - ], - "outputs": [ - { - "type": { - "type": "image" + "type": "audio" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3731b4ae-b13e-44e8-a12e-6d02627cbd23/forest.png", - "created_at": "2024-08-26T15:51:12.459480Z", - "description": "Generate 360 panorama images.", - "github_url": "https://github.com/igorriti/pi", - "license_url": null, - "name": "flux-360", - "owner": "igorriti", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/b3443880-411e-4b5f-b9f9-3db28c59b578/out-0.png", + "created_at": "2023-11-20T19:22:15.416691Z", + "description": "Generates speech from text", + "github_url": "https://github.com/yl4579/StyleTTS2", + "license_url": "https://github.com/yl4579/StyleTTS2/blob/main/LICENSE", + "name": "styletts2", + "owner": "adirik", "is_official": false, - "paper_url": null, - "run_count": 17471, - "url": "https://replicate.com/igorriti/flux-360", + "paper_url": "https://arxiv.org/abs/2306.07691", + "run_count": 131616, + "url": "https://replicate.com/adirik/styletts2", "visibility": "public", - "weights_url": "https://huggingface.co/igorriti/flux-360" + "weights_url": null }, "basic_fields": [ - "mask", + "beta", "seed", - "image" + "text" ] }, { - "title": "Flux Black Light", - "description": "A flux lora fine-tuned on black light images", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Black_Light", + "title": "Tortoise TTS", + "description": "Generate speech from text, clone voices from mp3 files. From James Betker AKA \"neonbjb\".", + "namespace": "replicate.audio.generate", + "node_type": "replicate.audio.generate.TortoiseTTS", "properties": [ - { - "name": "mask", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Mask", - "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." - }, { "name": "seed", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, + "default": 0, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Random seed which can be used to reproduce results." }, { - "name": "image", + "name": "text", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str" }, - "title": "Image", - "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + "default": "The expressiveness of autoregressive transformers is literally nuts! I absolutely adore them.", + "title": "Text", + "description": "Text to speak." }, { - "name": "model", + "name": "preset", "type": { "type": "enum", "values": [ - "dev", - "schnell" + "ultra_fast", + "fast", + "standard", + "high_quality" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Model" - }, - "default": "dev", - "title": "Model", - "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." - }, - { - "name": "width", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Width", - "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 - }, - { - "name": "height", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Height", - "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 - }, - { - "name": "prompt", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Prompt", - "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." - }, - { - "name": "go_fast", - "type": { - "type": "bool" - }, - "default": false, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" - }, - { - "name": "extra_lora", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Extra Lora", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" - }, - { - "name": "lora_scale", - "type": { - "type": "float" + "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Preset" }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 + "default": "fast", + "title": "Preset", + "description": "Which voice preset to use. See the documentation for more information." }, { - "name": "megapixels", + "name": "voice_a", "type": { "type": "enum", "values": [ - "1", - "0.25" + "angie", + "cond_latent_example", + "deniro", + "freeman", + "halle", + "lj", + "myself", + "pat2", + "snakes", + "tom", + "train_daws", + "train_dreams", + "train_grace", + "train_lescault", + "weaver", + "applejack", + "daniel", + "emma", + "geralt", + "jlaw", + "mol", + "pat", + "rainbow", + "tim_reynolds", + "train_atkins", + "train_dotrice", + "train_empire", + "train_kennard", + "train_mouse", + "william", + "random", + "custom_voice", + "disabled" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Megapixels" - }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" - }, - { - "name": "num_outputs", - "type": { - "type": "int" + "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_a" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": "random", + "title": "Voice A", + "description": "Selects the voice to use for generation. Use `random` to select a random voice. Use `custom_voice` to use a custom voice." }, { - "name": "aspect_ratio", + "name": "voice_b", "type": { "type": "enum", "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21", - "custom" + "angie", + "cond_latent_example", + "deniro", + "freeman", + "halle", + "lj", + "myself", + "pat2", + "snakes", + "tom", + "train_daws", + "train_dreams", + "train_grace", + "train_lescault", + "weaver", + "applejack", + "daniel", + "emma", + "geralt", + "jlaw", + "mol", + "pat", + "rainbow", + "tim_reynolds", + "train_atkins", + "train_dotrice", + "train_empire", + "train_kennard", + "train_mouse", + "william", + "random", + "custom_voice", + "disabled" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_b" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" + "default": "disabled", + "title": "Voice B", + "description": "(Optional) Create new voice from averaging the latents for `voice_a`, `voice_b` and `voice_c`. Use `disabled` to disable voice mixing." }, { - "name": "output_format", + "name": "voice_c", "type": { "type": "enum", "values": [ - "webp", - "jpg", - "png" + "angie", + "cond_latent_example", + "deniro", + "freeman", + "halle", + "lj", + "myself", + "pat2", + "snakes", + "tom", + "train_daws", + "train_dreams", + "train_grace", + "train_lescault", + "weaver", + "applejack", + "daniel", + "emma", + "geralt", + "jlaw", + "mol", + "pat", + "rainbow", + "tim_reynolds", + "train_atkins", + "train_dotrice", + "train_empire", + "train_kennard", + "train_mouse", + "william", + "random", + "custom_voice", + "disabled" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Output_format" - }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" - }, - { - "name": "guidance_scale", - "type": { - "type": "float" - }, - "default": 3, - "title": "Guidance Scale", - "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", - "min": 0.0, - "max": 10.0 - }, - { - "name": "output_quality", - "type": { - "type": "int" + "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_c" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 + "default": "disabled", + "title": "Voice C", + "description": "(Optional) Create new voice from averaging the latents for `voice_a`, `voice_b` and `voice_c`. Use `disabled` to disable voice mixing." }, { - "name": "prompt_strength", + "name": "cvvp_amount", "type": { "type": "float" }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "default": 0, + "title": "Cvvp Amount", + "description": "How much the CVVP model should influence the output. Increasing this can in some cases reduce the likelyhood of multiple speakers. Defaults to 0 (disabled)", "min": 0.0, "max": 1.0 }, { - "name": "extra_lora_scale", - "type": { - "type": "float" - }, - "default": 1, - "title": "Extra Lora Scale", - "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 - }, - { - "name": "replicate_weights", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Replicate Weights", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" - }, - { - "name": "num_inference_steps", + "name": "custom_voice", "type": { - "type": "int" + "type": "audio" }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", - "min": 1.0, - "max": 50.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "title": "Custom Voice", + "description": "(Optional) Create a custom voice based on an mp3 file of a speaker. Audio should be at least 15 seconds, only contain one speaker, and be in mp3 format. Overrides the `voice_a` input." } ], "outputs": [ { "type": { - "type": "image" + "type": "audio" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/yhqm/ZehHgBlLml30R64OxKegcYEHlzGgd0rcIrf5ejXaFK5VuPMNB/out-0.webp", - "created_at": "2024-08-15T22:48:12.421764Z", - "description": "A flux lora fine-tuned on black light images", - "github_url": null, - "license_url": null, - "name": "flux-black-light", - "owner": "fofr", + "cover_image_url": null, + "created_at": "2022-08-02T02:01:54.555794Z", + "description": "Generate speech from text, clone voices from mp3 files. From James Betker AKA \"neonbjb\".", + "github_url": "https://github.com/afiaka87/tortoise-tts", + "license_url": "https://github.com/afiaka87/tortoise-tts/blob/main/LICENSE", + "name": "tortoise-tts", + "owner": "afiaka87", "is_official": false, - "paper_url": null, - "run_count": 2153418, - "url": "https://replicate.com/fofr/flux-black-light", + "paper_url": "https://github.com/neonbjb/tortoise-tts", + "run_count": 172255, + "url": "https://replicate.com/afiaka87/tortoise-tts", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mask", "seed", - "image" + "text", + "preset" ] }, { - "title": "Flux Canny Dev", - "description": "Open-weight edge-guided image generation. Control structure and composition using Canny edge detection.", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Canny_Dev", + "title": "Demucs", + "description": "Demucs is an audio source separator created by Facebook Research.", + "namespace": "replicate.audio.separate", + "node_type": "replicate.audio.separate.Demucs", "properties": [ { - "name": "seed", + "name": "jobs", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": 0, + "title": "Jobs", + "description": "Choose the number of parallel jobs to use for separation." }, { - "name": "prompt", + "name": "stem", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + "none", + "drums", + "bass", + "other", + "vocals", + "guitar", + "piano" + ], + "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Stem" }, - "default": null, - "title": "Prompt", - "description": "Prompt for generated image" + "default": "none", + "title": "Stem", + "description": "If you just want to isolate one stem, you can choose it here." }, { - "name": "guidance", + "name": "audio", "type": { - "type": "float" + "type": "audio" }, - "default": 30, - "title": "Guidance", - "description": "Guidance for generated image", - "min": 0.0, - "max": 100.0 + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Audio", + "description": "Upload the file to be processed here." }, { - "name": "megapixels", + "name": "model", "type": { "type": "enum", "values": [ - "1", - "0.25", - "match_input" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Megapixels" + "htdemucs", + "htdemucs_ft", + "htdemucs_6s", + "hdemucs_mmi", + "mdx_q", + "mdx_extra_q" + ], + "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Model" }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)" + "default": "htdemucs", + "title": "Model", + "description": "Choose the demucs audio that proccesses your audio. The readme has more information on what to choose." }, { - "name": "num_outputs", + "name": "split", + "type": { + "type": "bool" + }, + "default": true, + "title": "Split", + "description": "Choose whether or not the audio should be split into chunks." + }, + { + "name": "shifts", "type": { "type": "int" }, "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "title": "Shifts", + "description": "Choose the amount random shifts for equivariant stabilization. This performs multiple predictions with random shifts of the input and averages them, which makes it x times slower." }, { - "name": "control_image", + "name": "overlap", "type": { - "type": "image" + "type": "float" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 0.25, + "title": "Overlap", + "description": "Choose the amount of overlap between prediction windows." + }, + { + "name": "segment", + "type": { + "type": "int", + "optional": true }, - "title": "Control Image", - "description": "Image used to control the generation. The canny edge detection will be automatically generated." + "default": null, + "title": "Segment", + "description": "Choose the segment length to use for separation." }, { - "name": "output_format", + "name": "clip_mode", "type": { "type": "enum", "values": [ - "webp", - "jpg", - "png" + "rescale", + "clamp", + "none" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Output_format" + "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Clip_mode" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": "rescale", + "title": "Clip Mode", + "description": "Choose the strategy for avoiding clipping. Rescale will rescale entire signal if necessary or clamp will allow hard clipping." }, { - "name": "output_quality", + "name": "mp3_preset", "type": { - "type": "int" + "type": "enum", + "values": [ + 2, + 3, + 4, + 5, + 6, + 7 + ], + "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Mp3_preset" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 + "default": 2, + "title": "Mp3 Preset", + "description": "Choose the preset for the MP3 output. Higher is faster but worse quality. If MP3 is not selected as the output type, this has no effect." }, { - "name": "num_inference_steps", + "name": "wav_format", + "type": { + "type": "enum", + "values": [ + "int16", + "int24", + "float32" + ], + "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Wav_format" + }, + "default": "int24", + "title": "Wav Format", + "description": "Choose format for the WAV output. If WAV is not selected as the output type, this has no effect." + }, + { + "name": "mp3_bitrate", "type": { "type": "int" }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", - "min": 1.0, - "max": 50.0 + "default": 320, + "title": "Mp3 Bitrate", + "description": "Choose the bitrate for the MP3 output. Higher is better quality but larger file size. If MP3 is not selected as the output type, this has no effect." }, { - "name": "disable_safety_checker", + "name": "output_format", "type": { - "type": "bool" + "type": "enum", + "values": [ + "mp3", + "flac", + "wav" + ], + "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Output_format" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "default": "mp3", + "title": "Output Format", + "description": "Choose the audio format you would like the result to be returned in." } ], "outputs": [ { "type": { - "type": "image" + "type": "audio" }, - "name": "output" + "name": "vocals" + }, + { + "type": { + "type": "audio" + }, + "name": "drums" + }, + { + "type": { + "type": "audio" + }, + "name": "bass" + }, + { + "type": { + "type": "audio" + }, + "name": "other" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/788cf228-ae38-473a-a992-1e650aab0519/flux-canny-dev.jpg", - "created_at": "2024-11-20T20:49:32.818286Z", - "description": "Open-weight edge-guided image generation. Control structure and composition using Canny edge detection.", - "github_url": null, - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", - "name": "flux-canny-dev", - "owner": "black-forest-labs", - "is_official": true, - "paper_url": null, - "run_count": 140541, - "url": "https://replicate.com/black-forest-labs/flux-canny-dev", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/c13b51bf-69a4-474e-ad73-d800466ca357/588ff17a-e9c9-49c7-b572-e1b189d87.png", + "created_at": "2022-11-08T22:25:48.183283Z", + "description": "Demucs is an audio source separator created by Facebook Research.", + "github_url": "https://github.com/ryan5453/demucs-cog", + "license_url": "https://github.com/ryan5453/demucs-cog/blob/main/LICENSE", + "name": "demucs", + "owner": "ryan5453", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2111.03600", + "run_count": 680198, + "url": "https://replicate.com/ryan5453/demucs", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Canny-dev" + "weights_url": null }, "basic_fields": [ - "seed", - "prompt", - "guidance" + "jobs", + "stem", + "audio" ] }, { - "title": "Flux Canny Pro", - "description": "Professional edge-guided image generation. Control structure and composition using Canny edge detection", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Canny_Pro", + "title": "Audio Super Resolution", + "description": "AudioSR: Versatile Audio Super-resolution at Scale", + "namespace": "replicate.audio.enhance", + "node_type": "replicate.audio.enhance.AudioSuperResolution", "properties": [ { "name": "seed", @@ -4057,127 +3656,98 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "steps", + "name": "ddim_steps", "type": { "type": "int" }, "default": 50, - "title": "Steps", - "description": "Number of diffusion steps. Higher values yield finer details but increase processing time.", - "min": 15.0, - "max": 50.0 - }, - { - "name": "prompt", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" - }, - { - "name": "guidance", - "type": { - "type": "float" - }, - "default": 30, - "title": "Guidance", - "description": "Controls the balance between adherence to the text as well as image prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", - "min": 1.0, - "max": 100.0 + "title": "Ddim Steps", + "description": "Number of inference steps", + "min": 10.0, + "max": 500.0 }, { - "name": "control_image", + "name": "input_file", "type": { - "type": "image" + "type": "audio" }, "default": { - "type": "image", + "type": "audio", "uri": "", "asset_id": null, "data": null, "metadata": null }, - "title": "Control Image", - "description": "Image to use as control input. Must be jpeg, png, gif, or webp." - }, - { - "name": "output_format", - "type": { - "type": "enum", - "values": [ - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Canny_Pro.Output_format" - }, - "default": "jpg", - "title": "Output Format", - "description": "Format of the output images." + "title": "Input File", + "description": "Audio to upsample" }, { - "name": "safety_tolerance", + "name": "guidance_scale", "type": { - "type": "int" + "type": "float" }, - "default": 2, - "title": "Safety Tolerance", - "description": "Safety tolerance, 1 is most strict and 6 is most permissive", + "default": 3.5, + "title": "Guidance Scale", + "description": "Scale for classifier free guidance", "min": 1.0, - "max": 6.0 - }, - { - "name": "prompt_upsampling", - "type": { - "type": "bool" - }, - "default": false, - "title": "Prompt Upsampling", - "description": "Automatically modify the prompt for more creative generation" + "max": 20.0 } ], "outputs": [ { "type": { - "type": "image" + "type": "audio" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4c07cacc-d206-4587-9357-8e4e81cd761a/https___replicate.deli_lsMxQWe.jpg", - "created_at": "2024-11-21T09:53:08.913764Z", - "description": "Professional edge-guided image generation. Control structure and composition using Canny edge detection", - "github_url": null, - "license_url": "https://replicate.com/black-forest-labs/flux-canny-pro#license", - "name": "flux-canny-pro", - "owner": "black-forest-labs", - "is_official": true, - "paper_url": null, - "run_count": 346281, - "url": "https://replicate.com/black-forest-labs/flux-canny-pro", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/6bc4e480-6695-451b-940d-48a3b83a1356/replicate-prediction-jvi5xvlbg4v4.png", + "created_at": "2023-09-20T04:53:52.943393Z", + "description": "AudioSR: Versatile Audio Super-resolution at Scale", + "github_url": "https://github.com/haoheliu/versatile_audio_super_resolution", + "license_url": "https://huggingface.co/haoheliu/wellsolve_audio_super_resolution_48k/blob/main/README.md", + "name": "audio-super-resolution", + "owner": "nateraw", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2309.07314", + "run_count": 61012, + "url": "https://replicate.com/nateraw/audio-super-resolution", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", - "steps", - "prompt" + "ddim_steps", + "input_file" ] }, { - "title": "Flux Cinestill", - "description": "Flux lora, use \"CNSTLL\" to trigger", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Cinestill", + "title": "Blip", + "description": "Generate image captions", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.Blip", "properties": [ { - "name": "mask", + "name": "task", + "type": { + "type": "enum", + "values": [ + "image_captioning", + "visual_question_answering", + "image_text_matching" + ], + "type_name": "nodetool.nodes.replicate.image.analyze.Blip.Task" + }, + "default": "image_captioning", + "title": "Task", + "description": "Choose a task." + }, + { + "name": "image", "type": { "type": "image" }, @@ -4188,19 +3758,65 @@ "data": null, "metadata": null }, - "title": "Mask", - "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + "title": "Image", + "description": "Input image" }, { - "name": "seed", + "name": "caption", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "title": "Caption", + "description": "Type caption for the input image for image text matching task." }, + { + "name": "question", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Question", + "description": "Type question for the input image for visual question answering task." + } + ], + "outputs": [ + { + "type": { + "type": "str" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b59b459c-c475-414f-ba67-c424a7e6e6ca/demo.jpg", + "created_at": "2022-02-06T17:40:38.855280Z", + "description": "Generate image captions", + "github_url": "https://github.com/salesforce/BLIP", + "license_url": "https://github.com/salesforce/BLIP/blob/main/LICENSE.txt", + "name": "blip", + "owner": "salesforce", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2201.12086", + "run_count": 167989821, + "url": "https://replicate.com/salesforce/blip", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "task", + "image", + "caption" + ] + }, + { + "title": "Blip 2", + "description": "Answers questions about images", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.Blip2", + "properties": [ { "name": "image", "type": { @@ -4214,319 +3830,482 @@ "metadata": null }, "title": "Image", - "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + "description": "Input image to query or caption" }, { - "name": "model", + "name": "caption", "type": { - "type": "enum", - "values": [ - "dev", - "schnell" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Model" + "type": "bool" }, - "default": "dev", - "title": "Model", - "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." + "default": false, + "title": "Caption", + "description": "Select if you want to generate image captions instead of asking questions" }, { - "name": "width", + "name": "context", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Width", - "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 + "title": "Context", + "description": "Optional - previous questions and answers to be used as context for answering current question" }, { - "name": "height", + "name": "question", "type": { - "type": "int", - "optional": true + "type": "str" }, - "default": null, - "title": "Height", - "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 + "default": "What is this a picture of?", + "title": "Question", + "description": "Question to ask about this image. Leave blank for captioning" }, { - "name": "prompt", + "name": "temperature", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Prompt", - "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." + "default": 1, + "title": "Temperature", + "description": "Temperature for use with nucleus sampling", + "min": 0.5, + "max": 1.0 }, { - "name": "go_fast", + "name": "use_nucleus_sampling", "type": { "type": "bool" }, "default": false, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" - }, + "title": "Use Nucleus Sampling", + "description": "Toggles the model using nucleus sampling to generate responses" + } + ], + "outputs": [ { - "name": "extra_lora", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, - "title": "Extra Lora", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/031b9aee-ed15-4429-a7e4-813b72e9edc5/gg_bridge.jpeg", + "created_at": "2023-02-13T07:06:23.521189Z", + "description": "Answers questions about images", + "github_url": "https://github.com/daanelson/cog-blip-2", + "license_url": null, + "name": "blip-2", + "owner": "andreasjansson", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2301.12597", + "run_count": 30685755, + "url": "https://replicate.com/andreasjansson/blip-2", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "image", + "caption", + "context" + ] + }, + { + "title": "Clip Features", + "description": "Return CLIP features for the clip-vit-large-patch14 model", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.ClipFeatures", + "properties": [ { - "name": "lora_scale", + "name": "inputs", "type": { - "type": "float" + "type": "str" }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 - }, + "default": "a\nb", + "title": "Inputs", + "description": "Newline-separated inputs. Can either be strings of text or image URIs starting with http[s]://" + } + ], + "outputs": [ { - "name": "megapixels", "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Megapixels" + "type": "list", + "type_args": [ + { + "type": "dict" + } + ] }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/07d242b3-4246-4da2-9522-b4ad134336fc/clip_image.png", + "created_at": "2022-09-22T20:23:55.682616Z", + "description": "Return CLIP features for the clip-vit-large-patch14 model", + "github_url": "https://github.com/andreasjansson/cog-clip", + "license_url": null, + "name": "clip-features", + "owner": "andreasjansson", + "is_official": false, + "paper_url": null, + "run_count": 104790007, + "url": "https://replicate.com/andreasjansson/clip-features", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "inputs" + ] + }, + { + "title": "Clip Interrogator", + "description": "The CLIP Interrogator is a prompt engineering tool that combines OpenAI's CLIP and Salesforce's BLIP to optimize text prompts to match a given image. Use the resulting prompts with text-to-image models like Stable Diffusion to create cool art!", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.ClipInterrogator", + "properties": [ { - "name": "num_outputs", + "name": "mode", "type": { - "type": "int" + "type": "enum", + "values": [ + "best", + "classic", + "fast", + "negative" + ], + "type_name": "nodetool.nodes.replicate.image.analyze.ClipInterrogator.Mode" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": "best", + "title": "Mode", + "description": "Prompt mode (best takes 10-20 seconds, fast takes 1-2 seconds)." }, { - "name": "aspect_ratio", + "name": "image", "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21", - "custom" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Aspect_ratio" + "type": "image" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image" }, { - "name": "output_format", + "name": "clip_model_name", "type": { "type": "enum", "values": [ - "webp", - "jpg", - "png" + "ViT-L-14/openai", + "ViT-H-14/laion2b_s32b_b79k", + "ViT-bigG-14/laion2b_s39b_b160k" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Output_format" + "type_name": "nodetool.nodes.replicate.image.analyze.ClipInterrogator.Clip_model_name" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" - }, + "default": "ViT-L-14/openai", + "title": "Clip Model Name", + "description": "Choose ViT-L for Stable Diffusion 1, ViT-H for Stable Diffusion 2, or ViT-bigG for Stable Diffusion XL." + } + ], + "outputs": [ { - "name": "guidance_scale", "type": { - "type": "float" + "type": "str" }, - "default": 3, - "title": "Guidance Scale", - "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", - "min": 0.0, - "max": 10.0 - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://replicate.delivery/pbxt/HrXsgowfhbZi3dImGZoIcvnz7oZfMtFY4UAEU8vBIakTd8JQ/watercolour-4799014_960_720.jpg", + "created_at": "2022-10-28T17:47:38.473429Z", + "description": "The CLIP Interrogator is a prompt engineering tool that combines OpenAI's CLIP and Salesforce's BLIP to optimize text prompts to match a given image. Use the resulting prompts with text-to-image models like Stable Diffusion to create cool art!", + "github_url": "https://github.com/pharmapsychotic/clip-interrogator", + "license_url": "https://github.com/pharmapsychotic/clip-interrogator/blob/main/LICENSE", + "name": "clip-interrogator", + "owner": "pharmapsychotic", + "is_official": false, + "paper_url": null, + "run_count": 4449419, + "url": "https://replicate.com/pharmapsychotic/clip-interrogator", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "mode", + "image", + "clip_model_name" + ] + }, + { + "title": "Img 2 Prompt", + "description": "Get an approximate text prompt, with style, matching an image. (Optimized for stable-diffusion (clip ViT-L/14))", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.Img2Prompt", + "properties": [ { - "name": "output_quality", + "name": "image", "type": { - "type": "int" + "type": "image" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 - }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image" + } + ], + "outputs": [ { - "name": "prompt_strength", "type": { - "type": "float" + "type": "str" }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", - "min": 0.0, - "max": 1.0 + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/504b1747-8c67-438b-b02f-a6ea9254589d/a_high_detail_shot_of_a_cat_we.png", + "created_at": "2022-08-24T08:53:28.614572Z", + "description": "Get an approximate text prompt, with style, matching an image. (Optimized for stable-diffusion (clip ViT-L/14))", + "github_url": "https://github.com/pharmapsychotic/clip-interrogator", + "license_url": "https://github.com/pharmapsychotic/clip-interrogator/blob/main/LICENSE", + "name": "img2prompt", + "owner": "methexis-inc", + "is_official": false, + "paper_url": null, + "run_count": 2654039, + "url": "https://replicate.com/methexis-inc/img2prompt", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "image" + ] + }, + { + "title": "Llava 13 b", + "description": "Visual instruction tuning towards large language and vision models with GPT-4 level capabilities", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.Llava13b", + "properties": [ + { + "name": "image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image" }, { - "name": "extra_lora_scale", + "name": "top_p", "type": { "type": "float" }, "default": 1, - "title": "Extra Lora Scale", - "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 + "title": "Top P", + "description": "When decoding text, samples from the top p percentage of most likely tokens; lower to ignore less likely tokens", + "min": 0.0, + "max": 1.0 }, { - "name": "replicate_weights", + "name": "prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Replicate Weights", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + "title": "Prompt", + "description": "Prompt to use for text generation" }, { - "name": "num_inference_steps", + "name": "max_tokens", "type": { "type": "int" }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", - "min": 1.0, - "max": 50.0 + "default": 1024, + "title": "Max Tokens", + "description": "Maximum number of tokens to generate. A word is generally 2-3 tokens", + "min": 0.0 }, { - "name": "disable_safety_checker", + "name": "temperature", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "default": 0.2, + "title": "Temperature", + "description": "Adjusts randomness of outputs, greater than 1 is random and 0 is deterministic", + "min": 0.0 } ], "outputs": [ { "type": { - "type": "image" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/2838391b-a106-4d81-b0ff-68aa5a0b9367/cinestill.png", - "created_at": "2024-08-24T10:28:41.876414Z", - "description": "Flux lora, use \"CNSTLL\" to trigger", - "github_url": null, - "license_url": null, - "name": "flux-cinestill", - "owner": "adirik", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/454548d6-4978-4d85-bca3-d067dfc031bf/llava.png", + "created_at": "2023-10-09T16:27:51.777748Z", + "description": "Visual instruction tuning towards large language and vision models with GPT-4 level capabilities", + "github_url": "https://github.com/haotian-liu/LLaVA", + "license_url": "https://ai.meta.com/llama/license/", + "name": "llava-13b", + "owner": "yorickvp", "is_official": false, - "paper_url": null, - "run_count": 112093, - "url": "https://replicate.com/adirik/flux-cinestill", + "paper_url": "https://arxiv.org/abs/2310.03744", + "run_count": 30632354, + "url": "https://replicate.com/yorickvp/llava-13b", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mask", - "seed", - "image" + "image", + "top_p", + "prompt" ] }, { - "title": "Flux Depth Dev", - "description": "Open-weight depth-aware image generation. Edit images while preserving spatial relationships.", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Depth_Dev", + "title": "Moondream 2", + "description": "moondream2 is a small vision language model designed to run efficiently on edge devices", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.Moondream2", "properties": [ { - "name": "seed", + "name": "image", "type": { - "type": "int", - "optional": true + "type": "image" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image" }, { "name": "prompt", + "type": { + "type": "str" + }, + "default": "Describe this image", + "title": "Prompt", + "description": "Input prompt" + } + ], + "outputs": [ + { + "type": { + "type": "str" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/dc0dc539-f592-4c34-b24f-2d112f742975/moondream2.png", + "created_at": "2024-03-05T02:29:40.377800Z", + "description": "moondream2 is a small vision language model designed to run efficiently on edge devices", + "github_url": "https://github.com/lucataco/cog-moondream2", + "license_url": "https://github.com/vikhyat/moondream?tab=Apache-2.0-1-ov-file#readme", + "name": "moondream2", + "owner": "lucataco", + "is_official": false, + "paper_url": null, + "run_count": 3114450, + "url": "https://replicate.com/lucataco/moondream2", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "image", + "prompt" + ] + }, + { + "title": "NSFWImage Detection", + "description": "Fine-Tuned Vision Transformer (ViT) for NSFW Image Classification", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.NSFWImageDetection", + "properties": [ + { + "name": "image", "type": { "type": "str", "optional": true }, "default": null, - "title": "Prompt", - "description": "Prompt for generated image" - }, + "title": "Image", + "description": "Input image" + } + ], + "outputs": [ { - "name": "guidance", "type": { - "type": "float" + "type": "str" }, - "default": 10, - "title": "Guidance", - "description": "Guidance for generated image", - "min": 0.0, - "max": 100.0 - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/41507351-883e-4a5a-8d62-2fe69ef0b7fc/falcon.jpg", + "created_at": "2023-11-21T14:53:34.798862Z", + "description": "Fine-Tuned Vision Transformer (ViT) for NSFW Image Classification", + "github_url": "https://github.com/lucataco/cog-nsfw_image_detection", + "license_url": "https://huggingface.co/models?license=license:apache-2.0", + "name": "nsfw_image_detection", + "owner": "falcons-ai", + "is_official": true, + "paper_url": "https://arxiv.org/abs/2010.11929", + "run_count": 63829470, + "url": "https://replicate.com/falcons-ai/nsfw_image_detection", + "visibility": "public", + "weights_url": "https://huggingface.co/Falconsai/nsfw_image_detection" + }, + "basic_fields": [ + "image" + ] + }, + { + "title": "SDXLClip Interrogator", + "description": "CLIP Interrogator for SDXL optimizes text prompts to match a given image", + "namespace": "replicate.image.analyze", + "node_type": "replicate.image.analyze.SDXLClipInterrogator", + "properties": [ { - "name": "megapixels", + "name": "mode", "type": { "type": "enum", "values": [ - "1", - "0.25", - "match_input" + "best", + "fast" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Megapixels" - }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)" - }, - { - "name": "num_outputs", - "type": { - "type": "int" + "type_name": "nodetool.nodes.replicate.image.analyze.SDXLClipInterrogator.Mode" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": "best", + "title": "Mode", + "description": "Prompt Mode: fast takes 1-2 seconds, best takes 15-25 seconds." }, { - "name": "control_image", + "name": "image", "type": { "type": "image" }, @@ -4537,90 +4316,43 @@ "data": null, "metadata": null }, - "title": "Control Image", - "description": "Image used to control the generation. The depth map will be automatically generated." - }, - { - "name": "output_format", - "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Output_format" - }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" - }, - { - "name": "output_quality", - "type": { - "type": "int" - }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", - "min": 1.0, - "max": 50.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" - }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "title": "Image", + "description": "Input image" } ], "outputs": [ { "type": { - "type": "image" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/4cfef8f5-5fcb-413c-bdaa-d6d4f41e5930/flux-depth-dev.jpg", - "created_at": "2024-11-20T20:49:48.670385Z", - "description": "Open-weight depth-aware image generation. Edit images while preserving spatial relationships.", - "github_url": null, - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", - "name": "flux-depth-dev", - "owner": "black-forest-labs", - "is_official": true, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/c200f919-4cc1-412b-8edf-e2863a5eef56/replicate-sdxl-inter.png", + "created_at": "2023-08-14T20:06:38.402771Z", + "description": "CLIP Interrogator for SDXL optimizes text prompts to match a given image", + "github_url": "https://github.com/lucataco/cog-sdxl-clip-interrogator", + "license_url": "https://github.com/pharmapsychotic/clip-interrogator/blob/main/LICENSE", + "name": "sdxl-clip-interrogator", + "owner": "lucataco", + "is_official": false, "paper_url": null, - "run_count": 676030, - "url": "https://replicate.com/black-forest-labs/flux-depth-dev", + "run_count": 848344, + "url": "https://replicate.com/lucataco/sdxl-clip-interrogator", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Depth-dev" + "weights_url": null }, "basic_fields": [ - "seed", - "prompt", - "guidance" + "mode", + "image" ] }, { - "title": "Flux Depth Pro", - "description": "Professional depth-aware image generation. Edit images while preserving spatial relationships.", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Depth_Pro", + "title": "Become Image", + "description": "Adapt any picture of a face into another image", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.BecomeImage", "properties": [ { "name": "seed", @@ -4630,42 +4362,33 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Fix the random seed for reproducibility" }, { - "name": "steps", + "name": "image", "type": { - "type": "int" + "type": "image" }, - "default": 50, - "title": "Steps", - "description": "Number of diffusion steps. Higher values yield finer details but increase processing time.", - "min": 15.0, - "max": 50.0 - }, - { - "name": "prompt", - "type": { - "type": "str", - "optional": true + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "title": "Image", + "description": "An image of a person to be converted" }, { - "name": "guidance", + "name": "prompt", "type": { - "type": "float" + "type": "str" }, - "default": 15, - "title": "Guidance", - "description": "Controls the balance between adherence to the text as well as image prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", - "min": 1.0, - "max": 100.0 + "default": "a person", + "title": "Prompt" }, { - "name": "control_image", + "name": "image_to_become", "type": { "type": "image" }, @@ -4676,42 +4399,103 @@ "data": null, "metadata": null }, - "title": "Control Image", - "description": "Image to use as control input. Must be jpeg, png, gif, or webp." + "title": "Image To Become", + "description": "Any image to convert the person to" }, { - "name": "output_format", + "name": "negative_prompt", "type": { - "type": "enum", - "values": [ - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Depth_Pro.Output_format" + "type": "str" }, - "default": "jpg", - "title": "Output Format", - "description": "Format of the output images." + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want in the image" }, { - "name": "safety_tolerance", + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 2, + "title": "Prompt Strength", + "description": "Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original.", + "min": 0.0, + "max": 3.0 + }, + { + "name": "number_of_images", "type": { "type": "int" }, "default": 2, - "title": "Safety Tolerance", - "description": "Safety tolerance, 1 is most strict and 6 is most permissive", + "title": "Number Of Images", + "description": "Number of images to generate", "min": 1.0, - "max": 6.0 + "max": 10.0 }, { - "name": "prompt_upsampling", + "name": "denoising_strength", + "type": { + "type": "float" + }, + "default": 1, + "title": "Denoising Strength", + "description": "How much of the original image of the person to keep. 1 is the complete destruction of the original image, 0 is the original image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "instant_id_strength", + "type": { + "type": "float" + }, + "default": 1, + "title": "Instant Id Strength", + "description": "How strong the InstantID will be.", + "min": 0.0, + "max": 1.0 + }, + { + "name": "image_to_become_noise", + "type": { + "type": "float" + }, + "default": 0.3, + "title": "Image To Become Noise", + "description": "How much noise to add to the style image before processing. An alternative way of controlling stength.", + "min": 0.0, + "max": 1.0 + }, + { + "name": "control_depth_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Control Depth Strength", + "description": "Strength of depth controlnet. The bigger this is, the more controlnet affects the output.", + "min": 0.0, + "max": 1.0 + }, + { + "name": "disable_safety_checker", "type": { "type": "bool" }, "default": false, - "title": "Prompt Upsampling", - "description": "Automatically modify the prompt for more creative generation" + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images" + }, + { + "name": "image_to_become_strength", + "type": { + "type": "float" + }, + "default": 0.75, + "title": "Image To Become Strength", + "description": "How strong the style will be applied", + "min": 0.0, + "max": 1.0 } ], "outputs": [ @@ -4723,31 +4507,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/e365ecff-4023-49f8-96ba-abd710c4bdd9/https___replicate.deliver_xWYu8lC.jpg", - "created_at": "2024-11-21T09:53:00.631446Z", - "description": "Professional depth-aware image generation. Edit images while preserving spatial relationships.", - "github_url": null, - "license_url": "https://replicate.com/black-forest-labs/flux-depth-pro#license", - "name": "flux-depth-pro", - "owner": "black-forest-labs", - "is_official": true, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b37fc7b7-0cef-4895-9176-bf5bb0cb7011/pearl-earring-1.webp", + "created_at": "2024-03-11T11:16:22.168373Z", + "description": "Adapt any picture of a face into another image", + "github_url": "https://github.com/fofr/cog-become-image", + "license_url": "https://github.com/fofr/cog-become-image/blob/main/weights_licenses.md", + "name": "become-image", + "owner": "fofr", + "is_official": false, "paper_url": null, - "run_count": 243221, - "url": "https://replicate.com/black-forest-labs/flux-depth-pro", + "run_count": 668321, + "url": "https://replicate.com/fofr/become-image", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", - "steps", + "image", "prompt" ] }, { - "title": "Flux Dev", - "description": "A 12 billion parameter rectified flow transformer capable of generating images from text descriptions", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Dev", + "title": "Face To Many", + "description": "Turn a face into 3D, emoji, pixel art, video game, claymation or toy", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.FaceToMany", "properties": [ { "name": "seed", @@ -4757,152 +4541,122 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Fix the random seed for reproducibility" }, { "name": "image", "type": { - "type": "str", - "optional": true + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": null, "title": "Image", - "description": "Input image for image to image mode. The aspect ratio of your output will match this image" + "description": "An image of a person to be converted" }, { - "name": "prompt", + "name": "style", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + "3D", + "Emoji", + "Video game", + "Pixels", + "Clay", + "Toy" + ], + "type_name": "nodetool.nodes.replicate.image.face.FaceToMany.Style" }, - "default": null, - "title": "Prompt", - "description": "Prompt for generated image" + "default": "3D", + "title": "Style", + "description": "Style to convert to" }, { - "name": "go_fast", + "name": "prompt", "type": { - "type": "bool" + "type": "str" }, - "default": true, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." + "default": "a person", + "title": "Prompt" }, { - "name": "guidance", + "name": "lora_scale", "type": { "type": "float" }, - "default": 3, - "title": "Guidance", - "description": "Guidance for generated image", + "default": 1, + "title": "Lora Scale", + "description": "How strong the LoRA will be", "min": 0.0, - "max": 10.0 + "max": 1.0 }, { - "name": "megapixels", + "name": "custom_lora_url", "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev.Megapixels" + "type": "str", + "optional": true }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" + "default": null, + "title": "Custom Lora Url", + "description": "URL to a Replicate custom LoRA. Must be in the format https://replicate.delivery/pbxt/[id]/trained_model.tar or https://pbxt.replicate.delivery/[id]/trained_model.tar" }, { - "name": "num_outputs", + "name": "negative_prompt", "type": { - "type": "int" + "type": "str" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want in the image" }, { - "name": "aspect_ratio", + "name": "prompt_strength", "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev.Aspect_ratio" + "type": "float" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" + "default": 4.5, + "title": "Prompt Strength", + "description": "Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original.", + "min": 0.0, + "max": 20.0 }, { - "name": "output_format", + "name": "denoising_strength", "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev.Output_format" + "type": "float" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": 0.65, + "title": "Denoising Strength", + "description": "How much of the original image to keep. 1 is the complete destruction of the original image, 0 is the original image", + "min": 0.0, + "max": 1.0 }, { - "name": "output_quality", + "name": "instant_id_strength", "type": { - "type": "int" + "type": "float" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "default": 1, + "title": "Instant Id Strength", + "description": "How strong the InstantID will be.", "min": 0.0, - "max": 100.0 + "max": 1.0 }, { - "name": "prompt_strength", + "name": "control_depth_strength", "type": { "type": "float" }, "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "title": "Control Depth Strength", + "description": "Strength of depth controlnet. The bigger this is, the more controlnet affects the output.", "min": 0.0, "max": 1.0 - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", - "min": 1.0, - "max": 50.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" - }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -4914,31 +4668,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/cb4203e5-9ece-42e7-b326-98ff3fa35c3a/Replicate_Prediction_15.webp", - "created_at": "2024-07-29T23:25:06.100855Z", - "description": "A 12 billion parameter rectified flow transformer capable of generating images from text descriptions", - "github_url": "https://github.com/replicate/cog-flux", - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", - "name": "flux-dev", - "owner": "black-forest-labs", - "is_official": true, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/583bfb50-534d-4835-a856-80bd2abb332e/mona-list-emoji.webp", + "created_at": "2024-03-05T13:01:03.163557Z", + "description": "Turn a face into 3D, emoji, pixel art, video game, claymation or toy", + "github_url": "https://github.com/fofr/cog-face-to-many", + "license_url": "https://github.com/fofr/cog-face-to-many/blob/main/weights_licenses.md", + "name": "face-to-many", + "owner": "fofr", + "is_official": false, "paper_url": null, - "run_count": 26579834, - "url": "https://replicate.com/black-forest-labs/flux-dev", + "run_count": 14509495, + "url": "https://replicate.com/fofr/face-to-many", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev" + "weights_url": null }, "basic_fields": [ "seed", "image", - "prompt" + "style" ] }, { - "title": "Flux Dev Lora", - "description": "A version of flux-dev, a text to image model, that supports fast fine-tuned lora inference", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Dev_Lora", + "title": "Face To Sticker", + "description": "Turn a face into a sticker", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.FaceToSticker", "properties": [ { "name": "seed", @@ -4948,7 +4702,7 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Fix the random seed for reproducibility" }, { "name": "image", @@ -4963,204 +4717,108 @@ "metadata": null }, "title": "Image", - "description": "Input image for image to image mode. The aspect ratio of your output will match this image" - }, - { - "name": "prompt", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Prompt", - "description": "Prompt for generated image" + "description": "An image of a person to be converted to a sticker" }, { - "name": "go_fast", + "name": "steps", "type": { - "type": "bool" + "type": "int" }, - "default": true, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." + "default": 20, + "title": "Steps" }, { - "name": "guidance", + "name": "width", "type": { - "type": "float" + "type": "int" }, - "default": 3, - "title": "Guidance", - "description": "Guidance for generated image", - "min": 0.0, - "max": 10.0 + "default": 1024, + "title": "Width" }, { - "name": "extra_lora", + "name": "height", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Extra Lora", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + "default": 1024, + "title": "Height" }, { - "name": "lora_scale", + "name": "prompt", "type": { - "type": "float" + "type": "str" }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 + "default": "a person", + "title": "Prompt" }, { - "name": "megapixels", + "name": "upscale", "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Megapixels" + "type": "bool" }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" + "default": false, + "title": "Upscale", + "description": "2x upscale the sticker" }, { - "name": "num_outputs", + "name": "upscale_steps", "type": { "type": "int" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": 10, + "title": "Upscale Steps", + "description": "Number of steps to upscale" }, { - "name": "aspect_ratio", + "name": "negative_prompt", "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Aspect_ratio" + "type": "str" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want in the image" }, { - "name": "hf_api_token", + "name": "prompt_strength", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Hf Api Token", - "description": "HuggingFace API token. If you're using a hf lora that needs authentication, you'll need to provide an API token." + "default": 7, + "title": "Prompt Strength", + "description": "Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original." }, { - "name": "lora_weights", + "name": "ip_adapter_noise", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Lora Weights", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//[/], CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet, including signed URLs. For example, 'fofr/flux-pixar-cars'. Civit AI and HuggingFace LoRAs may require an API token to access, which you can provide in the `civitai_api_token` and `hf_api_token` inputs respectively." + "default": 0.5, + "title": "Ip Adapter Noise", + "description": "How much noise is added to the IP adapter input", + "min": 0.0, + "max": 1.0 }, { - "name": "output_format", + "name": "ip_adapter_weight", "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Output_format" + "type": "float" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": 0.2, + "title": "Ip Adapter Weight", + "description": "How much the IP adapter will influence the image", + "min": 0.0, + "max": 1.0 }, { - "name": "output_quality", + "name": "instant_id_strength", "type": { - "type": "int" + "type": "float" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 - }, - { - "name": "prompt_strength", - "type": { - "type": "float" - }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "default": 1, + "title": "Instant Id Strength", + "description": "How strong the InstantID will be.", "min": 0.0, "max": 1.0 - }, - { - "name": "extra_lora_scale", - "type": { - "type": "float" - }, - "default": 1, - "title": "Extra Lora Scale", - "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 - }, - { - "name": "civitai_api_token", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Civitai Api Token", - "description": "Civitai API token. If you're using a civitai lora that needs authentication, you'll need to provide an API token." - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", - "min": 1.0, - "max": 50.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" - }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -5172,42 +4830,32 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a79cc4a8-318c-4316-a800-097ef0bdce7a/https___replicate.del_25H5GQ7.webp", - "created_at": "2024-11-11T23:03:07.000926Z", - "description": "A version of flux-dev, a text to image model, that supports fast fine-tuned lora inference", - "github_url": "https://github.com/replicate/cog-flux", - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", - "name": "flux-dev-lora", - "owner": "black-forest-labs", - "is_official": true, + "cover_image_url": "https://replicate.delivery/xezq/vvHSs2p5vPJtPRNW7ffCYt54fwP43r8I3kG4LPfoCCMaMBWPB/ComfyUI_00002_.png", + "created_at": "2024-02-28T15:14:15.687345Z", + "description": "Turn a face into a sticker", + "github_url": "https://github.com/fofr/cog-face-to-sticker", + "license_url": "https://github.com/fofr/cog-face-to-sticker/blob/main/weights_licenses.md", + "name": "face-to-sticker", + "owner": "fofr", + "is_official": false, "paper_url": null, - "run_count": 4295070, - "url": "https://replicate.com/black-forest-labs/flux-dev-lora", + "run_count": 1567794, + "url": "https://replicate.com/fofr/face-to-sticker", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev" + "weights_url": null }, "basic_fields": [ "seed", "image", - "prompt" + "steps" ] }, { - "title": "Flux Fill Dev", - "description": "Open-weight inpainting model for editing and extending images. Guidance-distilled from FLUX.1 Fill [pro].", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Fill_Dev", + "title": "Instant Id", + "description": "Make realistic images of real people instantly", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.InstantId", "properties": [ - { - "name": "mask", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Mask", - "description": "A black-and-white image that describes the part of the image to inpaint. Black areas will be preserved while white areas will be inpainted." - }, { "name": "seed", "type": { @@ -5216,64 +4864,73 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Random seed. Leave blank to randomize the seed" }, { "name": "image", "type": { - "type": "str", - "optional": true + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": null, "title": "Image", - "description": "The image to inpaint. Can contain alpha mask. If the image width or height are not multiples of 32, they will be scaled to the closest multiple of 32. If the image dimensions don't fit within 1440x1440, it will be scaled down to fit." + "description": "Input face image" }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "a person", "title": "Prompt", - "description": "Prompt for generated image" + "description": "Input prompt" }, { - "name": "guidance", + "name": "scheduler", "type": { - "type": "float" + "type": "enum", + "values": [ + "DEISMultistepScheduler", + "HeunDiscreteScheduler", + "EulerDiscreteScheduler", + "DPMSolverMultistepScheduler", + "DPMSolverMultistepScheduler-Karras", + "DPMSolverMultistepScheduler-Karras-SDE" + ], + "type_name": "nodetool.nodes.replicate.image.face.InstantId.Scheduler" }, - "default": 30, - "title": "Guidance", - "description": "Guidance for generated image", - "min": 0.0, - "max": 100.0 + "default": "EulerDiscreteScheduler", + "title": "Scheduler", + "description": "Scheduler" }, { - "name": "lora_scale", + "name": "enable_lcm", "type": { - "type": "float" + "type": "bool" }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 + "default": false, + "title": "Enable Lcm", + "description": "Enable Fast Inference with LCM (Latent Consistency Models) - speeds up inference steps, trade-off is the quality of the generated image. Performs better with close-up portrait face images" }, { - "name": "megapixels", + "name": "pose_image", "type": { - "type": "enum", - "values": [ - "1", - "0.25", - "match_input" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Megapixels" + "type": "image" }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Pose Image", + "description": "(Optional) reference pose image" }, { "name": "num_outputs", @@ -5282,19 +4939,38 @@ }, "default": 1, "title": "Num Outputs", - "description": "Number of outputs to generate", + "description": "Number of images to output", "min": 1.0, - "max": 4.0 + "max": 8.0 }, { - "name": "lora_weights", + "name": "sdxl_weights", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + "stable-diffusion-xl-base-1.0", + "juggernaut-xl-v8", + "afrodite-xl-v2", + "albedobase-xl-20", + "albedobase-xl-v13", + "animagine-xl-30", + "anime-art-diffusion-xl", + "anime-illust-diffusion-xl", + "dreamshaper-xl", + "dynavision-xl-v0610", + "guofeng4-xl", + "nightvision-xl-0791", + "omnigen-xl", + "pony-diffusion-v6-xl", + "protovision-xl-high-fidel", + "RealVisXL_V3.0_Turbo", + "RealVisXL_V4.0_Lightning" + ], + "type_name": "nodetool.nodes.replicate.image.face.InstantId.Sdxl_weights" }, - "default": null, - "title": "Lora Weights", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + "default": "stable-diffusion-xl-base-1.0", + "title": "Sdxl Weights", + "description": "Pick which base weights you want to use" }, { "name": "output_format", @@ -5305,194 +4981,197 @@ "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Output_format" + "type_name": "nodetool.nodes.replicate.image.face.InstantId.Output_format" }, "default": "webp", "title": "Output Format", "description": "Format of the output images" }, { - "name": "output_quality", + "name": "pose_strength", "type": { - "type": "int" + "type": "float" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "default": 0.4, + "title": "Pose Strength", + "description": "Openpose ControlNet strength, effective only if `enable_pose_controlnet` is true", "min": 0.0, - "max": 100.0 + "max": 1.0 }, { - "name": "num_inference_steps", + "name": "canny_strength", "type": { - "type": "int" + "type": "float" }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", - "min": 1.0, - "max": 50.0 + "default": 0.3, + "title": "Canny Strength", + "description": "Canny ControlNet strength, effective only if `enable_canny_controlnet` is true", + "min": 0.0, + "max": 1.0 }, { - "name": "disable_safety_checker", + "name": "depth_strength", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." - } - ], - "outputs": [ + "default": 0.5, + "title": "Depth Strength", + "description": "Depth ControlNet strength, effective only if `enable_depth_controlnet` is true", + "min": 0.0, + "max": 1.0 + }, { + "name": "guidance_scale", "type": { - "type": "image" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/b109cc9e-f3c2-4899-8428-df46a988c3f0/https___replicate.deliver_tmlMO9j.jpg", - "created_at": "2024-11-20T20:49:17.667435Z", - "description": "Open-weight inpainting model for editing and extending images. Guidance-distilled from FLUX.1 Fill [pro].", - "github_url": null, - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", - "name": "flux-fill-dev", - "owner": "black-forest-labs", - "is_official": true, - "paper_url": null, - "run_count": 874830, - "url": "https://replicate.com/black-forest-labs/flux-fill-dev", - "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Fill-dev" - }, - "basic_fields": [ - "mask", - "seed", - "image" - ] - }, - { - "title": "Flux Fill Pro", - "description": "Professional inpainting and outpainting model with state-of-the-art performance. Edit or extend images with natural, seamless results.", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Fill_Pro", - "properties": [ + "default": 7.5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 50.0 + }, { - "name": "mask", + "name": "output_quality", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Mask", - "description": "A black-and-white image that describes the part of the image to inpaint. Black areas will be preserved while white areas will be inpainted. Must have the same size as image. Optional if you provide an alpha mask in the original image. Must be jpeg, png, gif, or webp." + "default": 80, + "title": "Output Quality", + "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + "min": 0.0, + "max": 100.0 }, { - "name": "seed", + "name": "negative_prompt", "type": { - "type": "int", - "optional": true + "type": "str" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": "", + "title": "Negative Prompt", + "description": "Input Negative Prompt" }, { - "name": "image", + "name": "ip_adapter_scale", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Image", - "description": "The image to inpaint. Can contain an alpha mask. Must be jpeg, png, gif, or webp." + "default": 0.8, + "title": "Ip Adapter Scale", + "description": "Scale for image adapter strength (for detail)", + "min": 0.0, + "max": 1.5 }, { - "name": "steps", + "name": "lcm_guidance_scale", + "type": { + "type": "float" + }, + "default": 1.5, + "title": "Lcm Guidance Scale", + "description": "Only used when `enable_lcm` is set to True, Scale for classifier-free guidance when using LCM", + "min": 1.0, + "max": 20.0 + }, + { + "name": "num_inference_steps", "type": { "type": "int" }, - "default": 50, - "title": "Steps", - "description": "Number of diffusion steps. Higher values yield finer details but increase processing time.", - "min": 15.0, - "max": 50.0 + "default": 30, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 }, { - "name": "prompt", + "name": "disable_safety_checker", "type": { - "type": "str", - "optional": true + "type": "bool" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images" }, { - "name": "guidance", + "name": "enable_pose_controlnet", "type": { - "type": "float" + "type": "bool" }, - "default": 60, - "title": "Guidance", - "description": "Controls the balance between adherence to the text prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", - "min": 1.5, - "max": 100.0 + "default": true, + "title": "Enable Pose Controlnet", + "description": "Enable Openpose ControlNet, overrides strength if set to false" }, { - "name": "outpaint", + "name": "enhance_nonface_region", "type": { - "type": "enum", - "values": [ - "None", - "Zoom out 1.5x", - "Zoom out 2x", - "Make square", - "Left outpaint", - "Right outpaint", - "Top outpaint", - "Bottom outpaint" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Outpaint" + "type": "bool" }, - "default": "None", - "title": "Outpaint", - "description": "A quick option for outpainting an input image. Mask will be ignored." + "default": true, + "title": "Enhance Nonface Region", + "description": "Enhance non-face region" }, { - "name": "output_format", + "name": "enable_canny_controlnet", "type": { - "type": "enum", - "values": [ - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Output_format" + "type": "bool" }, - "default": "jpg", - "title": "Output Format", - "description": "Format of the output images." + "default": false, + "title": "Enable Canny Controlnet", + "description": "Enable Canny ControlNet, overrides strength if set to false" }, { - "name": "safety_tolerance", + "name": "enable_depth_controlnet", + "type": { + "type": "bool" + }, + "default": false, + "title": "Enable Depth Controlnet", + "description": "Enable Depth ControlNet, overrides strength if set to false" + }, + { + "name": "lcm_num_inference_steps", "type": { "type": "int" }, - "default": 2, - "title": "Safety Tolerance", - "description": "Safety tolerance, 1 is most strict and 6 is most permissive", + "default": 5, + "title": "Lcm Num Inference Steps", + "description": "Only used when `enable_lcm` is set to True, Number of denoising steps when using LCM", "min": 1.0, - "max": 6.0 + "max": 10.0 }, { - "name": "prompt_upsampling", + "name": "face_detection_input_width", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Prompt Upsampling", - "description": "Automatically modify the prompt for more creative generation" + "default": 640, + "title": "Face Detection Input Width", + "description": "Width of the input image for face detection", + "min": 640.0, + "max": 4096.0 + }, + { + "name": "face_detection_input_height", + "type": { + "type": "int" + }, + "default": 640, + "title": "Face Detection Input Height", + "description": "Height of the input image for face detection", + "min": 640.0, + "max": 4096.0 + }, + { + "name": "controlnet_conditioning_scale", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Controlnet Conditioning Scale", + "description": "Scale for IdentityNet strength (for fidelity)", + "min": 0.0, + "max": 1.5 } ], "outputs": [ @@ -5504,121 +5183,130 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/13571f4b-d677-404f-bff0-ad44da9d5fa0/https___replicate.deli_llwvezd.jpg", - "created_at": "2024-11-20T20:56:37.431006Z", - "description": "Professional inpainting and outpainting model with state-of-the-art performance. Edit or extend images with natural, seamless results.", - "github_url": null, - "license_url": "https://replicate.com/black-forest-labs/flux-fill-pro#license", - "name": "flux-fill-pro", - "owner": "black-forest-labs", - "is_official": true, - "paper_url": null, - "run_count": 2903217, - "url": "https://replicate.com/black-forest-labs/flux-fill-pro", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3bb0b275-5996-4382-b73f-5bccfbddde92/instantidcover.jpg", + "created_at": "2024-01-22T21:00:49.120905Z", + "description": "Make realistic images of real people instantly", + "github_url": "https://github.com/zsxkib/InstantID", + "license_url": "https://github.com/zsxkib/InstantID/blob/main/LICENSE", + "name": "instant-id", + "owner": "zsxkib", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2401.07519", + "run_count": 963930, + "url": "https://replicate.com/zsxkib/instant-id", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mask", "seed", - "image" + "image", + "prompt" ] }, { - "title": "Flux Kontext Pro", - "description": "A state-of-the-art text-based image editing model that delivers high-quality outputs with excellent prompt following and consistent results for transforming images through natural language", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Kontext_Pro", + "title": "Instant ID Artistic", + "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Dreamshaper-XL as the base model to encourage artistic generations", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.Instant_ID_Artistic", "properties": [ { - "name": "seed", + "name": "image", "type": { - "type": "int", - "optional": true + "type": "image" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image" }, { - "name": "prompt", + "name": "width", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, + "default": 640, + "title": "Width", + "description": "Width of output image", + "min": 512.0, + "max": 2048.0 + }, + { + "name": "height", + "type": { + "type": "int" + }, + "default": 640, + "title": "Height", + "description": "Height of output image", + "min": 512.0, + "max": 2048.0 + }, + { + "name": "prompt", + "type": { + "type": "str" + }, + "default": "analog film photo of a man. faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage, masterpiece, best quality", "title": "Prompt", - "description": "Text description of what you want to generate, or the instruction on how to edit the given image." + "description": "Input prompt" }, { - "name": "input_image", + "name": "guidance_scale", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Input Image", - "description": "Image to use as reference. Must be jpeg, png, gif, or webp." + "default": 5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 50.0 }, { - "name": "aspect_ratio", + "name": "negative_prompt", "type": { - "type": "enum", - "values": [ - "match_input_image", - "1:1", - "16:9", - "9:16", - "4:3", - "3:4", - "3:2", - "2:3", - "4:5", - "5:4", - "21:9", - "9:21", - "2:1", - "1:2" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Aspect_ratio" + "type": "str" }, - "default": "match_input_image", - "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image. Use 'match_input_image' to match the aspect ratio of the input image." + "default": "", + "title": "Negative Prompt", + "description": "Input Negative Prompt" }, { - "name": "output_format", + "name": "ip_adapter_scale", "type": { - "type": "enum", - "values": [ - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Output_format" + "type": "float" }, - "default": "png", - "title": "Output Format", - "description": "Output format for the generated image" + "default": 0.8, + "title": "Ip Adapter Scale", + "description": "Scale for IP adapter", + "min": 0.0, + "max": 1.0 }, { - "name": "safety_tolerance", + "name": "num_inference_steps", "type": { "type": "int" }, - "default": 2, - "title": "Safety Tolerance", - "description": "Safety tolerance, 0 is most strict and 6 is most permissive. 2 is currently the maximum allowed when input images are used.", - "min": 0.0, - "max": 6.0 + "default": 30, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 }, { - "name": "prompt_upsampling", + "name": "controlnet_conditioning_scale", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Prompt Upsampling", - "description": "Automatic prompt improvement" + "default": 0.8, + "title": "Controlnet Conditioning Scale", + "description": "Scale for ControlNet conditioning", + "min": 0.0, + "max": 1.0 } ], "outputs": [ @@ -5630,57 +5318,32 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e74eecd6-daf1-4050-9f04-36313bd6f007/two-people-cropped.webp", - "created_at": "2025-05-27T08:26:25.135215Z", - "description": "A state-of-the-art text-based image editing model that delivers high-quality outputs with excellent prompt following and consistent results for transforming images through natural language", - "github_url": null, - "license_url": null, - "name": "flux-kontext-pro", - "owner": "black-forest-labs", - "is_official": true, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/87b24249-b2c1-43f3-b3cf-a5005f23b21c/Screenshot_2024-01-24_at_15.24.13.png", + "created_at": "2024-01-24T04:34:52.345779Z", + "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Dreamshaper-XL as the base model to encourage artistic generations", + "github_url": "https://github.com/GrandlineAI/InstantID", + "license_url": "https://github.com/InstantID/InstantID/blob/main/LICENSE", + "name": "instant-id-artistic", + "owner": "grandlineai", + "is_official": false, "paper_url": null, - "run_count": 22556785, - "url": "https://replicate.com/black-forest-labs/flux-kontext-pro", + "run_count": 11939, + "url": "https://replicate.com/grandlineai/instant-id-artistic", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs" + "weights_url": null }, "basic_fields": [ - "seed", - "prompt", - "input_image" + "image", + "width", + "height" ] }, { - "title": "Flux Mona Lisa", - "description": "Flux lora, use the term \"MNALSA\" to trigger generation", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Mona_Lisa", + "title": "Instant ID Photorealistic", + "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Juggernaut-XL v8 as the base model to encourage photorealism", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.Instant_ID_Photorealistic", "properties": [ - { - "name": "mask", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Mask", - "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." - }, - { - "name": "seed", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" - }, { "name": "image", "type": { @@ -5694,213 +5357,263 @@ "metadata": null }, "title": "Image", - "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." - }, - { - "name": "model", - "type": { - "type": "enum", - "values": [ - "dev", - "schnell" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Model" - }, - "default": "dev", - "title": "Model", - "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." + "description": "Input image" }, { "name": "width", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, + "default": 640, "title": "Width", - "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 + "description": "Width of output image", + "min": 512.0, + "max": 2048.0 }, { "name": "height", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, + "default": 640, "title": "Height", - "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", - "min": 256.0, - "max": 1440.0 + "description": "Height of output image", + "min": 512.0, + "max": 2048.0 }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "analog film photo of a man. faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage, masterpiece, best quality", "title": "Prompt", - "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." + "description": "Input prompt" }, { - "name": "go_fast", + "name": "guidance_scale", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" + "default": 5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 50.0 }, { - "name": "extra_lora", + "name": "negative_prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, - "title": "Extra Lora", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + "default": "", + "title": "Negative Prompt", + "description": "Input Negative Prompt" }, { - "name": "lora_scale", + "name": "ip_adapter_scale", "type": { "type": "float" }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 + "default": 0.8, + "title": "Ip Adapter Scale", + "description": "Scale for IP adapter", + "min": 0.0, + "max": 1.0 }, { - "name": "megapixels", + "name": "num_inference_steps", "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Megapixels" + "type": "int" }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" + "default": 30, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 }, { - "name": "num_outputs", + "name": "controlnet_conditioning_scale", "type": { - "type": "int" + "type": "float" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": 0.8, + "title": "Controlnet Conditioning Scale", + "description": "Scale for ControlNet conditioning", + "min": 0.0, + "max": 1.0 + } + ], + "outputs": [ + { + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/0c6bd74f-6129-4323-8125-beb65871a8de/Screenshot_2024-01-24_at_15.24.13.png", + "created_at": "2024-01-24T07:43:55.954510Z", + "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Juggernaut-XL v8 as the base model to encourage photorealism", + "github_url": "https://github.com/GrandlineAI/InstantID", + "license_url": "https://github.com/InstantID/InstantID/blob/main/LICENSE", + "name": "instant-id-photorealistic", + "owner": "grandlineai", + "is_official": false, + "paper_url": null, + "run_count": 43429, + "url": "https://replicate.com/grandlineai/instant-id-photorealistic", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "image", + "width", + "height" + ] + }, + { + "title": "Photo Maker", + "description": "Create photos, paintings and avatars for anyone in any style within seconds.", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.PhotoMaker", + "properties": [ + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Seed. Leave blank to use a random number", + "min": 0.0, + "max": 2147483647.0 }, { - "name": "aspect_ratio", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21", - "custom" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Aspect_ratio" + "type": "str" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" + "default": "A photo of a person img", + "title": "Prompt", + "description": "Prompt. Example: 'a photo of a man/woman img'. The phrase 'img' is the trigger word." }, { - "name": "output_format", + "name": "num_steps", + "type": { + "type": "int" + }, + "default": 20, + "title": "Num Steps", + "description": "Number of sample steps", + "min": 1.0, + "max": 100.0 + }, + { + "name": "style_name", "type": { "type": "enum", "values": [ - "webp", - "jpg", - "png" + "(No style)", + "Cinematic", + "Disney Charactor", + "Digital Art", + "Photographic (Default)", + "Fantasy art", + "Neonpunk", + "Enhance", + "Comic book", + "Lowpoly", + "Line art" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Output_format" + "type_name": "nodetool.nodes.replicate.image.face.PhotoMaker.Style_name" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": "Photographic (Default)", + "title": "Style Name", + "description": "Style template. The style template will add a style-specific prompt and negative prompt to the user's prompt." }, { - "name": "guidance_scale", + "name": "input_image", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 3, - "title": "Guidance Scale", - "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", - "min": 0.0, - "max": 10.0 + "default": null, + "title": "Input Image", + "description": "The input image, for example a photo of your face." }, { - "name": "output_quality", + "name": "num_outputs", "type": { "type": "int" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 + "default": 1, + "title": "Num Outputs", + "description": "Number of output images", + "min": 1.0, + "max": 4.0 }, { - "name": "prompt_strength", + "name": "input_image2", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", - "min": 0.0, - "max": 1.0 + "default": null, + "title": "Input Image2", + "description": "Additional input image (optional)" }, { - "name": "extra_lora_scale", + "name": "input_image3", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 1, - "title": "Extra Lora Scale", - "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 + "default": null, + "title": "Input Image3", + "description": "Additional input image (optional)" }, { - "name": "replicate_weights", + "name": "input_image4", "type": { "type": "str", "optional": true }, "default": null, - "title": "Replicate Weights", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + "title": "Input Image4", + "description": "Additional input image (optional)" }, { - "name": "num_inference_steps", + "name": "guidance_scale", "type": { - "type": "int" + "type": "float" }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", + "default": 5, + "title": "Guidance Scale", + "description": "Guidance scale. A guidance scale of 1 corresponds to doing no classifier free guidance.", "min": 1.0, + "max": 10.0 + }, + { + "name": "negative_prompt", + "type": { + "type": "str" + }, + "default": "nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry", + "title": "Negative Prompt", + "description": "Negative Prompt. The negative prompt should NOT contain the trigger word." + }, + { + "name": "style_strength_ratio", + "type": { + "type": "float" + }, + "default": 20, + "title": "Style Strength Ratio", + "description": "Style strength (%)", + "min": 15.0, "max": 50.0 }, { @@ -5922,31 +5635,31 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/yhqm/apYK6kZFfZUYRyoJ11NzhHY2YXbrjCHajYIiN9EznGR4qVrJA/out-0.webp", - "created_at": "2024-08-26T21:32:24.116430Z", - "description": "Flux lora, use the term \"MNALSA\" to trigger generation", - "github_url": null, - "license_url": null, - "name": "flux-mona-lisa", - "owner": "fofr", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/c10ac3c0-f86a-4249-9f3d-d7723cc93d45/photomaker.jpg", + "created_at": "2024-01-16T15:42:17.882162Z", + "description": "Create photos, paintings and avatars for anyone in any style within seconds.", + "github_url": "https://github.com/datakami-models/PhotoMaker", + "license_url": "https://github.com/TencentARC/PhotoMaker/blob/main/LICENSE", + "name": "photomaker", + "owner": "tencentarc", "is_official": false, - "paper_url": null, - "run_count": 3569, - "url": "https://replicate.com/fofr/flux-mona-lisa", + "paper_url": "https://huggingface.co/papers/2312.04461", + "run_count": 8077107, + "url": "https://replicate.com/tencentarc/photomaker", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mask", "seed", - "image" + "prompt", + "num_steps" ] }, { - "title": "Flux Pro", - "description": "State-of-the-art image generation with top of the line prompt following, visual quality, image detail and output diversity.", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Pro", + "title": "Photo Maker Style", + "description": "Create photos, paintings and avatars for anyone in any style within seconds. (Stylization version)", + "namespace": "replicate.image.face", + "node_type": "replicate.image.face.PhotoMakerStyle", "properties": [ { "name": "seed", @@ -5956,152 +5669,163 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Seed. Leave blank to use a random number", + "min": 0.0, + "max": 2147483647.0 }, { - "name": "steps", + "name": "prompt", "type": { - "type": "int" + "type": "str" }, - "default": 25, - "title": "Steps", - "description": "Number of diffusion steps", - "min": 1.0, - "max": 50.0 + "default": "A photo of a person img", + "title": "Prompt", + "description": "Prompt. Example: 'a photo of a man/woman img'. The phrase 'img' is the trigger word." }, { - "name": "width", + "name": "num_steps", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Width", - "description": "Width of the generated image in text-to-image mode. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32). Note: Ignored in img2img and inpainting modes.", - "min": 256.0, - "max": 1440.0 + "default": 20, + "title": "Num Steps", + "description": "Number of sample steps", + "min": 1.0, + "max": 100.0 }, { - "name": "height", + "name": "style_name", "type": { - "type": "int", - "optional": true + "type": "enum", + "values": [ + "(No style)", + "Cinematic", + "Disney Charactor", + "Digital Art", + "Photographic (Default)", + "Fantasy art", + "Neonpunk", + "Enhance", + "Comic book", + "Lowpoly", + "Line art" + ], + "type_name": "nodetool.nodes.replicate.image.face.PhotoMakerStyle.Style_name" }, - "default": null, - "title": "Height", - "description": "Height of the generated image in text-to-image mode. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32). Note: Ignored in img2img and inpainting modes.", - "min": 256.0, - "max": 1440.0 + "default": "(No style)", + "title": "Style Name", + "description": "Style template. The style template will add a style-specific prompt and negative prompt to the user's prompt." }, { - "name": "prompt", + "name": "input_image", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Input Image", + "description": "The input image, for example a photo of your face." }, { - "name": "guidance", + "name": "num_outputs", "type": { - "type": "float" + "type": "int" }, - "default": 3, - "title": "Guidance", - "description": "Controls the balance between adherence to the text prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", - "min": 2.0, - "max": 5.0 + "default": 1, + "title": "Num Outputs", + "description": "Number of output images", + "min": 1.0, + "max": 4.0 }, { - "name": "interval", + "name": "input_image2", "type": { - "type": "float" + "type": "image" }, - "default": 2, - "title": "Interval", - "description": "Interval is a setting that increases the variance in possible outputs letting the model be a tad more dynamic in what outputs it may produce in terms of composition, color, detail, and prompt interpretation. Setting this value low will ensure strong prompt following with more consistent outputs, setting it higher will produce more dynamic or varied outputs.", - "min": 1.0, - "max": 4.0 + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Input Image2", + "description": "Additional input image (optional)" }, { - "name": "aspect_ratio", + "name": "input_image3", "type": { - "type": "enum", - "values": [ - "custom", - "1:1", - "16:9", - "3:2", - "2:3", - "4:5", - "5:4", - "9:16", - "3:4", - "4:3" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Pro.Aspect_ratio" + "type": "image" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Input Image3", + "description": "Additional input image (optional)" }, { - "name": "image_prompt", + "name": "input_image4", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Image Prompt", - "description": "Image to use with Flux Redux. This is used together with the text prompt to guide the generation towards the composition of the image_prompt. Must be jpeg, png, gif, or webp." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Input Image4", + "description": "Additional input image (optional)" }, { - "name": "output_format", + "name": "guidance_scale", "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Pro.Output_format" + "type": "float" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images." + "default": 5, + "title": "Guidance Scale", + "description": "Guidance scale. A guidance scale of 1 corresponds to doing no classifier free guidance.", + "min": 1.0, + "max": 10.0 }, { - "name": "output_quality", + "name": "negative_prompt", "type": { - "type": "int" + "type": "str" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 + "default": "nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry", + "title": "Negative Prompt", + "description": "Negative Prompt. The negative prompt should NOT contain the trigger word." }, { - "name": "safety_tolerance", + "name": "style_strength_ratio", "type": { - "type": "int" + "type": "float" }, - "default": 2, - "title": "Safety Tolerance", - "description": "Safety tolerance, 1 is most strict and 6 is most permissive", - "min": 1.0, - "max": 6.0 + "default": 20, + "title": "Style Strength Ratio", + "description": "Style strength (%)", + "min": 15.0, + "max": 50.0 }, { - "name": "prompt_upsampling", + "name": "disable_safety_checker", "type": { "type": "bool" }, "default": false, - "title": "Prompt Upsampling", - "description": "Automatically modify the prompt for more creative generation" + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -6113,80 +5837,81 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/a36275e2-34d4-4b3d-83cd-f9aaf73c9386/https___replicate.delive_o40qpZl.webp", - "created_at": "2024-08-01T09:32:10.863297Z", - "description": "State-of-the-art image generation with top of the line prompt following, visual quality, image detail and output diversity.", - "github_url": null, - "license_url": "https://replicate.com/black-forest-labs/flux-pro#license", - "name": "flux-pro", - "owner": "black-forest-labs", - "is_official": true, - "paper_url": null, - "run_count": 12953670, - "url": "https://replicate.com/black-forest-labs/flux-pro", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/8e85a287-826f-4c21-9079-22eac106dd6b/output.0.png", + "created_at": "2024-01-18T14:28:51.763369Z", + "description": "Create photos, paintings and avatars for anyone in any style within seconds. (Stylization version)", + "github_url": "https://github.com/TencentARC/PhotoMaker", + "license_url": "https://github.com/TencentARC/PhotoMaker/blob/main/LICENSE", + "name": "photomaker-style", + "owner": "tencentarc", + "is_official": false, + "paper_url": "https://huggingface.co/papers/2312.04461", + "run_count": 1482980, + "url": "https://replicate.com/tencentarc/photomaker-style", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", - "steps", - "width" + "prompt", + "num_steps" ] }, { - "title": "Flux Redux Dev", - "description": "Open-weight image variation model. Create new versions while preserving key elements of your original.", + "title": "Ad Inpaint", + "description": "Product advertising image generator", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Redux_Dev", + "node_type": "replicate.image.generate.AdInpaint", "properties": [ { - "name": "seed", + "name": "pixel", "type": { - "type": "int", - "optional": true + "type": "enum", + "values": [ + "512 * 512", + "768 * 768", + "1024 * 1024" + ], + "type_name": "nodetool.nodes.replicate.image.generate.AdInpaint.Pixel" }, - "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "default": "512 * 512", + "title": "Pixel", + "description": "image total pixel" }, { - "name": "guidance", + "name": "scale", "type": { - "type": "float" + "type": "int" }, "default": 3, - "title": "Guidance", - "description": "Guidance for generated image", + "title": "Scale", + "description": "Factor to scale image by (maximum: 4)", "min": 0.0, - "max": 10.0 + "max": 4.0 }, { - "name": "megapixels", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Megapixels" + "type": "str", + "optional": true }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" + "default": null, + "title": "Prompt", + "description": "Product name or prompt" }, { - "name": "num_outputs", + "name": "image_num", "type": { "type": "int" }, "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, + "title": "Image Num", + "description": "Number of image to generate", + "min": 0.0, "max": 4.0 }, { - "name": "redux_image", + "name": "image_path", "type": { "type": "image" }, @@ -6197,77 +5922,62 @@ "data": null, "metadata": null }, - "title": "Redux Image", - "description": "Input image to condition your output on. This replaces prompt for FLUX.1 Redux models" + "title": "Image Path", + "description": "input image" }, { - "name": "aspect_ratio", + "name": "manual_seed", "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Aspect_ratio" + "type": "int" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" + "default": -1, + "title": "Manual Seed", + "description": "Manual Seed" }, { - "name": "output_format", + "name": "product_size", "type": { "type": "enum", "values": [ - "webp", - "jpg", - "png" + "Original", + "0.6 * width", + "0.5 * width", + "0.4 * width", + "0.3 * width", + "0.2 * width" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.AdInpaint.Product_size" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": "Original", + "title": "Product Size", + "description": "Max product size" }, { - "name": "output_quality", + "name": "guidance_scale", "type": { - "type": "int" + "type": "float" }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 + "default": 7.5, + "title": "Guidance Scale", + "description": "Guidance Scale" }, { - "name": "num_inference_steps", + "name": "negative_prompt", "type": { - "type": "int" + "type": "str" }, - "default": 28, - "title": "Num Inference Steps", - "description": "Number of denoising steps. Recommended range is 28-50", - "min": 1.0, - "max": 50.0 + "default": "low quality, out of frame, illustration, 3d, sepia, painting, cartoons, sketch, watermark, text, Logo, advertisement", + "title": "Negative Prompt", + "description": "Anything you don't want in the photo" }, { - "name": "disable_safety_checker", + "name": "num_inference_steps", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "default": 20, + "title": "Num Inference Steps", + "description": "Inference Steps" } ], "outputs": [ @@ -6279,31 +5989,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/daff59ba-540d-4111-a969-9119ee814f26/redux-cover.jpg", - "created_at": "2024-11-20T22:29:45.623102Z", - "description": "Open-weight image variation model. Create new versions while preserving key elements of your original.", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e21a425b-4cdb-445b-8b2f-5be1b26fb78d/ad_inpaint_2.jpg", + "created_at": "2023-04-03T11:25:28.290524Z", + "description": "Product advertising image generator", "github_url": null, - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", - "name": "flux-redux-dev", - "owner": "black-forest-labs", - "is_official": true, + "license_url": null, + "name": "ad-inpaint", + "owner": "logerzhu", + "is_official": false, "paper_url": null, - "run_count": 251140, - "url": "https://replicate.com/black-forest-labs/flux-redux-dev", + "run_count": 626159, + "url": "https://replicate.com/logerzhu/ad-inpaint", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev" + "weights_url": null }, "basic_fields": [ - "seed", - "guidance", - "megapixels" + "pixel", + "scale", + "prompt" ] }, { - "title": "Flux Redux Schnell", - "description": "Fast, efficient image variation model for rapid iteration and experimentation.", + "title": "Consistent Character", + "description": "Create images of a given character in different poses", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Redux_Schnell", + "node_type": "replicate.image.generate.ConsistentCharacter", "properties": [ { "name": "seed", @@ -6313,35 +6023,19 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation" - }, - { - "name": "megapixels", - "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Megapixels" - }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" + "description": "Set a seed for reproducibility. Random by default." }, { - "name": "num_outputs", + "name": "prompt", "type": { - "type": "int" + "type": "str" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": "A headshot photo", + "title": "Prompt", + "description": "Describe the subject. Include clothes and hairstyle for more consistency." }, { - "name": "redux_image", + "name": "subject", "type": { "type": "image" }, @@ -6352,31 +6046,8 @@ "data": null, "metadata": null }, - "title": "Redux Image", - "description": "Input image to condition your output on. This replaces prompt for FLUX.1 Redux models" - }, - { - "name": "aspect_ratio", - "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Aspect_ratio" - }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" + "title": "Subject", + "description": "An image of a person. Best images are square close ups of a face, but they do not have to be." }, { "name": "output_format", @@ -6387,7 +6058,7 @@ "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.ConsistentCharacter.Output_format" }, "default": "webp", "title": "Output Format", @@ -6400,20 +6071,38 @@ }, "default": 80, "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", "min": 0.0, "max": 100.0 }, { - "name": "num_inference_steps", + "name": "negative_prompt", + "type": { + "type": "str" + }, + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want to see in your image" + }, + { + "name": "randomise_poses", + "type": { + "type": "bool" + }, + "default": true, + "title": "Randomise Poses", + "description": "Randomise the poses used." + }, + { + "name": "number_of_outputs", "type": { "type": "int" }, - "default": 4, - "title": "Num Inference Steps", - "description": "Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", + "default": 3, + "title": "Number Of Outputs", + "description": "The number of images to generate.", "min": 1.0, - "max": 4.0 + "max": 20.0 }, { "name": "disable_safety_checker", @@ -6423,6 +6112,17 @@ "default": false, "title": "Disable Safety Checker", "description": "Disable safety checker for generated images." + }, + { + "name": "number_of_images_per_pose", + "type": { + "type": "int" + }, + "default": 1, + "title": "Number Of Images Per Pose", + "description": "The number of images to generate for each pose.", + "min": 1.0, + "max": 4.0 } ], "outputs": [ @@ -6434,32 +6134,41 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/828d2d38-465e-4a65-a979-1f661000e978/https___replicate.deliver_018es9x.jpg", - "created_at": "2024-11-20T22:30:41.021241Z", - "description": "Fast, efficient image variation model for rapid iteration and experimentation.", - "github_url": null, - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-schnell", - "name": "flux-redux-schnell", - "owner": "black-forest-labs", - "is_official": true, + "cover_image_url": "https://replicate.delivery/xezq/TOVBIdLIP6rPLdn4HUtnZHyvHwBAaXzCNUWenllOPD8hBw6JA/ComfyUI_00005_.webp", + "created_at": "2024-05-30T16:48:52.345721Z", + "description": "Create images of a given character in different poses", + "github_url": "https://github.com/fofr/cog-consistent-character", + "license_url": "https://github.com/fofr/cog-consistent-character/blob/main/LICENSE", + "name": "consistent-character", + "owner": "sdxl-based", + "is_official": false, "paper_url": null, - "run_count": 58577, - "url": "https://replicate.com/black-forest-labs/flux-redux-schnell", + "run_count": 1409575, + "url": "https://replicate.com/sdxl-based/consistent-character", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", - "megapixels", - "num_outputs" + "prompt", + "subject" ] }, { - "title": "Flux Schnell", - "description": "The fastest image generation model tailored for local development and personal use", + "title": "Flux 1 1 Pro Ultra", + "description": "FLUX1.1 [pro] in ultra and raw modes. Images are up to 4 megapixels. Use raw mode for realism.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Schnell", + "node_type": "replicate.image.generate.Flux_1_1_Pro_Ultra", "properties": [ + { + "name": "raw", + "type": { + "type": "bool" + }, + "default": false, + "title": "Raw", + "description": "Generate less processed, more natural-looking images" + }, { "name": "seed", "type": { @@ -6478,110 +6187,76 @@ }, "default": null, "title": "Prompt", - "description": "Prompt for generated image" - }, - { - "name": "go_fast", - "type": { - "type": "bool" - }, - "default": true, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." - }, - { - "name": "megapixels", - "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell.Megapixels" - }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" - }, - { - "name": "num_outputs", - "type": { - "type": "int" - }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "description": "Text prompt for image generation" }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "1:1", - "16:9", "21:9", + "16:9", "3:2", - "2:3", - "4:5", + "4:3", "5:4", + "1:1", + "4:5", "3:4", - "4:3", + "2:3", "9:16", "9:21" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", "description": "Aspect ratio for the generated image" }, + { + "name": "image_prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Image Prompt", + "description": "Image to use with Flux Redux. This is used together with the text prompt to guide the generation towards the composition of the image_prompt. Must be jpeg, png, gif, or webp." + }, { "name": "output_format", "type": { "type": "enum", "values": [ - "webp", "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_1_1_Pro_Ultra.Output_format" }, - "default": "webp", + "default": "jpg", "title": "Output Format", - "description": "Format of the output images" - }, - { - "name": "output_quality", - "type": { - "type": "int" - }, - "default": 80, - "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", - "min": 0.0, - "max": 100.0 + "description": "Format of the output images." }, { - "name": "num_inference_steps", + "name": "safety_tolerance", "type": { "type": "int" }, - "default": 4, - "title": "Num Inference Steps", - "description": "Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 6 is most permissive", "min": 1.0, - "max": 4.0 + "max": 6.0 }, { - "name": "disable_safety_checker", + "name": "image_prompt_strength", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "default": 0.1, + "title": "Image Prompt Strength", + "description": "Blend between the prompt and the image prompt.", + "min": 0.0, + "max": 1.0 } ], "outputs": [ @@ -6593,31 +6268,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/67c990ba-bb67-4355-822f-2bd8c42b2f0d/flux-schnell.webp", - "created_at": "2024-07-30T00:32:11.473557Z", - "description": "The fastest image generation model tailored for local development and personal use", - "github_url": "https://github.com/replicate/cog-flux", - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-schnell", - "name": "flux-schnell", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8121c76b-fbff-41d9-834d-c70dea9d2191/flux-ultra-cover.jpg", + "created_at": "2024-11-06T19:13:05.091037Z", + "description": "FLUX1.1 [pro] in ultra and raw modes. Images are up to 4 megapixels. Use raw mode for realism.", + "github_url": null, + "license_url": "https://replicate.com/black-forest-labs/flux-pro#license", + "name": "flux-1.1-pro-ultra", "owner": "black-forest-labs", "is_official": true, - "paper_url": null, - "run_count": 479520052, - "url": "https://replicate.com/black-forest-labs/flux-schnell", + "paper_url": "https://blackforestlabs.ai/flux-1-1-ultra/", + "run_count": 19829925, + "url": "https://replicate.com/black-forest-labs/flux-1.1-pro-ultra", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell" + "weights_url": null }, "basic_fields": [ + "raw", "seed", - "prompt", - "go_fast" + "prompt" ] }, { - "title": "Flux Schnell Lora", - "description": "The fastest image generation model tailored for fine-tuned use", + "title": "Flux 2 Flex", + "description": "Max-quality image generation and editing with support for ten reference images", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Flux_Schnell_Lora", + "node_type": "replicate.image.generate.Flux_2_Flex", "properties": [ { "name": "seed", @@ -6630,92 +6305,109 @@ "description": "Random seed. Set for reproducible generation" }, { - "name": "prompt", + "name": "steps", "type": { - "type": "str", + "type": "int" + }, + "default": 30, + "title": "Steps", + "description": "Number of inference steps", + "min": 1.0, + "max": 50.0 + }, + { + "name": "width", + "type": { + "type": "int", "optional": true }, "default": null, - "title": "Prompt", - "description": "Prompt for generated image" + "title": "Width", + "description": "Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + "min": 256.0, + "max": 2048.0 }, { - "name": "go_fast", + "name": "height", "type": { - "type": "bool" + "type": "int", + "optional": true }, - "default": true, - "title": "Go Fast", - "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." + "default": null, + "title": "Height", + "description": "Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + "min": 256.0, + "max": 2048.0 }, { - "name": "lora_scale", + "name": "prompt", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", - "min": -1.0, - "max": 3.0 + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "megapixels", + "name": "guidance", "type": { - "type": "enum", - "values": [ - "1", - "0.25" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Megapixels" + "type": "float" }, - "default": "1", - "title": "Megapixels", - "description": "Approximate number of megapixels for generated image" + "default": 4.5, + "title": "Guidance", + "description": "Guidance scale for generation. Controls how closely the output follows the prompt", + "min": 1.5, + "max": 10.0 }, { - "name": "num_outputs", + "name": "resolution", "type": { - "type": "int" + "type": "enum", + "values": [ + "match_input_image", + "0.5 MP", + "1 MP", + "2 MP", + "4 MP" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Flex.Resolution" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of outputs to generate", - "min": 1.0, - "max": 4.0 + "default": "1 MP", + "title": "Resolution", + "description": "Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP)." }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ + "match_input_image", + "custom", "1:1", "16:9", - "21:9", "3:2", "2:3", "4:5", "5:4", - "3:4", - "4:3", "9:16", - "9:21" + "3:4", + "4:3" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Flex.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" + "description": "Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio." }, { - "name": "lora_weights", + "name": "input_images", "type": { - "type": "str", - "optional": true + "type": "list" }, - "default": null, - "title": "Lora Weights", - "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + "default": [], + "title": "Input Images", + "description": "List of input images for image-to-image generation. Maximum 10 images. Must be jpeg, png, gif, or webp." }, { "name": "output_format", @@ -6726,11 +6418,11 @@ "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Flex.Output_format" }, "default": "webp", "title": "Output Format", - "description": "Format of the output images" + "description": "Format of the output images." }, { "name": "output_quality", @@ -6744,24 +6436,24 @@ "max": 100.0 }, { - "name": "num_inference_steps", + "name": "safety_tolerance", "type": { "type": "int" }, - "default": 4, - "title": "Num Inference Steps", - "description": "Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 5 is most permissive", "min": 1.0, - "max": 4.0 + "max": 5.0 }, { - "name": "disable_safety_checker", + "name": "prompt_upsampling", "type": { "type": "bool" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "default": true, + "title": "Prompt Upsampling", + "description": "Automatically modify the prompt for more creative generation" } ], "outputs": [ @@ -6773,62 +6465,50 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/98c9bf91-5bc0-4a2d-960f-8c3fcd69f1f3/https___replicate.deliver_a20JvIo.png", - "created_at": "2024-11-11T23:07:50.986160Z", - "description": "The fastest image generation model tailored for fine-tuned use", - "github_url": "https://github.com/replicate/cog-flux", - "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-schnell", - "name": "flux-schnell-lora", + "cover_image_url": "https://replicate.delivery/xezq/DxBvdhGcpX6FLxoUikZhQdbYs87OMEv83563fspgBuXS7a2KA/tmp249z689p.webp", + "created_at": "2025-11-25T10:38:39.577145Z", + "description": "Max-quality image generation and editing with support for ten reference images", + "github_url": null, + "license_url": null, + "name": "flux-2-flex", "owner": "black-forest-labs", "is_official": true, "paper_url": null, - "run_count": 3155100, - "url": "https://replicate.com/black-forest-labs/flux-schnell-lora", + "run_count": 85730, + "url": "https://replicate.com/black-forest-labs/flux-2-flex", "visibility": "public", - "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell" + "weights_url": null }, "basic_fields": [ "seed", - "prompt", - "go_fast" + "steps", + "width" ] }, { - "title": "Hyper Flux 8 Step", - "description": "Hyper FLUX 8-step by ByteDance", + "title": "Flux 2 Klein 4B", + "description": "Very fast image generation and editing model. 4 steps distilled, sub-second inference for production and near real-time applications.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Hyper_Flux_8Step", + "node_type": "replicate.image.generate.Flux_2_Klein_4B", "properties": [ { "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 0, + "default": null, "title": "Seed", "description": "Random seed. Set for reproducible generation" }, { - "name": "width", - "type": { - "type": "int" - }, - "default": 848, - "title": "Width", - "description": "Width of the generated image. Optional, only used when aspect_ratio=custom. Must be a multiple of 16 (if it's not, it will be rounded to nearest multiple of 16)", - "min": 256.0, - "max": 1440.0 - }, - { - "name": "height", + "name": "images", "type": { - "type": "int" + "type": "list" }, - "default": 848, - "title": "Height", - "description": "Height of the generated image. Optional, only used when aspect_ratio=custom. Must be a multiple of 16 (if it's not, it will be rounded to nearest multiple of 16)", - "min": 256.0, - "max": 1440.0 + "default": [], + "title": "Images", + "description": "List of input images for image-to-image generation. Maximum 5 images. Must be jpeg, png, gif, or webp." }, { "name": "prompt", @@ -6838,18 +6518,16 @@ }, "default": null, "title": "Prompt", - "description": "Prompt for generated image" + "description": "Text prompt for image generation." }, { - "name": "num_outputs", + "name": "go_fast", "type": { - "type": "int" + "type": "bool" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of images to output.", - "min": 1.0, - "max": 4.0 + "default": false, + "title": "Go Fast", + "description": "Run faster predictions with additional optimizations." }, { "name": "aspect_ratio", @@ -6858,22 +6536,22 @@ "values": [ "1:1", "16:9", - "21:9", + "9:16", "3:2", "2:3", - "4:5", - "5:4", - "3:4", "4:3", - "9:16", + "3:4", + "5:4", + "4:5", + "21:9", "9:21", - "custom" + "match_input_image" ], - "type_name": "nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image. The size will always be 1 megapixel, i.e. 1024x1024 if aspect ratio is 1:1. To use arbitrary width and height, set aspect ratio to 'custom'." + "description": "Aspect ratio for the generated image. Use 'match_input_image' to match the aspect ratio of the first input image." }, { "name": "output_format", @@ -6884,44 +6562,39 @@ "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_format" }, - "default": "webp", + "default": "jpg", "title": "Output Format", "description": "Format of the output images" }, - { - "name": "guidance_scale", - "type": { - "type": "float" - }, - "default": 3.5, - "title": "Guidance Scale", - "description": "Guidance scale for the diffusion process", - "min": 0.0, - "max": 10.0 - }, { "name": "output_quality", "type": { "type": "int" }, - "default": 80, + "default": 95, "title": "Output Quality", - "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs.", "min": 0.0, "max": 100.0 }, { - "name": "num_inference_steps", + "name": "output_megapixels", "type": { - "type": "int" + "type": "enum", + "values": [ + "0.25", + "0.5", + "1", + "2", + "4" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Klein_4B.Output_megapixels" }, - "default": 8, - "title": "Num Inference Steps", - "description": "Number of inference steps", - "min": 1.0, - "max": 30.0 + "default": "1", + "title": "Output Megapixels", + "description": "Resolution of the output image in megapixels" }, { "name": "disable_safety_checker", @@ -6930,7 +6603,7 @@ }, "default": false, "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)" + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -6942,72 +6615,65 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/yhqm/bKCAFhWFtbafL6Q31fEkfzVUKDUxY3GcdU1KGtR1AfRhcHOOB/out-0.webp", - "created_at": "2024-08-27T19:33:25.004679Z", - "description": "Hyper FLUX 8-step by ByteDance", - "github_url": "https://github.com/lucataco/cog-hyper-flux-8step", - "license_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/LICENSE.md", - "name": "hyper-flux-8step", - "owner": "bytedance", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2404.13686", - "run_count": 16758732, - "url": "https://replicate.com/bytedance/hyper-flux-8step", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e32c60b0-a5e4-4846-b5e9-752df87ed6c5/replicate-klein-cover.jpg", + "created_at": "2026-01-15T11:21:33.057246Z", + "description": "Very fast image generation and editing model. 4 steps distilled, sub-second inference for production and near real-time applications.", + "github_url": "https://github.com/black-forest-labs/flux2", + "license_url": "https://github.com/black-forest-labs/flux2/blob/main/LICENSE.md", + "name": "flux-2-klein-4b", + "owner": "black-forest-labs", + "is_official": true, + "paper_url": null, + "run_count": 13583, + "url": "https://replicate.com/black-forest-labs/flux-2-klein-4b", "visibility": "public", - "weights_url": "https://huggingface.co/ByteDance/Hyper-SD" + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.2-klein-4B" }, "basic_fields": [ "seed", - "width", - "height" + "images", + "prompt" ] }, { - "title": "Ideogram V 2", - "description": "An excellent image model with state of the art inpainting, prompt comprehension and text rendering", + "title": "Flux 2 Max", + "description": "The highest fidelity image model from Black Forest Labs", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Ideogram_V2", + "node_type": "replicate.image.generate.Flux_2_Max", "properties": [ { - "name": "mask", + "name": "seed", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "int", + "optional": true }, - "title": "Mask", - "description": "A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size." + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "seed", + "name": "width", "type": { "type": "int", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Set for reproducible generation", - "max": 2147483647.0 + "title": "Width", + "description": "Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + "min": 256.0, + "max": 2048.0 }, { - "name": "image", + "name": "height", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "int", + "optional": true }, - "title": "Image", - "description": "An image file to use for inpainting. You must also use a mask." + "default": null, + "title": "Height", + "description": "Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + "min": 256.0, + "max": 2048.0 }, { "name": "prompt", @@ -7024,148 +6690,86 @@ "type": { "type": "enum", "values": [ - "None", - "512x1536", - "576x1408", - "576x1472", - "576x1536", - "640x1344", - "640x1408", - "640x1472", - "640x1536", - "704x1152", - "704x1216", - "704x1280", - "704x1344", - "704x1408", - "704x1472", - "736x1312", - "768x1088", - "768x1216", - "768x1280", - "768x1344", - "832x960", - "832x1024", - "832x1088", - "832x1152", - "832x1216", - "832x1248", - "864x1152", - "896x960", - "896x1024", - "896x1088", - "896x1120", - "896x1152", - "960x832", - "960x896", - "960x1024", - "960x1088", - "1024x832", - "1024x896", - "1024x960", - "1024x1024", - "1088x768", - "1088x832", - "1088x896", - "1088x960", - "1120x896", - "1152x704", - "1152x832", - "1152x864", - "1152x896", - "1216x704", - "1216x768", - "1216x832", - "1248x832", - "1280x704", - "1280x768", - "1280x800", - "1312x736", - "1344x640", - "1344x704", - "1344x768", - "1408x576", - "1408x640", - "1408x704", - "1472x576", - "1472x640", - "1472x704", - "1536x512", - "1536x576", - "1536x640" + "match_input_image", + "0.5 MP", + "1 MP", + "2 MP", + "4 MP" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Resolution" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Max.Resolution" }, - "default": "None", + "default": "1 MP", "title": "Resolution", - "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." - }, - { - "name": "style_type", - "type": { - "type": "enum", - "values": [ - "None", - "Auto", - "General", - "Realistic", - "Design", - "Render 3D", - "Anime" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Style_type" - }, - "default": "None", - "title": "Style Type", - "description": "The styles help define the specific aesthetic of the image you want to generate." + "description": "Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP)." }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ + "match_input_image", + "custom", "1:1", "16:9", - "9:16", - "4:3", - "3:4", "3:2", "2:3", - "16:10", - "10:16", - "3:1", - "1:3" + "4:5", + "5:4", + "9:16", + "3:4", + "4:3" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Max.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." + "description": "Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio." }, { - "name": "negative_prompt", + "name": "input_images", "type": { - "type": "str", - "optional": true + "type": "list" }, - "default": null, - "title": "Negative Prompt", - "description": "Things you do not want to see in the generated image." + "default": [], + "title": "Input Images", + "description": "List of input images for image-to-image generation. Maximum 8 images. Must be jpeg, png, gif, or webp." }, { - "name": "magic_prompt_option", + "name": "output_format", "type": { "type": "enum", "values": [ - "Auto", - "On", - "Off" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Magic_prompt_option" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Max.Output_format" }, - "default": "Auto", - "title": "Magic Prompt Option", - "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." + "default": "webp", + "title": "Output Format", + "description": "Format of the output images." + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "safety_tolerance", + "type": { + "type": "int" + }, + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 5 is most permissive", + "min": 1.0, + "max": 5.0 } ], "outputs": [ @@ -7177,31 +6781,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/71c982a3-27f0-42a6-ad6a-769f25097c08/replicate-prediction-s_VROPz1s.png", - "created_at": "2024-10-22T09:26:23.607119Z", - "description": "An excellent image model with state of the art inpainting, prompt comprehension and text rendering", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8147cff6-abe5-4842-9f6d-24fe06c626b9/flux-2-max-cover.jpg", + "created_at": "2025-12-16T14:37:45.724046Z", + "description": "The highest fidelity image model from Black Forest Labs", "github_url": null, - "license_url": "https://about.ideogram.ai/legal/api-tos", - "name": "ideogram-v2", - "owner": "ideogram-ai", + "license_url": null, + "name": "flux-2-max", + "owner": "black-forest-labs", "is_official": true, - "paper_url": "https://ideogram.ai/", - "run_count": 2410715, - "url": "https://replicate.com/ideogram-ai/ideogram-v2", + "paper_url": null, + "run_count": 196830, + "url": "https://replicate.com/black-forest-labs/flux-2-max", "visibility": "public", - "weights_url": "https://ideogram.ai/" + "weights_url": null }, "basic_fields": [ - "mask", "seed", - "image" + "width", + "height" ] }, { - "title": "Ideogram V 2 A", - "description": "Like Ideogram v2, but faster and cheaper", + "title": "Flux 2 Pro", + "description": "High-quality image generation and editing with support for eight reference images", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Ideogram_V2A", + "node_type": "replicate.image.generate.Flux_2_Pro", "properties": [ { "name": "seed", @@ -7211,8 +6815,31 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation", - "max": 2147483647.0 + "description": "Random seed. Set for reproducible generation" + }, + { + "name": "width", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Width", + "description": "Width of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + "min": 256.0, + "max": 2048.0 + }, + { + "name": "height", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Height", + "description": "Height of the generated image. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32).", + "min": 256.0, + "max": 2048.0 }, { "name": "prompt", @@ -7229,138 +6856,86 @@ "type": { "type": "enum", "values": [ - "None", - "512x1536", - "576x1408", - "576x1472", - "576x1536", - "640x1344", - "640x1408", - "640x1472", - "640x1536", - "704x1152", - "704x1216", - "704x1280", - "704x1344", - "704x1408", - "704x1472", - "736x1312", - "768x1088", - "768x1216", - "768x1280", - "768x1344", - "832x960", - "832x1024", - "832x1088", - "832x1152", - "832x1216", - "832x1248", - "864x1152", - "896x960", - "896x1024", - "896x1088", - "896x1120", - "896x1152", - "960x832", - "960x896", - "960x1024", - "960x1088", - "1024x832", - "1024x896", - "1024x960", - "1024x1024", - "1088x768", - "1088x832", - "1088x896", - "1088x960", - "1120x896", - "1152x704", - "1152x832", - "1152x864", - "1152x896", - "1216x704", - "1216x768", - "1216x832", - "1248x832", - "1280x704", - "1280x768", - "1280x800", - "1312x736", - "1344x640", - "1344x704", - "1344x768", - "1408x576", - "1408x640", - "1408x704", - "1472x576", - "1472x640", - "1472x704", - "1536x512", - "1536x576", - "1536x640" + "match_input_image", + "0.5 MP", + "1 MP", + "2 MP", + "4 MP" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Resolution" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Pro.Resolution" }, - "default": "None", + "default": "1 MP", "title": "Resolution", - "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." - }, - { - "name": "style_type", - "type": { - "type": "enum", - "values": [ - "None", - "Auto", - "General", - "Realistic", - "Design", - "Render 3D", - "Anime" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Style_type" - }, - "default": "None", - "title": "Style Type", - "description": "The styles help define the specific aesthetic of the image you want to generate." + "description": "Resolution in megapixels. Up to 4 MP is possible, but 2 MP or below is recommended. The maximum image size is 2048x2048, which means that high-resolution images may not respect the resolution if aspect ratio is not 1:1.\n\nResolution is not used when aspect_ratio is 'custom'. When aspect_ratio is 'match_input_image', use 'match_input_image' to match the input image's resolution (clamped to 0.5-4 MP)." }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ + "match_input_image", + "custom", "1:1", "16:9", - "9:16", - "4:3", - "3:4", "3:2", "2:3", - "16:10", - "10:16", - "3:1", - "1:3" + "4:5", + "5:4", + "9:16", + "3:4", + "4:3" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Pro.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." + "description": "Aspect ratio for the generated image. Use 'match_input_image' to match the first input image's aspect ratio." }, { - "name": "magic_prompt_option", + "name": "input_images", + "type": { + "type": "list" + }, + "default": [], + "title": "Input Images", + "description": "List of input images for image-to-image generation. Maximum 8 images. Must be jpeg, png, gif, or webp." + }, + { + "name": "output_format", "type": { "type": "enum", "values": [ - "Auto", - "On", - "Off" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Magic_prompt_option" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_2_Pro.Output_format" }, - "default": "Auto", - "title": "Magic Prompt Option", - "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." + "default": "webp", + "title": "Output Format", + "description": "Format of the output images." + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "safety_tolerance", + "type": { + "type": "int" + }, + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 5 is most permissive", + "min": 1.0, + "max": 5.0 } ], "outputs": [ @@ -7372,31 +6947,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/6e45e974-f381-435a-b9dd-23f3e6801c19/replicate-prediction-1yv65m0q.webp", - "created_at": "2025-02-27T11:03:37.256216Z", - "description": "Like Ideogram v2, but faster and cheaper", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/5a8b527e-f298-45db-b51a-4e1cc7d5f1eb/flux-2-pro-sm.jpg", + "created_at": "2025-11-14T22:48:19.258717Z", + "description": "High-quality image generation and editing with support for eight reference images", "github_url": null, - "license_url": "https://about.ideogram.ai/legal/api-tos", - "name": "ideogram-v2a", - "owner": "ideogram-ai", - "is_official": true, - "paper_url": "https://ideogram.ai/", - "run_count": 1518198, - "url": "https://replicate.com/ideogram-ai/ideogram-v2a", + "license_url": null, + "name": "flux-2-pro", + "owner": "black-forest-labs", + "is_official": true, + "paper_url": null, + "run_count": 1470916, + "url": "https://replicate.com/black-forest-labs/flux-2-pro", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", - "prompt", - "resolution" + "width", + "height" ] }, { - "title": "Ideogram V 2 Turbo", - "description": "A fast image model with state of the art inpainting, prompt comprehension and text rendering.", + "title": "Flux 360", + "description": "Generate 360 panorama images.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Ideogram_V2_Turbo", + "node_type": "replicate.image.generate.Flux_360", "properties": [ { "name": "mask", @@ -7411,7 +6986,7 @@ "metadata": null }, "title": "Mask", - "description": "A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size." + "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." }, { "name": "seed", @@ -7421,8 +6996,7 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation", - "max": 2147483647.0 + "description": "Random seed. Set for reproducible generation" }, { "name": "image", @@ -7437,7 +7011,45 @@ "metadata": null }, "title": "Image", - "description": "An image file to use for inpainting. You must also use a mask." + "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + }, + { + "name": "model", + "type": { + "type": "enum", + "values": [ + "dev", + "schnell" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Model" + }, + "default": "dev", + "title": "Model", + "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." + }, + { + "name": "width", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Width", + "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 + }, + { + "name": "height", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Height", + "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 }, { "name": "prompt", @@ -7447,107 +7059,62 @@ }, "default": null, "title": "Prompt", - "description": "Text prompt for image generation" + "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." }, { - "name": "resolution", + "name": "go_fast", "type": { - "type": "enum", - "values": [ - "None", - "512x1536", - "576x1408", - "576x1472", - "576x1536", - "640x1344", - "640x1408", - "640x1472", - "640x1536", - "704x1152", - "704x1216", - "704x1280", - "704x1344", - "704x1408", - "704x1472", - "736x1312", - "768x1088", - "768x1216", - "768x1280", - "768x1344", - "832x960", - "832x1024", - "832x1088", - "832x1152", - "832x1216", - "832x1248", - "864x1152", - "896x960", - "896x1024", - "896x1088", - "896x1120", - "896x1152", - "960x832", - "960x896", - "960x1024", - "960x1088", - "1024x832", - "1024x896", - "1024x960", - "1024x1024", - "1088x768", - "1088x832", - "1088x896", - "1088x960", - "1120x896", - "1152x704", - "1152x832", - "1152x864", - "1152x896", - "1216x704", - "1216x768", - "1216x832", - "1248x832", - "1280x704", - "1280x768", - "1280x800", - "1312x736", - "1344x640", - "1344x704", - "1344x768", - "1408x576", - "1408x640", - "1408x704", - "1472x576", - "1472x640", - "1472x704", - "1536x512", - "1536x576", - "1536x640" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Resolution" + "type": "bool" }, - "default": "None", - "title": "Resolution", - "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." + "default": false, + "title": "Go Fast", + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" }, { - "name": "style_type", + "name": "extra_lora", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Extra Lora", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + }, + { + "name": "lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "megapixels", "type": { "type": "enum", "values": [ - "None", - "Auto", - "General", - "Realistic", - "Design", - "Render 3D", - "Anime" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Style_type" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Megapixels" }, - "default": "None", - "title": "Style Type", - "description": "The styles help define the specific aesthetic of the image you want to generate." + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" + }, + { + "name": "num_outputs", + "type": { + "type": "int" + }, + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { "name": "aspect_ratio", @@ -7556,70 +7123,135 @@ "values": [ "1:1", "16:9", - "9:16", - "4:3", - "3:4", + "21:9", "3:2", "2:3", - "16:10", - "10:16", - "3:1", - "1:3" + "4:5", + "5:4", + "3:4", + "4:3", + "9:16", + "9:21", + "custom" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." - }, - { - "name": "negative_prompt", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Negative Prompt", - "description": "Things you do not want to see in the generated image." + "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" }, { - "name": "magic_prompt_option", + "name": "output_format", "type": { "type": "enum", "values": [ - "Auto", - "On", - "Off" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Magic_prompt_option" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_360.Output_format" }, - "default": "Auto", - "title": "Magic Prompt Option", - "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." - } - ], - "outputs": [ + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, { + "name": "guidance_scale", "type": { - "type": "image" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8b1df940-d741-4446-beb2-0d72c66abb91/replicate-prediction-f_iX48w8f.png", - "created_at": "2024-10-22T09:29:41.547244Z", - "description": "A fast image model with state of the art inpainting, prompt comprehension and text rendering.", - "github_url": null, - "license_url": "https://about.ideogram.ai/legal/api-tos", - "name": "ideogram-v2-turbo", - "owner": "ideogram-ai", - "is_official": true, - "paper_url": "https://ideogram.ai/", - "run_count": 2526126, - "url": "https://replicate.com/ideogram-ai/ideogram-v2-turbo", + "default": 3, + "title": "Guidance Scale", + "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", + "min": 0.0, + "max": 10.0 + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "extra_lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Extra Lora Scale", + "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "replicate_weights", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Replicate Weights", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 28, + "title": "Num Inference Steps", + "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", + "min": 1.0, + "max": 50.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." + } + ], + "outputs": [ + { + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3731b4ae-b13e-44e8-a12e-6d02627cbd23/forest.png", + "created_at": "2024-08-26T15:51:12.459480Z", + "description": "Generate 360 panorama images.", + "github_url": "https://github.com/igorriti/pi", + "license_url": null, + "name": "flux-360", + "owner": "igorriti", + "is_official": false, + "paper_url": null, + "run_count": 19605, + "url": "https://replicate.com/igorriti/flux-360", "visibility": "public", - "weights_url": "https://ideogram.ai/" + "weights_url": "https://huggingface.co/igorriti/flux-360" }, "basic_fields": [ "mask", @@ -7628,10 +7260,10 @@ ] }, { - "title": "Ideogram V 3 Turbo", - "description": "Turbo is the fastest and cheapest Ideogram v3. v3 creates images with stunning realism, creative designs, and consistent styles", + "title": "Flux Black Light", + "description": "A flux lora fine-tuned on black light images", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Ideogram_V3_Turbo", + "node_type": "replicate.image.generate.Flux_Black_Light", "properties": [ { "name": "mask", @@ -7646,7 +7278,7 @@ "metadata": null }, "title": "Mask", - "description": "A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size." + "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." }, { "name": "seed", @@ -7656,8 +7288,7 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Set for reproducible generation", - "max": 2147483647.0 + "description": "Random seed. Set for reproducible generation" }, { "name": "image", @@ -7672,7 +7303,45 @@ "metadata": null }, "title": "Image", - "description": "An image file to use for inpainting. You must also use a mask." + "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + }, + { + "name": "model", + "type": { + "type": "enum", + "values": [ + "dev", + "schnell" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Model" + }, + "default": "dev", + "title": "Model", + "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." + }, + { + "name": "width", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Width", + "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 + }, + { + "name": "height", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Height", + "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 }, { "name": "prompt", @@ -7682,233 +7351,175 @@ }, "default": null, "title": "Prompt", - "description": "Text prompt for image generation" + "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." }, { - "name": "resolution", + "name": "go_fast", "type": { - "type": "enum", - "values": [ - "None", - "512x1536", - "576x1408", - "576x1472", - "576x1536", - "640x1344", - "640x1408", - "640x1472", - "640x1536", - "704x1152", - "704x1216", - "704x1280", - "704x1344", - "704x1408", - "704x1472", - "736x1312", - "768x1088", - "768x1216", - "768x1280", - "768x1344", - "800x1280", - "832x960", - "832x1024", - "832x1088", - "832x1152", - "832x1216", - "832x1248", - "864x1152", - "896x960", - "896x1024", - "896x1088", - "896x1120", - "896x1152", - "960x832", - "960x896", - "960x1024", - "960x1088", - "1024x832", - "1024x896", - "1024x960", - "1024x1024", - "1088x768", - "1088x832", - "1088x896", - "1088x960", - "1120x896", - "1152x704", - "1152x832", - "1152x864", - "1152x896", - "1216x704", - "1216x768", - "1216x832", - "1248x832", - "1280x704", - "1280x768", - "1280x800", - "1312x736", - "1344x640", - "1344x704", - "1344x768", - "1408x576", - "1408x640", - "1408x704", - "1472x576", - "1472x640", - "1472x704", - "1536x512", - "1536x576", - "1536x640" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Resolution" + "type": "bool" }, - "default": "None", - "title": "Resolution", - "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." + "default": false, + "title": "Go Fast", + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" }, { - "name": "style_type", + "name": "extra_lora", "type": { - "type": "enum", - "values": [ - "None", - "Auto", - "General", - "Realistic", - "Design" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_type" + "type": "str", + "optional": true }, - "default": "None", - "title": "Style Type", - "description": "The styles help define the specific aesthetic of the image you want to generate." + "default": null, + "title": "Extra Lora", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" }, { - "name": "aspect_ratio", + "name": "lora_scale", "type": { - "type": "enum", - "values": [ - "1:3", - "3:1", - "1:2", - "2:1", - "9:16", + "type": "float" + }, + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "megapixels", + "type": { + "type": "enum", + "values": [ + "1", + "0.25" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Megapixels" + }, + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" + }, + { + "name": "num_outputs", + "type": { + "type": "int" + }, + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 + }, + { + "name": "aspect_ratio", + "type": { + "type": "enum", + "values": [ + "1:1", "16:9", - "10:16", - "16:10", - "2:3", + "21:9", "3:2", - "3:4", - "4:3", + "2:3", "4:5", "5:4", - "1:1" + "3:4", + "4:3", + "9:16", + "9:21", + "custom" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." + "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" }, { - "name": "style_preset", + "name": "output_format", "type": { "type": "enum", "values": [ - "None", - "80s Illustration", - "90s Nostalgia", - "Abstract Organic", - "Analog Nostalgia", - "Art Brut", - "Art Deco", - "Art Poster", - "Aura", - "Avant Garde", - "Bauhaus", - "Blueprint", - "Blurry Motion", - "Bright Art", - "C4D Cartoon", - "Children's Book", - "Collage", - "Coloring Book I", - "Coloring Book II", - "Cubism", - "Dark Aura", - "Doodle", - "Double Exposure", - "Dramatic Cinema", - "Editorial", - "Emotional Minimal", - "Ethereal Party", - "Expired Film", - "Flat Art", - "Flat Vector", - "Forest Reverie", - "Geo Minimalist", - "Glass Prism", - "Golden Hour", - "Graffiti I", - "Graffiti II", - "Halftone Print", - "High Contrast", - "Hippie Era", - "Iconic", - "Japandi Fusion", - "Jazzy", - "Long Exposure", - "Magazine Editorial", - "Minimal Illustration", - "Mixed Media", - "Monochrome", - "Nightlife", - "Oil Painting", - "Old Cartoons", - "Paint Gesture", - "Pop Art", - "Retro Etching", - "Riviera Pop", - "Spotlight 80s", - "Stylized Red", - "Surreal Collage", - "Travel Poster", - "Vintage Geo", - "Vintage Poster", - "Watercolor", - "Weird", - "Woodblock Print" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_preset" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Black_Light.Output_format" }, - "default": "None", - "title": "Style Preset", - "description": "Apply a predefined artistic style to the generated image (V3 models only)." + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "magic_prompt_option", + "name": "guidance_scale", "type": { - "type": "enum", - "values": [ - "Auto", - "On", - "Off" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Magic_prompt_option" + "type": "float" }, - "default": "Auto", - "title": "Magic Prompt Option", - "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." + "default": 3, + "title": "Guidance Scale", + "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", + "min": 0.0, + "max": 10.0 }, { - "name": "style_reference_images", + "name": "output_quality", "type": { - "type": "list", + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "extra_lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Extra Lora Scale", + "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "replicate_weights", + "type": { + "type": "str", "optional": true }, "default": null, - "title": "Style Reference Images", - "description": "A list of images to use as style references." + "title": "Replicate Weights", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 28, + "title": "Num Inference Steps", + "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", + "min": 1.0, + "max": 50.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -7920,17 +7531,17 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b55e9f9e-5f43-4cf8-99c8-c33cc8486f23/tmp0s1h52uw-1.webp", - "created_at": "2025-04-30T13:21:08.936269Z", - "description": "Turbo is the fastest and cheapest Ideogram v3. v3 creates images with stunning realism, creative designs, and consistent styles", + "cover_image_url": "https://replicate.delivery/yhqm/ZehHgBlLml30R64OxKegcYEHlzGgd0rcIrf5ejXaFK5VuPMNB/out-0.webp", + "created_at": "2024-08-15T22:48:12.421764Z", + "description": "A flux lora fine-tuned on black light images", "github_url": null, - "license_url": "https://about.ideogram.ai/legal/api-tos", - "name": "ideogram-v3-turbo", - "owner": "ideogram-ai", - "is_official": true, - "paper_url": "https://about.ideogram.ai/3.0", - "run_count": 1759749, - "url": "https://replicate.com/ideogram-ai/ideogram-v3-turbo", + "license_url": null, + "name": "flux-black-light", + "owner": "fofr", + "is_official": false, + "paper_url": null, + "run_count": 2815652, + "url": "https://replicate.com/fofr/flux-black-light", "visibility": "public", "weights_url": null }, @@ -7941,10 +7552,10 @@ ] }, { - "title": "Illusions", - "description": "Create illusions with img2img and masking support", + "title": "Flux Canny Dev", + "description": "Open-weight edge-guided image generation. Control structure and composition using Canny edge detection.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Illusions", + "node_type": "replicate.image.generate.Flux_Canny_Dev", "properties": [ { "name": "seed", @@ -7953,61 +7564,44 @@ "optional": true }, "default": null, - "title": "Seed" + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "image", + "name": "prompt", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, - "title": "Image", - "description": "Optional img2img" - }, - { - "name": "width", - "type": { - "type": "int" - }, - "default": 768, - "title": "Width" - }, - { - "name": "height", - "type": { - "type": "int" - }, - "default": 768, - "title": "Height" + "default": null, + "title": "Prompt", + "description": "Prompt for generated image" }, { - "name": "prompt", + "name": "guidance", "type": { - "type": "str" + "type": "float" }, - "default": "a painting of a 19th century town", - "title": "Prompt" + "default": 30, + "title": "Guidance", + "description": "Guidance for generated image", + "min": 0.0, + "max": 100.0 }, { - "name": "mask_image", + "name": "megapixels", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + "1", + "0.25", + "match_input" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Megapixels" }, - "title": "Mask Image", - "description": "Optional mask for inpainting" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)" }, { "name": "num_outputs", @@ -8016,7 +7610,9 @@ }, "default": 1, "title": "Num Outputs", - "description": "Number of outputs" + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { "name": "control_image", @@ -8031,85 +7627,53 @@ "metadata": null }, "title": "Control Image", - "description": "Control image" - }, - { - "name": "controlnet_end", - "type": { - "type": "float" - }, - "default": 1.0, - "title": "Controlnet End", - "description": "When controlnet conditioning ends" - }, - { - "name": "guidance_scale", - "type": { - "type": "float" - }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance" - }, - { - "name": "negative_prompt", - "type": { - "type": "str" - }, - "default": "ugly, disfigured, low quality, blurry, nsfw", - "title": "Negative Prompt", - "description": "The negative prompt to guide image generation." - }, - { - "name": "prompt_strength", - "type": { - "type": "float" - }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image" + "description": "Image used to control the generation. The canny edge detection will be automatically generated." }, { - "name": "sizing_strategy", + "name": "output_format", "type": { "type": "enum", "values": [ - "width/height", - "input_image", - "control_image" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Illusions.Sizing_strategy" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Canny_Dev.Output_format" }, - "default": "width/height", - "title": "Sizing Strategy", - "description": "Decide how to resize images \u2013 use width/height, resize based on input image or control image" + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "controlnet_start", + "name": "output_quality", "type": { - "type": "float" + "type": "int" }, - "default": 0.0, - "title": "Controlnet Start", - "description": "When controlnet conditioning starts" + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 40, + "default": 28, "title": "Num Inference Steps", - "description": "Number of diffusion steps" + "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", + "min": 1.0, + "max": 50.0 }, { - "name": "controlnet_conditioning_scale", + "name": "disable_safety_checker", "type": { - "type": "float" + "type": "bool" }, - "default": 0.75, - "title": "Controlnet Conditioning Scale", - "description": "How strong the controlnet conditioning is" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -8121,32 +7685,53 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/iA3MUV1f533LXqi4sHVlAerJhr03uES9OlBHAHrqaeq92ArnA/output-0.png", - "created_at": "2023-11-03T17:24:31.993569Z", - "description": "Create illusions with img2img and masking support", - "github_url": "https://github.com/fofr/cog-illusion", - "license_url": null, - "name": "illusions", - "owner": "fofr", - "is_official": false, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/788cf228-ae38-473a-a992-1e650aab0519/flux-canny-dev.jpg", + "created_at": "2024-11-20T20:49:32.818286Z", + "description": "Open-weight edge-guided image generation. Control structure and composition using Canny edge detection.", + "github_url": null, + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", + "name": "flux-canny-dev", + "owner": "black-forest-labs", + "is_official": true, "paper_url": null, - "run_count": 58091, - "url": "https://replicate.com/fofr/illusions", + "run_count": 194833, + "url": "https://replicate.com/black-forest-labs/flux-canny-dev", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Canny-dev" }, "basic_fields": [ "seed", - "image", - "width" + "prompt", + "guidance" ] }, { - "title": "Imagen 3", - "description": "Google's highest quality text-to-image model, capable of generating images with detail, rich lighting and beauty", + "title": "Flux Canny Pro", + "description": "Professional edge-guided image generation. Control structure and composition using Canny edge detection", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Imagen_3", + "node_type": "replicate.image.generate.Flux_Canny_Pro", "properties": [ + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" + }, + { + "name": "steps", + "type": { + "type": "int" + }, + "default": 50, + "title": "Steps", + "description": "Number of diffusion steps. Higher values yield finer details but increase processing time.", + "min": 15.0, + "max": 50.0 + }, { "name": "prompt", "type": { @@ -8158,21 +7743,30 @@ "description": "Text prompt for image generation" }, { - "name": "aspect_ratio", + "name": "guidance", "type": { - "type": "enum", - "values": [ - "1:1", - "9:16", - "16:9", - "3:4", - "4:3" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Imagen_3.Aspect_ratio" + "type": "float" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image" + "default": 30, + "title": "Guidance", + "description": "Controls the balance between adherence to the text as well as image prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", + "min": 1.0, + "max": 100.0 + }, + { + "name": "control_image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Control Image", + "description": "Image to use as control input. Must be jpeg, png, gif, or webp." }, { "name": "output_format", @@ -8182,26 +7776,31 @@ "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Imagen_3.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Canny_Pro.Output_format" }, "default": "jpg", "title": "Output Format", - "description": "Format of the output image" + "description": "Format of the output images." }, { - "name": "safety_filter_level", + "name": "safety_tolerance", "type": { - "type": "enum", - "values": [ - "block_low_and_above", - "block_medium_and_above", - "block_only_high" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Imagen_3.Safety_filter_level" + "type": "int" }, - "default": "block_only_high", - "title": "Safety Filter Level", - "description": "block_low_and_above is strictest, block_medium_and_above blocks some prompts, block_only_high is most permissive but some prompts will still be blocked" + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 6 is most permissive", + "min": 1.0, + "max": 6.0 + }, + { + "name": "prompt_upsampling", + "type": { + "type": "bool" + }, + "default": false, + "title": "Prompt Upsampling", + "description": "Automatically modify the prompt for more creative generation" } ], "outputs": [ @@ -8213,250 +7812,287 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/6e164365-9cab-422b-bf05-76d127abe3a2/replicate-prediction-_OX51bG7.webp", - "created_at": "2025-02-05T12:56:07.610594Z", - "description": "Google's highest quality text-to-image model, capable of generating images with detail, rich lighting and beauty", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4c07cacc-d206-4587-9357-8e4e81cd761a/https___replicate.deli_lsMxQWe.jpg", + "created_at": "2024-11-21T09:53:08.913764Z", + "description": "Professional edge-guided image generation. Control structure and composition using Canny edge detection", "github_url": null, - "license_url": null, - "name": "imagen-3", - "owner": "google", + "license_url": "https://replicate.com/black-forest-labs/flux-canny-pro#license", + "name": "flux-canny-pro", + "owner": "black-forest-labs", "is_official": true, - "paper_url": "https://deepmind.google/technologies/imagen-3/", - "run_count": 1536755, - "url": "https://replicate.com/google/imagen-3", + "paper_url": null, + "run_count": 406730, + "url": "https://replicate.com/black-forest-labs/flux-canny-pro", "visibility": "public", "weights_url": null }, "basic_fields": [ - "prompt", - "aspect_ratio", - "output_format" + "seed", + "steps", + "prompt" ] }, { - "title": "Imagen 4 Fast", - "description": "Use this fast version of Imagen 4 when speed and cost are more important than quality", + "title": "Flux Cinestill", + "description": "Flux lora, use \"CNSTLL\" to trigger", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Imagen_4_Fast", + "node_type": "replicate.image.generate.Flux_Cinestill", "properties": [ { - "name": "prompt", + "name": "mask", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." }, { - "name": "aspect_ratio", + "name": "seed", "type": { - "type": "enum", - "values": [ - "1:1", - "9:16", - "16:9", - "3:4", - "4:3" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Aspect_ratio" + "type": "int", + "optional": true }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image" + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "output_format", + "name": "image", "type": { - "type": "enum", - "values": [ - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Output_format" + "type": "image" }, - "default": "jpg", - "title": "Output Format", - "description": "Format of the output image" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." }, { - "name": "safety_filter_level", + "name": "model", "type": { "type": "enum", "values": [ - "block_low_and_above", - "block_medium_and_above", - "block_only_high" + "dev", + "schnell" ], - "type_name": "nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Safety_filter_level" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Model" }, - "default": "block_only_high", - "title": "Safety Filter Level", - "description": "block_low_and_above is strictest, block_medium_and_above blocks some prompts, block_only_high is most permissive but some prompts will still be blocked" - } - ], - "outputs": [ + "default": "dev", + "title": "Model", + "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." + }, { + "name": "width", "type": { - "type": "image" + "type": "int", + "optional": true }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/73c5af65-f578-4113-b62c-2a56971cff2f/replicate-prediction-trmpwr78.webp", - "created_at": "2025-06-12T09:24:39.272587Z", - "description": "Use this fast version of Imagen 4 when speed and cost are more important than quality", - "github_url": null, - "license_url": null, - "name": "imagen-4-fast", - "owner": "google", - "is_official": true, - "paper_url": null, - "run_count": 741596, - "url": "https://replicate.com/google/imagen-4-fast", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "prompt", - "aspect_ratio", - "output_format" - ] - }, - { - "title": "Kandinsky", - "description": "multilingual text2image latent diffusion model", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Kandinsky", - "properties": [ + "default": null, + "title": "Width", + "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 + }, { - "name": "seed", + "name": "height", "type": { "type": "int", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "title": "Height", + "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 }, { - "name": "width", + "name": "prompt", "type": { - "type": "enum", - "values": [ - 384, - 512, - 576, - 640, - 704, - 768, - 960, - 1024, - 1152, - 1280, - 1536, - 1792, - 2048 - ], - "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky.Width" + "type": "str", + "optional": true }, - "default": 512, - "title": "Width", - "description": "Width of output image. Lower the setting if hits memory limits." + "default": null, + "title": "Prompt", + "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." }, { - "name": "height", + "name": "go_fast", "type": { - "type": "enum", - "values": [ - 384, - 512, - 576, - 640, - 704, - 768, - 960, - 1024, - 1152, - 1280, - 1536, - 1792, - 2048 - ], - "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky.Height" + "type": "bool" }, - "default": 512, - "title": "Height", - "description": "Height of output image. Lower the setting if hits memory limits." + "default": false, + "title": "Go Fast", + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" }, { - "name": "prompt", + "name": "extra_lora", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "A moss covered astronaut with a black background", - "title": "Prompt", - "description": "Input prompt" + "default": null, + "title": "Extra Lora", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" }, { - "name": "num_outputs", + "name": "lora_scale", "type": { - "type": "int" + "type": "float" }, "default": 1, - "title": "Num Outputs", - "description": "Number of images to output.", - "min": 1.0, - "max": 4.0 + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 }, { - "name": "output_format", + "name": "megapixels", "type": { "type": "enum", "values": [ - "webp", - "jpeg", - "png" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Megapixels" }, - "default": "webp", - "title": "Output Format", - "description": "Output image format" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { - "name": "negative_prompt", + "name": "num_outputs", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Negative Prompt", - "description": "Specify things to not see in the output" + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { - "name": "num_inference_steps", + "name": "aspect_ratio", + "type": { + "type": "enum", + "values": [ + "1:1", + "16:9", + "21:9", + "3:2", + "2:3", + "4:5", + "5:4", + "3:4", + "4:3", + "9:16", + "9:21", + "custom" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Aspect_ratio" + }, + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Cinestill.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "guidance_scale", + "type": { + "type": "float" + }, + "default": 3, + "title": "Guidance Scale", + "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", + "min": 0.0, + "max": 10.0 + }, + { + "name": "output_quality", "type": { "type": "int" }, - "default": 75, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 }, { - "name": "num_inference_steps_prior", + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "extra_lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Extra Lora Scale", + "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "replicate_weights", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Replicate Weights", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + }, + { + "name": "num_inference_steps", "type": { "type": "int" }, - "default": 25, - "title": "Num Inference Steps Prior", - "description": "Number of denoising steps for priors", + "default": 28, + "title": "Num Inference Steps", + "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", "min": 1.0, - "max": 500.0 + "max": 50.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -8468,31 +8104,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/618e68d3-fba3-4fd0-a060-cdd46b2ab7cf/out-0_2.jpg", - "created_at": "2023-07-12T21:53:29.439515Z", - "description": "multilingual text2image latent diffusion model", - "github_url": "https://github.com/chenxwh/Kandinsky-2/tree/v2.2", - "license_url": "https://github.com/ai-forever/Kandinsky-2/blob/main/license", - "name": "kandinsky-2.2", - "owner": "ai-forever", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/2838391b-a106-4d81-b0ff-68aa5a0b9367/cinestill.png", + "created_at": "2024-08-24T10:28:41.876414Z", + "description": "Flux lora, use \"CNSTLL\" to trigger", + "github_url": null, + "license_url": null, + "name": "flux-cinestill", + "owner": "adirik", "is_official": false, "paper_url": null, - "run_count": 10025570, - "url": "https://replicate.com/ai-forever/kandinsky-2.2", + "run_count": 130021, + "url": "https://replicate.com/adirik/flux-cinestill", "visibility": "public", "weights_url": null }, "basic_fields": [ + "mask", "seed", - "width", - "height" + "image" ] }, { - "title": "Kandinsky 2 2", - "description": "multilingual text2image latent diffusion model", + "title": "Flux Depth Dev", + "description": "Open-weight depth-aware image generation. Edit images while preserving spatial relationships.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Kandinsky_2_2", + "node_type": "replicate.image.generate.Flux_Depth_Dev", "properties": [ { "name": "seed", @@ -8502,66 +8138,43 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "description": "Random seed. Set for reproducible generation" }, { - "name": "width", + "name": "prompt", "type": { - "type": "enum", - "values": [ - 384, - 512, - 576, - 640, - 704, - 768, - 960, - 1024, - 1152, - 1280, - 1536, - 1792, - 2048 - ], - "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Width" + "type": "str", + "optional": true }, - "default": 512, - "title": "Width", - "description": "Width of output image. Lower the setting if hits memory limits." + "default": null, + "title": "Prompt", + "description": "Prompt for generated image" }, { - "name": "height", + "name": "guidance", "type": { - "type": "enum", - "values": [ - 384, - 512, - 576, - 640, - 704, - 768, - 960, - 1024, - 1152, - 1280, - 1536, - 1792, - 2048 - ], - "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Height" + "type": "float" }, - "default": 512, - "title": "Height", - "description": "Height of output image. Lower the setting if hits memory limits." + "default": 10, + "title": "Guidance", + "description": "Guidance for generated image", + "min": 0.0, + "max": 100.0 }, { - "name": "prompt", + "name": "megapixels", "type": { - "type": "str" + "type": "enum", + "values": [ + "1", + "0.25", + "match_input" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Megapixels" }, - "default": "A moss covered astronaut with a black background", - "title": "Prompt", - "description": "Input prompt" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)" }, { "name": "num_outputs", @@ -8570,56 +8183,70 @@ }, "default": 1, "title": "Num Outputs", - "description": "Number of images to output.", + "description": "Number of outputs to generate", "min": 1.0, "max": 4.0 }, + { + "name": "control_image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Control Image", + "description": "Image used to control the generation. The depth map will be automatically generated." + }, { "name": "output_format", "type": { "type": "enum", "values": [ "webp", - "jpeg", + "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Depth_Dev.Output_format" }, "default": "webp", "title": "Output Format", - "description": "Output image format" + "description": "Format of the output images" }, { - "name": "negative_prompt", + "name": "output_quality", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Negative Prompt", - "description": "Specify things to not see in the output" + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 75, + "default": 28, "title": "Num Inference Steps", - "description": "Number of denoising steps", + "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", "min": 1.0, - "max": 500.0 + "max": 50.0 }, { - "name": "num_inference_steps_prior", + "name": "disable_safety_checker", "type": { - "type": "int" + "type": "bool" }, - "default": 25, - "title": "Num Inference Steps Prior", - "description": "Number of denoising steps for priors", - "min": 1.0, - "max": 500.0 + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -8631,32 +8258,53 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/618e68d3-fba3-4fd0-a060-cdd46b2ab7cf/out-0_2.jpg", - "created_at": "2023-07-12T21:53:29.439515Z", - "description": "multilingual text2image latent diffusion model", - "github_url": "https://github.com/chenxwh/Kandinsky-2/tree/v2.2", - "license_url": "https://github.com/ai-forever/Kandinsky-2/blob/main/license", - "name": "kandinsky-2.2", - "owner": "ai-forever", - "is_official": false, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/4cfef8f5-5fcb-413c-bdaa-d6d4f41e5930/flux-depth-dev.jpg", + "created_at": "2024-11-20T20:49:48.670385Z", + "description": "Open-weight depth-aware image generation. Edit images while preserving spatial relationships.", + "github_url": null, + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", + "name": "flux-depth-dev", + "owner": "black-forest-labs", + "is_official": true, "paper_url": null, - "run_count": 10025570, - "url": "https://replicate.com/ai-forever/kandinsky-2.2", + "run_count": 1008751, + "url": "https://replicate.com/black-forest-labs/flux-depth-dev", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Depth-dev" }, "basic_fields": [ "seed", - "width", - "height" + "prompt", + "guidance" ] }, { - "title": "Minimax Image 01", - "description": "Minimax's first image model, with character reference support", + "title": "Flux Depth Pro", + "description": "Professional depth-aware image generation. Edit images while preserving spatial relationships.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Minimax_Image_01", + "node_type": "replicate.image.generate.Flux_Depth_Pro", "properties": [ + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" + }, + { + "name": "steps", + "type": { + "type": "int" + }, + "default": 50, + "title": "Steps", + "description": "Number of diffusion steps. Higher values yield finer details but increase processing time.", + "min": 15.0, + "max": 50.0 + }, { "name": "prompt", "type": { @@ -8665,57 +8313,67 @@ }, "default": null, "title": "Prompt", - "description": "Text prompt for generation" + "description": "Text prompt for image generation" }, { - "name": "aspect_ratio", + "name": "guidance", + "type": { + "type": "float" + }, + "default": 30, + "title": "Guidance", + "description": "Controls the balance between adherence to the text as well as image prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", + "min": 1.0, + "max": 100.0 + }, + { + "name": "control_image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Control Image", + "description": "Image to use as control input. Must be jpeg, png, gif, or webp." + }, + { + "name": "output_format", "type": { "type": "enum", "values": [ - "1:1", - "16:9", - "4:3", - "3:2", - "2:3", - "3:4", - "9:16", - "21:9" + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Minimax_Image_01.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Depth_Pro.Output_format" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Image aspect ratio" + "default": "jpg", + "title": "Output Format", + "description": "Format of the output images." }, { - "name": "number_of_images", + "name": "safety_tolerance", "type": { "type": "int" }, - "default": 1, - "title": "Number Of Images", - "description": "Number of images to generate", + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 6 is most permissive", "min": 1.0, - "max": 9.0 + "max": 6.0 }, { - "name": "prompt_optimizer", + "name": "prompt_upsampling", "type": { "type": "bool" }, - "default": true, - "title": "Prompt Optimizer", - "description": "Use prompt optimizer" - }, - { - "name": "subject_reference", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Subject Reference", - "description": "An optional character reference image (human face) to use as the subject in the generated image(s)." + "default": false, + "title": "Prompt Upsampling", + "description": "Automatically modify the prompt for more creative generation" } ], "outputs": [ @@ -8727,31 +8385,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/926994db-2c8e-4b7d-934f-2f86b2480e55/43b05178-4b2a-42d9-9130-4fedae65.webp", - "created_at": "2025-03-03T14:05:29.816962Z", - "description": "Minimax's first image model, with character reference support", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/e365ecff-4023-49f8-96ba-abd710c4bdd9/https___replicate.deliver_xWYu8lC.jpg", + "created_at": "2024-11-21T09:53:00.631446Z", + "description": "Professional depth-aware image generation. Edit images while preserving spatial relationships.", "github_url": null, - "license_url": null, - "name": "image-01", - "owner": "minimax", + "license_url": "https://replicate.com/black-forest-labs/flux-depth-pro#license", + "name": "flux-depth-pro", + "owner": "black-forest-labs", "is_official": true, "paper_url": null, - "run_count": 1525946, - "url": "https://replicate.com/minimax/image-01", + "run_count": 286281, + "url": "https://replicate.com/black-forest-labs/flux-depth-pro", "visibility": "public", "weights_url": null }, "basic_fields": [ - "prompt", - "aspect_ratio", - "number_of_images" + "seed", + "steps", + "prompt" ] }, { - "title": "Photon Flash", - "description": "Accelerated variant of Photon prioritizing speed while maintaining quality", + "title": "Flux Dev", + "description": "A 12 billion parameter rectified flow transformer capable of generating images from text descriptions", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Photon_Flash", + "node_type": "replicate.image.generate.Flux_Dev", "properties": [ { "name": "seed", @@ -8764,130 +8422,149 @@ "description": "Random seed. Set for reproducible generation" }, { - "name": "prompt", + "name": "image", "type": { "type": "str", "optional": true }, "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" - }, - { - "name": "aspect_ratio", - "type": { - "type": "enum", - "values": [ - "1:1", - "3:4", - "4:3", - "9:16", - "16:9", - "9:21", - "21:9" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Photon_Flash.Aspect_ratio" - }, - "default": "16:9", - "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image" + "title": "Image", + "description": "Input image for image to image mode. The aspect ratio of your output will match this image" }, { - "name": "image_reference", + "name": "prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Image Reference", - "description": "Reference image to guide generation" + "title": "Prompt", + "description": "Prompt for generated image" }, { - "name": "style_reference", + "name": "go_fast", "type": { - "type": "str", - "optional": true + "type": "bool" }, - "default": null, - "title": "Style Reference", - "description": "Style reference image to guide generation" + "default": true, + "title": "Go Fast", + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." }, { - "name": "character_reference", + "name": "guidance", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Character Reference", - "description": "Character reference image to guide generation" + "default": 3, + "title": "Guidance", + "description": "Guidance for generated image", + "min": 0.0, + "max": 10.0 }, { - "name": "image_reference_url", + "name": "megapixels", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + "1", + "0.25" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev.Megapixels" }, - "title": "Image Reference Url", - "description": "Deprecated: Use image_reference instead" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { - "name": "style_reference_url", + "name": "num_outputs", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "int" }, - "title": "Style Reference Url", - "description": "Deprecated: Use style_reference instead" + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { - "name": "image_reference_weight", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "1:1", + "16:9", + "21:9", + "3:2", + "2:3", + "4:5", + "5:4", + "3:4", + "4:3", + "9:16", + "9:21" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev.Aspect_ratio" }, - "default": 0.85, - "title": "Image Reference Weight", - "description": "Weight of the reference image. Larger values will make the reference image have a stronger influence on the generated image.", + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio for the generated image" + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", "min": 0.0, - "max": 1.0 + "max": 100.0 }, { - "name": "style_reference_weight", + "name": "prompt_strength", "type": { "type": "float" }, - "default": 0.85, - "title": "Style Reference Weight", - "description": "Weight of the style reference image", + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", "min": 0.0, "max": 1.0 }, { - "name": "character_reference_url", + "name": "num_inference_steps", "type": { - "type": "image" + "type": "int" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 28, + "title": "Num Inference Steps", + "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", + "min": 1.0, + "max": 50.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" }, - "title": "Character Reference Url", - "description": "Deprecated: Use character_reference instead" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -8899,42 +8576,32 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8459f7e9-7445-4046-82aa-917a0f561b80/tmpyf9dx02r.webp", - "created_at": "2024-12-05T15:18:04.364421Z", - "description": "Accelerated variant of Photon prioritizing speed while maintaining quality", - "github_url": null, - "license_url": "https://lumalabs.ai/dream-machine/api/terms", - "name": "photon-flash", - "owner": "luma", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/cb4203e5-9ece-42e7-b326-98ff3fa35c3a/Replicate_Prediction_15.webp", + "created_at": "2024-07-29T23:25:06.100855Z", + "description": "A 12 billion parameter rectified flow transformer capable of generating images from text descriptions", + "github_url": "https://github.com/replicate/cog-flux", + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", + "name": "flux-dev", + "owner": "black-forest-labs", "is_official": true, "paper_url": null, - "run_count": 160876, - "url": "https://replicate.com/luma/photon-flash", + "run_count": 37700525, + "url": "https://replicate.com/black-forest-labs/flux-dev", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev" }, "basic_fields": [ "seed", - "prompt", - "aspect_ratio" + "image", + "prompt" ] }, { - "title": "Playground V 2", - "description": "Playground v2.5 is the state-of-the-art open-source model in aesthetic quality", + "title": "Flux Dev Lora", + "description": "A version of flux-dev, a text to image model, that supports fast fine-tuned lora inference", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.PlaygroundV2", + "node_type": "replicate.image.generate.Flux_Dev_Lora", "properties": [ - { - "name": "mask", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Mask", - "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." - }, { "name": "seed", "type": { @@ -8943,7 +8610,7 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "description": "Random seed. Set for reproducible generation" }, { "name": "image", @@ -8958,58 +8625,72 @@ "metadata": null }, "title": "Image", - "description": "Input image for img2img or inpaint mode" + "description": "Input image for image to image mode. The aspect ratio of your output will match this image" }, { - "name": "width", + "name": "prompt", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 1024, - "title": "Width", - "description": "Width of output image", - "min": 256.0, - "max": 1536.0 + "default": null, + "title": "Prompt", + "description": "Prompt for generated image" }, { - "name": "height", + "name": "go_fast", "type": { - "type": "int" + "type": "bool" }, - "default": 1024, - "title": "Height", - "description": "Height of output image", - "min": 256.0, - "max": 1536.0 + "default": true, + "title": "Go Fast", + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." }, { - "name": "prompt", + "name": "guidance", "type": { - "type": "str" + "type": "float" }, - "default": "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k", - "title": "Prompt", - "description": "Input prompt" + "default": 3, + "title": "Guidance", + "description": "Guidance for generated image", + "min": 0.0, + "max": 10.0 }, { - "name": "scheduler", + "name": "extra_lora", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Extra Lora", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" + }, + { + "name": "lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "megapixels", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM", - "DPM++2MKarras", - "DPMSolver++" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.PlaygroundV2.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Megapixels" }, - "default": "DPMSolver++", - "title": "Scheduler", - "description": "Scheduler. DPMSolver++ or DPM++2MKarras is recommended for most cases" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { "name": "num_outputs", @@ -9018,60 +8699,121 @@ }, "default": 1, "title": "Num Outputs", - "description": "Number of images to output.", + "description": "Number of outputs to generate", "min": 1.0, "max": 4.0 }, { - "name": "guidance_scale", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "1:1", + "16:9", + "21:9", + "3:2", + "2:3", + "4:5", + "5:4", + "3:4", + "4:3", + "9:16", + "9:21" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Aspect_ratio" }, - "default": 3, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 0.1, - "max": 20.0 + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio for the generated image" }, { - "name": "apply_watermark", + "name": "hf_api_token", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": true, - "title": "Apply Watermark", - "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + "default": null, + "title": "Hf Api Token", + "description": "HuggingFace API token. If you're using a hf lora that needs authentication, you'll need to provide an API token." }, { - "name": "negative_prompt", + "name": "lora_weights", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "ugly, deformed, noisy, blurry, distorted", - "title": "Negative Prompt", - "description": "Negative Input prompt" + "default": null, + "title": "Lora Weights", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//[/], CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet, including signed URLs. For example, 'fofr/flux-pixar-cars'. Civit AI and HuggingFace LoRAs may require an API token to access, which you can provide in the `civitai_api_token` and `hf_api_token` inputs respectively." }, { - "name": "prompt_strength", + "name": "output_format", "type": { - "type": "float" + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Dev_Lora.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "prompt_strength", + "type": { + "type": "float" }, "default": 0.8, "title": "Prompt Strength", - "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", "min": 0.0, "max": 1.0 }, + { + "name": "extra_lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Extra Lora Scale", + "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "civitai_api_token", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Civitai Api Token", + "description": "Civitai API token. If you're using a civitai lora that needs authentication, you'll need to provide an API token." + }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 25, + "default": 28, "title": "Num Inference Steps", - "description": "Number of denoising steps", + "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", "min": 1.0, - "max": 60.0 + "max": 50.0 }, { "name": "disable_safety_checker", @@ -9080,7 +8822,7 @@ }, "default": false, "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -9092,46 +8834,41 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b849582a-8699-4965-8016-3a51dc1da3d4/playground.jpeg", - "created_at": "2024-02-27T22:20:16.107222Z", - "description": "Playground v2.5 is the state-of-the-art open-source model in aesthetic quality", - "github_url": "https://github.com/lucataco/cog-playground-v2.5-1024px-aesthetic", - "license_url": "https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic/blob/main/LICENSE.md", - "name": "playground-v2.5-1024px-aesthetic", - "owner": "playgroundai", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2206.00364", - "run_count": 2651203, - "url": "https://replicate.com/playgroundai/playground-v2.5-1024px-aesthetic", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a79cc4a8-318c-4316-a800-097ef0bdce7a/https___replicate.del_25H5GQ7.webp", + "created_at": "2024-11-11T23:03:07.000926Z", + "description": "A version of flux-dev, a text to image model, that supports fast fine-tuned lora inference", + "github_url": "https://github.com/replicate/cog-flux", + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", + "name": "flux-dev-lora", + "owner": "black-forest-labs", + "is_official": true, + "paper_url": null, + "run_count": 5515178, + "url": "https://replicate.com/black-forest-labs/flux-dev-lora", "visibility": "public", - "weights_url": "https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic" + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev" }, "basic_fields": [ - "mask", "seed", - "image" + "image", + "prompt" ] }, { - "title": "Proteus V 02", - "description": "Proteus v0.2 shows subtle yet significant improvements over Version 0.1. It demonstrates enhanced prompt understanding that surpasses MJ6, while also approaching its stylistic capabilities.", + "title": "Flux Fill Dev", + "description": "Open-weight inpainting model for editing and extending images. Guidance-distilled from FLUX.1 Fill [pro].", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Proteus_V_02", + "node_type": "replicate.image.generate.Flux_Fill_Dev", "properties": [ { "name": "mask", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, + "default": null, "title": "Mask", - "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + "description": "A black-and-white image that describes the part of the image to inpaint. Black areas will be preserved while white areas will be inpainted." }, { "name": "seed", @@ -9141,68 +8878,64 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "description": "Random seed. Set for reproducible generation" }, { "name": "image", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, + "default": null, "title": "Image", - "description": "Input image for img2img or inpaint mode" + "description": "The image to inpaint. Can contain alpha mask. If the image width or height are not multiples of 32, they will be scaled to the closest multiple of 32. If the image dimensions don't fit within 1440x1440, it will be scaled down to fit." }, { - "name": "width", + "name": "prompt", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 1024, - "title": "Width", - "description": "Width of output image" + "default": null, + "title": "Prompt", + "description": "Prompt for generated image" }, { - "name": "height", + "name": "guidance", "type": { - "type": "int" + "type": "float" }, - "default": 1024, - "title": "Height", - "description": "Height of output image" + "default": 30, + "title": "Guidance", + "description": "Guidance for generated image", + "min": 0.0, + "max": 100.0 }, { - "name": "prompt", + "name": "lora_scale", "type": { - "type": "str" + "type": "float" }, - "default": "black fluffy gorgeous dangerous cat animal creature, large orange eyes, big fluffy ears, piercing gaze, full moon, dark ambiance, best quality, extremely detailed", - "title": "Prompt", - "description": "Input prompt" + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 }, { - "name": "scheduler", + "name": "megapixels", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "KarrasDPM", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM" + "1", + "0.25", + "match_input" ], - "type_name": "nodetool.nodes.replicate.image.generate.Proteus_V_02.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Megapixels" }, - "default": "KarrasDPM", - "title": "Scheduler", - "description": "scheduler" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image. Use match_input to match the size of the input (with an upper limit of 1440x1440 pixels)" }, { "name": "num_outputs", @@ -9211,60 +8944,56 @@ }, "default": 1, "title": "Num Outputs", - "description": "Number of images to output.", + "description": "Number of outputs to generate", "min": 1.0, "max": 4.0 }, { - "name": "guidance_scale", - "type": { - "type": "float" - }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance. Recommended 7-8", - "min": 1.0, - "max": 50.0 - }, - { - "name": "apply_watermark", + "name": "lora_weights", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": true, - "title": "Apply Watermark", - "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + "default": null, + "title": "Lora Weights", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" }, { - "name": "negative_prompt", + "name": "output_format", "type": { - "type": "str" + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Dev.Output_format" }, - "default": "worst quality, low quality", - "title": "Negative Prompt", - "description": "Negative Input prompt" + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "prompt_strength", + "name": "output_quality", "type": { - "type": "float" + "type": "int" }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", "min": 0.0, - "max": 1.0 + "max": 100.0 }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 20, + "default": 28, "title": "Num Inference Steps", - "description": "Number of denoising steps. 20 to 35 steps for more detail, 20 steps for faster results.", + "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", "min": 1.0, - "max": 100.0 + "max": 50.0 }, { "name": "disable_safety_checker", @@ -9273,7 +9002,7 @@ }, "default": false, "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -9285,19 +9014,19 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/1nrcrEszpsb0Kpv0qNBJrtQjoefjHJ3xSh3whVOJcklSFxPSA/out-0.png", - "created_at": "2024-01-24T17:45:49.361192Z", - "description": "Proteus v0.2 shows subtle yet significant improvements over Version 0.1. It demonstrates enhanced prompt understanding that surpasses MJ6, while also approaching its stylistic capabilities.", - "github_url": "https://github.com/lucataco/cog-proteus-v0.2", - "license_url": "https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/gpl-3.0.md", - "name": "proteus-v0.2", - "owner": "datacte", - "is_official": false, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/b109cc9e-f3c2-4899-8428-df46a988c3f0/https___replicate.deliver_tmlMO9j.jpg", + "created_at": "2024-11-20T20:49:17.667435Z", + "description": "Open-weight inpainting model for editing and extending images. Guidance-distilled from FLUX.1 Fill [pro].", + "github_url": null, + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", + "name": "flux-fill-dev", + "owner": "black-forest-labs", + "is_official": true, "paper_url": null, - "run_count": 10742634, - "url": "https://replicate.com/datacte/proteus-v0.2", + "run_count": 1375100, + "url": "https://replicate.com/black-forest-labs/flux-fill-dev", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Fill-dev" }, "basic_fields": [ "mask", @@ -9306,25 +9035,20 @@ ] }, { - "title": "Proteus V 03", - "description": "ProteusV0.3: The Anime Update", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Proteus_V_03", + "title": "Flux Fill Pro", + "description": "Professional inpainting and outpainting model with state-of-the-art performance. Edit or extend images with natural, seamless results.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Flux_Fill_Pro", "properties": [ { "name": "mask", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, + "default": null, "title": "Mask", - "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + "description": "A black-and-white image that describes the part of the image to inpaint. Black areas will be preserved while white areas will be inpainted. Must have the same size as image. Optional if you provide an alpha mask in the original image. Must be jpeg, png, gif, or webp." }, { "name": "seed", @@ -9334,140 +9058,103 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "description": "Random seed. Set for reproducible generation" }, { "name": "image", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, + "default": null, "title": "Image", - "description": "Input image for img2img or inpaint mode" - }, - { - "name": "width", - "type": { - "type": "int" - }, - "default": 1024, - "title": "Width", - "description": "Width of output image. Recommended 1024 or 1280" + "description": "The image to inpaint. Can contain an alpha mask. Must be jpeg, png, gif, or webp." }, { - "name": "height", + "name": "steps", "type": { "type": "int" }, - "default": 1024, - "title": "Height", - "description": "Height of output image. Recommended 1024 or 1280" + "default": 50, + "title": "Steps", + "description": "Number of diffusion steps. Higher values yield finer details but increase processing time.", + "min": 15.0, + "max": 50.0 }, { "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "Anime full body portrait of a swordsman holding his weapon in front of him. He is facing the camera with a fierce look on his face. Anime key visual (best quality, HD, ~+~aesthetic~+~:1.2)", + "default": null, "title": "Prompt", - "description": "Input prompt" - }, - { - "name": "scheduler", - "type": { - "type": "enum", - "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "KarrasDPM", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM", - "DPM++2MSDE" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Proteus_V_03.Scheduler" - }, - "default": "DPM++2MSDE", - "title": "Scheduler", - "description": "scheduler" - }, - { - "name": "num_outputs", - "type": { - "type": "int" - }, - "default": 1, - "title": "Num Outputs", - "description": "Number of images to output.", - "min": 1.0, - "max": 4.0 + "description": "Text prompt for image generation" }, { - "name": "guidance_scale", + "name": "guidance", "type": { "type": "float" }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance. Recommended 7-8", - "min": 1.0, - "max": 50.0 - }, - { - "name": "apply_watermark", - "type": { - "type": "bool" - }, - "default": true, - "title": "Apply Watermark", - "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + "default": 60, + "title": "Guidance", + "description": "Controls the balance between adherence to the text prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", + "min": 1.5, + "max": 100.0 }, { - "name": "negative_prompt", + "name": "outpaint", "type": { - "type": "str" + "type": "enum", + "values": [ + "None", + "Zoom out 1.5x", + "Zoom out 2x", + "Make square", + "Left outpaint", + "Right outpaint", + "Top outpaint", + "Bottom outpaint" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Outpaint" }, - "default": "worst quality, low quality", - "title": "Negative Prompt", - "description": "Negative Input prompt" + "default": "None", + "title": "Outpaint", + "description": "A quick option for outpainting an input image. Mask will be ignored." }, { - "name": "prompt_strength", + "name": "output_format", "type": { - "type": "float" + "type": "enum", + "values": [ + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Fill_Pro.Output_format" }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", - "min": 0.0, - "max": 1.0 + "default": "jpg", + "title": "Output Format", + "description": "Format of the output images." }, { - "name": "num_inference_steps", + "name": "safety_tolerance", "type": { "type": "int" }, - "default": 20, - "title": "Num Inference Steps", - "description": "Number of denoising steps. 20 to 60 steps for more detail, 20 steps for faster results.", + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 6 is most permissive", "min": 1.0, - "max": 100.0 + "max": 6.0 }, { - "name": "disable_safety_checker", + "name": "prompt_upsampling", "type": { "type": "bool" }, "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" + "title": "Prompt Upsampling", + "description": "Automatically modify the prompt for more creative generation" } ], "outputs": [ @@ -9479,19 +9166,19 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/C3LYYa30997dKRdeNDSXNjIK01CH5q8CSto12eWundnPPtWSA/out-0.png", - "created_at": "2024-02-14T20:02:04.901849Z", - "description": "ProteusV0.3: The Anime Update", - "github_url": "https://github.com/lucataco/cog-proteus-v0.3", - "license_url": "https://huggingface.co/models?license=license:gpl-3.0", - "name": "proteus-v0.3", - "owner": "datacte", - "is_official": false, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/13571f4b-d677-404f-bff0-ad44da9d5fa0/https___replicate.deli_llwvezd.jpg", + "created_at": "2024-11-20T20:56:37.431006Z", + "description": "Professional inpainting and outpainting model with state-of-the-art performance. Edit or extend images with natural, seamless results.", + "github_url": null, + "license_url": "https://replicate.com/black-forest-labs/flux-fill-pro#license", + "name": "flux-fill-pro", + "owner": "black-forest-labs", + "is_official": true, "paper_url": null, - "run_count": 4433251, - "url": "https://replicate.com/datacte/proteus-v0.3", + "run_count": 3665155, + "url": "https://replicate.com/black-forest-labs/flux-fill-pro", "visibility": "public", - "weights_url": "https://huggingface.co/dataautogpt3/ProteusV0.3" + "weights_url": null }, "basic_fields": [ "mask", @@ -9500,10 +9187,10 @@ ] }, { - "title": "Pulid Base", - "description": "Use a face to make images. Uses SDXL fine-tuned checkpoints.", + "title": "Flux Kontext Pro", + "description": "A state-of-the-art text-based image editing model that delivers high-quality outputs with excellent prompt following and consistent results for transforming images through natural language", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.PulidBase", + "node_type": "replicate.image.generate.Flux_Kontext_Pro", "properties": [ { "name": "seed", @@ -9513,129 +9200,87 @@ }, "default": null, "title": "Seed", - "description": "Set a seed for reproducibility. Random by default." - }, - { - "name": "width", - "type": { - "type": "int" - }, - "default": 1024, - "title": "Width", - "description": "Width of the output image (ignored if structure image given)" - }, - { - "name": "height", - "type": { - "type": "int" - }, - "default": 1024, - "title": "Height", - "description": "Height of the output image (ignored if structure image given)" + "description": "Random seed. Set for reproducible generation" }, { "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "A photo of a person", + "default": null, "title": "Prompt", - "description": "You might need to include a gender in the prompt to get the desired result" + "description": "Text description of what you want to generate, or the instruction on how to edit the given image." }, { - "name": "face_image", + "name": "input_image", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, - "title": "Face Image", - "description": "The face image to use for the generation" + "default": null, + "title": "Input Image", + "description": "Image to use as reference. Must be jpeg, png, gif, or webp." }, { - "name": "face_style", + "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "high-fidelity", - "stylized" + "match_input_image", + "1:1", + "16:9", + "9:16", + "4:3", + "3:4", + "3:2", + "2:3", + "4:5", + "5:4", + "21:9", + "9:21", + "2:1", + "1:2" ], - "type_name": "nodetool.nodes.replicate.image.generate.PulidBase.Face_style" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Aspect_ratio" }, - "default": "high-fidelity", - "title": "Face Style", - "description": "Style of the face" + "default": "match_input_image", + "title": "Aspect Ratio", + "description": "Aspect ratio of the generated image. Use 'match_input_image' to match the aspect ratio of the input image." }, { "name": "output_format", "type": { "type": "enum", "values": [ - "webp", "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.PulidBase.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Kontext_Pro.Output_format" }, - "default": "webp", + "default": "png", "title": "Output Format", - "description": "Format of the output images" + "description": "Output format for the generated image" }, { - "name": "output_quality", + "name": "safety_tolerance", "type": { "type": "int" }, - "default": 80, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 0 is most strict and 6 is most permissive. 2 is currently the maximum allowed when input images are used.", "min": 0.0, - "max": 100.0 - }, - { - "name": "negative_prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Negative Prompt", - "description": "Things you do not want to see in your image" - }, - { - "name": "checkpoint_model", - "type": { - "type": "enum", - "values": [ - "general - albedobaseXL_v21", - "general - dreamshaperXL_alpha2Xl10", - "animated - starlightXLAnimated_v3", - "animated - pixlAnimeCartoonComic_v10", - "realistic - rundiffusionXL_beta", - "realistic - RealVisXL_V4.0", - "realistic - sdxlUnstableDiffusers_nihilmania", - "cinematic - CinematicRedmond" - ], - "type_name": "nodetool.nodes.replicate.image.generate.PulidBase.Checkpoint_model" - }, - "default": "general - dreamshaperXL_alpha2Xl10", - "title": "Checkpoint Model", - "description": "Model to use for the generation" + "max": 6.0 }, { - "name": "number_of_images", + "name": "prompt_upsampling", "type": { - "type": "int" + "type": "bool" }, - "default": 1, - "title": "Number Of Images", - "description": "Number of images to generate", - "min": 1.0, - "max": 10.0 + "default": false, + "title": "Prompt Upsampling", + "description": "Automatic prompt improvement" } ], "outputs": [ @@ -9647,32 +9292,47 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/fb4110a1-ae64-491f-8a3e-0fdd4ef991bb/pulid-base-cover.webp", - "created_at": "2024-05-09T13:48:08.359715Z", - "description": "Use a face to make images. Uses SDXL fine-tuned checkpoints.", - "github_url": "https://github.com/fofr/cog-comfyui-pulid/tree/pulid-base", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e74eecd6-daf1-4050-9f04-36313bd6f007/two-people-cropped.webp", + "created_at": "2025-05-27T08:26:25.135215Z", + "description": "A state-of-the-art text-based image editing model that delivers high-quality outputs with excellent prompt following and consistent results for transforming images through natural language", + "github_url": null, "license_url": null, - "name": "pulid-base", - "owner": "fofr", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2404.16022", - "run_count": 304925, - "url": "https://replicate.com/fofr/pulid-base", + "name": "flux-kontext-pro", + "owner": "black-forest-labs", + "is_official": true, + "paper_url": null, + "run_count": 43209235, + "url": "https://replicate.com/black-forest-labs/flux-kontext-pro", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs" }, "basic_fields": [ "seed", - "width", - "height" + "prompt", + "input_image" ] }, { - "title": "Qwen Image", - "description": "An image generation foundation model in the Qwen series that achieves significant advances in complex text rendering.", + "title": "Flux Mona Lisa", + "description": "Flux lora, use the term \"MNALSA\" to trigger generation", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Qwen_Image", + "node_type": "replicate.image.generate.Flux_Mona_Lisa", "properties": [ + { + "name": "mask", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + }, { "name": "seed", "type": { @@ -9696,7 +9356,45 @@ "metadata": null }, "title": "Image", - "description": "Input image for img2img pipeline" + "description": "Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored." + }, + { + "name": "model", + "type": { + "type": "enum", + "values": [ + "dev", + "schnell" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Model" + }, + "default": "dev", + "title": "Model", + "description": "Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps." + }, + { + "name": "width", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Width", + "description": "Width of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 + }, + { + "name": "height", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Height", + "description": "Height of generated image. Only works if `aspect_ratio` is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation", + "min": 256.0, + "max": 1440.0 }, { "name": "prompt", @@ -9706,61 +9404,62 @@ }, "default": null, "title": "Prompt", - "description": "Prompt for generated image" + "description": "Prompt for generated image. If you include the `trigger_word` used in the training process you are more likely to activate the trained object, style, or concept in the resulting image." }, { "name": "go_fast", "type": { "type": "bool" }, - "default": true, + "default": false, "title": "Go Fast", - "description": "Run faster predictions with additional optimizations." + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16" }, { - "name": "guidance", + "name": "extra_lora", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 3, - "title": "Guidance", - "description": "Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", - "min": 0.0, - "max": 10.0 + "default": null, + "title": "Extra Lora", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" }, { - "name": "strength", + "name": "lora_scale", "type": { "type": "float" }, - "default": 0.9, - "title": "Strength", - "description": "Strength for img2img pipeline", - "min": 0.0, - "max": 1.0 + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 }, { - "name": "image_size", + "name": "megapixels", "type": { "type": "enum", "values": [ - "optimize_for_quality", - "optimize_for_speed" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image.Image_size" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Megapixels" }, - "default": "optimize_for_quality", - "title": "Image Size", - "description": "Image size for the generated image" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { - "name": "lora_scale", + "name": "num_outputs", "type": { - "type": "float" + "type": "int" }, "default": 1, - "title": "Lora Scale", - "description": "Determines how strongly the main LoRA should be applied." + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { "name": "aspect_ratio", @@ -9769,27 +9468,22 @@ "values": [ "1:1", "16:9", - "9:16", - "4:3", - "3:4", + "21:9", "3:2", - "2:3" + "2:3", + "4:5", + "5:4", + "3:4", + "4:3", + "9:16", + "9:21", + "custom" ], - "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Aspect_ratio" }, - "default": "16:9", + "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio for the generated image" - }, - { - "name": "lora_weights", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Lora Weights", - "description": "Load LoRA weights. Only works with text to image pipeline. Supports arbitrary .safetensors URLs, tar files, and zip files from the Internet (for example, 'https://huggingface.co/Viktor1717/scandinavian-interior-style1/resolve/main/my_first_flux_lora_v1.safetensors', 'https://example.com/lora_weights.tar.gz', or 'https://example.com/lora_weights.zip')" + "description": "Aspect ratio for the generated image. If custom is selected, uses height and width below & will run in bf16 mode" }, { "name": "output_format", @@ -9800,20 +9494,22 @@ "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Mona_Lisa.Output_format" }, "default": "webp", "title": "Output Format", "description": "Format of the output images" }, { - "name": "enhance_prompt", + "name": "guidance_scale", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Enhance Prompt", - "description": "Enhance the prompt with positive magic." + "default": 3, + "title": "Guidance Scale", + "description": "Guidance scale for the diffusion process. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", + "min": 0.0, + "max": 10.0 }, { "name": "output_quality", @@ -9827,32 +9523,45 @@ "max": 100.0 }, { - "name": "negative_prompt", + "name": "prompt_strength", "type": { - "type": "str" + "type": "float" }, - "default": " ", - "title": "Negative Prompt", - "description": "Negative prompt for generated image" - }, - { - "name": "replicate_weights", + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "extra_lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Extra Lora Scale", + "description": "Determines how strongly the extra LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 + }, + { + "name": "replicate_weights", "type": { "type": "str", "optional": true }, "default": null, "title": "Replicate Weights", - "description": "Load LoRA weights from Replicate training. Only works with text to image pipeline. Supports arbitrary .safetensors URLs, tar files, and zip files from the Internet." + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 30, + "default": 28, "title": "Num Inference Steps", - "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", + "description": "Number of denoising steps. More steps can give more detailed images, but take longer.", "min": 1.0, "max": 50.0 }, @@ -9875,31 +9584,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/62e062a1-f4e4-4192-9f0c-56408f092fec/replicate-prediction-97qabd8z.webp", - "created_at": "2025-08-04T17:23:39.724770Z", - "description": "An image generation foundation model in the Qwen series that achieves significant advances in complex text rendering.", - "github_url": "https://github.com/QwenLM/Qwen-Image", - "license_url": "https://choosealicense.com/licenses/apache-2.0/", - "name": "qwen-image", - "owner": "qwen", - "is_official": true, - "paper_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-Image/Qwen_Image.pdf", - "run_count": 381758, - "url": "https://replicate.com/qwen/qwen-image", + "cover_image_url": "https://replicate.delivery/yhqm/apYK6kZFfZUYRyoJ11NzhHY2YXbrjCHajYIiN9EznGR4qVrJA/out-0.webp", + "created_at": "2024-08-26T21:32:24.116430Z", + "description": "Flux lora, use the term \"MNALSA\" to trigger generation", + "github_url": null, + "license_url": null, + "name": "flux-mona-lisa", + "owner": "fofr", + "is_official": false, + "paper_url": null, + "run_count": 3598, + "url": "https://replicate.com/fofr/flux-mona-lisa", "visibility": "public", - "weights_url": "https://huggingface.co/Qwen/Qwen-Image" + "weights_url": null }, "basic_fields": [ + "mask", "seed", - "image", - "prompt" + "image" ] }, { - "title": "Qwen Image Edit", - "description": "Edit images using a prompt. This model extends Qwen-Image\u2019s unique text rendering capabilities to image editing tasks, enabling precise text editing", + "title": "Flux Pro", + "description": "State-of-the-art image generation with top of the line prompt following, visual quality, image detail and output diversity.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Qwen_Image_Edit", + "node_type": "replicate.image.generate.Flux_Pro", "properties": [ { "name": "seed", @@ -9912,19 +9621,39 @@ "description": "Random seed. Set for reproducible generation" }, { - "name": "image", + "name": "steps", "type": { - "type": "image" + "type": "int" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 25, + "title": "Steps", + "description": "Deprecated", + "min": 1.0, + "max": 50.0 + }, + { + "name": "width", + "type": { + "type": "int", + "optional": true }, - "title": "Image", - "description": "Image to use as reference. Must be jpeg, png, gif, or webp." + "default": null, + "title": "Width", + "description": "Width of the generated image in text-to-image mode. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32). Note: Ignored in img2img and inpainting modes.", + "min": 256.0, + "max": 1440.0 + }, + { + "name": "height", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Height", + "description": "Height of the generated image in text-to-image mode. Only used when aspect_ratio=custom. Must be a multiple of 32 (if it's not, it will be rounded to nearest multiple of 32). Note: Ignored in img2img and inpainting modes.", + "min": 256.0, + "max": 1440.0 }, { "name": "prompt", @@ -9934,35 +9663,62 @@ }, "default": null, "title": "Prompt", - "description": "Text instruction on how to edit the given image." + "description": "Text prompt for image generation" }, { - "name": "go_fast", + "name": "guidance", "type": { - "type": "bool" + "type": "float" }, - "default": true, - "title": "Go Fast", - "description": "Run faster predictions with additional optimizations." + "default": 3, + "title": "Guidance", + "description": "Controls the balance between adherence to the text prompt and image quality/diversity. Higher values make the output more closely match the prompt but may reduce overall image quality. Lower values allow for more creative freedom but might produce results less relevant to the prompt.", + "min": 2.0, + "max": 5.0 + }, + { + "name": "interval", + "type": { + "type": "float" + }, + "default": 2, + "title": "Interval", + "description": "Deprecated", + "min": 1.0, + "max": 4.0 }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ + "custom", "1:1", "16:9", + "3:2", + "2:3", + "4:5", + "5:4", "9:16", - "4:3", "3:4", - "match_input_image" + "4:3" ], - "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image_Edit.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Pro.Aspect_ratio" }, - "default": "match_input_image", + "default": "1:1", "title": "Aspect Ratio", "description": "Aspect ratio for the generated image" }, + { + "name": "image_prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Image Prompt", + "description": "Image to use with Flux Redux. This is used together with the text prompt to guide the generation towards the composition of the image_prompt. Must be jpeg, png, gif, or webp." + }, { "name": "output_format", "type": { @@ -9972,31 +9728,42 @@ "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image_Edit.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Pro.Output_format" }, "default": "webp", "title": "Output Format", - "description": "Format of the output images" + "description": "Format of the output images." }, { "name": "output_quality", "type": { "type": "int" }, - "default": 95, + "default": 80, "title": "Output Quality", "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", "min": 0.0, "max": 100.0 }, { - "name": "disable_safety_checker", + "name": "safety_tolerance", + "type": { + "type": "int" + }, + "default": 2, + "title": "Safety Tolerance", + "description": "Safety tolerance, 1 is most strict and 6 is most permissive", + "min": 1.0, + "max": 6.0 + }, + { + "name": "prompt_upsampling", "type": { "type": "bool" }, "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "title": "Prompt Upsampling", + "description": "Automatically modify the prompt for more creative generation" } ], "outputs": [ @@ -10008,134 +9775,161 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/29bbf095-fce5-4328-8117-9d79a41149c2/replicate-prediction-f28b7ty1.webp", - "created_at": "2025-08-18T18:09:48.916882Z", - "description": "Edit images using a prompt. This model extends Qwen-Image\u2019s unique text rendering capabilities to image editing tasks, enabling precise text editing", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/a36275e2-34d4-4b3d-83cd-f9aaf73c9386/https___replicate.delive_o40qpZl.webp", + "created_at": "2024-08-01T09:32:10.863297Z", + "description": "State-of-the-art image generation with top of the line prompt following, visual quality, image detail and output diversity.", "github_url": null, - "license_url": "https://github.com/QwenLM/Qwen-Image/blob/main/LICENSE", - "name": "qwen-image-edit", - "owner": "qwen", + "license_url": "https://replicate.com/black-forest-labs/flux-pro#license", + "name": "flux-pro", + "owner": "black-forest-labs", "is_official": true, - "paper_url": "https://arxiv.org/abs/2508.02324", - "run_count": 305878, - "url": "https://replicate.com/qwen/qwen-image-edit", + "paper_url": null, + "run_count": 13823006, + "url": "https://replicate.com/black-forest-labs/flux-pro", "visibility": "public", - "weights_url": "https://huggingface.co/Qwen/Qwen-Image-Edit" + "weights_url": null }, "basic_fields": [ "seed", - "image", - "prompt" + "steps", + "width" ] }, { - "title": "Recraft 20 B", - "description": "Affordable and fast images", + "title": "Flux Redux Dev", + "description": "Open-weight image variation model. Create new versions while preserving key elements of your original.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Recraft_20B", + "node_type": "replicate.image.generate.Flux_Redux_Dev", "properties": [ { - "name": "size", + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" + }, + { + "name": "guidance", + "type": { + "type": "float" + }, + "default": 3, + "title": "Guidance", + "description": "Guidance for generated image", + "min": 0.0, + "max": 10.0 + }, + { + "name": "megapixels", "type": { "type": "enum", "values": [ - "1024x1024", - "1365x1024", - "1024x1365", - "1536x1024", - "1024x1536", - "1820x1024", - "1024x1820", - "1024x2048", - "2048x1024", - "1434x1024", - "1024x1434", - "1024x1280", - "1280x1024", - "1024x1707", - "1707x1024" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B.Size" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Megapixels" }, - "default": "1024x1024", - "title": "Size", - "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { - "name": "style", + "name": "num_outputs", "type": { - "type": "enum", - "values": [ - "realistic_image", - "realistic_image/b_and_w", - "realistic_image/enterprise", - "realistic_image/hard_flash", - "realistic_image/hdr", - "realistic_image/motion_blur", - "realistic_image/natural_light", - "realistic_image/studio_portrait", - "digital_illustration", - "digital_illustration/2d_art_poster", - "digital_illustration/2d_art_poster_2", - "digital_illustration/3d", - "digital_illustration/80s", - "digital_illustration/engraving_color", - "digital_illustration/glow", - "digital_illustration/grain", - "digital_illustration/hand_drawn", - "digital_illustration/hand_drawn_outline", - "digital_illustration/handmade_3d", - "digital_illustration/infantile_sketch", - "digital_illustration/kawaii", - "digital_illustration/pixel_art", - "digital_illustration/psychedelic", - "digital_illustration/seamless", - "digital_illustration/voxel", - "digital_illustration/watercolor" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B.Style" + "type": "int" }, - "default": "realistic_image", - "title": "Style", - "description": "Style of the generated image." + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { - "name": "prompt", + "name": "redux_image", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Redux Image", + "description": "Input image to condition your output on. This replaces prompt for FLUX.1 Redux models" }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "Not set", "1:1", - "4:3", - "3:4", + "16:9", + "21:9", "3:2", "2:3", - "16:9", - "9:16", - "1:2", - "2:1", - "7:5", - "5:7", "4:5", "5:4", - "3:5", - "5:3" + "3:4", + "4:3", + "9:16", + "9:21" ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Aspect_ratio" }, - "default": "Not set", + "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image" + "description": "Aspect ratio for the generated image" + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Dev.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 28, + "title": "Num Inference Steps", + "description": "Number of denoising steps. Recommended range is 28-50", + "min": 1.0, + "max": 50.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -10147,261 +9941,150 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/2a808913-4306-43d4-b9da-db154e2faeab/recraft-cover-1.webp", - "created_at": "2024-12-12T13:39:48.189902Z", - "description": "Affordable and fast images", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/daff59ba-540d-4111-a969-9119ee814f26/redux-cover.jpg", + "created_at": "2024-11-20T22:29:45.623102Z", + "description": "Open-weight image variation model. Create new versions while preserving key elements of your original.", "github_url": null, - "license_url": "https://www.recraft.ai/terms", - "name": "recraft-20b", - "owner": "recraft-ai", + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-dev", + "name": "flux-redux-dev", + "owner": "black-forest-labs", "is_official": true, - "paper_url": "https://recraft.ai", - "run_count": 270710, - "url": "https://replicate.com/recraft-ai/recraft-20b", + "paper_url": null, + "run_count": 286582, + "url": "https://replicate.com/black-forest-labs/flux-redux-dev", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-Redux-dev" }, "basic_fields": [ - "size", - "style", - "prompt" + "seed", + "guidance", + "megapixels" ] }, { - "title": "Recraft 20 B SVG", - "description": "Affordable and fast vector images", + "title": "Flux Redux Schnell", + "description": "Fast, efficient image variation model for rapid iteration and experimentation.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Recraft_20B_SVG", + "node_type": "replicate.image.generate.Flux_Redux_Schnell", "properties": [ { - "name": "size", + "name": "seed", "type": { - "type": "enum", - "values": [ - "1024x1024", - "1365x1024", - "1024x1365", - "1536x1024", - "1024x1536", - "1820x1024", - "1024x1820", - "1024x2048", - "2048x1024", - "1434x1024", - "1024x1434", - "1024x1280", - "1280x1024", - "1024x1707", - "1707x1024" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Size" + "type": "int", + "optional": true }, - "default": "1024x1024", - "title": "Size", - "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "style", + "name": "megapixels", "type": { "type": "enum", "values": [ - "vector_illustration", - "vector_illustration/cartoon", - "vector_illustration/doodle_line_art", - "vector_illustration/engraving", - "vector_illustration/flat_2", - "vector_illustration/kawaii", - "vector_illustration/line_art", - "vector_illustration/line_circuit", - "vector_illustration/linocut", - "vector_illustration/seamless", - "icon", - "icon/broken_line", - "icon/colored_outline", - "icon/colored_shapes", - "icon/colored_shapes_gradient", - "icon/doodle_fill", - "icon/doodle_offset_fill", - "icon/offset_fill", - "icon/outline", - "icon/outline_gradient", - "icon/uneven_fill" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Style" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Megapixels" }, - "default": "vector_illustration", - "title": "Style", - "description": "Style of the generated image." + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { - "name": "prompt", + "name": "num_outputs", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 + }, + { + "name": "redux_image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Redux Image", + "description": "Input image to condition your output on. This replaces prompt for FLUX.1 Redux models" }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "Not set", "1:1", - "4:3", - "3:4", + "16:9", + "21:9", "3:2", "2:3", - "16:9", - "9:16", - "1:2", - "2:1", - "7:5", - "5:7", "4:5", "5:4", - "3:5", - "5:3" + "3:4", + "4:3", + "9:16", + "9:21" ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Aspect_ratio" }, - "default": "Not set", + "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image" - } - ], - "outputs": [ + "description": "Aspect ratio for the generated image" + }, { - "type": { - "type": "svg" - }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/4993bd89-af70-43da-be68-18cc43437746/recraft-svg-20b-cover.webp", - "created_at": "2024-12-12T13:39:54.180287Z", - "description": "Affordable and fast vector images", - "github_url": null, - "license_url": "https://www.recraft.ai/terms", - "name": "recraft-20b-svg", - "owner": "recraft-ai", - "is_official": true, - "paper_url": "https://recraft.ai/", - "run_count": 50212, - "url": "https://replicate.com/recraft-ai/recraft-20b-svg", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "size", - "style", - "prompt" - ] - }, - { - "title": "Recraft V 3", - "description": "Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, and images in a wide list of styles. As of today, it is SOTA in image generation, proven by the Text-to-Image Benchmark by Artificial Analysis", - "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Recraft_V3", - "properties": [ - { - "name": "size", + "name": "output_format", "type": { "type": "enum", "values": [ - "1024x1024", - "1365x1024", - "1024x1365", - "1536x1024", - "1024x1536", - "1820x1024", - "1024x1820", - "1024x2048", - "2048x1024", - "1434x1024", - "1024x1434", - "1024x1280", - "1280x1024", - "1024x1707", - "1707x1024" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3.Size" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Redux_Schnell.Output_format" }, - "default": "1024x1024", - "title": "Size", - "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "style", + "name": "output_quality", "type": { - "type": "enum", - "values": [ - "any", - "realistic_image", - "digital_illustration", - "digital_illustration/pixel_art", - "digital_illustration/hand_drawn", - "digital_illustration/grain", - "digital_illustration/infantile_sketch", - "digital_illustration/2d_art_poster", - "digital_illustration/handmade_3d", - "digital_illustration/hand_drawn_outline", - "digital_illustration/engraving_color", - "digital_illustration/2d_art_poster_2", - "realistic_image/b_and_w", - "realistic_image/hard_flash", - "realistic_image/hdr", - "realistic_image/natural_light", - "realistic_image/studio_portrait", - "realistic_image/enterprise", - "realistic_image/motion_blur" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3.Style" + "type": "int" }, - "default": "any", - "title": "Style", - "description": "Style of the generated image." + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 }, { - "name": "prompt", + "name": "num_inference_steps", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": 4, + "title": "Num Inference Steps", + "description": "Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", + "min": 1.0, + "max": 4.0 }, { - "name": "aspect_ratio", + "name": "disable_safety_checker", "type": { - "type": "enum", - "values": [ - "Not set", - "1:1", - "4:3", - "3:4", - "3:2", - "2:3", - "16:9", - "9:16", - "1:2", - "2:1", - "7:5", - "5:7", - "4:5", - "5:4", - "3:5", - "5:3" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3.Aspect_ratio" + "type": "bool" }, - "default": "Not set", - "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -10413,149 +10096,190 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a2b66c42-4633-443d-997f-cc987bca07c7/V3.webp", - "created_at": "2024-10-30T12:41:06.099624Z", - "description": "Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, and images in a wide list of styles. As of today, it is SOTA in image generation, proven by the Text-to-Image Benchmark by Artificial Analysis", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/828d2d38-465e-4a65-a979-1f661000e978/https___replicate.deliver_018es9x.jpg", + "created_at": "2024-11-20T22:30:41.021241Z", + "description": "Fast, efficient image variation model for rapid iteration and experimentation.", "github_url": null, - "license_url": "https://www.recraft.ai/terms", - "name": "recraft-v3", - "owner": "recraft-ai", + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-schnell", + "name": "flux-redux-schnell", + "owner": "black-forest-labs", "is_official": true, - "paper_url": "https://recraft.ai", - "run_count": 5772722, - "url": "https://replicate.com/recraft-ai/recraft-v3", + "paper_url": null, + "run_count": 67017, + "url": "https://replicate.com/black-forest-labs/flux-redux-schnell", "visibility": "public", "weights_url": null }, "basic_fields": [ - "size", - "style", - "prompt" + "seed", + "megapixels", + "num_outputs" ] }, { - "title": "Recraft V 3 SVG", - "description": "Recraft V3 SVG (code-named red_panda) is a text-to-image model with the ability to generate high quality SVG images including logotypes, and icons. The model supports a wide list of styles.", + "title": "Flux Schnell", + "description": "The fastest image generation model tailored for local development and personal use", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Recraft_V3_SVG", + "node_type": "replicate.image.generate.Flux_Schnell", "properties": [ { - "name": "size", + "name": "seed", "type": { - "type": "enum", - "values": [ - "1024x1024", - "1365x1024", - "1024x1365", - "1536x1024", - "1024x1536", - "1820x1024", - "1024x1820", - "1024x2048", - "2048x1024", - "1434x1024", - "1024x1434", - "1024x1280", - "1280x1024", - "1024x1707", - "1707x1024" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Size" + "type": "int", + "optional": true }, - "default": "1024x1024", - "title": "Size", - "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "style", + "name": "prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Prompt for generated image" + }, + { + "name": "go_fast", + "type": { + "type": "bool" + }, + "default": true, + "title": "Go Fast", + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." + }, + { + "name": "megapixels", "type": { "type": "enum", "values": [ - "any", - "engraving", - "line_art", - "line_circuit", - "linocut" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Style" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell.Megapixels" }, - "default": "any", - "title": "Style", - "description": "Style of the generated image." + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { - "name": "prompt", + "name": "num_outputs", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "Text prompt for image generation" + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "Not set", "1:1", - "4:3", - "3:4", + "16:9", + "21:9", "3:2", "2:3", - "16:9", - "9:16", - "1:2", - "2:1", - "7:5", - "5:7", "4:5", "5:4", - "3:5", - "5:3" + "3:4", + "4:3", + "9:16", + "9:21" ], - "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell.Aspect_ratio" }, - "default": "Not set", + "default": "1:1", "title": "Aspect Ratio", - "description": "Aspect ratio of the generated image" + "description": "Aspect ratio for the generated image" + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 4, + "title": "Num Inference Steps", + "description": "Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", + "min": 1.0, + "max": 4.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ { "type": { - "type": "svg" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/223c73a9-0347-4daa-9710-3878f95479e3/svg-cover.webp", - "created_at": "2024-10-30T13:59:33.006694Z", - "description": "Recraft V3 SVG (code-named red_panda) is a text-to-image model with the ability to generate high quality SVG images including logotypes, and icons. The model supports a wide list of styles.", - "github_url": null, - "license_url": "https://recraft.ai/terms", - "name": "recraft-v3-svg", - "owner": "recraft-ai", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/67c990ba-bb67-4355-822f-2bd8c42b2f0d/flux-schnell.webp", + "created_at": "2024-07-30T00:32:11.473557Z", + "description": "The fastest image generation model tailored for local development and personal use", + "github_url": "https://github.com/replicate/cog-flux", + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-schnell", + "name": "flux-schnell", + "owner": "black-forest-labs", "is_official": true, - "paper_url": "https://recraft.ai", - "run_count": 274401, - "url": "https://replicate.com/recraft-ai/recraft-v3-svg", + "paper_url": null, + "run_count": 595298042, + "url": "https://replicate.com/black-forest-labs/flux-schnell", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell" }, "basic_fields": [ - "size", - "style", - "prompt" + "seed", + "prompt", + "go_fast" ] }, { - "title": "SDXL Ad Inpaint", - "description": "Product advertising image generator using SDXL", + "title": "Flux Schnell Lora", + "description": "The fastest image generation model tailored for fine-tuned use", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.SDXL_Ad_Inpaint", + "node_type": "replicate.image.generate.Flux_Schnell_Lora", "properties": [ { "name": "seed", @@ -10565,22 +10289,7 @@ }, "default": null, "title": "Seed", - "description": "Empty or 0 for a random image" - }, - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Remove background from this image" + "description": "Random seed. Set for reproducible generation" }, { "name": "prompt", @@ -10590,156 +10299,131 @@ }, "default": null, "title": "Prompt", - "description": "Describe the new setting for your product" + "description": "Prompt for generated image" }, { - "name": "img_size", + "name": "go_fast", "type": { - "type": "enum", - "values": [ - "512, 2048", - "512, 1984", - "512, 1920", - "512, 1856", - "576, 1792", - "576, 1728", - "576, 1664", - "640, 1600", - "640, 1536", - "704, 1472", - "704, 1408", - "704, 1344", - "768, 1344", - "768, 1280", - "832, 1216", - "832, 1152", - "896, 1152", - "896, 1088", - "960, 1088", - "960, 1024", - "1024, 1024", - "1024, 960", - "1088, 960", - "1088, 896", - "1152, 896", - "1152, 832", - "1216, 832", - "1280, 768", - "1344, 768", - "1408, 704", - "1472, 704", - "1536, 640", - "1600, 640", - "1664, 576", - "1728, 576", - "1792, 576", - "1856, 512", - "1920, 512", - "1984, 512", - "2048, 512" - ], - "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Img_size" + "type": "bool" }, - "default": "1024, 1024", - "title": "Img Size", - "description": "Possible SDXL image sizes" + "default": true, + "title": "Go Fast", + "description": "Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16. Note that outputs will not be deterministic when this is enabled, even if you set a seed." }, { - "name": "apply_img", + "name": "lora_scale", "type": { - "type": "bool" + "type": "float" }, - "default": true, - "title": "Apply Img", - "description": "Applies the original product image to the final result" + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora.", + "min": -1.0, + "max": 3.0 }, { - "name": "scheduler", + "name": "megapixels", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "KarrasDPM", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM" + "1", + "0.25" ], - "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Megapixels" }, - "default": "K_EULER", - "title": "Scheduler", - "description": "scheduler" + "default": "1", + "title": "Megapixels", + "description": "Approximate number of megapixels for generated image" }, { - "name": "product_fill", + "name": "num_outputs", "type": { - "type": "enum", - "values": [ - "Original", - "80", - "70", - "60", - "50", - "40", - "30", - "20" - ], - "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Product_fill" + "type": "int" }, - "default": "Original", - "title": "Product Fill", - "description": "What percentage of the image width to fill with product" + "default": 1, + "title": "Num Outputs", + "description": "Number of outputs to generate", + "min": 1.0, + "max": 4.0 }, { - "name": "guidance_scale", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "1:1", + "16:9", + "21:9", + "3:2", + "2:3", + "4:5", + "5:4", + "3:4", + "4:3", + "9:16", + "9:21" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Aspect_ratio" }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Guidance Scale" + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio for the generated image" }, { - "name": "condition_scale", + "name": "lora_weights", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0.9, - "title": "Condition Scale", - "description": "controlnet conditioning scale for generalization", - "min": 0.3, - "max": 0.9 + "default": null, + "title": "Lora Weights", + "description": "Load LoRA weights. Supports Replicate models in the format / or //, HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars'" }, { - "name": "negative_prompt", + "name": "output_format", "type": { - "type": "str" + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Flux_Schnell_Lora.Output_format" }, - "default": "low quality, out of frame, illustration, 3d, sepia, painting, cartoons, sketch, watermark, text, Logo, advertisement", - "title": "Negative Prompt", - "description": "Describe what you do not want in your setting" + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "num_refine_steps", + "name": "output_quality", "type": { "type": "int" }, - "default": 10, - "title": "Num Refine Steps", - "description": "Number of steps to refine", + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", "min": 0.0, - "max": 40.0 + "max": 100.0 }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 40, + "default": 4, "title": "Num Inference Steps", - "description": "Inference Steps" + "description": "Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster.", + "min": 1.0, + "max": 4.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -10751,31 +10435,31 @@ } ], "the_model_info": { - "cover_image_url": "https://pbxt.replicate.delivery/ORbuWtoy0y6NI9f4DrJ2fxs92LgviBaOlzOVdYTr3pT8eKJjA/7-out.png", - "created_at": "2023-09-15T15:37:19.970710Z", - "description": "Product advertising image generator using SDXL", - "github_url": "https://github.com/CatacoLabs/cog-sdxl-ad-inpaint", - "license_url": "https://github.com/huggingface/hfapi/blob/master/LICENSE", - "name": "sdxl-ad-inpaint", - "owner": "catacolabs", - "is_official": false, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/98c9bf91-5bc0-4a2d-960f-8c3fcd69f1f3/https___replicate.deliver_a20JvIo.png", + "created_at": "2024-11-11T23:07:50.986160Z", + "description": "The fastest image generation model tailored for fine-tuned use", + "github_url": "https://github.com/replicate/cog-flux", + "license_url": "https://github.com/black-forest-labs/flux/blob/main/model_licenses/LICENSE-FLUX1-schnell", + "name": "flux-schnell-lora", + "owner": "black-forest-labs", + "is_official": true, "paper_url": null, - "run_count": 399798, - "url": "https://replicate.com/catacolabs/sdxl-ad-inpaint", + "run_count": 3635708, + "url": "https://replicate.com/black-forest-labs/flux-schnell-lora", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell" }, "basic_fields": [ "seed", - "image", - "prompt" + "prompt", + "go_fast" ] }, { - "title": "SDXL Controlnet", - "description": "SDXL ControlNet - Canny", + "title": "Hyper Flux 8 Step", + "description": "Hyper FLUX 8-step by ByteDance", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.SDXL_Controlnet", + "node_type": "replicate.image.generate.Hyper_Flux_8Step", "properties": [ { "name": "seed", @@ -10784,62 +10468,131 @@ }, "default": 0, "title": "Seed", - "description": "Random seed. Set to 0 to randomize the seed" + "description": "Random seed. Set for reproducible generation" }, { - "name": "image", + "name": "width", "type": { - "type": "image" + "type": "int" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 848, + "title": "Width", + "description": "Width of the generated image. Optional, only used when aspect_ratio=custom. Must be a multiple of 16 (if it's not, it will be rounded to nearest multiple of 16)", + "min": 256.0, + "max": 1440.0 + }, + { + "name": "height", + "type": { + "type": "int" }, - "title": "Image", - "description": "Input image for img2img or inpaint mode" + "default": 848, + "title": "Height", + "description": "Height of the generated image. Optional, only used when aspect_ratio=custom. Must be a multiple of 16 (if it's not, it will be rounded to nearest multiple of 16)", + "min": 256.0, + "max": 1440.0 }, { "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting", + "default": null, "title": "Prompt", - "description": "Input prompt" + "description": "Prompt for generated image" }, { - "name": "condition_scale", + "name": "num_outputs", + "type": { + "type": "int" + }, + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 + }, + { + "name": "aspect_ratio", + "type": { + "type": "enum", + "values": [ + "1:1", + "16:9", + "21:9", + "3:2", + "2:3", + "4:5", + "5:4", + "3:4", + "4:3", + "9:16", + "9:21", + "custom" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Aspect_ratio" + }, + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio for the generated image. The size will always be 1 megapixel, i.e. 1024x1024 if aspect ratio is 1:1. To use arbitrary width and height, set aspect ratio to 'custom'." + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Hyper_Flux_8Step.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "guidance_scale", "type": { "type": "float" }, - "default": 0.5, - "title": "Condition Scale", - "description": "controlnet conditioning scale for generalization", + "default": 3.5, + "title": "Guidance Scale", + "description": "Guidance scale for the diffusion process", "min": 0.0, - "max": 1.0 + "max": 10.0 }, { - "name": "negative_prompt", + "name": "output_quality", "type": { - "type": "str" + "type": "int" }, - "default": "low quality, bad quality, sketches", - "title": "Negative Prompt", - "description": "Input Negative Prompt" + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 50, + "default": 8, "title": "Num Inference Steps", - "description": "Number of denoising steps", + "description": "Number of inference steps", "min": 1.0, - "max": 500.0 + "max": 30.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)" } ], "outputs": [ @@ -10851,31 +10604,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/7edf6f87-bd0d-4a4f-9e11-d944bb07a3ea/output.png", - "created_at": "2023-08-14T07:15:37.417194Z", - "description": "SDXL ControlNet - Canny", - "github_url": "https://github.com/lucataco/cog-sdxl-controlnet", - "license_url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/LICENSE.md", - "name": "sdxl-controlnet", - "owner": "lucataco", + "cover_image_url": "https://replicate.delivery/yhqm/bKCAFhWFtbafL6Q31fEkfzVUKDUxY3GcdU1KGtR1AfRhcHOOB/out-0.webp", + "created_at": "2024-08-27T19:33:25.004679Z", + "description": "Hyper FLUX 8-step by ByteDance", + "github_url": "https://github.com/lucataco/cog-hyper-flux-8step", + "license_url": "https://huggingface.co/black-forest-labs/FLUX.1-dev/blob/main/LICENSE.md", + "name": "hyper-flux-8step", + "owner": "bytedance", "is_official": false, - "paper_url": null, - "run_count": 3245250, - "url": "https://replicate.com/lucataco/sdxl-controlnet", + "paper_url": "https://arxiv.org/abs/2404.13686", + "run_count": 20356749, + "url": "https://replicate.com/bytedance/hyper-flux-8step", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/ByteDance/Hyper-SD" }, "basic_fields": [ "seed", - "image", - "prompt" + "width", + "height" ] }, { - "title": "SDXL Emoji", - "description": "An SDXL fine-tune based on Apple Emojis", + "title": "Ideogram V 2", + "description": "An excellent image model with state of the art inpainting, prompt comprehension and text rendering", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.SDXL_Emoji", + "node_type": "replicate.image.generate.Ideogram_V2", "properties": [ { "name": "mask", @@ -10890,7 +10643,7 @@ "metadata": null }, "title": "Mask", - "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + "description": "A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size." }, { "name": "seed", @@ -10900,7 +10653,8 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "description": "Random seed. Set for reproducible generation", + "max": 2147483647.0 }, { "name": "image", @@ -10915,181 +10669,165 @@ "metadata": null }, "title": "Image", - "description": "Input image for img2img or inpaint mode" - }, - { - "name": "width", - "type": { - "type": "int" - }, - "default": 1024, - "title": "Width", - "description": "Width of output image" - }, - { - "name": "height", - "type": { - "type": "int" - }, - "default": 1024, - "title": "Height", - "description": "Height of output image" + "description": "An image file to use for inpainting. You must also use a mask." }, { "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "An astronaut riding a rainbow unicorn", + "default": null, "title": "Prompt", - "description": "Input prompt" + "description": "Text prompt for image generation" }, { - "name": "refine", + "name": "resolution", "type": { "type": "enum", "values": [ - "no_refiner", - "expert_ensemble_refiner", - "base_image_refiner" + "None", + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" ], - "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Emoji.Refine" + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Resolution" }, - "default": "no_refiner", - "title": "Refine", - "description": "Which refine style to use" + "default": "None", + "title": "Resolution", + "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." }, { - "name": "scheduler", + "name": "style_type", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "KarrasDPM", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM" + "None", + "Auto", + "General", + "Realistic", + "Design", + "Render 3D", + "Anime" ], - "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Emoji.Scheduler" - }, - "default": "K_EULER", - "title": "Scheduler", - "description": "scheduler" - }, - { - "name": "lora_scale", - "type": { - "type": "float" - }, - "default": 0.6, - "title": "Lora Scale", - "description": "LoRA additive scale. Only applicable on trained models.", - "min": 0.0, - "max": 1.0 - }, - { - "name": "num_outputs", - "type": { - "type": "int" - }, - "default": 1, - "title": "Num Outputs", - "description": "Number of images to output.", - "min": 1.0, - "max": 4.0 - }, - { - "name": "refine_steps", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Refine Steps", - "description": "For base_image_refiner, the number of steps to refine, defaults to num_inference_steps" - }, - { - "name": "guidance_scale", - "type": { - "type": "float" - }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 50.0 - }, - { - "name": "apply_watermark", - "type": { - "type": "bool" + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Style_type" }, - "default": true, - "title": "Apply Watermark", - "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + "default": "None", + "title": "Style Type", + "description": "The styles help define the specific aesthetic of the image you want to generate." }, { - "name": "high_noise_frac", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "1:1", + "16:9", + "9:16", + "4:3", + "3:4", + "3:2", + "2:3", + "16:10", + "10:16", + "3:1", + "1:3" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Aspect_ratio" }, - "default": 0.8, - "title": "High Noise Frac", - "description": "For expert_ensemble_refiner, the fraction of noise to use", - "min": 0.0, - "max": 1.0 + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." }, { "name": "negative_prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Negative Prompt", - "description": "Input Negative Prompt" - }, - { - "name": "prompt_strength", - "type": { - "type": "float" - }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", - "min": 0.0, - "max": 1.0 - }, - { - "name": "replicate_weights", "type": { "type": "str", "optional": true }, "default": null, - "title": "Replicate Weights", - "description": "Replicate LoRA weights to use. Leave blank to use the default weights." - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 50, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "title": "Negative Prompt", + "description": "Things you do not want to see in the generated image." }, { - "name": "disable_safety_checker", + "name": "magic_prompt_option", "type": { - "type": "bool" + "type": "enum", + "values": [ + "Auto", + "On", + "Off" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2.Magic_prompt_option" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" + "default": "Auto", + "title": "Magic Prompt Option", + "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." } ], "outputs": [ @@ -11101,19 +10839,19 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8629c6ba-b94c-4cbd-93aa-bda2b8ebecd9/F5Mg2KeXgAAkfre.jpg", - "created_at": "2023-09-04T09:18:11.028708Z", - "description": "An SDXL fine-tune based on Apple Emojis", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/71c982a3-27f0-42a6-ad6a-769f25097c08/replicate-prediction-s_VROPz1s.png", + "created_at": "2024-10-22T09:26:23.607119Z", + "description": "An excellent image model with state of the art inpainting, prompt comprehension and text rendering", "github_url": null, - "license_url": null, - "name": "sdxl-emoji", - "owner": "fofr", - "is_official": false, - "paper_url": null, - "run_count": 10580484, - "url": "https://replicate.com/fofr/sdxl-emoji", + "license_url": "https://about.ideogram.ai/legal/api-tos", + "name": "ideogram-v2", + "owner": "ideogram-ai", + "is_official": true, + "paper_url": "https://ideogram.ai/", + "run_count": 2628423, + "url": "https://replicate.com/ideogram-ai/ideogram-v2", "visibility": "public", - "weights_url": null + "weights_url": "https://ideogram.ai/" }, "basic_fields": [ "mask", @@ -11122,26 +10860,11 @@ ] }, { - "title": "SDXL Pixar", - "description": "Create Pixar poster easily with SDXL Pixar.", + "title": "Ideogram V 2A", + "description": "Like Ideogram v2, but faster and cheaper", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.SDXL_Pixar", + "node_type": "replicate.image.generate.Ideogram_V2A", "properties": [ - { - "name": "mask", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Mask", - "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." - }, { "name": "seed", "type": { @@ -11150,196 +10873,391 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" - }, - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Input image for img2img or inpaint mode" + "description": "Random seed. Set for reproducible generation", + "max": 2147483647.0 }, { - "name": "width", + "name": "prompt", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 1024, - "title": "Width", - "description": "Width of output image" + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "height", + "name": "resolution", "type": { - "type": "int" + "type": "enum", + "values": [ + "None", + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Resolution" }, - "default": 1024, - "title": "Height", - "description": "Height of output image" + "default": "None", + "title": "Resolution", + "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." }, { - "name": "prompt", + "name": "style_type", "type": { - "type": "str" + "type": "enum", + "values": [ + "None", + "Auto", + "General", + "Realistic", + "Design", + "Render 3D", + "Anime" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Style_type" }, - "default": "An astronaut riding a rainbow unicorn", - "title": "Prompt", - "description": "Input prompt" + "default": "None", + "title": "Style Type", + "description": "The styles help define the specific aesthetic of the image you want to generate." }, { - "name": "refine", + "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "no_refiner", - "expert_ensemble_refiner", - "base_image_refiner" + "1:1", + "16:9", + "9:16", + "4:3", + "3:4", + "3:2", + "2:3", + "16:10", + "10:16", + "3:1", + "1:3" ], - "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Pixar.Refine" + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Aspect_ratio" }, - "default": "no_refiner", - "title": "Refine", - "description": "Which refine style to use" + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." }, { - "name": "scheduler", + "name": "magic_prompt_option", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "KarrasDPM", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM" + "Auto", + "On", + "Off" ], - "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Pixar.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2A.Magic_prompt_option" }, - "default": "K_EULER", - "title": "Scheduler", - "description": "scheduler" - }, + "default": "Auto", + "title": "Magic Prompt Option", + "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." + } + ], + "outputs": [ { - "name": "lora_scale", "type": { - "type": "float" + "type": "image" }, - "default": 0.6, - "title": "Lora Scale", - "description": "LoRA additive scale. Only applicable on trained models.", - "min": 0.0, - "max": 1.0 - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/6e45e974-f381-435a-b9dd-23f3e6801c19/replicate-prediction-1yv65m0q.webp", + "created_at": "2025-02-27T11:03:37.256216Z", + "description": "Like Ideogram v2, but faster and cheaper", + "github_url": null, + "license_url": "https://ideogram.ai/legal/api-tos", + "name": "ideogram-v2a", + "owner": "ideogram-ai", + "is_official": true, + "paper_url": "https://ideogram.ai/", + "run_count": 2008308, + "url": "https://replicate.com/ideogram-ai/ideogram-v2a", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "seed", + "prompt", + "resolution" + ] + }, + { + "title": "Ideogram V 2 Turbo", + "description": "A fast image model with state of the art inpainting, prompt comprehension and text rendering.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Ideogram_V2_Turbo", + "properties": [ { - "name": "num_outputs", + "name": "mask", "type": { - "type": "int" + "type": "image" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of images to output.", - "min": 1.0, - "max": 4.0 + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size." }, { - "name": "refine_steps", + "name": "seed", "type": { "type": "int", "optional": true }, "default": null, - "title": "Refine Steps", - "description": "For base_image_refiner, the number of steps to refine, defaults to num_inference_steps" - }, - { - "name": "guidance_scale", + "title": "Seed", + "description": "Random seed. Set for reproducible generation", + "max": 2147483647.0 + }, + { + "name": "image", "type": { - "type": "float" + "type": "image" }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 50.0 + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "An image file to use for inpainting. You must also use a mask." }, { - "name": "apply_watermark", + "name": "prompt", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": true, - "title": "Apply Watermark", - "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "high_noise_frac", + "name": "resolution", "type": { - "type": "float" + "type": "enum", + "values": [ + "None", + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Resolution" }, - "default": 0.8, - "title": "High Noise Frac", - "description": "For expert_ensemble_refiner, the fraction of noise to use", - "min": 0.0, - "max": 1.0 + "default": "None", + "title": "Resolution", + "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." }, { - "name": "negative_prompt", + "name": "style_type", "type": { - "type": "str" + "type": "enum", + "values": [ + "None", + "Auto", + "General", + "Realistic", + "Design", + "Render 3D", + "Anime" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Style_type" }, - "default": "", - "title": "Negative Prompt", - "description": "Input Negative Prompt" + "default": "None", + "title": "Style Type", + "description": "The styles help define the specific aesthetic of the image you want to generate." }, { - "name": "prompt_strength", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "1:1", + "16:9", + "9:16", + "4:3", + "3:4", + "3:2", + "2:3", + "16:10", + "10:16", + "3:1", + "1:3" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Aspect_ratio" }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", - "min": 0.0, - "max": 1.0 + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." }, { - "name": "replicate_weights", + "name": "negative_prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Replicate Weights", - "description": "Replicate LoRA weights to use. Leave blank to use the default weights." - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 50, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "title": "Negative Prompt", + "description": "Things you do not want to see in the generated image." }, { - "name": "disable_safety_checker", + "name": "magic_prompt_option", "type": { - "type": "bool" + "type": "enum", + "values": [ + "Auto", + "On", + "Off" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V2_Turbo.Magic_prompt_option" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" + "default": "Auto", + "title": "Magic Prompt Option", + "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." } ], "outputs": [ @@ -11351,19 +11269,19 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/68125b17-60d7-4949-8984-0d50d736a623/out-0_5.png", - "created_at": "2023-10-21T10:32:49.911227Z", - "description": "Create Pixar poster easily with SDXL Pixar.", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8b1df940-d741-4446-beb2-0d72c66abb91/replicate-prediction-f_iX48w8f.png", + "created_at": "2024-10-22T09:29:41.547244Z", + "description": "A fast image model with state of the art inpainting, prompt comprehension and text rendering.", "github_url": null, - "license_url": null, - "name": "sdxl-pixar", - "owner": "swartype", - "is_official": false, - "paper_url": null, - "run_count": 655581, - "url": "https://replicate.com/swartype/sdxl-pixar", + "license_url": "https://about.ideogram.ai/legal/api-tos", + "name": "ideogram-v2-turbo", + "owner": "ideogram-ai", + "is_official": true, + "paper_url": "https://ideogram.ai/", + "run_count": 2864349, + "url": "https://replicate.com/ideogram-ai/ideogram-v2-turbo", "visibility": "public", - "weights_url": null + "weights_url": "https://ideogram.ai/" }, "basic_fields": [ "mask", @@ -11372,48 +11290,51 @@ ] }, { - "title": "Seedream 4", - "description": "Unified text-to-image generation and precise single-sentence editing at up to 4K resolution", + "title": "Ideogram V 3 Turbo", + "description": "Turbo is the fastest and cheapest Ideogram v3. v3 creates images with stunning realism, creative designs, and consistent styles", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.Seedream_4", + "node_type": "replicate.image.generate.Ideogram_V3_Turbo", "properties": [ { - "name": "size", + "name": "mask", "type": { - "type": "enum", - "values": [ - "1K", - "2K", - "4K", - "custom" - ], - "type_name": "nodetool.nodes.replicate.image.generate.Seedream_4.Size" + "type": "image" }, - "default": "2K", - "title": "Size", - "description": "Image resolution: 1K (1024px), 2K (2048px), 4K (4096px), or 'custom' for specific dimensions." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "A black and white image. Black pixels are inpainted, white pixels are preserved. The mask will be resized to match the image size." }, { - "name": "width", + "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 2048, - "title": "Width", - "description": "Custom image width (only used when size='custom'). Range: 1024-4096 pixels.", - "min": 1024.0, - "max": 4096.0 + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation", + "max": 2147483647.0 }, { - "name": "height", + "name": "image", "type": { - "type": "int" + "type": "image" }, - "default": 2048, - "title": "Height", - "description": "Custom image height (only used when size='custom'). Range: 1024-4096 pixels.", - "min": 1024.0, - "max": 4096.0 + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "An image file to use for inpainting. You must also use a mask." }, { "name": "prompt", @@ -11426,59 +11347,230 @@ "description": "Text prompt for image generation" }, { - "name": "max_images", + "name": "resolution", "type": { - "type": "int" + "type": "enum", + "values": [ + "None", + "512x1536", + "576x1408", + "576x1472", + "576x1536", + "640x1344", + "640x1408", + "640x1472", + "640x1536", + "704x1152", + "704x1216", + "704x1280", + "704x1344", + "704x1408", + "704x1472", + "736x1312", + "768x1088", + "768x1216", + "768x1280", + "768x1344", + "800x1280", + "832x960", + "832x1024", + "832x1088", + "832x1152", + "832x1216", + "832x1248", + "864x1152", + "896x960", + "896x1024", + "896x1088", + "896x1120", + "896x1152", + "960x832", + "960x896", + "960x1024", + "960x1088", + "1024x832", + "1024x896", + "1024x960", + "1024x1024", + "1088x768", + "1088x832", + "1088x896", + "1088x960", + "1120x896", + "1152x704", + "1152x832", + "1152x864", + "1152x896", + "1216x704", + "1216x768", + "1216x832", + "1248x832", + "1280x704", + "1280x768", + "1280x800", + "1312x736", + "1344x640", + "1344x704", + "1344x768", + "1408x576", + "1408x640", + "1408x704", + "1472x576", + "1472x640", + "1472x704", + "1536x512", + "1536x576", + "1536x640" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Resolution" }, - "default": 1, - "title": "Max Images", - "description": "Maximum number of images to generate when sequential_image_generation='auto'. Range: 1-15. Total images (input + generated) cannot exceed 15.", - "min": 1.0, - "max": 15.0 + "default": "None", + "title": "Resolution", + "description": "Resolution. Overrides aspect ratio. Ignored if an inpainting image is given." }, { - "name": "image_input", + "name": "style_type", "type": { - "type": "list" + "type": "enum", + "values": [ + "None", + "Auto", + "General", + "Realistic", + "Design" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_type" }, - "default": [], - "title": "Image Input", - "description": "Input image(s) for image-to-image generation. List of 1-10 images for single or multi-reference generation." + "default": "None", + "title": "Style Type", + "description": "The styles help define the specific aesthetic of the image you want to generate." }, { "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "match_input_image", - "1:1", - "4:3", - "3:4", - "16:9", + "1:3", + "3:1", + "1:2", + "2:1", "9:16", - "3:2", + "16:9", + "10:16", + "16:10", "2:3", - "21:9" + "3:2", + "3:4", + "4:3", + "4:5", + "5:4", + "1:1" ], - "type_name": "nodetool.nodes.replicate.image.generate.Seedream_4.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Aspect_ratio" }, - "default": "match_input_image", + "default": "1:1", "title": "Aspect Ratio", - "description": "Image aspect ratio. Only used when size is not 'custom'. Use 'match_input_image' to automatically match the input image's aspect ratio." + "description": "Aspect ratio. Ignored if a resolution or inpainting image is given." }, { - "name": "sequential_image_generation", + "name": "style_preset", "type": { "type": "enum", "values": [ - "disabled", - "auto" + "None", + "80s Illustration", + "90s Nostalgia", + "Abstract Organic", + "Analog Nostalgia", + "Art Brut", + "Art Deco", + "Art Poster", + "Aura", + "Avant Garde", + "Bauhaus", + "Blueprint", + "Blurry Motion", + "Bright Art", + "C4D Cartoon", + "Children's Book", + "Collage", + "Coloring Book I", + "Coloring Book II", + "Cubism", + "Dark Aura", + "Doodle", + "Double Exposure", + "Dramatic Cinema", + "Editorial", + "Emotional Minimal", + "Ethereal Party", + "Expired Film", + "Flat Art", + "Flat Vector", + "Forest Reverie", + "Geo Minimalist", + "Glass Prism", + "Golden Hour", + "Graffiti I", + "Graffiti II", + "Halftone Print", + "High Contrast", + "Hippie Era", + "Iconic", + "Japandi Fusion", + "Jazzy", + "Long Exposure", + "Magazine Editorial", + "Minimal Illustration", + "Mixed Media", + "Monochrome", + "Nightlife", + "Oil Painting", + "Old Cartoons", + "Paint Gesture", + "Pop Art", + "Retro Etching", + "Riviera Pop", + "Spotlight 80s", + "Stylized Red", + "Surreal Collage", + "Travel Poster", + "Vintage Geo", + "Vintage Poster", + "Watercolor", + "Weird", + "Woodblock Print" ], - "type_name": "nodetool.nodes.replicate.image.generate.Seedream_4.Sequential_image_generation" + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Style_preset" }, - "default": "disabled", - "title": "Sequential Image Generation", - "description": "Group image generation mode. 'disabled' generates a single image. 'auto' lets the model decide whether to generate multiple related images (e.g., story scenes, character variations)." + "default": "None", + "title": "Style Preset", + "description": "Apply a predefined artistic style to the generated image (V3 models only)." + }, + { + "name": "magic_prompt_option", + "type": { + "type": "enum", + "values": [ + "Auto", + "On", + "Off" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Ideogram_V3_Turbo.Magic_prompt_option" + }, + "default": "Auto", + "title": "Magic Prompt Option", + "description": "Magic Prompt will interpret your prompt and optimize it to maximize variety and quality of the images generated. You can also use it to write prompts in different languages." + }, + { + "name": "style_reference_images", + "type": { + "type": "list", + "optional": true + }, + "default": null, + "title": "Style Reference Images", + "description": "A list of images to use as style references." } ], "outputs": [ @@ -11490,31 +11582,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/55be80c2-0d5c-496b-8570-8cc101268fc4/tmp4lklv3vn.jpg", - "created_at": "2025-09-09T11:23:42.672377Z", - "description": "Unified text-to-image generation and precise single-sentence editing at up to 4K resolution", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b55e9f9e-5f43-4cf8-99c8-c33cc8486f23/tmp0s1h52uw-1.webp", + "created_at": "2025-04-30T13:21:08.936269Z", + "description": "Turbo is the fastest and cheapest Ideogram v3. v3 creates images with stunning realism, creative designs, and consistent styles", "github_url": null, - "license_url": null, - "name": "seedream-4", - "owner": "bytedance", + "license_url": "https://about.ideogram.ai/legal/api-tos", + "name": "ideogram-v3-turbo", + "owner": "ideogram-ai", "is_official": true, - "paper_url": null, - "run_count": 329053, - "url": "https://replicate.com/bytedance/seedream-4", + "paper_url": "https://about.ideogram.ai/3.0", + "run_count": 6348164, + "url": "https://replicate.com/ideogram-ai/ideogram-v3-turbo", "visibility": "public", "weights_url": null }, "basic_fields": [ - "size", - "width", - "height" + "mask", + "seed", + "image" ] }, { - "title": "Stable Diffusion", - "description": "A latent text-to-image diffusion model capable of generating photo-realistic images given any text input", + "title": "Illusions", + "description": "Create illusions with img2img and masking support", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StableDiffusion", + "node_type": "replicate.image.generate.Illusions", "properties": [ { "name": "seed", @@ -11523,91 +11615,61 @@ "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "title": "Seed" + }, + { + "name": "image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Optional img2img" }, { "name": "width", "type": { - "type": "enum", - "values": [ - 64, - 128, - 192, - 256, - 320, - 384, - 448, - 512, - 576, - 640, - 704, - 768, - 832, - 896, - 960, - 1024 - ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion.Width" + "type": "int" }, "default": 768, - "title": "Width", - "description": "Width of generated image in pixels. Needs to be a multiple of 64" + "title": "Width" }, { "name": "height", "type": { - "type": "enum", - "values": [ - 64, - 128, - 192, - 256, - 320, - 384, - 448, - 512, - 576, - 640, - 704, - 768, - 832, - 896, - 960, - 1024 - ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion.Height" + "type": "int" }, "default": 768, - "title": "Height", - "description": "Height of generated image in pixels. Needs to be a multiple of 64" + "title": "Height" }, { "name": "prompt", "type": { "type": "str" }, - "default": "a vision of paradise. unreal engine", - "title": "Prompt", - "description": "Input prompt" + "default": "a painting of a 19th century town", + "title": "Prompt" }, { - "name": "scheduler", + "name": "mask_image", "type": { - "type": "enum", - "values": [ - "DDIM", - "K_EULER", - "DPMSolverMultistep", - "K_EULER_ANCESTRAL", - "PNDM", - "KLMS" - ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion.Scheduler" + "type": "image" }, - "default": "DPMSolverMultistep", - "title": "Scheduler", - "description": "Choose a scheduler." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask Image", + "description": "Optional mask for inpainting" }, { "name": "num_outputs", @@ -11616,9 +11678,31 @@ }, "default": 1, "title": "Num Outputs", - "description": "Number of images to generate.", - "min": 1.0, - "max": 4.0 + "description": "Number of outputs" + }, + { + "name": "control_image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Control Image", + "description": "Control image" + }, + { + "name": "controlnet_end", + "type": { + "type": "float" + }, + "default": 1.0, + "title": "Controlnet End", + "description": "When controlnet conditioning ends" }, { "name": "guidance_scale", @@ -11627,30 +11711,67 @@ }, "default": 7.5, "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 20.0 + "description": "Scale for classifier-free guidance" }, { "name": "negative_prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "ugly, disfigured, low quality, blurry, nsfw", "title": "Negative Prompt", - "description": "Specify things to not see in the output" + "description": "The negative prompt to guide image generation." + }, + { + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image" + }, + { + "name": "sizing_strategy", + "type": { + "type": "enum", + "values": [ + "width/height", + "input_image", + "control_image" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Illusions.Sizing_strategy" + }, + "default": "width/height", + "title": "Sizing Strategy", + "description": "Decide how to resize images \u2013 use width/height, resize based on input image or control image" + }, + { + "name": "controlnet_start", + "type": { + "type": "float" + }, + "default": 0.0, + "title": "Controlnet Start", + "description": "When controlnet conditioning starts" }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 50, + "default": 40, "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "description": "Number of diffusion steps" + }, + { + "name": "controlnet_conditioning_scale", + "type": { + "type": "float" + }, + "default": 0.75, + "title": "Controlnet Conditioning Scale", + "description": "How strong the controlnet conditioning is" } ], "outputs": [ @@ -11662,145 +11783,87 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/710f5e9f-9561-4e4f-9d1e-614205f62597/stable-diffusion.webp", - "created_at": "2022-08-22T21:37:08.396208Z", - "description": "A latent text-to-image diffusion model capable of generating photo-realistic images given any text input", - "github_url": "https://github.com/replicate/cog-stable-diffusion", - "license_url": "https://huggingface.co/spaces/CompVis/stable-diffusion-license", - "name": "stable-diffusion", - "owner": "stability-ai", + "cover_image_url": "https://replicate.delivery/xezq/iA3MUV1f533LXqi4sHVlAerJhr03uES9OlBHAHrqaeq92ArnA/output-0.png", + "created_at": "2023-11-03T17:24:31.993569Z", + "description": "Create illusions with img2img and masking support", + "github_url": "https://github.com/fofr/cog-illusion", + "license_url": null, + "name": "illusions", + "owner": "fofr", "is_official": false, - "paper_url": "https://arxiv.org/abs/2112.10752", - "run_count": 110689290, - "url": "https://replicate.com/stability-ai/stable-diffusion", + "paper_url": null, + "run_count": 61563, + "url": "https://replicate.com/fofr/illusions", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", - "width", - "height" + "image", + "width" ] }, { - "title": "Stable Diffusion 3 5 Large", - "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, thanks to Query-Key Normalization.", + "title": "Imagen 3", + "description": "Google's highest quality text-to-image model, capable of generating images with detail, rich lighting and beauty", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StableDiffusion3_5_Large", + "node_type": "replicate.image.generate.Imagen_3", "properties": [ { - "name": "cfg", - "type": { - "type": "float" - }, - "default": 3.5, - "title": "Cfg", - "description": "The guidance scale tells the model how similar the output should be to the prompt.", - "min": 0.0, - "max": 20.0 - }, - { - "name": "seed", + "name": "prompt", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Set a seed for reproducibility. Random by default." + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Input image for image to image mode. The aspect ratio of your output will match this image." - }, - { - "name": "steps", - "type": { - "type": "int" - }, - "default": 35, - "title": "Steps", - "description": "Number of steps to run the sampler for.", - "min": 1.0, - "max": 50.0 - }, - { - "name": "prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Prompt", - "description": "Text prompt for image generation" - }, - { - "name": "aspect_ratio", + "name": "aspect_ratio", "type": { "type": "enum", "values": [ "1:1", + "9:16", "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", "3:4", - "4:3", - "9:16", - "9:21" + "4:3" ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Imagen_3.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "The aspect ratio of your output image. This value is ignored if you are using an input image." + "description": "Aspect ratio of the generated image" }, { "name": "output_format", "type": { "type": "enum", "values": [ - "webp", "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Imagen_3.Output_format" }, - "default": "webp", + "default": "jpg", "title": "Output Format", - "description": "Format of the output images" - }, - { - "name": "output_quality", - "type": { - "type": "int" - }, - "default": 90, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - "min": 0.0, - "max": 100.0 + "description": "Format of the output image" }, { - "name": "prompt_strength", + "name": "safety_filter_level", "type": { - "type": "float" + "type": "enum", + "values": [ + "block_low_and_above", + "block_medium_and_above", + "block_only_high" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Imagen_3.Safety_filter_level" }, - "default": 0.85, - "title": "Prompt Strength", - "description": "Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image." + "default": "block_only_high", + "title": "Safety Filter Level", + "description": "block_low_and_above is strictest, block_medium_and_above blocks some prompts, block_only_high is most permissive but some prompts will still be blocked" } ], "outputs": [ @@ -11812,85 +11875,39 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4b03d178-eaf3-4458-a752-dbc76098396b/replicate-prediction-_ycGb1jN.webp", - "created_at": "2024-10-21T20:53:39.435334Z", - "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, thanks to Query-Key Normalization.", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/6e164365-9cab-422b-bf05-76d127abe3a2/replicate-prediction-_OX51bG7.webp", + "created_at": "2025-02-05T12:56:07.610594Z", + "description": "Google's highest quality text-to-image model, capable of generating images with detail, rich lighting and beauty", "github_url": null, - "license_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large/blob/main/LICENSE.md", - "name": "stable-diffusion-3.5-large", - "owner": "stability-ai", + "license_url": null, + "name": "imagen-3", + "owner": "google", "is_official": true, - "paper_url": "https://arxiv.org/abs/2403.03206", - "run_count": 1641628, - "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-large", + "paper_url": "https://deepmind.google/technologies/imagen-3/", + "run_count": 1913817, + "url": "https://replicate.com/google/imagen-3", "visibility": "public", - "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large" + "weights_url": null }, "basic_fields": [ - "cfg", - "seed", - "image" + "prompt", + "aspect_ratio", + "output_format" ] }, { - "title": "Stable Diffusion 3 5 Large Turbo", - "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, with a focus on fewer inference steps", + "title": "Imagen 4 Fast", + "description": "Use this fast version of Imagen 4 when speed and cost are more important than quality", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StableDiffusion3_5_Large_Turbo", + "node_type": "replicate.image.generate.Imagen_4_Fast", "properties": [ { - "name": "cfg", - "type": { - "type": "float" - }, - "default": 1, - "title": "Cfg", - "description": "The guidance scale tells the model how similar the output should be to the prompt.", - "min": 0.0, - "max": 20.0 - }, - { - "name": "seed", + "name": "prompt", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Set a seed for reproducibility. Random by default." - }, - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Input image for image to image mode. The aspect ratio of your output will match this image." - }, - { - "name": "steps", - "type": { - "type": "int" - }, - "default": 4, - "title": "Steps", - "description": "Number of steps to run the sampler for.", - "min": 1.0, - "max": 10.0 - }, - { - "name": "prompt", - "type": { - "type": "str" - }, - "default": "", "title": "Prompt", "description": "Text prompt for image generation" }, @@ -11900,57 +11917,45 @@ "type": "enum", "values": [ "1:1", + "9:16", "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", "3:4", - "4:3", - "9:16", - "9:21" + "4:3" ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Aspect_ratio" }, "default": "1:1", "title": "Aspect Ratio", - "description": "The aspect ratio of your output image. This value is ignored if you are using an input image." + "description": "Aspect ratio of the generated image" }, { "name": "output_format", "type": { "type": "enum", "values": [ - "webp", "jpg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Output_format" }, - "default": "webp", + "default": "jpg", "title": "Output Format", - "description": "Format of the output images" - }, - { - "name": "output_quality", - "type": { - "type": "int" - }, - "default": 90, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - "min": 0.0, - "max": 100.0 + "description": "Format of the output image" }, { - "name": "prompt_strength", + "name": "safety_filter_level", "type": { - "type": "float" + "type": "enum", + "values": [ + "block_low_and_above", + "block_medium_and_above", + "block_only_high" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Imagen_4_Fast.Safety_filter_level" }, - "default": 0.85, - "title": "Prompt Strength", - "description": "Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image." + "default": "block_only_high", + "title": "Safety Filter Level", + "description": "block_low_and_above is strictest, block_medium_and_above blocks some prompts, block_only_high is most permissive but some prompts will still be blocked" } ], "outputs": [ @@ -11962,43 +11967,32 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/9e1b4258-22bd-4a59-ba4a-ecac220a8a9b/replicate-prediction-_WU4XtaV.webp", - "created_at": "2024-10-22T12:09:38.705615Z", - "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, with a focus on fewer inference steps", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/73c5af65-f578-4113-b62c-2a56971cff2f/replicate-prediction-trmpwr78.webp", + "created_at": "2025-06-12T09:24:39.272587Z", + "description": "Use this fast version of Imagen 4 when speed and cost are more important than quality", "github_url": null, - "license_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large-turbo/blob/main/LICENSE.md", - "name": "stable-diffusion-3.5-large-turbo", - "owner": "stability-ai", + "license_url": null, + "name": "imagen-4-fast", + "owner": "google", "is_official": true, - "paper_url": "https://arxiv.org/abs/2403.03206", - "run_count": 785570, - "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-large-turbo", + "paper_url": null, + "run_count": 3681652, + "url": "https://replicate.com/google/imagen-4-fast", "visibility": "public", - "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large-turbo" + "weights_url": null }, "basic_fields": [ - "cfg", - "seed", - "image" + "prompt", + "aspect_ratio", + "output_format" ] }, { - "title": "Stable Diffusion 3 5 Medium", - "description": "2.5 billion parameter image model with improved MMDiT-X architecture", + "title": "Kandinsky", + "description": "multilingual text2image latent diffusion model", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StableDiffusion3_5_Medium", + "node_type": "replicate.image.generate.Kandinsky", "properties": [ - { - "name": "cfg", - "type": { - "type": "float" - }, - "default": 5, - "title": "Cfg", - "description": "The guidance scale tells the model how similar the output should be to the prompt.", - "min": 0.0, - "max": 20.0 - }, { "name": "seed", "type": { @@ -12007,65 +12001,77 @@ }, "default": null, "title": "Seed", - "description": "Set a seed for reproducibility. Random by default." + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "image", + "name": "width", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + 384, + 512, + 576, + 640, + 704, + 768, + 960, + 1024, + 1152, + 1280, + 1536, + 1792, + 2048 + ], + "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky.Width" }, - "title": "Image", - "description": "Input image for image to image mode. The aspect ratio of your output will match this image." + "default": 512, + "title": "Width", + "description": "Width of output image. Lower the setting if hits memory limits." }, { - "name": "steps", + "name": "height", "type": { - "type": "int" + "type": "enum", + "values": [ + 384, + 512, + 576, + 640, + 704, + 768, + 960, + 1024, + 1152, + 1280, + 1536, + 1792, + 2048 + ], + "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky.Height" }, - "default": 40, - "title": "Steps", - "description": "Number of steps to run the sampler for.", - "min": 1.0, - "max": 50.0 + "default": 512, + "title": "Height", + "description": "Height of output image. Lower the setting if hits memory limits." }, { "name": "prompt", "type": { "type": "str" }, - "default": "", + "default": "A moss covered astronaut with a black background", "title": "Prompt", - "description": "Text prompt for image generation" + "description": "Input prompt" }, { - "name": "aspect_ratio", + "name": "num_outputs", "type": { - "type": "enum", - "values": [ - "1:1", - "16:9", - "21:9", - "3:2", - "2:3", - "4:5", - "5:4", - "3:4", - "4:3", - "9:16", - "9:21" - ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Aspect_ratio" + "type": "int" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "The aspect ratio of your output image. This value is ignored if you are using an input image." + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 }, { "name": "output_format", @@ -12073,34 +12079,46 @@ "type": "enum", "values": [ "webp", - "jpg", + "jpeg", "png" ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky.Output_format" }, "default": "webp", "title": "Output Format", - "description": "Format of the output images" + "description": "Output image format" }, { - "name": "output_quality", + "name": "negative_prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Negative Prompt", + "description": "Specify things to not see in the output" + }, + { + "name": "num_inference_steps", "type": { "type": "int" }, - "default": 90, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - "min": 0.0, - "max": 100.0 + "default": 75, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 }, { - "name": "prompt_strength", + "name": "num_inference_steps_prior", "type": { - "type": "float" + "type": "int" }, - "default": 0.85, - "title": "Prompt Strength", - "description": "Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image." + "default": 25, + "title": "Num Inference Steps Prior", + "description": "Number of denoising steps for priors", + "min": 1.0, + "max": 500.0 } ], "outputs": [ @@ -12112,47 +12130,32 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/d65fc397-135b-4976-a84d-12980ab2c0bc/replicate-prediction-_4kWPYZu.webp", - "created_at": "2024-10-29T12:55:45.899504Z", - "description": "2.5 billion parameter image model with improved MMDiT-X architecture", - "github_url": null, - "license_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-medium/blob/main/LICENSE.md", - "name": "stable-diffusion-3.5-medium", - "owner": "stability-ai", - "is_official": true, - "paper_url": "https://arxiv.org/abs/2403.03206", - "run_count": 66622, - "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-medium", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/618e68d3-fba3-4fd0-a060-cdd46b2ab7cf/out-0_2.jpg", + "created_at": "2023-07-12T21:53:29.439515Z", + "description": "multilingual text2image latent diffusion model", + "github_url": "https://github.com/chenxwh/Kandinsky-2/tree/v2.2", + "license_url": "https://github.com/ai-forever/Kandinsky-2/blob/main/license", + "name": "kandinsky-2.2", + "owner": "ai-forever", + "is_official": false, + "paper_url": null, + "run_count": 10028886, + "url": "https://replicate.com/ai-forever/kandinsky-2.2", "visibility": "public", - "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-medium" + "weights_url": null }, "basic_fields": [ - "cfg", "seed", - "image" + "width", + "height" ] }, { - "title": "Stable Diffusion Inpainting", - "description": "Fill in masked parts of images with Stable Diffusion", + "title": "Kandinsky 2 2", + "description": "multilingual text2image latent diffusion model", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StableDiffusionInpainting", + "node_type": "replicate.image.generate.Kandinsky_2_2", "properties": [ - { - "name": "mask", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Mask", - "description": "Black and white image to use as mask for inpainting over the image provided. White pixels are inpainted and black pixels are preserved." - }, { "name": "seed", "type": { @@ -12163,104 +12166,65 @@ "title": "Seed", "description": "Random seed. Leave blank to randomize the seed" }, - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Initial image to generate variations of. Will be resized to height x width" - }, { "name": "width", "type": { "type": "enum", "values": [ - 64, - 128, - 192, - 256, - 320, 384, - 448, 512, 576, 640, 704, 768, - 832, - 896, 960, - 1024 + 1024, + 1152, + 1280, + 1536, + 1792, + 2048 ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Width" + "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Width" }, "default": 512, "title": "Width", - "description": "Width of generated image in pixels. Needs to be a multiple of 64" + "description": "Width of output image. Lower the setting if hits memory limits." }, { "name": "height", "type": { "type": "enum", "values": [ - 64, - 128, - 192, - 256, - 320, 384, - 448, 512, 576, 640, 704, 768, - 832, - 896, 960, - 1024 + 1024, + 1152, + 1280, + 1536, + 1792, + 2048 ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Height" + "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Height" }, "default": 512, "title": "Height", - "description": "Height of generated image in pixels. Needs to be a multiple of 64" + "description": "Height of output image. Lower the setting if hits memory limits." }, { "name": "prompt", "type": { "type": "str" }, - "default": "a vision of paradise. unreal engine", + "default": "A moss covered astronaut with a black background", "title": "Prompt", "description": "Input prompt" }, - { - "name": "scheduler", - "type": { - "type": "enum", - "values": [ - "DDIM", - "K_EULER", - "DPMSolverMultistep", - "K_EULER_ANCESTRAL", - "PNDM", - "KLMS" - ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Scheduler" - }, - "default": "DPMSolverMultistep", - "title": "Scheduler", - "description": "Choose a scheduler." - }, { "name": "num_outputs", "type": { @@ -12268,20 +12232,24 @@ }, "default": 1, "title": "Num Outputs", - "description": "Number of images to generate.", + "description": "Number of images to output.", "min": 1.0, "max": 4.0 }, { - "name": "guidance_scale", + "name": "output_format", "type": { - "type": "float" + "type": "enum", + "values": [ + "webp", + "jpeg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Kandinsky_2_2.Output_format" }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 20.0 + "default": "webp", + "title": "Output Format", + "description": "Output image format" }, { "name": "negative_prompt", @@ -12298,20 +12266,22 @@ "type": { "type": "int" }, - "default": 50, + "default": 75, "title": "Num Inference Steps", "description": "Number of denoising steps", "min": 1.0, "max": 500.0 }, { - "name": "disable_safety_checker", + "name": "num_inference_steps_prior", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)" + "default": 25, + "title": "Num Inference Steps Prior", + "description": "Number of denoising steps for priors", + "min": 1.0, + "max": 500.0 } ], "outputs": [ @@ -12323,245 +12293,263 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/xs0pPOUM6HKmPlJJBXqKfE1YsiMzgNsCuGedlX0VqvPYifLgA/out-0.png", - "created_at": "2022-12-02T17:40:01.152489Z", - "description": "Fill in masked parts of images with Stable Diffusion", - "github_url": "https://github.com/replicate/cog-stable-diffusion-inpainting", - "license_url": "https://huggingface.co/stabilityai/stable-diffusion-2/blob/main/LICENSE-MODEL", - "name": "stable-diffusion-inpainting", - "owner": "stability-ai", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/618e68d3-fba3-4fd0-a060-cdd46b2ab7cf/out-0_2.jpg", + "created_at": "2023-07-12T21:53:29.439515Z", + "description": "multilingual text2image latent diffusion model", + "github_url": "https://github.com/chenxwh/Kandinsky-2/tree/v2.2", + "license_url": "https://github.com/ai-forever/Kandinsky-2/blob/main/license", + "name": "kandinsky-2.2", + "owner": "ai-forever", "is_official": false, "paper_url": null, - "run_count": 20607133, - "url": "https://replicate.com/stability-ai/stable-diffusion-inpainting", + "run_count": 10028886, + "url": "https://replicate.com/ai-forever/kandinsky-2.2", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mask", "seed", - "image" + "width", + "height" ] }, { - "title": "Stable Diffusion XL", - "description": "A text-to-image generative AI model that creates beautiful images", + "title": "Minimax Image 01", + "description": "Minimax's first image model, with character reference support", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StableDiffusionXL", + "node_type": "replicate.image.generate.Minimax_Image_01", "properties": [ { - "name": "mask", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Mask", - "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." - }, - { - "name": "seed", + "name": "prompt", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "title": "Prompt", + "description": "Text prompt for generation" }, { - "name": "image", + "name": "aspect_ratio", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + "1:1", + "16:9", + "4:3", + "3:2", + "2:3", + "3:4", + "9:16", + "21:9" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Minimax_Image_01.Aspect_ratio" }, - "title": "Image", - "description": "Input image for img2img or inpaint mode" + "default": "1:1", + "title": "Aspect Ratio", + "description": "Image aspect ratio" }, { - "name": "width", + "name": "number_of_images", "type": { "type": "int" }, - "default": 1024, - "title": "Width", - "description": "Width of output image" + "default": 1, + "title": "Number Of Images", + "description": "Number of images to generate", + "min": 1.0, + "max": 9.0 }, { - "name": "height", + "name": "prompt_optimizer", "type": { - "type": "int" + "type": "bool" }, - "default": 1024, - "title": "Height", - "description": "Height of output image" + "default": true, + "title": "Prompt Optimizer", + "description": "Use prompt optimizer" }, { - "name": "prompt", + "name": "subject_reference", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "An astronaut riding a rainbow unicorn", - "title": "Prompt", - "description": "Input prompt" + "default": null, + "title": "Subject Reference", + "description": "An optional character reference image (human face) to use as the subject in the generated image(s)." + } + ], + "outputs": [ + { + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/926994db-2c8e-4b7d-934f-2f86b2480e55/43b05178-4b2a-42d9-9130-4fedae65.webp", + "created_at": "2025-03-03T14:05:29.816962Z", + "description": "Minimax's first image model, with character reference support", + "github_url": null, + "license_url": null, + "name": "image-01", + "owner": "minimax", + "is_official": true, + "paper_url": null, + "run_count": 2456660, + "url": "https://replicate.com/minimax/image-01", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "prompt", + "aspect_ratio", + "number_of_images" + ] + }, + { + "title": "Photon Flash", + "description": "Accelerated variant of Photon prioritizing speed while maintaining quality", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Photon_Flash", + "properties": [ + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "refine", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "no_refiner", - "expert_ensemble_refiner", - "base_image_refiner" - ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionXL.Refine" + "type": "str", + "optional": true }, - "default": "no_refiner", - "title": "Refine", - "description": "Which refine style to use" + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "scheduler", + "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "KarrasDPM", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM" + "1:1", + "3:4", + "4:3", + "9:16", + "16:9", + "9:21", + "21:9" ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionXL.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.Photon_Flash.Aspect_ratio" }, - "default": "K_EULER", - "title": "Scheduler", - "description": "scheduler" + "default": "16:9", + "title": "Aspect Ratio", + "description": "Aspect ratio of the generated image" }, { - "name": "lora_scale", + "name": "image_reference", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0.6, - "title": "Lora Scale", - "description": "LoRA additive scale. Only applicable on trained models.", - "min": 0.0, - "max": 1.0 + "default": null, + "title": "Image Reference", + "description": "Reference image to guide generation" }, { - "name": "num_outputs", + "name": "style_reference", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 1, - "title": "Num Outputs", - "description": "Number of images to output.", - "min": 1.0, - "max": 4.0 + "default": null, + "title": "Style Reference", + "description": "Style reference image to guide generation" }, { - "name": "refine_steps", + "name": "character_reference", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Refine Steps", - "description": "For base_image_refiner, the number of steps to refine, defaults to num_inference_steps" + "title": "Character Reference", + "description": "Character reference image to guide generation" }, { - "name": "guidance_scale", + "name": "image_reference_url", "type": { - "type": "float" + "type": "image" }, - "default": 7.5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 50.0 - }, - { - "name": "apply_watermark", - "type": { - "type": "bool" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": true, - "title": "Apply Watermark", - "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + "title": "Image Reference Url", + "description": "Deprecated: Use image_reference instead" }, { - "name": "high_noise_frac", + "name": "style_reference_url", "type": { - "type": "float" + "type": "image" }, - "default": 0.8, - "title": "High Noise Frac", - "description": "For expert_ensemble_refiner, the fraction of noise to use", - "min": 0.0, - "max": 1.0 - }, - { - "name": "negative_prompt", - "type": { - "type": "str" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": "", - "title": "Negative Prompt", - "description": "Input Negative Prompt" + "title": "Style Reference Url", + "description": "Deprecated: Use style_reference instead" }, { - "name": "prompt_strength", + "name": "image_reference_weight", "type": { "type": "float" }, - "default": 0.8, - "title": "Prompt Strength", - "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "default": 0.85, + "title": "Image Reference Weight", + "description": "Weight of the reference image. Larger values will make the reference image have a stronger influence on the generated image.", "min": 0.0, "max": 1.0 }, { - "name": "replicate_weights", + "name": "style_reference_weight", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Replicate Weights", - "description": "Replicate LoRA weights to use. Leave blank to use the default weights." + "default": 0.85, + "title": "Style Reference Weight", + "description": "Weight of the style reference image", + "min": 0.0, + "max": 1.0 }, { - "name": "num_inference_steps", + "name": "character_reference_url", "type": { - "type": "int" + "type": "image" }, - "default": 50, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)" + "title": "Character Reference Url", + "description": "Deprecated: Use character_reference instead" } ], "outputs": [ @@ -12573,41 +12561,67 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/9065f9e3-40da-4742-8cb8-adfa8e794c0d/sdxl_cover.jpg", - "created_at": "2023-07-26T17:53:09.882651Z", - "description": "A text-to-image generative AI model that creates beautiful images", - "github_url": "https://github.com/replicate/cog-sdxl", - "license_url": "https://github.com/Stability-AI/generative-models/blob/main/model_licenses/LICENSE-SDXL1.0", - "name": "sdxl", - "owner": "stability-ai", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2307.01952", - "run_count": 81922282, - "url": "https://replicate.com/stability-ai/sdxl", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8459f7e9-7445-4046-82aa-917a0f561b80/tmpyf9dx02r.webp", + "created_at": "2024-12-05T15:18:04.364421Z", + "description": "Accelerated variant of Photon prioritizing speed while maintaining quality", + "github_url": null, + "license_url": "https://lumalabs.ai/dream-machine/api/terms", + "name": "photon-flash", + "owner": "luma", + "is_official": true, + "paper_url": null, + "run_count": 241790, + "url": "https://replicate.com/luma/photon-flash", "visibility": "public", - "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0" + "weights_url": null }, "basic_fields": [ - "mask", "seed", - "image" + "prompt", + "aspect_ratio" ] }, { - "title": "Stable Diffusion XLLightning", - "description": "SDXL-Lightning by ByteDance: a fast text-to-image model that makes high-quality images in 4 steps", + "title": "Playground V 2", + "description": "Playground v2.5 is the state-of-the-art open-source model in aesthetic quality", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StableDiffusionXLLightning", + "node_type": "replicate.image.generate.PlaygroundV2", "properties": [ + { + "name": "mask", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Mask", + "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + }, { "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 0, + "default": null, "title": "Seed", "description": "Random seed. Leave blank to randomize the seed" }, + { + "name": "image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image for img2img or inpaint mode" + }, { "name": "width", "type": { @@ -12615,9 +12629,9 @@ }, "default": 1024, "title": "Width", - "description": "Width of output image. Recommended 1024 or 1280", + "description": "Width of output image", "min": 256.0, - "max": 1280.0 + "max": 1536.0 }, { "name": "height", @@ -12626,16 +12640,16 @@ }, "default": 1024, "title": "Height", - "description": "Height of output image. Recommended 1024 or 1280", + "description": "Height of output image", "min": 256.0, - "max": 1280.0 + "max": 1536.0 }, { "name": "prompt", "type": { "type": "str" }, - "default": "self-portrait of a woman, lightning in the background", + "default": "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k", "title": "Prompt", "description": "Input prompt" }, @@ -12647,17 +12661,17 @@ "DDIM", "DPMSolverMultistep", "HeunDiscrete", - "KarrasDPM", "K_EULER_ANCESTRAL", "K_EULER", "PNDM", - "DPM++2MSDE" + "DPM++2MKarras", + "DPMSolver++" ], - "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionXLLightning.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.PlaygroundV2.Scheduler" }, - "default": "K_EULER", + "default": "DPMSolver++", "title": "Scheduler", - "description": "scheduler" + "description": "Scheduler. DPMSolver++ or DPM++2MKarras is recommended for most cases" }, { "name": "num_outputs", @@ -12675,31 +12689,51 @@ "type": { "type": "float" }, - "default": 0, + "default": 3, "title": "Guidance Scale", "description": "Scale for classifier-free guidance", - "min": 0.0, - "max": 50.0 + "min": 0.1, + "max": 20.0 + }, + { + "name": "apply_watermark", + "type": { + "type": "bool" + }, + "default": true, + "title": "Apply Watermark", + "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." }, { "name": "negative_prompt", "type": { "type": "str" }, - "default": "worst quality, low quality", + "default": "ugly, deformed, noisy, blurry, distorted", "title": "Negative Prompt", "description": "Negative Input prompt" }, + { + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 4, + "default": 25, "title": "Num Inference Steps", - "description": "Number of denoising steps. 4 for best results", + "description": "Number of denoising steps", "min": 1.0, - "max": 10.0 + "max": 60.0 }, { "name": "disable_safety_checker", @@ -12708,7 +12742,7 @@ }, "default": false, "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images" + "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" } ], "outputs": [ @@ -12720,32 +12754,47 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/779f3f58-c3db-4403-a01b-3ffed97a1449/out-0-1.jpg", - "created_at": "2024-02-21T07:36:15.534380Z", - "description": "SDXL-Lightning by ByteDance: a fast text-to-image model that makes high-quality images in 4 steps", - "github_url": "https://github.com/lucataco/cog-sdxl-lightning-4step", - "license_url": "https://huggingface.co/ByteDance/SDXL-Lightning/blob/main/LICENSE.md", - "name": "sdxl-lightning-4step", - "owner": "bytedance", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b849582a-8699-4965-8016-3a51dc1da3d4/playground.jpeg", + "created_at": "2024-02-27T22:20:16.107222Z", + "description": "Playground v2.5 is the state-of-the-art open-source model in aesthetic quality", + "github_url": "https://github.com/lucataco/cog-playground-v2.5-1024px-aesthetic", + "license_url": "https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic/blob/main/LICENSE.md", + "name": "playground-v2.5-1024px-aesthetic", + "owner": "playgroundai", "is_official": false, - "paper_url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_report.pdf", - "run_count": 1025961470, - "url": "https://replicate.com/bytedance/sdxl-lightning-4step", + "paper_url": "https://arxiv.org/abs/2206.00364", + "run_count": 2853954, + "url": "https://replicate.com/playgroundai/playground-v2.5-1024px-aesthetic", "visibility": "public", - "weights_url": "https://huggingface.co/ByteDance/SDXL-Lightning" + "weights_url": "https://huggingface.co/playgroundai/playground-v2.5-1024px-aesthetic" }, "basic_fields": [ + "mask", "seed", - "width", - "height" + "image" ] }, { - "title": "Sticker Maker", - "description": "Make stickers with AI. Generates graphics with transparent backgrounds.", + "title": "Proteus V 02", + "description": "Proteus v0.2 shows subtle yet significant improvements over Version 0.1. It demonstrates enhanced prompt understanding that surpasses MJ6, while also approaching its stylistic capabilities.", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StickerMaker", + "node_type": "replicate.image.generate.Proteus_V_02", "properties": [ + { + "name": "mask", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + }, { "name": "seed", "type": { @@ -12754,85 +12803,139 @@ }, "default": null, "title": "Seed", - "description": "Fix the random seed for reproducibility" + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "steps", + "name": "image", "type": { - "type": "int" + "type": "image" }, - "default": 17, - "title": "Steps" - }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image for img2img or inpaint mode" + }, { "name": "width", "type": { "type": "int" }, - "default": 1152, - "title": "Width" + "default": 1024, + "title": "Width", + "description": "Width of output image" }, { "name": "height", "type": { "type": "int" }, - "default": 1152, - "title": "Height" + "default": 1024, + "title": "Height", + "description": "Height of output image" }, { "name": "prompt", "type": { "type": "str" }, - "default": "a cute cat", - "title": "Prompt" + "default": "black fluffy gorgeous dangerous cat animal creature, large orange eyes, big fluffy ears, piercing gaze, full moon, dark ambiance, best quality, extremely detailed", + "title": "Prompt", + "description": "Input prompt" }, { - "name": "output_format", + "name": "scheduler", "type": { "type": "enum", "values": [ - "webp", - "jpg", - "png" + "DDIM", + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM" ], - "type_name": "nodetool.nodes.replicate.image.generate.StickerMaker.Output_format" + "type_name": "nodetool.nodes.replicate.image.generate.Proteus_V_02.Scheduler" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": "KarrasDPM", + "title": "Scheduler", + "description": "scheduler" }, { - "name": "output_quality", + "name": "num_outputs", "type": { "type": "int" }, - "default": 90, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - "min": 0.0, - "max": 100.0 + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 + }, + { + "name": "guidance_scale", + "type": { + "type": "float" + }, + "default": 7.5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance. Recommended 7-8", + "min": 1.0, + "max": 50.0 + }, + { + "name": "apply_watermark", + "type": { + "type": "bool" + }, + "default": true, + "title": "Apply Watermark", + "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." }, { "name": "negative_prompt", "type": { "type": "str" }, - "default": "", + "default": "worst quality, low quality", "title": "Negative Prompt", - "description": "Things you do not want in the image" + "description": "Negative Input prompt" }, { - "name": "number_of_images", + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "num_inference_steps", "type": { "type": "int" }, - "default": 1, - "title": "Number Of Images", - "description": "Number of images to generate", + "default": 20, + "title": "Num Inference Steps", + "description": "Number of denoising steps. 20 to 35 steps for more detail, 20 steps for faster results.", "min": 1.0, - "max": 10.0 + "max": 100.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" } ], "outputs": [ @@ -12844,32 +12947,47 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/fb7cf2ea-aacd-458d-9d19-76dda21f9748/sticker-maker.webp", - "created_at": "2024-02-23T11:59:22.452180Z", - "description": "Make stickers with AI. Generates graphics with transparent backgrounds.", - "github_url": "https://github.com/fofr/cog-stickers", - "license_url": "https://github.com/fofr/cog-stickers/blob/main/LICENSE", - "name": "sticker-maker", - "owner": "fofr", + "cover_image_url": "https://replicate.delivery/pbxt/1nrcrEszpsb0Kpv0qNBJrtQjoefjHJ3xSh3whVOJcklSFxPSA/out-0.png", + "created_at": "2024-01-24T17:45:49.361192Z", + "description": "Proteus v0.2 shows subtle yet significant improvements over Version 0.1. It demonstrates enhanced prompt understanding that surpasses MJ6, while also approaching its stylistic capabilities.", + "github_url": "https://github.com/lucataco/cog-proteus-v0.2", + "license_url": "https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/gpl-3.0.md", + "name": "proteus-v0.2", + "owner": "datacte", "is_official": false, "paper_url": null, - "run_count": 1475296, - "url": "https://replicate.com/fofr/sticker-maker", + "run_count": 11525060, + "url": "https://replicate.com/datacte/proteus-v0.2", "visibility": "public", "weights_url": null }, "basic_fields": [ + "mask", "seed", - "steps", - "width" + "image" ] }, { - "title": "Style Transfer", - "description": "Transfer the style of one image to another", + "title": "Proteus V 03", + "description": "ProteusV0.3: The Anime Update", "namespace": "replicate.image.generate", - "node_type": "replicate.image.generate.StyleTransfer", + "node_type": "replicate.image.generate.Proteus_V_03", "properties": [ + { + "name": "mask", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + }, { "name": "seed", "type": { @@ -12878,24 +12996,22 @@ }, "default": null, "title": "Seed", - "description": "Set a seed for reproducibility. Random by default." + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "model", + "name": "image", "type": { - "type": "enum", - "values": [ - "fast", - "high-quality", - "realistic", - "cinematic", - "animated" - ], - "type_name": "nodetool.nodes.replicate.image.generate.StyleTransfer.Model" + "type": "image" }, - "default": "fast", - "title": "Model", - "description": "Model to use for the generation" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image for img2img or inpaint mode" }, { "name": "width", @@ -12904,7 +13020,7 @@ }, "default": 1024, "title": "Width", - "description": "Width of the output image (ignored if structure image given)" + "description": "Width of output image. Recommended 1024 or 1280" }, { "name": "height", @@ -12913,114 +13029,107 @@ }, "default": 1024, "title": "Height", - "description": "Height of the output image (ignored if structure image given)" + "description": "Height of output image. Recommended 1024 or 1280" }, { "name": "prompt", "type": { "type": "str" }, - "default": "An astronaut riding a unicorn", + "default": "Anime full body portrait of a swordsman holding his weapon in front of him. He is facing the camera with a fierce look on his face. Anime key visual (best quality, HD, ~+~aesthetic~+~:1.2)", "title": "Prompt", - "description": "Prompt for the image" + "description": "Input prompt" }, { - "name": "style_image", + "name": "scheduler", "type": { - "type": "image" + "type": "enum", + "values": [ + "DDIM", + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM", + "DPM++2MSDE" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Proteus_V_03.Scheduler" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": "DPM++2MSDE", + "title": "Scheduler", + "description": "scheduler" + }, + { + "name": "num_outputs", + "type": { + "type": "int" }, - "title": "Style Image", - "description": "Copy the style from this image" + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 }, { - "name": "output_format", + "name": "guidance_scale", "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.generate.StyleTransfer.Output_format" + "type": "float" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": 7.5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance. Recommended 7-8", + "min": 1.0, + "max": 50.0 }, { - "name": "output_quality", + "name": "apply_watermark", "type": { - "type": "int" + "type": "bool" }, - "default": 80, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", - "min": 0.0, - "max": 100.0 + "default": true, + "title": "Apply Watermark", + "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." }, { "name": "negative_prompt", "type": { "type": "str" }, - "default": "", + "default": "worst quality, low quality", "title": "Negative Prompt", - "description": "Things you do not want to see in your image" + "description": "Negative Input prompt" }, { - "name": "structure_image", + "name": "prompt_strength", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "float" }, - "title": "Structure Image", - "description": "An optional image to copy structure from. Output images will use the same aspect ratio." + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 }, { - "name": "number_of_images", + "name": "num_inference_steps", "type": { "type": "int" }, - "default": 1, - "title": "Number Of Images", - "description": "Number of images to generate", + "default": 20, + "title": "Num Inference Steps", + "description": "Number of denoising steps. 20 to 60 steps for more detail, 20 steps for faster results.", "min": 1.0, - "max": 10.0 - }, - { - "name": "structure_depth_strength", - "type": { - "type": "float" - }, - "default": 1, - "title": "Structure Depth Strength", - "description": "Strength of the depth controlnet", - "min": 0.0, - "max": 2.0 + "max": 100.0 }, { - "name": "structure_denoising_strength", + "name": "disable_safety_checker", "type": { - "type": "float" + "type": "bool" }, - "default": 0.65, - "title": "Structure Denoising Strength", - "description": "How much of the original image (and colors) to preserve (0 is all, 1 is none, 0.65 is a good balance)", - "min": 0.0, - "max": 1.0 + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" } ], "outputs": [ @@ -13032,34 +13141,71 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/fd0ac369-c6ac-4927-b882-ece29cffc45d/cover.webp", - "created_at": "2024-04-17T20:34:49.861066Z", - "description": "Transfer the style of one image to another", - "github_url": "https://github.com/fofr/cog-style-transfer", - "license_url": "https://github.com/fofr/cog-style-transfer/blob/main/LICENSE", - "name": "style-transfer", - "owner": "fofr", + "cover_image_url": "https://replicate.delivery/pbxt/C3LYYa30997dKRdeNDSXNjIK01CH5q8CSto12eWundnPPtWSA/out-0.png", + "created_at": "2024-02-14T20:02:04.901849Z", + "description": "ProteusV0.3: The Anime Update", + "github_url": "https://github.com/lucataco/cog-proteus-v0.3", + "license_url": "https://huggingface.co/models?license=license:gpl-3.0", + "name": "proteus-v0.3", + "owner": "datacte", "is_official": false, "paper_url": null, - "run_count": 1134295, - "url": "https://replicate.com/fofr/style-transfer", + "run_count": 5149558, + "url": "https://replicate.com/datacte/proteus-v0.3", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/dataautogpt3/ProteusV0.3" }, "basic_fields": [ + "mask", "seed", - "model", - "width" + "image" ] }, { - "title": "Code Former", - "description": "Robust face restoration algorithm for old photos/AI-generated faces", - "namespace": "replicate.image.enhance", - "node_type": "replicate.image.enhance.CodeFormer", + "title": "Pulid Base", + "description": "Use a face to make images. Uses SDXL fine-tuned checkpoints.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.PulidBase", "properties": [ { - "name": "image", + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Set a seed for reproducibility. Random by default." + }, + { + "name": "width", + "type": { + "type": "int" + }, + "default": 1024, + "title": "Width", + "description": "Width of the output image (ignored if structure image given)" + }, + { + "name": "height", + "type": { + "type": "int" + }, + "default": 1024, + "title": "Height", + "description": "Height of the output image (ignored if structure image given)" + }, + { + "name": "prompt", + "type": { + "type": "str" + }, + "default": "A photo of a person", + "title": "Prompt", + "description": "You might need to include a gender in the prompt to get the desired result" + }, + { + "name": "face_image", "type": { "type": "image" }, @@ -13070,46 +13216,88 @@ "data": null, "metadata": null }, - "title": "Image", - "description": "Input image" + "title": "Face Image", + "description": "The face image to use for the generation" }, { - "name": "upscale", + "name": "face_style", + "type": { + "type": "enum", + "values": [ + "high-fidelity", + "stylized" + ], + "type_name": "nodetool.nodes.replicate.image.generate.PulidBase.Face_style" + }, + "default": "high-fidelity", + "title": "Face Style", + "description": "Style of the face" + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.PulidBase.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "output_quality", "type": { "type": "int" }, - "default": 2, - "title": "Upscale", - "description": "The final upsampling scale of the image" + "default": 80, + "title": "Output Quality", + "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + "min": 0.0, + "max": 100.0 }, { - "name": "face_upsample", + "name": "negative_prompt", "type": { - "type": "bool" + "type": "str" }, - "default": true, - "title": "Face Upsample", - "description": "Upsample restored faces for high-resolution AI-created images" + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want to see in your image" }, { - "name": "background_enhance", + "name": "checkpoint_model", "type": { - "type": "bool" + "type": "enum", + "values": [ + "general - albedobaseXL_v21", + "general - dreamshaperXL_alpha2Xl10", + "animated - starlightXLAnimated_v3", + "animated - pixlAnimeCartoonComic_v10", + "realistic - rundiffusionXL_beta", + "realistic - RealVisXL_V4.0", + "realistic - sdxlUnstableDiffusers_nihilmania", + "cinematic - CinematicRedmond" + ], + "type_name": "nodetool.nodes.replicate.image.generate.PulidBase.Checkpoint_model" }, - "default": true, - "title": "Background Enhance", - "description": "Enhance background image with Real-ESRGAN" + "default": "general - dreamshaperXL_alpha2Xl10", + "title": "Checkpoint Model", + "description": "Model to use for the generation" }, { - "name": "codeformer_fidelity", + "name": "number_of_images", "type": { - "type": "float" + "type": "int" }, - "default": 0.5, - "title": "Codeformer Fidelity", - "description": "Balance the quality (lower number) and fidelity (higher number).", - "min": 0.0, - "max": 1.0 + "default": 1, + "title": "Number Of Images", + "description": "Number of images to generate", + "min": 1.0, + "max": 10.0 } ], "outputs": [ @@ -13121,32 +13309,42 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/cf736d61-411f-4301-89b3-16aff1a02ed1/codeformer_logo.png", - "created_at": "2023-09-06T04:10:50.158696Z", - "description": "Robust face restoration algorithm for old photos/AI-generated faces", - "github_url": "https://github.com/sczhou/CodeFormer", - "license_url": "https://github.com/sczhou/CodeFormer/blob/master/LICENSE", - "name": "codeformer", - "owner": "lucataco", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/fb4110a1-ae64-491f-8a3e-0fdd4ef991bb/pulid-base-cover.webp", + "created_at": "2024-05-09T13:48:08.359715Z", + "description": "Use a face to make images. Uses SDXL fine-tuned checkpoints.", + "github_url": "https://github.com/fofr/cog-comfyui-pulid/tree/pulid-base", + "license_url": null, + "name": "pulid-base", + "owner": "fofr", "is_official": false, - "paper_url": "https://arxiv.org/abs/2206.11253", - "run_count": 6586606, - "url": "https://replicate.com/lucataco/codeformer", + "paper_url": "https://arxiv.org/abs/2404.16022", + "run_count": 323697, + "url": "https://replicate.com/fofr/pulid-base", "visibility": "public", "weights_url": null }, "basic_fields": [ - "image", - "upscale", - "face_upsample" + "seed", + "width", + "height" ] }, { - "title": "Maxim", - "description": "Multi-Axis MLP for Image Processing", - "namespace": "replicate.image.enhance", - "node_type": "replicate.image.enhance.Maxim", + "title": "Qwen Image", + "description": "An image generation foundation model in the Qwen series that achieves significant advances in complex text rendering.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Qwen_Image", "properties": [ + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" + }, { "name": "image", "type": { @@ -13160,81 +13358,174 @@ "metadata": null }, "title": "Image", - "description": "Input image." + "description": "Input image for img2img pipeline" }, { - "name": "model", + "name": "prompt", "type": { - "type": "enum", - "optional": true, + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Prompt for generated image" + }, + { + "name": "go_fast", + "type": { + "type": "bool" + }, + "default": true, + "title": "Go Fast", + "description": "Run faster predictions with additional optimizations." + }, + { + "name": "guidance", + "type": { + "type": "float" + }, + "default": 3, + "title": "Guidance", + "description": "Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5", + "min": 0.0, + "max": 10.0 + }, + { + "name": "strength", + "type": { + "type": "float" + }, + "default": 0.9, + "title": "Strength", + "description": "Strength for img2img pipeline", + "min": 0.0, + "max": 1.0 + }, + { + "name": "image_size", + "type": { + "type": "enum", "values": [ - "Image Denoising", - "Image Deblurring (GoPro)", - "Image Deblurring (REDS)", - "Image Deblurring (RealBlur_R)", - "Image Deblurring (RealBlur_J)", - "Image Deraining (Rain streak)", - "Image Deraining (Rain drop)", - "Image Dehazing (Indoor)", - "Image Dehazing (Outdoor)", - "Image Enhancement (Low-light)", - "Image Enhancement (Retouching)" + "optimize_for_quality", + "optimize_for_speed" ], - "type_name": "nodetool.nodes.replicate.image.enhance.Maxim.Model" + "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image.Image_size" + }, + "default": "optimize_for_quality", + "title": "Image Size", + "description": "Image size for the generated image" + }, + { + "name": "lora_scale", + "type": { + "type": "float" + }, + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied." + }, + { + "name": "aspect_ratio", + "type": { + "type": "enum", + "values": [ + "1:1", + "16:9", + "9:16", + "4:3", + "3:4", + "3:2", + "2:3" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image.Aspect_ratio" + }, + "default": "16:9", + "title": "Aspect Ratio", + "description": "Aspect ratio for the generated image" + }, + { + "name": "lora_weights", + "type": { + "type": "str", + "optional": true }, "default": null, - "title": "Model", - "description": "Choose a model." - } - ], - "outputs": [ + "title": "Lora Weights", + "description": "Load LoRA weights. Only works with text to image pipeline. Supports arbitrary .safetensors URLs, tar files, and zip files from the Internet (for example, 'https://huggingface.co/Viktor1717/scandinavian-interior-style1/resolve/main/my_first_flux_lora_v1.safetensors', 'https://example.com/lora_weights.tar.gz', or 'https://example.com/lora_weights.zip')" + }, { + "name": "output_format", "type": { - "type": "image" + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image.Output_format" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/df5769aa-0908-4a2e-9378-c582838461db/1fromGOPR0950.png", - "created_at": "2022-04-20T16:32:30.049391Z", - "description": "Multi-Axis MLP for Image Processing", - "github_url": "https://github.com/google-research/maxim", - "license_url": "https://github.com/google-research/maxim/blob/main/LICENSE", - "name": "maxim", - "owner": "google-research", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2201.02973", - "run_count": 536110, - "url": "https://replicate.com/google-research/maxim", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "image", - "model" - ] - }, - { - "title": "Night Enhancement", - "description": "Unsupervised Night Image Enhancement", - "namespace": "replicate.image.enhance", - "node_type": "replicate.image.enhance.Night_Enhancement", - "properties": [ + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, { - "name": "image", + "name": "enhance_prompt", "type": { - "type": "image" + "type": "bool" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": false, + "title": "Enhance Prompt", + "description": "Enhance the prompt with positive magic." + }, + { + "name": "output_quality", + "type": { + "type": "int" }, - "title": "Image", - "description": "Input image." + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "negative_prompt", + "type": { + "type": "str" + }, + "default": " ", + "title": "Negative Prompt", + "description": "Negative prompt for generated image" + }, + { + "name": "replicate_weights", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Replicate Weights", + "description": "Load LoRA weights from Replicate training. Only works with text to image pipeline. Supports arbitrary .safetensors URLs, tar files, and zip files from the Internet." + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 30, + "title": "Num Inference Steps", + "description": "Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster.", + "min": 1.0, + "max": 50.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -13246,38 +13537,41 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/mgxm/60c4c0d8-c82f-42e0-96ee-71392d32b6fe/output.png", - "created_at": "2022-08-13T15:54:02.662983Z", - "description": "Unsupervised Night Image Enhancement", - "github_url": "https://github.com/jinyeying/night-enhancement", - "license_url": "https://github.com/jinyeying/night-enhancement/blob/main/LICENSE", - "name": "night-enhancement", - "owner": "cjwbw", - "is_official": false, - "paper_url": "https://arxiv.org/pdf/2207.10564.pdf", - "run_count": 43679, - "url": "https://replicate.com/cjwbw/night-enhancement", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/62e062a1-f4e4-4192-9f0c-56408f092fec/replicate-prediction-97qabd8z.webp", + "created_at": "2025-08-04T17:23:39.724770Z", + "description": "An image generation foundation model in the Qwen series that achieves significant advances in complex text rendering.", + "github_url": "https://github.com/QwenLM/Qwen-Image", + "license_url": "https://choosealicense.com/licenses/apache-2.0/", + "name": "qwen-image", + "owner": "qwen", + "is_official": true, + "paper_url": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-Image/Qwen_Image.pdf", + "run_count": 1384997, + "url": "https://replicate.com/qwen/qwen-image", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/Qwen/Qwen-Image" }, "basic_fields": [ - "image" + "seed", + "image", + "prompt" ] }, { - "title": "Old Photos Restoration", - "description": "Bringing Old Photos Back to Life", - "namespace": "replicate.image.enhance", - "node_type": "replicate.image.enhance.OldPhotosRestoration", + "title": "Qwen Image Edit", + "description": "Edit images using a prompt. This model extends Qwen-Image\u2019s unique text rendering capabilities to image editing tasks, enabling precise text editing", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Qwen_Image_Edit", "properties": [ { - "name": "HR", + "name": "seed", "type": { - "type": "bool" + "type": "int", + "optional": true }, - "default": false, - "title": "Hr", - "description": "whether the input image is high-resolution" + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { "name": "image", @@ -13292,16 +13586,61 @@ "metadata": null }, "title": "Image", - "description": "input image." + "description": "Image to use as reference. Must be jpeg, png, gif, or webp." }, { - "name": "with_scratch", + "name": "prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Text instruction on how to edit the given image." + }, + { + "name": "go_fast", + "type": { + "type": "bool" + }, + "default": true, + "title": "Go Fast", + "description": "Run faster predictions with additional optimizations." + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Qwen_Image_Edit.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "output_quality", + "type": { + "type": "int" + }, + "default": 80, + "title": "Output Quality", + "description": "Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs", + "min": 0.0, + "max": 100.0 + }, + { + "name": "disable_safety_checker", "type": { "type": "bool" }, "default": false, - "title": "With Scratch", - "description": "whether the input image is scratched" + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images." } ], "outputs": [ @@ -13313,237 +13652,554 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/9f2124ae-ad0f-4a41-bf7e-c3173d0f7c9b/out.png", - "created_at": "2021-09-11T14:44:30.681818Z", - "description": "Bringing Old Photos Back to Life", - "github_url": "https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life", - "license_url": "https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/blob/master/LICENSE", - "name": "bringing-old-photos-back-to-life", - "owner": "microsoft", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2004.09484", - "run_count": 1117680, - "url": "https://replicate.com/microsoft/bringing-old-photos-back-to-life", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/29bbf095-fce5-4328-8117-9d79a41149c2/replicate-prediction-f28b7ty1.webp", + "created_at": "2025-08-18T18:09:48.916882Z", + "description": "Edit images using a prompt. This model extends Qwen-Image\u2019s unique text rendering capabilities to image editing tasks, enabling precise text editing", + "github_url": null, + "license_url": "https://github.com/QwenLM/Qwen-Image/blob/main/LICENSE", + "name": "qwen-image-edit", + "owner": "qwen", + "is_official": true, + "paper_url": "https://arxiv.org/abs/2508.02324", + "run_count": 1473364, + "url": "https://replicate.com/qwen/qwen-image-edit", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/Qwen/Qwen-Image-Edit" }, "basic_fields": [ - "HR", + "seed", "image", - "with_scratch" + "prompt" ] }, { - "title": "Supir V 0 F", - "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0F model and does NOT use LLaVA-13b.", - "namespace": "replicate.image.enhance", - "node_type": "replicate.image.enhance.Supir_V0F", + "title": "Recraft 20B", + "description": "Affordable and fast images", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Recraft_20B", "properties": [ { - "name": "seed", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" - }, - { - "name": "image", + "name": "size", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + "1024x1024", + "1365x1024", + "1024x1365", + "1536x1024", + "1024x1536", + "1820x1024", + "1024x1820", + "1024x2048", + "2048x1024", + "1434x1024", + "1024x1434", + "1024x1280", + "1280x1024", + "1024x1707", + "1707x1024" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B.Size" }, - "title": "Image", - "description": "Low quality input image." + "default": "1024x1024", + "title": "Size", + "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." }, { - "name": "s_cfg", + "name": "style", "type": { - "type": "float" + "type": "enum", + "values": [ + "realistic_image", + "realistic_image/b_and_w", + "realistic_image/enterprise", + "realistic_image/hard_flash", + "realistic_image/hdr", + "realistic_image/motion_blur", + "realistic_image/natural_light", + "realistic_image/studio_portrait", + "digital_illustration", + "digital_illustration/2d_art_poster", + "digital_illustration/2d_art_poster_2", + "digital_illustration/3d", + "digital_illustration/80s", + "digital_illustration/engraving_color", + "digital_illustration/glow", + "digital_illustration/grain", + "digital_illustration/hand_drawn", + "digital_illustration/hand_drawn_outline", + "digital_illustration/handmade_3d", + "digital_illustration/infantile_sketch", + "digital_illustration/kawaii", + "digital_illustration/pixel_art", + "digital_illustration/psychedelic", + "digital_illustration/seamless", + "digital_illustration/voxel", + "digital_illustration/watercolor" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B.Style" }, - "default": 7.5, - "title": "S Cfg", - "description": " Classifier-free guidance scale for prompts.", - "min": 1.0, - "max": 20.0 + "default": "realistic_image", + "title": "Style", + "description": "Style of the generated image." }, { - "name": "s_churn", + "name": "prompt", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 5, - "title": "S Churn", - "description": "Original churn hy-param of EDM." + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "s_noise", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "Not set", + "1:1", + "4:3", + "3:4", + "3:2", + "2:3", + "16:9", + "9:16", + "1:2", + "2:1", + "7:5", + "5:7", + "4:5", + "5:4", + "3:5", + "5:3" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B.Aspect_ratio" }, - "default": 1.003, - "title": "S Noise", - "description": "Original noise hy-param of EDM." - }, + "default": "Not set", + "title": "Aspect Ratio", + "description": "Aspect ratio of the generated image" + } + ], + "outputs": [ { - "name": "upscale", "type": { - "type": "int" + "type": "image" }, - "default": 1, - "title": "Upscale", - "description": "Upsampling ratio of given inputs." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/2a808913-4306-43d4-b9da-db154e2faeab/recraft-cover-1.webp", + "created_at": "2024-12-12T13:39:48.189902Z", + "description": "Affordable and fast images", + "github_url": null, + "license_url": "https://www.recraft.ai/terms", + "name": "recraft-20b", + "owner": "recraft-ai", + "is_official": true, + "paper_url": "https://recraft.ai", + "run_count": 304725, + "url": "https://replicate.com/recraft-ai/recraft-20b", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "size", + "style", + "prompt" + ] + }, + { + "title": "Recraft 20B SVG", + "description": "Affordable and fast vector images", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Recraft_20B_SVG", + "properties": [ { - "name": "a_prompt", + "name": "size", "type": { - "type": "str" - }, - "default": "Cinematic, High Contrast, highly detailed, taken using a Canon EOS R camera, hyper detailed photo - realistic maximum detail, 32k, Color Grading, ultra HD, extreme meticulous detailing, skin pore detailing, hyper sharpness, perfect without deformations.", - "title": "A Prompt", - "description": "Additive positive prompt for the inputs." + "type": "enum", + "values": [ + "1024x1024", + "1365x1024", + "1024x1365", + "1536x1024", + "1024x1536", + "1820x1024", + "1024x1820", + "1024x2048", + "2048x1024", + "1434x1024", + "1024x1434", + "1024x1280", + "1280x1024", + "1024x1707", + "1707x1024" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Size" + }, + "default": "1024x1024", + "title": "Size", + "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." }, { - "name": "min_size", + "name": "style", "type": { - "type": "float" + "type": "enum", + "values": [ + "vector_illustration", + "vector_illustration/cartoon", + "vector_illustration/doodle_line_art", + "vector_illustration/engraving", + "vector_illustration/flat_2", + "vector_illustration/kawaii", + "vector_illustration/line_art", + "vector_illustration/line_circuit", + "vector_illustration/linocut", + "vector_illustration/seamless", + "icon", + "icon/broken_line", + "icon/colored_outline", + "icon/colored_shapes", + "icon/colored_shapes_gradient", + "icon/doodle_fill", + "icon/doodle_offset_fill", + "icon/offset_fill", + "icon/outline", + "icon/outline_gradient", + "icon/uneven_fill" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Style" }, - "default": 1024, - "title": "Min Size", - "description": "Minimum resolution of output images." + "default": "vector_illustration", + "title": "Style", + "description": "Style of the generated image." }, { - "name": "n_prompt", + "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth", - "title": "N Prompt", - "description": "Negative prompt for the inputs." + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "s_stage1", + "name": "aspect_ratio", "type": { - "type": "int" + "type": "enum", + "values": [ + "Not set", + "1:1", + "4:3", + "3:4", + "3:2", + "2:3", + "16:9", + "9:16", + "1:2", + "2:1", + "7:5", + "5:7", + "4:5", + "5:4", + "3:5", + "5:3" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_20B_SVG.Aspect_ratio" }, - "default": -1, - "title": "S Stage1", - "description": "Control Strength of Stage1 (negative means invalid)." + "default": "Not set", + "title": "Aspect Ratio", + "description": "Aspect ratio of the generated image" + } + ], + "outputs": [ + { + "type": { + "type": "svg" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/4993bd89-af70-43da-be68-18cc43437746/recraft-svg-20b-cover.webp", + "created_at": "2024-12-12T13:39:54.180287Z", + "description": "Affordable and fast vector images", + "github_url": null, + "license_url": "https://www.recraft.ai/terms", + "name": "recraft-20b-svg", + "owner": "recraft-ai", + "is_official": true, + "paper_url": "https://recraft.ai/", + "run_count": 86128, + "url": "https://replicate.com/recraft-ai/recraft-20b-svg", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "size", + "style", + "prompt" + ] + }, + { + "title": "Recraft V 3", + "description": "Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, and images in a wide list of styles. As of today, it is SOTA in image generation, proven by the Text-to-Image Benchmark by Artificial Analysis", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Recraft_V3", + "properties": [ + { + "name": "size", + "type": { + "type": "enum", + "values": [ + "1024x1024", + "1365x1024", + "1024x1365", + "1536x1024", + "1024x1536", + "1820x1024", + "1024x1820", + "1024x2048", + "2048x1024", + "1434x1024", + "1024x1434", + "1024x1280", + "1280x1024", + "1024x1707", + "1707x1024" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3.Size" + }, + "default": "1024x1024", + "title": "Size", + "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." }, { - "name": "s_stage2", + "name": "style", "type": { - "type": "float" + "type": "enum", + "values": [ + "any", + "realistic_image", + "digital_illustration", + "digital_illustration/pixel_art", + "digital_illustration/hand_drawn", + "digital_illustration/grain", + "digital_illustration/infantile_sketch", + "digital_illustration/2d_art_poster", + "digital_illustration/handmade_3d", + "digital_illustration/hand_drawn_outline", + "digital_illustration/engraving_color", + "digital_illustration/2d_art_poster_2", + "realistic_image/b_and_w", + "realistic_image/hard_flash", + "realistic_image/hdr", + "realistic_image/natural_light", + "realistic_image/studio_portrait", + "realistic_image/enterprise", + "realistic_image/motion_blur" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3.Style" }, - "default": 1, - "title": "S Stage2", - "description": "Control Strength of Stage2." + "default": "any", + "title": "Style", + "description": "Style of the generated image." }, { - "name": "edm_steps", + "name": "prompt", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 50, - "title": "Edm Steps", - "description": "Number of steps for EDM Sampling Schedule.", - "min": 1.0, - "max": 500.0 + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "linear_CFG", + "name": "aspect_ratio", "type": { - "type": "bool" + "type": "enum", + "values": [ + "Not set", + "1:1", + "4:3", + "3:4", + "3:2", + "2:3", + "16:9", + "9:16", + "1:2", + "2:1", + "7:5", + "5:7", + "4:5", + "5:4", + "3:5", + "5:3" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3.Aspect_ratio" + }, + "default": "Not set", + "title": "Aspect Ratio", + "description": "Aspect ratio of the generated image" + } + ], + "outputs": [ + { + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a2b66c42-4633-443d-997f-cc987bca07c7/V3.webp", + "created_at": "2024-10-30T12:41:06.099624Z", + "description": "Recraft V3 (code-named red_panda) is a text-to-image model with the ability to generate long texts, and images in a wide list of styles. As of today, it is SOTA in image generation, proven by the Text-to-Image Benchmark by Artificial Analysis", + "github_url": null, + "license_url": "https://www.recraft.ai/terms", + "name": "recraft-v3", + "owner": "recraft-ai", + "is_official": true, + "paper_url": "https://recraft.ai", + "run_count": 7571833, + "url": "https://replicate.com/recraft-ai/recraft-v3", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "size", + "style", + "prompt" + ] + }, + { + "title": "Recraft V 3 SVG", + "description": "Recraft V3 SVG (code-named red_panda) is a text-to-image model with the ability to generate high quality SVG images including logotypes, and icons. The model supports a wide list of styles.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Recraft_V3_SVG", + "properties": [ + { + "name": "size", + "type": { + "type": "enum", + "values": [ + "1024x1024", + "1365x1024", + "1024x1365", + "1536x1024", + "1024x1536", + "1820x1024", + "1024x1820", + "1024x2048", + "2048x1024", + "1434x1024", + "1024x1434", + "1024x1280", + "1280x1024", + "1024x1707", + "1707x1024" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Size" }, - "default": false, - "title": "Linear Cfg", - "description": "Linearly (with sigma) increase CFG from 'spt_linear_CFG' to s_cfg." + "default": "1024x1024", + "title": "Size", + "description": "Width and height of the generated image. Size is ignored if an aspect ratio is set." }, { - "name": "color_fix_type", + "name": "style", "type": { "type": "enum", "values": [ - "None", - "AdaIn", - "Wavelet" + "any", + "engraving", + "line_art", + "line_circuit", + "linocut" ], - "type_name": "nodetool.nodes.replicate.image.enhance.Supir_V0F.Color_fix_type" - }, - "default": "Wavelet", - "title": "Color Fix Type", - "description": "Color Fixing Type.." - }, - { - "name": "spt_linear_CFG", - "type": { - "type": "float" + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Style" }, - "default": 1, - "title": "Spt Linear Cfg", - "description": "Start point of linearly increasing CFG." + "default": "any", + "title": "Style", + "description": "Style of the generated image." }, { - "name": "linear_s_stage2", + "name": "prompt", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": false, - "title": "Linear S Stage2", - "description": "Linearly (with sigma) increase s_stage2 from 'spt_linear_s_stage2' to s_stage2." + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "spt_linear_s_stage2", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "Not set", + "1:1", + "4:3", + "3:4", + "3:2", + "2:3", + "16:9", + "9:16", + "1:2", + "2:1", + "7:5", + "5:7", + "4:5", + "5:4", + "3:5", + "5:3" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Recraft_V3_SVG.Aspect_ratio" }, - "default": 0, - "title": "Spt Linear S Stage2", - "description": "Start point of linearly increasing s_stage2." + "default": "Not set", + "title": "Aspect Ratio", + "description": "Aspect ratio of the generated image" } ], "outputs": [ { "type": { - "type": "image" + "type": "svg" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/if3rev1GNfAB6IMsqqW8CqQtVP75pXvU3dLQeV6CFkVutgmJB/out.png", - "created_at": "2024-02-23T16:38:51.414944Z", - "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0F model and does NOT use LLaVA-13b.", - "github_url": "https://github.com/chenxwh/SUPIR", - "license_url": "https://github.com/Fanghua-Yu/SUPIR/blob/master/LICENSE", - "name": "supir-v0f", - "owner": "cjwbw", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2401.13627", - "run_count": 19028, - "url": "https://replicate.com/cjwbw/supir-v0f", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/223c73a9-0347-4daa-9710-3878f95479e3/svg-cover.webp", + "created_at": "2024-10-30T13:59:33.006694Z", + "description": "Recraft V3 SVG (code-named red_panda) is a text-to-image model with the ability to generate high quality SVG images including logotypes, and icons. The model supports a wide list of styles.", + "github_url": null, + "license_url": "https://recraft.ai/terms", + "name": "recraft-v3-svg", + "owner": "recraft-ai", + "is_official": true, + "paper_url": "https://recraft.ai", + "run_count": 347500, + "url": "https://replicate.com/recraft-ai/recraft-v3-svg", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "image", - "s_cfg" + "size", + "style", + "prompt" ] }, { - "title": "Supir V 0 Q", - "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0Q model and does NOT use LLaVA-13b.", - "namespace": "replicate.image.enhance", - "node_type": "replicate.image.enhance.Supir_V0Q", + "title": "SDXL Ad Inpaint", + "description": "Product advertising image generator using SDXL", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.SDXL_Ad_Inpaint", "properties": [ { "name": "seed", @@ -13553,7 +14209,7 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "description": "Empty or 0 for a random image" }, { "name": "image", @@ -13568,152 +14224,266 @@ "metadata": null }, "title": "Image", - "description": "Low quality input image." + "description": "Remove background from this image" }, { - "name": "s_cfg", + "name": "prompt", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 7.5, - "title": "S Cfg", - "description": " Classifier-free guidance scale for prompts.", - "min": 1.0, - "max": 20.0 + "default": null, + "title": "Prompt", + "description": "Describe the new setting for your product" }, { - "name": "s_churn", + "name": "img_size", "type": { - "type": "float" + "type": "enum", + "values": [ + "512, 2048", + "512, 1984", + "512, 1920", + "512, 1856", + "576, 1792", + "576, 1728", + "576, 1664", + "640, 1600", + "640, 1536", + "704, 1472", + "704, 1408", + "704, 1344", + "768, 1344", + "768, 1280", + "832, 1216", + "832, 1152", + "896, 1152", + "896, 1088", + "960, 1088", + "960, 1024", + "1024, 1024", + "1024, 960", + "1088, 960", + "1088, 896", + "1152, 896", + "1152, 832", + "1216, 832", + "1280, 768", + "1344, 768", + "1408, 704", + "1472, 704", + "1536, 640", + "1600, 640", + "1664, 576", + "1728, 576", + "1792, 576", + "1856, 512", + "1920, 512", + "1984, 512", + "2048, 512" + ], + "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Img_size" }, - "default": 5, - "title": "S Churn", - "description": "Original churn hy-param of EDM." + "default": "1024, 1024", + "title": "Img Size", + "description": "Possible SDXL image sizes" }, { - "name": "s_noise", + "name": "apply_img", "type": { - "type": "float" + "type": "bool" }, - "default": 1.003, - "title": "S Noise", - "description": "Original noise hy-param of EDM." + "default": true, + "title": "Apply Img", + "description": "Applies the original product image to the final result" }, { - "name": "upscale", + "name": "scheduler", "type": { - "type": "int" + "type": "enum", + "values": [ + "DDIM", + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM" + ], + "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Scheduler" }, - "default": 1, - "title": "Upscale", - "description": "Upsampling ratio of given inputs." + "default": "K_EULER", + "title": "Scheduler", + "description": "scheduler" }, { - "name": "a_prompt", + "name": "product_fill", "type": { - "type": "str" + "type": "enum", + "values": [ + "Original", + "80", + "70", + "60", + "50", + "40", + "30", + "20" + ], + "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Ad_Inpaint.Product_fill" }, - "default": "Cinematic, High Contrast, highly detailed, taken using a Canon EOS R camera, hyper detailed photo - realistic maximum detail, 32k, Color Grading, ultra HD, extreme meticulous detailing, skin pore detailing, hyper sharpness, perfect without deformations.", - "title": "A Prompt", - "description": "Additive positive prompt for the inputs." + "default": "Original", + "title": "Product Fill", + "description": "What percentage of the image width to fill with product" }, { - "name": "min_size", + "name": "guidance_scale", "type": { "type": "float" }, - "default": 1024, - "title": "Min Size", - "description": "Minimum resolution of output images." + "default": 7.5, + "title": "Guidance Scale", + "description": "Guidance Scale" + }, + { + "name": "condition_scale", + "type": { + "type": "float" + }, + "default": 0.9, + "title": "Condition Scale", + "description": "controlnet conditioning scale for generalization", + "min": 0.3, + "max": 0.9 }, { - "name": "n_prompt", + "name": "negative_prompt", "type": { "type": "str" }, - "default": "painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth", - "title": "N Prompt", - "description": "Negative prompt for the inputs." + "default": "low quality, out of frame, illustration, 3d, sepia, painting, cartoons, sketch, watermark, text, Logo, advertisement", + "title": "Negative Prompt", + "description": "Describe what you do not want in your setting" }, { - "name": "s_stage1", + "name": "num_refine_steps", "type": { "type": "int" }, - "default": -1, - "title": "S Stage1", - "description": "Control Strength of Stage1 (negative means invalid)." + "default": 10, + "title": "Num Refine Steps", + "description": "Number of steps to refine", + "min": 0.0, + "max": 40.0 }, { - "name": "s_stage2", + "name": "num_inference_steps", "type": { - "type": "float" + "type": "int" }, - "default": 1, - "title": "S Stage2", - "description": "Control Strength of Stage2." - }, + "default": 40, + "title": "Num Inference Steps", + "description": "Inference Steps" + } + ], + "outputs": [ { - "name": "edm_steps", + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://pbxt.replicate.delivery/ORbuWtoy0y6NI9f4DrJ2fxs92LgviBaOlzOVdYTr3pT8eKJjA/7-out.png", + "created_at": "2023-09-15T15:37:19.970710Z", + "description": "Product advertising image generator using SDXL", + "github_url": "https://github.com/CatacoLabs/cog-sdxl-ad-inpaint", + "license_url": "https://github.com/huggingface/hfapi/blob/master/LICENSE", + "name": "sdxl-ad-inpaint", + "owner": "catacolabs", + "is_official": false, + "paper_url": null, + "run_count": 401404, + "url": "https://replicate.com/catacolabs/sdxl-ad-inpaint", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "seed", + "image", + "prompt" + ] + }, + { + "title": "SDXL Controlnet", + "description": "SDXL ControlNet - Canny", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.SDXL_Controlnet", + "properties": [ + { + "name": "seed", "type": { "type": "int" }, - "default": 50, - "title": "Edm Steps", - "description": "Number of steps for EDM Sampling Schedule.", - "min": 1.0, - "max": 500.0 + "default": 0, + "title": "Seed", + "description": "Random seed. Set to 0 to randomize the seed" }, { - "name": "linear_CFG", + "name": "image", "type": { - "type": "bool" + "type": "image" }, - "default": false, - "title": "Linear Cfg", - "description": "Linearly (with sigma) increase CFG from 'spt_linear_CFG' to s_cfg." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image for img2img or inpaint mode" }, { - "name": "color_fix_type", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "None", - "AdaIn", - "Wavelet" - ], - "type_name": "nodetool.nodes.replicate.image.enhance.Supir_V0Q.Color_fix_type" + "type": "str" }, - "default": "Wavelet", - "title": "Color Fix Type", - "description": "Color Fixing Type.." + "default": "aerial view, a futuristic research complex in a bright foggy jungle, hard lighting", + "title": "Prompt", + "description": "Input prompt" }, { - "name": "spt_linear_CFG", + "name": "condition_scale", "type": { "type": "float" }, - "default": 1, - "title": "Spt Linear Cfg", - "description": "Start point of linearly increasing CFG." + "default": 0.5, + "title": "Condition Scale", + "description": "controlnet conditioning scale for generalization", + "min": 0.0, + "max": 1.0 }, { - "name": "linear_s_stage2", + "name": "negative_prompt", "type": { - "type": "bool" + "type": "str" }, - "default": false, - "title": "Linear S Stage2", - "description": "Linearly (with sigma) increase s_stage2 from 'spt_linear_s_stage2' to s_stage2." + "default": "low quality, bad quality, sketches", + "title": "Negative Prompt", + "description": "Input Negative Prompt" }, { - "name": "spt_linear_s_stage2", + "name": "num_inference_steps", "type": { - "type": "float" + "type": "int" }, - "default": 0, - "title": "Spt Linear S Stage2", - "description": "Start point of linearly increasing s_stage2." + "default": 50, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 } ], "outputs": [ @@ -13725,48 +14495,54 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/gYLkKNiBcnZDD9dnPxlUR4iurpbr1QANec0VmA2kv3Ol6zMJA/out.png", - "created_at": "2024-02-23T16:26:24.376439Z", - "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0Q model and does NOT use LLaVA-13b.", - "github_url": "https://github.com/chenxwh/SUPIR", - "license_url": "https://github.com/Fanghua-Yu/SUPIR/blob/master/LICENSE", - "name": "supir-v0q", - "owner": "cjwbw", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/7edf6f87-bd0d-4a4f-9e11-d944bb07a3ea/output.png", + "created_at": "2023-08-14T07:15:37.417194Z", + "description": "SDXL ControlNet - Canny", + "github_url": "https://github.com/lucataco/cog-sdxl-controlnet", + "license_url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/blob/main/LICENSE.md", + "name": "sdxl-controlnet", + "owner": "lucataco", "is_official": false, - "paper_url": "https://arxiv.org/abs/2401.13627", - "run_count": 116918, - "url": "https://replicate.com/cjwbw/supir-v0q", + "paper_url": null, + "run_count": 3443485, + "url": "https://replicate.com/lucataco/sdxl-controlnet", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", "image", - "s_cfg" + "prompt" ] }, { - "title": "Clarity Upscaler", - "description": "High resolution image Upscaler and Enhancer. Use at ClarityAI.co. A free Magnific alternative. Twitter/X: @philz1337x", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.ClarityUpscaler", + "title": "SDXL Emoji", + "description": "An SDXL fine-tune based on Apple Emojis", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.SDXL_Emoji", "properties": [ { "name": "mask", "type": { - "type": "str", - "optional": true + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": null, "title": "Mask", - "description": "Mask image to mark areas that should be preserved during upscaling" + "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." }, { "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 1337, + "default": null, "title": "Seed", "description": "Random seed. Leave blank to randomize the seed" }, @@ -13783,276 +14559,181 @@ "metadata": null }, "title": "Image", - "description": "input image" - }, - { - "name": "prompt", - "type": { - "type": "str" - }, - "default": "masterpiece, best quality, highres, ", - "title": "Prompt", - "description": "Prompt" - }, - { - "name": "dynamic", - "type": { - "type": "float" - }, - "default": 6, - "title": "Dynamic", - "description": "HDR, try from 3 - 9", - "min": 1.0, - "max": 50.0 + "description": "Input image for img2img or inpaint mode" }, { - "name": "handfix", + "name": "width", "type": { - "type": "enum", - "values": [ - "disabled", - "hands_only", - "image_and_hands" - ], - "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Handfix" + "type": "int" }, - "default": "disabled", - "title": "Handfix", - "description": "Use clarity to fix hands in the image" + "default": 1024, + "title": "Width", + "description": "Width of output image" }, { - "name": "pattern", + "name": "height", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Pattern", - "description": "Upscale a pattern with seamless tiling" + "default": 1024, + "title": "Height", + "description": "Height of output image" }, { - "name": "sharpen", + "name": "prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0, - "title": "Sharpen", - "description": "Sharpen the image after upscaling. The higher the value, the more sharpening is applied. 0 for no sharpening", - "min": 0.0, - "max": 10.0 + "default": "An astronaut riding a rainbow unicorn", + "title": "Prompt", + "description": "Input prompt" }, { - "name": "sd_model", + "name": "refine", "type": { "type": "enum", "values": [ - "epicrealism_naturalSinRC1VAE.safetensors [84d76a0328]", - "juggernaut_reborn.safetensors [338b85bc4f]", - "flat2DAnimerge_v45Sharp.safetensors" + "no_refiner", + "expert_ensemble_refiner", + "base_image_refiner" ], - "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Sd_model" + "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Emoji.Refine" }, - "default": "juggernaut_reborn.safetensors [338b85bc4f]", - "title": "Sd Model", - "description": "Stable Diffusion model checkpoint" + "default": "no_refiner", + "title": "Refine", + "description": "Which refine style to use" }, { "name": "scheduler", "type": { "type": "enum", "values": [ - "DPM++ 2M Karras", - "DPM++ SDE Karras", - "DPM++ 2M SDE Exponential", - "DPM++ 2M SDE Karras", - "Euler a", - "Euler", - "LMS", - "Heun", - "DPM2", - "DPM2 a", - "DPM++ 2S a", - "DPM++ 2M", - "DPM++ SDE", - "DPM++ 2M SDE", - "DPM++ 2M SDE Heun", - "DPM++ 2M SDE Heun Karras", - "DPM++ 2M SDE Heun Exponential", - "DPM++ 3M SDE", - "DPM++ 3M SDE Karras", - "DPM++ 3M SDE Exponential", - "DPM fast", - "DPM adaptive", - "LMS Karras", - "DPM2 Karras", - "DPM2 a Karras", - "DPM++ 2S a Karras", - "Restart", "DDIM", - "PLMS", - "UniPC" + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM" ], - "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Emoji.Scheduler" }, - "default": "DPM++ 3M SDE Karras", + "default": "K_EULER", "title": "Scheduler", "description": "scheduler" }, { - "name": "creativity", + "name": "lora_scale", "type": { "type": "float" }, - "default": 0.35, - "title": "Creativity", - "description": "Creativity, try from 0.3 - 0.9", + "default": 0.6, + "title": "Lora Scale", + "description": "LoRA additive scale. Only applicable on trained models.", "min": 0.0, "max": 1.0 }, { - "name": "lora_links", - "type": { - "type": "str" - }, - "default": "", - "title": "Lora Links", - "description": "Link to a lora file you want to use in your upscaling. Multiple links possible, seperated by comma" - }, - { - "name": "downscaling", + "name": "num_outputs", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Downscaling", - "description": "Downscale the image before upscaling. Can improve quality and speed for images with high resolution but lower quality" + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 }, { - "name": "resemblance", + "name": "refine_steps", "type": { - "type": "float" + "type": "int", + "optional": true }, - "default": 0.6, - "title": "Resemblance", - "description": "Resemblance, try from 0.3 - 1.6", - "min": 0.0, - "max": 3.0 + "default": null, + "title": "Refine Steps", + "description": "For base_image_refiner, the number of steps to refine, defaults to num_inference_steps" }, { - "name": "scale_factor", + "name": "guidance_scale", "type": { "type": "float" }, - "default": 2, - "title": "Scale Factor", - "description": "Scale factor" + "default": 7.5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 50.0 }, { - "name": "tiling_width", + "name": "apply_watermark", "type": { - "type": "enum", - "values": [ - 16, - 32, - 48, - 64, - 80, - 96, - 112, - 128, - 144, - 160, - 176, - 192, - 208, - 224, - 240, - 256 - ], - "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_width" + "type": "bool" }, - "default": 112, - "title": "Tiling Width", - "description": "Fractality, set lower tile width for a high Fractality" + "default": true, + "title": "Apply Watermark", + "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." }, { - "name": "output_format", + "name": "high_noise_frac", "type": { - "type": "enum", - "values": [ - "webp", - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Output_format" + "type": "float" }, - "default": "png", - "title": "Output Format", - "description": "Format of the output images" + "default": 0.8, + "title": "High Noise Frac", + "description": "For expert_ensemble_refiner, the fraction of noise to use", + "min": 0.0, + "max": 1.0 }, { - "name": "tiling_height", + "name": "negative_prompt", "type": { - "type": "enum", - "values": [ - 16, - 32, - 48, - 64, - 80, - 96, - 112, - 128, - 144, - 160, - 176, - 192, - 208, - 224, - 240, - 256 - ], - "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_height" + "type": "str" }, - "default": 144, - "title": "Tiling Height", - "description": "Fractality, set lower tile height for a high Fractality" + "default": "", + "title": "Negative Prompt", + "description": "Input Negative Prompt" }, { - "name": "custom_sd_model", + "name": "prompt_strength", "type": { - "type": "str" + "type": "float" }, - "default": "", - "title": "Custom Sd Model" + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 }, { - "name": "negative_prompt", + "name": "replicate_weights", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "(worst quality, low quality, normal quality:2) JuggernautNegative-neg", - "title": "Negative Prompt", - "description": "Negative Prompt" + "default": null, + "title": "Replicate Weights", + "description": "Replicate LoRA weights to use. Leave blank to use the default weights." }, { "name": "num_inference_steps", "type": { "type": "int" }, - "default": 18, + "default": 50, "title": "Num Inference Steps", "description": "Number of denoising steps", "min": 1.0, - "max": 100.0 + "max": 500.0 }, { - "name": "downscaling_resolution", + "name": "disable_safety_checker", "type": { - "type": "int" + "type": "bool" }, - "default": 768, - "title": "Downscaling Resolution", - "description": "Downscaling resolution" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" } ], "outputs": [ @@ -14064,17 +14745,17 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/76fbe6df-517d-480a-a6e4-dce383b40bbb/Bildschirmfoto_2024-03-30_um_09.2.png", - "created_at": "2024-03-15T02:35:32.167345Z", - "description": "High resolution image Upscaler and Enhancer. Use at ClarityAI.co. A free Magnific alternative. Twitter/X: @philz1337x", - "github_url": "https://github.com/philz1337x/clarity-upscaler", - "license_url": "https://github.com/philz1337x/clarity-upscaler/blob/main/LICENSE.txt", - "name": "clarity-upscaler", - "owner": "philz1337x", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8629c6ba-b94c-4cbd-93aa-bda2b8ebecd9/F5Mg2KeXgAAkfre.jpg", + "created_at": "2023-09-04T09:18:11.028708Z", + "description": "An SDXL fine-tune based on Apple Emojis", + "github_url": null, + "license_url": null, + "name": "sdxl-emoji", + "owner": "fofr", "is_official": false, - "paper_url": "https://clarityai.co", - "run_count": 20009000, - "url": "https://replicate.com/philz1337x/clarity-upscaler", + "paper_url": null, + "run_count": 11600436, + "url": "https://replicate.com/fofr/sdxl-emoji", "visibility": "public", "weights_url": null }, @@ -14085,13 +14766,38 @@ ] }, { - "title": "GFPGAN", - "description": "Practical face restoration algorithm for *old photos* or *AI-generated faces*", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.GFPGAN", + "title": "SDXL Pixar", + "description": "Create Pixar poster easily with SDXL Pixar.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.SDXL_Pixar", "properties": [ { - "name": "img", + "name": "mask", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + }, + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank to randomize the seed" + }, + { + "name": "image", "type": { "type": "image" }, @@ -14102,242 +14808,330 @@ "data": null, "metadata": null }, - "title": "Img", - "description": "Input" + "title": "Image", + "description": "Input image for img2img or inpaint mode" }, { - "name": "scale", + "name": "width", "type": { - "type": "float" + "type": "int" }, - "default": 2, - "title": "Scale", - "description": "Rescaling factor" + "default": 1024, + "title": "Width", + "description": "Width of output image" }, { - "name": "version", + "name": "height", + "type": { + "type": "int" + }, + "default": 1024, + "title": "Height", + "description": "Height of output image" + }, + { + "name": "prompt", + "type": { + "type": "str" + }, + "default": "An astronaut riding a rainbow unicorn", + "title": "Prompt", + "description": "Input prompt" + }, + { + "name": "refine", "type": { "type": "enum", "values": [ - "v1.2", - "v1.3", - "v1.4", - "RestoreFormer" + "no_refiner", + "expert_ensemble_refiner", + "base_image_refiner" ], - "type_name": "nodetool.nodes.replicate.image.upscale.GFPGAN.Version" + "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Pixar.Refine" }, - "default": "v1.4", - "title": "Version", - "description": "GFPGAN version. v1.3: better quality. v1.4: more details and better identity." - } - ], - "outputs": [ + "default": "no_refiner", + "title": "Refine", + "description": "Which refine style to use" + }, { + "name": "scheduler", "type": { - "type": "image" + "type": "enum", + "values": [ + "DDIM", + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM" + ], + "type_name": "nodetool.nodes.replicate.image.generate.SDXL_Pixar.Scheduler" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/40223a51-a460-4f27-b13a-bf5d6429b686/output_1.png", - "created_at": "2021-09-15T22:08:48.809672Z", - "description": "Practical face restoration algorithm for *old photos* or *AI-generated faces*", - "github_url": "https://github.com/replicate/GFPGAN", - "license_url": "https://github.com/TencentARC/GFPGAN/blob/master/LICENSE", - "name": "gfpgan", - "owner": "tencentarc", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2101.04061", - "run_count": 95065199, - "url": "https://replicate.com/tencentarc/gfpgan", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "img", - "scale", - "version" - ] - }, - { - "title": "High Resolution Control Net Tile", - "description": "UPDATE: new upscaling algorithm for a much improved image quality. Fermat.app open-source implementation of an efficient ControlNet 1.1 tile for high-quality upscales. Increase the creativity to encourage hallucination.", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.HighResolutionControlNetTile", - "properties": [ + "default": "K_EULER", + "title": "Scheduler", + "description": "scheduler" + }, { - "name": "hdr", + "name": "lora_scale", "type": { "type": "float" }, - "default": 0, - "title": "Hdr", - "description": "HDR improvement over the original image", + "default": 0.6, + "title": "Lora Scale", + "description": "LoRA additive scale. Only applicable on trained models.", "min": 0.0, "max": 1.0 }, { - "name": "seed", + "name": "num_outputs", + "type": { + "type": "int" + }, + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 + }, + { + "name": "refine_steps", "type": { "type": "int", "optional": true }, "default": null, - "title": "Seed", - "description": "Seed" + "title": "Refine Steps", + "description": "For base_image_refiner, the number of steps to refine, defaults to num_inference_steps" }, { - "name": "image", + "name": "guidance_scale", "type": { - "type": "image" + "type": "float" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 7.5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 50.0 + }, + { + "name": "apply_watermark", + "type": { + "type": "bool" }, - "title": "Image", - "description": "Control image for scribble controlnet" + "default": true, + "title": "Apply Watermark", + "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." }, { - "name": "steps", + "name": "high_noise_frac", "type": { - "type": "int" + "type": "float" }, - "default": 8, - "title": "Steps", - "description": "Steps" + "default": 0.8, + "title": "High Noise Frac", + "description": "For expert_ensemble_refiner, the fraction of noise to use", + "min": 0.0, + "max": 1.0 }, { - "name": "format", + "name": "negative_prompt", "type": { - "type": "enum", - "values": [ - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Format" + "type": "str" }, - "default": "jpg", - "title": "Format", - "description": "Format of the output." + "default": "", + "title": "Negative Prompt", + "description": "Input Negative Prompt" }, { - "name": "prompt", + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "replicate_weights", "type": { "type": "str", "optional": true }, "default": null, - "title": "Prompt", - "description": "Prompt for the model" + "title": "Replicate Weights", + "description": "Replicate LoRA weights to use. Leave blank to use the default weights." + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 50, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 }, { - "name": "scheduler", + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images. This feature is only available through the API. See https://replicate.com/docs/how-does-replicate-work#safety" + } + ], + "outputs": [ + { + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/68125b17-60d7-4949-8984-0d50d736a623/out-0_5.png", + "created_at": "2023-10-21T10:32:49.911227Z", + "description": "Create Pixar poster easily with SDXL Pixar.", + "github_url": null, + "license_url": null, + "name": "sdxl-pixar", + "owner": "swartype", + "is_official": false, + "paper_url": null, + "run_count": 657578, + "url": "https://replicate.com/swartype/sdxl-pixar", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "mask", + "seed", + "image" + ] + }, + { + "title": "Seedream 4", + "description": "Unified text-to-image generation and precise single-sentence editing at up to 4K resolution", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.Seedream_4", + "properties": [ + { + "name": "size", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "K_EULER_ANCESTRAL", - "K_EULER" + "1K", + "2K", + "4K", + "custom" ], - "type_name": "nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.Seedream_4.Size" }, - "default": "DDIM", - "title": "Scheduler", - "description": "Choose a scheduler." + "default": "2K", + "title": "Size", + "description": "Image resolution: 1K (1024px), 2K (2048px), 4K (4096px), or 'custom' for specific dimensions." }, { - "name": "creativity", + "name": "width", "type": { - "type": "float" + "type": "int" }, - "default": 0.35, - "title": "Creativity", - "description": "Denoising strength. 1 means total destruction of the original image", - "min": 0.1, - "max": 1.0 + "default": 2048, + "title": "Width", + "description": "Custom image width (only used when size='custom'). Range: 1024-4096 pixels.", + "min": 1024.0, + "max": 4096.0 }, { - "name": "guess_mode", + "name": "height", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Guess Mode", - "description": "In this mode, the ControlNet encoder will try best to recognize the content of the input image even if you remove all prompts." + "default": 2048, + "title": "Height", + "description": "Custom image height (only used when size='custom'). Range: 1024-4096 pixels.", + "min": 1024.0, + "max": 4096.0 }, { - "name": "resolution", + "name": "prompt", "type": { - "type": "enum", - "values": [ - 2048, - 2560, - 4096 - ], - "type_name": "nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Resolution" + "type": "str", + "optional": true }, - "default": 2560, - "title": "Resolution", - "description": "Image resolution" + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "resemblance", + "name": "max_images", "type": { - "type": "float" + "type": "int" }, - "default": 0.85, - "title": "Resemblance", - "description": "Conditioning scale for controlnet", - "min": 0.0, - "max": 1.0 + "default": 1, + "title": "Max Images", + "description": "Maximum number of images to generate when sequential_image_generation='auto'. Range: 1-15. Total images (input + generated) cannot exceed 15.", + "min": 1.0, + "max": 15.0 }, { - "name": "guidance_scale", + "name": "image_input", "type": { - "type": "float" + "type": "list" }, - "default": 0, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance, should be 0.", - "min": 0.0, - "max": 30.0 + "default": [], + "title": "Image Input", + "description": "Input image(s) for image-to-image generation. List of 1-10 images for single or multi-reference generation." }, { - "name": "negative_prompt", + "name": "aspect_ratio", "type": { - "type": "str" + "type": "enum", + "values": [ + "match_input_image", + "1:1", + "4:3", + "3:4", + "16:9", + "9:16", + "3:2", + "2:3", + "21:9" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Seedream_4.Aspect_ratio" }, - "default": "teeth, tooth, open mouth, longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, mutant", - "title": "Negative Prompt", - "description": "Negative prompt" + "default": "match_input_image", + "title": "Aspect Ratio", + "description": "Image aspect ratio. Only used when size is not 'custom'. Use 'match_input_image' to automatically match the input image's aspect ratio." }, { - "name": "lora_details_strength", + "name": "enhance_prompt", "type": { - "type": "float" + "type": "bool" }, - "default": 1, - "title": "Lora Details Strength", - "description": "Strength of the image's details", - "min": -5.0, - "max": 3.0 + "default": true, + "title": "Enhance Prompt", + "description": "Enable prompt enhancement for higher quality results, this will take longer to generate." }, { - "name": "lora_sharpness_strength", + "name": "sequential_image_generation", "type": { - "type": "float" + "type": "enum", + "values": [ + "disabled", + "auto" + ], + "type_name": "nodetool.nodes.replicate.image.generate.Seedream_4.Sequential_image_generation" }, - "default": 1.25, - "title": "Lora Sharpness Strength", - "description": "Strength of the image's sharpness. We don't recommend values above 2.", - "min": -5.0, - "max": 10.0 + "default": "disabled", + "title": "Sequential Image Generation", + "description": "Group image generation mode. 'disabled' generates a single image. 'auto' lets the model decide whether to generate multiple related images (e.g., story scenes, character variations)." } ], "outputs": [ @@ -14349,58 +15143,32 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/db4434b4-7b0f-49f7-b78a-774fe9e630a7/batou.jpeg", - "created_at": "2023-12-08T02:32:38.082772Z", - "description": "UPDATE: new upscaling algorithm for a much improved image quality. Fermat.app open-source implementation of an efficient ControlNet 1.1 tile for high-quality upscales. Increase the creativity to encourage hallucination.", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/53dda182-2998-4fde-b235-e1b2a09b0484/seedream4-sm.jpg", + "created_at": "2025-09-09T11:23:42.672377Z", + "description": "Unified text-to-image generation and precise single-sentence editing at up to 4K resolution", "github_url": null, "license_url": null, - "name": "high-resolution-controlnet-tile", - "owner": "fermatresearch", - "is_official": false, + "name": "seedream-4", + "owner": "bytedance", + "is_official": true, "paper_url": null, - "run_count": 640821, - "url": "https://replicate.com/fermatresearch/high-resolution-controlnet-tile", + "run_count": 22735341, + "url": "https://replicate.com/bytedance/seedream-4", "visibility": "public", "weights_url": null }, "basic_fields": [ - "hdr", - "seed", - "image" + "size", + "width", + "height" ] }, { - "title": "Magic Image Refiner", - "description": "A better alternative to SDXL refiners, providing a lot of quality and detail. Can also be used for inpainting or upscaling.", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.MagicImageRefiner", + "title": "Stable Diffusion", + "description": "A latent text-to-image diffusion model capable of generating photo-realistic images given any text input", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StableDiffusion", "properties": [ - { - "name": "hdr", - "type": { - "type": "float" - }, - "default": 0, - "title": "Hdr", - "description": "HDR improvement over the original image", - "min": 0.0, - "max": 1.0 - }, - { - "name": "mask", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Mask", - "description": "When provided, refines some section of the image. Must be the same size as the image" - }, { "name": "seed", "type": { @@ -14409,41 +15177,72 @@ }, "default": null, "title": "Seed", - "description": "Seed" + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "image", + "name": "width", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + 64, + 128, + 192, + 256, + 320, + 384, + 448, + 512, + 576, + 640, + 704, + 768, + 832, + 896, + 960, + 1024 + ], + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion.Width" }, - "title": "Image", - "description": "Image to refine" + "default": 768, + "title": "Width", + "description": "Width of generated image in pixels. Needs to be a multiple of 64" }, { - "name": "steps", + "name": "height", "type": { - "type": "int" + "type": "enum", + "values": [ + 64, + 128, + 192, + 256, + 320, + 384, + 448, + 512, + 576, + 640, + 704, + 768, + 832, + 896, + 960, + 1024 + ], + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion.Height" }, - "default": 20, - "title": "Steps", - "description": "Steps" + "default": 768, + "title": "Height", + "description": "Height of generated image in pixels. Needs to be a multiple of 64" }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "a vision of paradise. unreal engine", "title": "Prompt", - "description": "Prompt for the model" + "description": "Input prompt" }, { "name": "scheduler", @@ -14451,81 +15250,60 @@ "type": "enum", "values": [ "DDIM", + "K_EULER", "DPMSolverMultistep", "K_EULER_ANCESTRAL", - "K_EULER" + "PNDM", + "KLMS" ], - "type_name": "nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion.Scheduler" }, - "default": "DDIM", + "default": "DPMSolverMultistep", "title": "Scheduler", "description": "Choose a scheduler." }, { - "name": "creativity", - "type": { - "type": "float" - }, - "default": 0.25, - "title": "Creativity", - "description": "Denoising strength. 1 means total destruction of the original image", - "min": 0.0, - "max": 1.0 - }, - { - "name": "guess_mode", - "type": { - "type": "bool" - }, - "default": false, - "title": "Guess Mode", - "description": "In this mode, the ControlNet encoder will try best to recognize the content of the input image even if you remove all prompts. The `guidance_scale` between 3.0 and 5.0 is recommended." - }, - { - "name": "resolution", - "type": { - "type": "enum", - "values": [ - "original", - "1024", - "2048" - ], - "type_name": "nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Resolution" - }, - "default": "original", - "title": "Resolution", - "description": "Image resolution" - }, - { - "name": "resemblance", + "name": "num_outputs", "type": { - "type": "float" + "type": "int" }, - "default": 0.75, - "title": "Resemblance", - "description": "Conditioning scale for controlnet", - "min": 0.0, - "max": 1.0 + "default": 1, + "title": "Num Outputs", + "description": "Number of images to generate.", + "min": 1.0, + "max": 4.0 }, { "name": "guidance_scale", "type": { "type": "float" }, - "default": 7, + "default": 7.5, "title": "Guidance Scale", "description": "Scale for classifier-free guidance", - "min": 0.1, - "max": 30.0 + "min": 1.0, + "max": 20.0 }, { "name": "negative_prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "teeth, tooth, open mouth, longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, mutant", + "default": null, "title": "Negative Prompt", - "description": "Negative prompt" + "description": "Specify things to not see in the output" + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 50, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 } ], "outputs": [ @@ -14537,32 +15315,53 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/H3ZmqoAgsBonKFilPafiEsvYsc2FnjD8EW3vMt6KpkYfd0ISA/out-0.png", - "created_at": "2024-01-03T16:55:24.594128Z", - "description": "A better alternative to SDXL refiners, providing a lot of quality and detail. Can also be used for inpainting or upscaling.", - "github_url": "https://github.com/BatouResearch/magic-image-refiner", - "license_url": null, - "name": "magic-image-refiner", - "owner": "fermatresearch", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/710f5e9f-9561-4e4f-9d1e-614205f62597/stable-diffusion.webp", + "created_at": "2022-08-22T21:37:08.396208Z", + "description": "A latent text-to-image diffusion model capable of generating photo-realistic images given any text input", + "github_url": "https://github.com/replicate/cog-stable-diffusion", + "license_url": "https://huggingface.co/spaces/CompVis/stable-diffusion-license", + "name": "stable-diffusion", + "owner": "stability-ai", "is_official": false, - "paper_url": null, - "run_count": 943882, - "url": "https://replicate.com/fermatresearch/magic-image-refiner", + "paper_url": "https://arxiv.org/abs/2112.10752", + "run_count": 110887346, + "url": "https://replicate.com/stability-ai/stable-diffusion", "visibility": "public", "weights_url": null }, "basic_fields": [ - "hdr", - "mask", - "seed" + "seed", + "width", + "height" ] }, { - "title": "Real Esr Gan", - "description": "Real-ESRGAN for image upscaling on an A100", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.RealEsrGan", + "title": "Stable Diffusion 3 5 Large", + "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, thanks to Query-Key Normalization.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StableDiffusion3_5_Large", "properties": [ + { + "name": "cfg", + "type": { + "type": "float" + }, + "default": 5, + "title": "Cfg", + "description": "The guidance scale tells the model how similar the output should be to the prompt.", + "min": 1.0, + "max": 10.0 + }, + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Set a seed for reproducibility. Random by default." + }, { "name": "image", "type": { @@ -14576,27 +15375,74 @@ "metadata": null }, "title": "Image", - "description": "Input image" + "description": "Input image for image to image mode. The aspect ratio of your output will match this image." }, { - "name": "scale", + "name": "prompt", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 4, - "title": "Scale", - "description": "Factor to scale image by", - "min": 0.0, - "max": 10.0 + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "face_enhance", + "name": "aspect_ratio", "type": { - "type": "bool" + "type": "enum", + "values": [ + "16:9", + "1:1", + "21:9", + "2:3", + "3:2", + "4:5", + "5:4", + "9:16", + "9:21" + ], + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Aspect_ratio" }, - "default": false, - "title": "Face Enhance", - "description": "Run GFPGAN face enhancement along with upscaling" + "default": "1:1", + "title": "Aspect Ratio", + "description": "The aspect ratio of your output image. This value is ignored if you are using an input image." + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "negative_prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Negative Prompt", + "description": "What you do not want to see in the image" + }, + { + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.85, + "title": "Prompt Strength", + "description": "Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", + "min": 0.0, + "max": 1.0 } ], "outputs": [ @@ -14608,46 +15454,52 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/lv0iOW3u6DrNOd30ybfmufqWebiuW10YjILw05YZGbeipZZCB/output.png", - "created_at": "2023-03-10T22:36:15.201038Z", - "description": "Real-ESRGAN for image upscaling on an A100", - "github_url": "https://github.com/replicate/cog-real-esrgan", - "license_url": "https://github.com/replicate/cog-real-esrgan/blob/main/LICENSE", - "name": "real-esrgan-a100", - "owner": "daanelson", - "is_official": false, - "paper_url": null, - "run_count": 14614084, - "url": "https://replicate.com/daanelson/real-esrgan-a100", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4b03d178-eaf3-4458-a752-dbc76098396b/replicate-prediction-_ycGb1jN.webp", + "created_at": "2024-10-21T20:53:39.435334Z", + "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, thanks to Query-Key Normalization.", + "github_url": null, + "license_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large/blob/main/LICENSE.md", + "name": "stable-diffusion-3.5-large", + "owner": "stability-ai", + "is_official": true, + "paper_url": "https://arxiv.org/abs/2403.03206", + "run_count": 1854781, + "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-large", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large" }, "basic_fields": [ - "image", - "scale", - "face_enhance" + "cfg", + "seed", + "image" ] }, { - "title": "Swin 2 SR", - "description": "3 Million Runs! AI Photorealistic Image Super-Resolution and Restoration", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.Swin2SR", + "title": "Stable Diffusion 3 5 Large Turbo", + "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, with a focus on fewer inference steps", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StableDiffusion3_5_Large_Turbo", "properties": [ { - "name": "task", + "name": "cfg", + "type": { + "type": "float" + }, + "default": 1, + "title": "Cfg", + "description": "The guidance scale tells the model how similar the output should be to the prompt.", + "min": 1.0, + "max": 10.0 + }, + { + "name": "seed", "type": { - "type": "enum", - "values": [ - "classical_sr", - "real_sr", - "compressed_sr" - ], - "type_name": "nodetool.nodes.replicate.image.upscale.Swin2SR.Task" + "type": "int", + "optional": true }, - "default": "real_sr", - "title": "Task", - "description": "Choose a task" + "default": null, + "title": "Seed", + "description": "Set a seed for reproducibility. Random by default." }, { "name": "image", @@ -14662,7 +15514,74 @@ "metadata": null }, "title": "Image", - "description": "Input image" + "description": "Input image for image to image mode. The aspect ratio of your output will match this image." + }, + { + "name": "prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" + }, + { + "name": "aspect_ratio", + "type": { + "type": "enum", + "values": [ + "16:9", + "1:1", + "21:9", + "2:3", + "3:2", + "4:5", + "5:4", + "9:16", + "9:21" + ], + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Aspect_ratio" + }, + "default": "1:1", + "title": "Aspect Ratio", + "description": "The aspect ratio of your output image. This value is ignored if you are using an input image." + }, + { + "name": "output_format", + "type": { + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Large_Turbo.Output_format" + }, + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "negative_prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Negative Prompt", + "description": "What you do not want to see in the image" + }, + { + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.85, + "title": "Prompt Strength", + "description": "Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", + "min": 0.0, + "max": 1.0 } ], "outputs": [ @@ -14674,39 +15593,52 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/aabde67b-bf5c-4fc8-a4bd-8b2dcba60be6/swin2sr-cover3.png", - "created_at": "2022-10-28T22:59:05.692845Z", - "description": "3 Million Runs! AI Photorealistic Image Super-Resolution and Restoration", - "github_url": "https://github.com/mv-lab/swin2sr", - "license_url": "https://github.com/mv-lab/swin2sr/blob/main/LICENSE", - "name": "swin2sr", - "owner": "mv-lab", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2209.11345", - "run_count": 3571744, - "url": "https://replicate.com/mv-lab/swin2sr", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/9e1b4258-22bd-4a59-ba4a-ecac220a8a9b/replicate-prediction-_WU4XtaV.webp", + "created_at": "2024-10-22T12:09:38.705615Z", + "description": "A text-to-image model that generates high-resolution images with fine details. It supports various artistic styles and produces diverse outputs from the same prompt, with a focus on fewer inference steps", + "github_url": null, + "license_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large-turbo/blob/main/LICENSE.md", + "name": "stable-diffusion-3.5-large-turbo", + "owner": "stability-ai", + "is_official": true, + "paper_url": "https://arxiv.org/abs/2403.03206", + "run_count": 881463, + "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-large-turbo", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-large-turbo" }, "basic_fields": [ - "task", + "cfg", + "seed", "image" ] }, { - "title": "Swin IR", - "description": "Image Restoration Using Swin Transformer", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.SwinIR", + "title": "Stable Diffusion 3 5 Medium", + "description": "2.5 billion parameter image model with improved MMDiT-X architecture", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StableDiffusion3_5_Medium", "properties": [ { - "name": "jpeg", + "name": "cfg", "type": { - "type": "int" + "type": "float" }, - "default": 40, - "title": "Jpeg", - "description": "scale factor, activated for JPEG Compression Artifact Reduction. Leave it as default or arbitrary if other tasks are selected" + "default": 5, + "title": "Cfg", + "description": "The guidance scale tells the model how similar the output should be to the prompt.", + "min": 1.0, + "max": 10.0 + }, + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Set a seed for reproducibility. Random by default." }, { "name": "image", @@ -14721,39 +15653,74 @@ "metadata": null }, "title": "Image", - "description": "input image" + "description": "Input image for image to image mode. The aspect ratio of your output will match this image." }, { - "name": "noise", + "name": "prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" + }, + { + "name": "aspect_ratio", "type": { "type": "enum", "values": [ - 15, - 25, - 50 + "16:9", + "1:1", + "21:9", + "2:3", + "3:2", + "4:5", + "5:4", + "9:16", + "9:21" ], - "type_name": "nodetool.nodes.replicate.image.upscale.SwinIR.Noise" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Aspect_ratio" }, - "default": 15, - "title": "Noise", - "description": "noise level, activated for Grayscale Image Denoising and Color Image Denoising. Leave it as default or arbitrary if other tasks are selected" + "default": "1:1", + "title": "Aspect Ratio", + "description": "The aspect ratio of your output image. This value is ignored if you are using an input image." }, { - "name": "task_type", + "name": "output_format", "type": { "type": "enum", "values": [ - "Real-World Image Super-Resolution-Large", - "Real-World Image Super-Resolution-Medium", - "Grayscale Image Denoising", - "Color Image Denoising", - "JPEG Compression Artifact Reduction" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.upscale.SwinIR.Task_type" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusion3_5_Medium.Output_format" }, - "default": "Real-World Image Super-Resolution-Large", - "title": "Task Type", - "description": "Choose a task" + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" + }, + { + "name": "negative_prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Negative Prompt", + "description": "What you do not want to see in the image" + }, + { + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.85, + "title": "Prompt Strength", + "description": "Prompt strength (or denoising strength) when using image to image. 1.0 corresponds to full destruction of information in image.", + "min": 0.0, + "max": 1.0 } ], "outputs": [ @@ -14765,40 +15732,46 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/c62290f9-ba1d-419b-95b8-eedfe5863122/out.png", - "created_at": "2021-09-13T19:58:55.156216Z", - "description": "Image Restoration Using Swin Transformer", - "github_url": "https://github.com/JingyunLiang/SwinIR", - "license_url": "https://github.com/JingyunLiang/SwinIR/blob/main/LICENSE", - "name": "swinir", - "owner": "jingyunliang", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2108.10257", - "run_count": 6092943, - "url": "https://replicate.com/jingyunliang/swinir", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/d65fc397-135b-4976-a84d-12980ab2c0bc/replicate-prediction-_4kWPYZu.webp", + "created_at": "2024-10-29T12:55:45.899504Z", + "description": "2.5 billion parameter image model with improved MMDiT-X architecture", + "github_url": null, + "license_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-medium/blob/main/LICENSE.md", + "name": "stable-diffusion-3.5-medium", + "owner": "stability-ai", + "is_official": true, + "paper_url": "https://arxiv.org/abs/2403.03206", + "run_count": 98758, + "url": "https://replicate.com/stability-ai/stable-diffusion-3.5-medium", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-medium" }, "basic_fields": [ - "jpeg", - "image", - "noise" + "cfg", + "seed", + "image" ] }, { - "title": "Ultimate SDUpscale", - "description": "Ultimate SD Upscale with ControlNet Tile", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.UltimateSDUpscale", + "title": "Stable Diffusion Inpainting", + "description": "Fill in masked parts of images with Stable Diffusion", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StableDiffusionInpainting", "properties": [ { - "name": "cfg", + "name": "mask", "type": { - "type": "float" + "type": "image" }, - "default": 8, - "title": "Cfg", - "description": "CFG" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "Black and white image to use as mask for inpainting over the image provided. White pixels are inpainted and black pixels are preserved." }, { "name": "seed", @@ -14808,7 +15781,7 @@ }, "default": null, "title": "Seed", - "description": "Sampling seed, leave Empty for Random" + "description": "Random seed. Leave blank to randomize the seed" }, { "name": "image", @@ -14823,248 +15796,142 @@ "metadata": null }, "title": "Image", - "description": "Input image" - }, - { - "name": "steps", - "type": { - "type": "int" - }, - "default": 20, - "title": "Steps", - "description": "Steps" - }, - { - "name": "denoise", - "type": { - "type": "float" - }, - "default": 0.2, - "title": "Denoise", - "description": "Denoise" - }, - { - "name": "upscaler", - "type": { - "type": "enum", - "values": [ - "4x_NMKD-Siax_200k", - "4x-UltraSharp", - "RealESRGAN_x4plus", - "RealESRGAN_x4plus_anime_6B" - ], - "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Upscaler" - }, - "default": "4x-UltraSharp", - "title": "Upscaler", - "description": "Upscaler" - }, - { - "name": "mask_blur", - "type": { - "type": "int" - }, - "default": 8, - "title": "Mask Blur", - "description": "Mask Blur" - }, - { - "name": "mode_type", - "type": { - "type": "enum", - "values": [ - "Linear", - "Chess", - "None" - ], - "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Mode_type" - }, - "default": "Linear", - "title": "Mode Type", - "description": "Mode Type" + "description": "Initial image to generate variations of. Will be resized to height x width" }, { - "name": "scheduler", + "name": "width", "type": { "type": "enum", "values": [ - "normal", - "karras", - "exponential", - "sgm_uniform", - "simple", - "ddim_uniform" + 64, + 128, + 192, + 256, + 320, + 384, + 448, + 512, + 576, + 640, + 704, + 768, + 832, + 896, + 960, + 1024 ], - "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Scheduler" - }, - "default": "normal", - "title": "Scheduler", - "description": "Scheduler" - }, - { - "name": "tile_width", - "type": { - "type": "int" - }, - "default": 512, - "title": "Tile Width", - "description": "Tile Width" - }, - { - "name": "upscale_by", - "type": { - "type": "float" - }, - "default": 2, - "title": "Upscale By", - "description": "Upscale By" - }, - { - "name": "tile_height", - "type": { - "type": "int" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Width" }, "default": 512, - "title": "Tile Height", - "description": "Tile Height" + "title": "Width", + "description": "Width of generated image in pixels. Needs to be a multiple of 64" }, { - "name": "sampler_name", + "name": "height", "type": { "type": "enum", "values": [ - "euler", - "euler_ancestral", - "heun", - "dpm_2", - "dpm_2_ancestral", - "lms", - "dpm_fast", - "dpm_adaptive", - "dpmpp_2s_ancestral", - "dpmpp_sde", - "dpmpp_sde_gpu", - "dpmpp_2m", - "dpmpp_2m_sde", - "dpmpp_2m_sde_gpu", - "dpmpp_3m_sde", - "dpmpp_3m_sde_gpu", - "dpmpp", - "ddim", - "uni_pc", - "uni_pc_bh2" + 64, + 128, + 192, + 256, + 320, + 384, + 448, + 512, + 576, + 640, + 704, + 768, + 832, + 896, + 960, + 1024 ], - "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Sampler_name" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Height" }, - "default": "euler", - "title": "Sampler Name", - "description": "Sampler" + "default": 512, + "title": "Height", + "description": "Height of generated image in pixels. Needs to be a multiple of 64" }, { - "name": "tile_padding", + "name": "prompt", "type": { - "type": "int" + "type": "str" }, - "default": 32, - "title": "Tile Padding", - "description": "Tile Padding" + "default": "a vision of paradise. unreal engine", + "title": "Prompt", + "description": "Input prompt" }, { - "name": "seam_fix_mode", + "name": "scheduler", "type": { "type": "enum", "values": [ - "None", - "Band Pass", - "Half Tile", - "Half Tile + Intersections" + "DDIM", + "K_EULER", + "DPMSolverMultistep", + "K_EULER_ANCESTRAL", + "PNDM", + "KLMS" ], - "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Seam_fix_mode" - }, - "default": "None", - "title": "Seam Fix Mode", - "description": "Seam Fix Mode" - }, - { - "name": "seam_fix_width", - "type": { - "type": "int" - }, - "default": 64, - "title": "Seam Fix Width", - "description": "Seam Fix Width" - }, - { - "name": "negative_prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Negative Prompt", - "description": "Negative Prompt" - }, - { - "name": "positive_prompt", - "type": { - "type": "str" - }, - "default": "Hey! Have a nice day :D", - "title": "Positive Prompt", - "description": "Positive Prompt" - }, - { - "name": "seam_fix_denoise", - "type": { - "type": "float" - }, - "default": 1, - "title": "Seam Fix Denoise", - "description": "Seam Fix Denoise" - }, - { - "name": "seam_fix_padding", - "type": { - "type": "int" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionInpainting.Scheduler" }, - "default": 16, - "title": "Seam Fix Padding", - "description": "Seam Fix Padding" + "default": "DPMSolverMultistep", + "title": "Scheduler", + "description": "Choose a scheduler." }, { - "name": "seam_fix_mask_blur", + "name": "num_outputs", "type": { "type": "int" }, - "default": 8, - "title": "Seam Fix Mask Blur", - "description": "Seam Fix Mask Blur" + "default": 1, + "title": "Num Outputs", + "description": "Number of images to generate.", + "min": 1.0, + "max": 4.0 }, { - "name": "controlnet_strength", + "name": "guidance_scale", "type": { "type": "float" }, - "default": 1, - "title": "Controlnet Strength", - "description": "ControlNet Strength" + "default": 7.5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 20.0 }, { - "name": "force_uniform_tiles", + "name": "negative_prompt", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": true, - "title": "Force Uniform Tiles", - "description": "Force Uniform Tiles" + "default": null, + "title": "Negative Prompt", + "description": "Specify things to not see in the output" }, { - "name": "use_controlnet_tile", + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 50, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 + }, + { + "name": "disable_safety_checker", "type": { "type": "bool" }, - "default": true, - "title": "Use Controlnet Tile", - "description": "Use ControlNet Tile" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)" } ], "outputs": [ @@ -15076,32 +15943,57 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/ec52df9a-be01-4c74-af9d-a14df03bf03a/output.png", - "created_at": "2023-11-14T08:41:40.364739Z", - "description": "Ultimate SD Upscale with ControlNet Tile", - "github_url": "https://github.com/fewjative/cog-ultimate-sd-upscale", - "license_url": null, - "name": "ultimate-sd-upscale", - "owner": "fewjative", + "cover_image_url": "https://replicate.delivery/pbxt/xs0pPOUM6HKmPlJJBXqKfE1YsiMzgNsCuGedlX0VqvPYifLgA/out-0.png", + "created_at": "2022-12-02T17:40:01.152489Z", + "description": "Fill in masked parts of images with Stable Diffusion", + "github_url": "https://github.com/replicate/cog-stable-diffusion-inpainting", + "license_url": "https://huggingface.co/stabilityai/stable-diffusion-2/blob/main/LICENSE-MODEL", + "name": "stable-diffusion-inpainting", + "owner": "stability-ai", "is_official": false, "paper_url": null, - "run_count": 163771, - "url": "https://replicate.com/fewjative/ultimate-sd-upscale", + "run_count": 20918420, + "url": "https://replicate.com/stability-ai/stable-diffusion-inpainting", "visibility": "public", "weights_url": null }, "basic_fields": [ - "cfg", + "mask", "seed", "image" ] }, { - "title": "ru Dall E SR", - "description": "Real-ESRGAN super-resolution model from ruDALL-E", - "namespace": "replicate.image.upscale", - "node_type": "replicate.image.upscale.ruDallE_SR", + "title": "Stable Diffusion XL", + "description": "A text-to-image generative AI model that creates beautiful images", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StableDiffusionXL", "properties": [ + { + "name": "mask", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "Input mask for inpaint mode. Black areas will be preserved, white areas will be inpainted." + }, + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank to randomize the seed" + }, { "name": "image", "type": { @@ -15115,174 +16007,181 @@ "metadata": null }, "title": "Image", - "description": "Input image" + "description": "Input image for img2img or inpaint mode" }, { - "name": "scale", + "name": "width", + "type": { + "type": "int" + }, + "default": 1024, + "title": "Width", + "description": "Width of output image" + }, + { + "name": "height", + "type": { + "type": "int" + }, + "default": 1024, + "title": "Height", + "description": "Height of output image" + }, + { + "name": "prompt", + "type": { + "type": "str" + }, + "default": "An astronaut riding a rainbow unicorn", + "title": "Prompt", + "description": "Input prompt" + }, + { + "name": "refine", "type": { "type": "enum", "values": [ - 2, - 4, - 8 + "no_refiner", + "expert_ensemble_refiner", + "base_image_refiner" ], - "type_name": "nodetool.nodes.replicate.image.upscale.ruDallE_SR.Scale" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionXL.Refine" }, - "default": 4, - "title": "Scale", - "description": "Choose up-scaling factor" - } - ], - "outputs": [ + "default": "no_refiner", + "title": "Refine", + "description": "Which refine style to use" + }, { + "name": "scheduler", "type": { - "type": "image" + "type": "enum", + "values": [ + "DDIM", + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM" + ], + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionXL.Scheduler" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://replicate.delivery/mgxm/588170af-559f-454e-967d-8fb6c7f8304b/out.png", - "created_at": "2021-11-04T18:36:03.485750Z", - "description": "Real-ESRGAN super-resolution model from ruDALL-E", - "github_url": "https://github.com/CJWBW/rudalle-sr", - "license_url": "https://github.com/chenxwh/rudalle-sr/blob/main/LICENSE.txt", - "name": "rudalle-sr", - "owner": "cjwbw", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2107.10833", - "run_count": 484657, - "url": "https://replicate.com/cjwbw/rudalle-sr", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "image", - "scale" - ] - }, - { - "title": "Latex OCR", - "description": "Optical character recognition to turn images of latex equations into latex format.", - "namespace": "replicate.image.ocr", - "node_type": "replicate.image.ocr.LatexOCR", - "properties": [ + "default": "K_EULER", + "title": "Scheduler", + "description": "scheduler" + }, { - "name": "image_path", + "name": "lora_scale", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Image Path", - "description": "Input image" - } - ], - "outputs": [ + "default": 0.6, + "title": "Lora Scale", + "description": "LoRA additive scale. Only applicable on trained models.", + "min": 0.0, + "max": 1.0 + }, { + "name": "num_outputs", "type": { - "type": "str" + "type": "int" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/980ae6b5-4ab8-417a-8148-b244f4ae0493/latex.png", - "created_at": "2023-11-06T10:13:47.198885Z", - "description": "Optical character recognition to turn images of latex equations into latex format.", - "github_url": "https://github.com/mickeybeurskens/LaTeX-OCR", - "license_url": "https://github.com/mickeybeurskens/LaTeX-OCR/blob/main/LICENSE", - "name": "latex-ocr", - "owner": "mickeybeurskens", - "is_official": false, - "paper_url": null, - "run_count": 865, - "url": "https://replicate.com/mickeybeurskens/latex-ocr", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "image_path" - ] - }, - { - "title": "Text Extract OCR", - "description": "A simple OCR Model that can easily extract text from an image.", - "namespace": "replicate.image.ocr", - "node_type": "replicate.image.ocr.TextExtractOCR", - "properties": [ + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 + }, + { + "name": "refine_steps", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Refine Steps", + "description": "For base_image_refiner, the number of steps to refine, defaults to num_inference_steps" + }, { - "name": "image", + "name": "guidance_scale", "type": { - "type": "image" + "type": "float" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 7.5, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 50.0 + }, + { + "name": "apply_watermark", + "type": { + "type": "bool" }, - "title": "Image", - "description": "Image to process" - } - ], - "outputs": [ + "default": true, + "title": "Apply Watermark", + "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + }, + { + "name": "high_noise_frac", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "High Noise Frac", + "description": "For expert_ensemble_refiner, the fraction of noise to use", + "min": 0.0, + "max": 1.0 + }, { + "name": "negative_prompt", "type": { "type": "str" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/9d31603c-2266-4705-9d2d-01b4f6bff653/IM0077782.png", - "created_at": "2023-10-19T13:20:00.740943Z", - "description": "A simple OCR Model that can easily extract text from an image.", - "github_url": null, - "license_url": null, - "name": "text-extract-ocr", - "owner": "abiruyt", - "is_official": false, - "paper_url": null, - "run_count": 89926432, - "url": "https://replicate.com/abiruyt/text-extract-ocr", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "image" - ] - }, - { - "title": "DD Color", - "description": "Towards Photo-Realistic Image Colorization via Dual Decoders", - "namespace": "replicate.image.process", - "node_type": "replicate.image.process.DD_Color", - "properties": [ + "default": "", + "title": "Negative Prompt", + "description": "Input Negative Prompt" + }, { - "name": "image", + "name": "prompt_strength", + "type": { + "type": "float" + }, + "default": 0.8, + "title": "Prompt Strength", + "description": "Prompt strength when using img2img / inpaint. 1.0 corresponds to full destruction of information in image", + "min": 0.0, + "max": 1.0 + }, + { + "name": "replicate_weights", "type": { "type": "str", "optional": true }, "default": null, - "title": "Image", - "description": "Grayscale input image." + "title": "Replicate Weights", + "description": "Replicate LoRA weights to use. Leave blank to use the default weights." }, { - "name": "model_size", + "name": "num_inference_steps", "type": { - "type": "enum", - "values": [ - "large", - "tiny" - ], - "type_name": "nodetool.nodes.replicate.image.process.DD_Color.Model_size" + "type": "int" }, - "default": "large", - "title": "Model Size", - "description": "Choose the model size." + "default": 50, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 + }, + { + "name": "disable_safety_checker", + "type": { + "type": "bool" + }, + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images. This feature is only available through the API. See [https://replicate.com/docs/how-does-replicate-work#safety](https://replicate.com/docs/how-does-replicate-work#safety)" } ], "outputs": [ @@ -15294,163 +16193,142 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/d8d3648a-044e-4474-8392-87d52c0c2c68/ddcolor.jpg", - "created_at": "2024-01-12T15:02:06.387410Z", - "description": "Towards Photo-Realistic Image Colorization via Dual Decoders", - "github_url": "https://github.com/piddnad/DDColor", - "license_url": "https://github.com/piddnad/DDColor/blob/master/LICENSE", - "name": "ddcolor", - "owner": "piddnad", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/9065f9e3-40da-4742-8cb8-adfa8e794c0d/sdxl_cover.jpg", + "created_at": "2023-07-26T17:53:09.882651Z", + "description": "A text-to-image generative AI model that creates beautiful images", + "github_url": "https://github.com/replicate/cog-sdxl", + "license_url": "https://github.com/Stability-AI/generative-models/blob/main/model_licenses/LICENSE-SDXL1.0", + "name": "sdxl", + "owner": "stability-ai", "is_official": false, - "paper_url": "https://arxiv.org/abs/2212.11613", - "run_count": 768259, - "url": "https://replicate.com/piddnad/ddcolor", + "paper_url": "https://arxiv.org/abs/2307.01952", + "run_count": 83548078, + "url": "https://replicate.com/stability-ai/sdxl", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0" }, "basic_fields": [ - "image", - "model_size" + "mask", + "seed", + "image" ] }, { - "title": "Expand Image", - "description": "Bria Expand expands images beyond their borders in high quality. Resizing the image by generating new pixels to expand to the desired aspect ratio. Trained exclusively on licensed data for safe and risk-free commercial use", - "namespace": "replicate.image.process", - "node_type": "replicate.image.process.Expand_Image", + "title": "Stable Diffusion XLLightning", + "description": "SDXL-Lightning by ByteDance: a fast text-to-image model that makes high-quality images in 4 steps", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StableDiffusionXLLightning", "properties": [ { "name": "seed", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, + "default": 0, "title": "Seed", - "description": "Random seed. Set for reproducible generation" + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "sync", + "name": "width", "type": { - "type": "bool" + "type": "int" }, - "default": true, - "title": "Sync", - "description": "Synchronous response mode" + "default": 1024, + "title": "Width", + "description": "Width of output image. Recommended 1024 or 1280", + "min": 256.0, + "max": 1280.0 }, { - "name": "image", + "name": "height", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "int" }, - "title": "Image", - "description": "Image file" + "default": 1024, + "title": "Height", + "description": "Height of output image. Recommended 1024 or 1280", + "min": 256.0, + "max": 1280.0 }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "self-portrait of a woman, lightning in the background", "title": "Prompt", - "description": "Text prompt for image generation" - }, - { - "name": "image_url", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Image Url", - "description": "Image URL" - }, - { - "name": "canvas_size", - "type": { - "type": "list", - "optional": true - }, - "default": null, - "title": "Canvas Size", - "description": "Desired output canvas dimensions [width, height]. Default [1000, 1000]" + "description": "Input prompt" }, { - "name": "aspect_ratio", + "name": "scheduler", "type": { "type": "enum", "values": [ - "1:1", - "2:3", - "3:2", - "3:4", - "4:3", - "4:5", - "5:4", - "9:16", - "16:9" + "DDIM", + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM", + "DPM++2MSDE" ], - "type_name": "nodetool.nodes.replicate.image.process.Expand_Image.Aspect_ratio" + "type_name": "nodetool.nodes.replicate.image.generate.StableDiffusionXLLightning.Scheduler" }, - "default": "1:1", - "title": "Aspect Ratio", - "description": "Aspect ratio for expansion." + "default": "K_EULER", + "title": "Scheduler", + "description": "scheduler" }, { - "name": "preserve_alpha", + "name": "num_outputs", "type": { - "type": "bool" + "type": "int" }, - "default": true, - "title": "Preserve Alpha", - "description": "Preserve alpha channel in output" + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output.", + "min": 1.0, + "max": 4.0 }, { - "name": "negative_prompt", + "name": "guidance_scale", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Negative Prompt", - "description": "Negative prompt for image generation" + "default": 0, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 0.0, + "max": 50.0 }, { - "name": "content_moderation", + "name": "negative_prompt", "type": { - "type": "bool" + "type": "str" }, - "default": false, - "title": "Content Moderation", - "description": "Enable content moderation" + "default": "worst quality, low quality", + "title": "Negative Prompt", + "description": "Negative Input prompt" }, { - "name": "original_image_size", + "name": "num_inference_steps", "type": { - "type": "list", - "optional": true + "type": "int" }, - "default": null, - "title": "Original Image Size", - "description": "Size of original image in canvas [width, height]" + "default": 4, + "title": "Num Inference Steps", + "description": "Number of denoising steps. 4 for best results", + "min": 1.0, + "max": 10.0 }, { - "name": "original_image_location", + "name": "disable_safety_checker", "type": { - "type": "list", - "optional": true + "type": "bool" }, - "default": null, - "title": "Original Image Location", - "description": "Position of original image in canvas [x, y]" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated images" } ], "outputs": [ @@ -15462,31 +16340,31 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/Kke10tmiC2yaekp8wUGz4BJ4SgDafE2zGUXDXNGanjEhqL6pA/tmpiutbqh22.png", - "created_at": "2025-07-03T06:08:32.245632Z", - "description": "Bria Expand expands images beyond their borders in high quality. Resizing the image by generating new pixels to expand to the desired aspect ratio. Trained exclusively on licensed data for safe and risk-free commercial use", - "github_url": null, - "license_url": "https://learn.bria.ai/hubfs/Terms%20and%20Conditions/Bria%20AI%20Online%20Terms%20and%20Conditions%20(March%202024)%20v1.1c.pdf?hsLang=en&_gl=1*iwvu7w*_gcl_au*MzQyMzUxMzAxLjE3NDcwNDU4NTg.*_ga*MjAxNDky", - "name": "expand-image", - "owner": "bria", - "is_official": true, - "paper_url": null, - "run_count": 15564, - "url": "https://replicate.com/bria/expand-image", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/779f3f58-c3db-4403-a01b-3ffed97a1449/out-0-1.jpg", + "created_at": "2024-02-21T07:36:15.534380Z", + "description": "SDXL-Lightning by ByteDance: a fast text-to-image model that makes high-quality images in 4 steps", + "github_url": "https://github.com/lucataco/cog-sdxl-lightning-4step", + "license_url": "https://huggingface.co/ByteDance/SDXL-Lightning/blob/main/LICENSE.md", + "name": "sdxl-lightning-4step", + "owner": "bytedance", + "is_official": false, + "paper_url": "https://huggingface.co/ByteDance/SDXL-Lightning/resolve/main/sdxl_lightning_report.pdf", + "run_count": 1031639158, + "url": "https://replicate.com/bytedance/sdxl-lightning-4step", "visibility": "public", - "weights_url": "https://huggingface.co/briaai/BRIA-2.3-ControlNet-Inpainting" + "weights_url": "https://huggingface.co/ByteDance/SDXL-Lightning" }, "basic_fields": [ "seed", - "sync", - "image" + "width", + "height" ] }, { - "title": "Magic Style Transfer", - "description": "Restyle an image with the style of another one. I strongly suggest to upscale the results with Clarity AI", - "namespace": "replicate.image.process", - "node_type": "replicate.image.process.Magic_Style_Transfer", + "title": "Sticker Maker", + "description": "Make stickers with AI. Generates graphics with transparent backgrounds.", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StickerMaker", "properties": [ { "name": "seed", @@ -15496,240 +16374,228 @@ }, "default": null, "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" - }, - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Input image" + "description": "Fix the random seed for reproducibility" }, { - "name": "prompt", + "name": "steps", "type": { - "type": "str" + "type": "int" }, - "default": "An astronaut riding a rainbow unicorn", - "title": "Prompt", - "description": "Input prompt" + "default": 17, + "title": "Steps" }, { - "name": "ip_image", + "name": "width", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "int" }, - "title": "Ip Image", - "description": "Input image for img2img or inpaint mode" + "default": 1152, + "title": "Width" }, { - "name": "ip_scale", + "name": "height", "type": { - "type": "float" + "type": "int" }, - "default": 0.3, - "title": "Ip Scale", - "description": "IP Adapter strength.", - "min": 0.0, - "max": 1.0 + "default": 1152, + "title": "Height" }, { - "name": "strength", + "name": "prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0.9, - "title": "Strength", - "description": "When img2img is active, the denoising strength. 1 means total destruction of the input image.", - "min": 0.0, - "max": 1.0 + "default": "a cute cat", + "title": "Prompt" }, { - "name": "scheduler", + "name": "output_format", "type": { "type": "enum", "values": [ - "DDIM", - "DPMSolverMultistep", - "HeunDiscrete", - "KarrasDPM", - "K_EULER_ANCESTRAL", - "K_EULER", - "PNDM" + "webp", + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.process.Magic_Style_Transfer.Scheduler" + "type_name": "nodetool.nodes.replicate.image.generate.StickerMaker.Output_format" }, - "default": "K_EULER", - "title": "Scheduler", - "description": "scheduler" + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "lora_scale", + "name": "output_quality", "type": { - "type": "float" + "type": "int" }, - "default": 0.9, - "title": "Lora Scale", - "description": "LoRA additive scale. Only applicable on trained models.", + "default": 90, + "title": "Output Quality", + "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", "min": 0.0, - "max": 1.0 + "max": 100.0 }, { - "name": "num_outputs", + "name": "negative_prompt", + "type": { + "type": "str" + }, + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want in the image" + }, + { + "name": "number_of_images", "type": { "type": "int" }, "default": 1, - "title": "Num Outputs", - "description": "Number of images to output", + "title": "Number Of Images", + "description": "Number of images to generate", "min": 1.0, - "max": 4.0 - }, + "max": 10.0 + } + ], + "outputs": [ { - "name": "lora_weights", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Lora Weights", - "description": "Replicate LoRA weights to use. Leave blank to use the default weights." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/fb7cf2ea-aacd-458d-9d19-76dda21f9748/sticker-maker.webp", + "created_at": "2024-02-23T11:59:22.452180Z", + "description": "Make stickers with AI. Generates graphics with transparent backgrounds.", + "github_url": "https://github.com/fofr/cog-stickers", + "license_url": "https://github.com/fofr/cog-stickers/blob/main/LICENSE", + "name": "sticker-maker", + "owner": "fofr", + "is_official": false, + "paper_url": null, + "run_count": 1891976, + "url": "https://replicate.com/fofr/sticker-maker", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "seed", + "steps", + "width" + ] + }, + { + "title": "Style Transfer", + "description": "Transfer the style of one image to another", + "namespace": "replicate.image.generate", + "node_type": "replicate.image.generate.StyleTransfer", + "properties": [ { - "name": "guidance_scale", + "name": "seed", "type": { - "type": "float" + "type": "int", + "optional": true }, - "default": 4, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 50.0 + "default": null, + "title": "Seed", + "description": "Set a seed for reproducibility. Random by default." }, { - "name": "resizing_scale", + "name": "model", "type": { - "type": "float" + "type": "enum", + "values": [ + "fast", + "high-quality", + "realistic", + "cinematic", + "animated" + ], + "type_name": "nodetool.nodes.replicate.image.generate.StyleTransfer.Model" }, - "default": 1, - "title": "Resizing Scale", - "description": "If you want the image to have a solid margin. Scale of the solid margin. 1.0 means no resizing.", - "min": 1.0, - "max": 10.0 + "default": "fast", + "title": "Model", + "description": "Model to use for the generation" }, { - "name": "apply_watermark", + "name": "width", "type": { - "type": "bool" + "type": "int" }, - "default": true, - "title": "Apply Watermark", - "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." + "default": 1024, + "title": "Width", + "description": "Width of the output image (ignored if structure image given)" }, { - "name": "negative_prompt", + "name": "height", "type": { - "type": "str" + "type": "int" }, - "default": "", - "title": "Negative Prompt", - "description": "Input Negative Prompt" + "default": 1024, + "title": "Height", + "description": "Height of the output image (ignored if structure image given)" }, { - "name": "background_color", + "name": "prompt", "type": { "type": "str" }, - "default": "#A2A2A2", - "title": "Background Color", - "description": "When passing an image with alpha channel, it will be replaced with this color" + "default": "An astronaut riding a unicorn", + "title": "Prompt", + "description": "Prompt for the image" }, { - "name": "num_inference_steps", + "name": "style_image", "type": { - "type": "int" + "type": "image" }, - "default": 30, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Style Image", + "description": "Copy the style from this image" }, { - "name": "condition_canny_scale", + "name": "output_format", "type": { - "type": "float" + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.generate.StyleTransfer.Output_format" }, - "default": 0.15, - "title": "Condition Canny Scale", - "description": "The bigger this number is, the more ControlNet interferes", - "min": 0.0, - "max": 2.0 + "default": "webp", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "condition_depth_scale", + "name": "output_quality", "type": { - "type": "float" + "type": "int" }, - "default": 0.35, - "title": "Condition Depth Scale", - "description": "The bigger this number is, the more ControlNet interferes", + "default": 80, + "title": "Output Quality", + "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", "min": 0.0, - "max": 2.0 - } - ], - "outputs": [ + "max": 100.0 + }, { + "name": "negative_prompt", "type": { - "type": "image" + "type": "str" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/CgdTGuA9wdoWGhVUMgpPIv9mh4rpLnYYViUmeLKV8wF2QGRJA/out-0.png", - "created_at": "2024-03-20T16:20:23.445929Z", - "description": "Restyle an image with the style of another one. I strongly suggest to upscale the results with Clarity AI", - "github_url": "https://github.com/BatouResearch/Cog-Face-to-Anything/tree/magic-style-transfer", - "license_url": null, - "name": "magic-style-transfer", - "owner": "fermatresearch", - "is_official": false, - "paper_url": null, - "run_count": 49354, - "url": "https://replicate.com/fermatresearch/magic-style-transfer", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "seed", - "image", - "prompt" - ] - }, - { - "title": "Mod Net", - "description": "A deep learning approach to remove background & adding new background image", - "namespace": "replicate.image.process", - "node_type": "replicate.image.process.ModNet", - "properties": [ + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want to see in your image" + }, { - "name": "image", + "name": "structure_image", "type": { "type": "image" }, @@ -15740,75 +16606,41 @@ "data": null, "metadata": null }, - "title": "Image", - "description": "input image" - } - ], - "outputs": [ - { - "type": { - "type": "image" - }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/bb0ab3e4-5efa-446f-939a-23e78f2b82de/output.png", - "created_at": "2022-11-19T04:56:59.860128Z", - "description": "A deep learning approach to remove background & adding new background image", - "github_url": "https://github.com/pollinations/MODNet-BGRemover", - "license_url": null, - "name": "modnet", - "owner": "pollinations", - "is_official": false, - "paper_url": "https://arxiv.org/pdf/2011.11961.pdf", - "run_count": 971815, - "url": "https://replicate.com/pollinations/modnet", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "image" - ] - }, - { - "title": "Nano Banana", - "description": "Google's latest image editing model in Gemini 2.5", - "namespace": "replicate.image.process", - "node_type": "replicate.image.process.Nano_Banana", - "properties": [ + "title": "Structure Image", + "description": "An optional image to copy structure from. Output images will use the same aspect ratio." + }, { - "name": "prompt", + "name": "number_of_images", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "A text description of the image you want to generate" + "default": 1, + "title": "Number Of Images", + "description": "Number of images to generate", + "min": 1.0, + "max": 10.0 }, { - "name": "image_input", + "name": "structure_depth_strength", "type": { - "type": "list" + "type": "float" }, - "default": [], - "title": "Image Input", - "description": "Input images to transform or use as reference (supports multiple images)" + "default": 1, + "title": "Structure Depth Strength", + "description": "Strength of the depth controlnet", + "min": 0.0, + "max": 2.0 }, { - "name": "output_format", + "name": "structure_denoising_strength", "type": { - "type": "enum", - "values": [ - "jpg", - "png" - ], - "type_name": "nodetool.nodes.replicate.image.process.Nano_Banana.Output_format" + "type": "float" }, - "default": "jpg", - "title": "Output Format", - "description": "Format of the output image" + "default": 0.65, + "title": "Structure Denoising Strength", + "description": "How much of the original image (and colors) to preserve (0 is all, 1 is none, 0.65 is a good balance)", + "min": 0.0, + "max": 1.0 } ], "outputs": [ @@ -15820,61 +16652,55 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/ed879e99-71b5-4689-bed3-e7305e35a28a/this.png", - "created_at": "2025-08-26T21:08:24.983047Z", - "description": "Google's latest image editing model in Gemini 2.5", - "github_url": null, - "license_url": null, - "name": "nano-banana", - "owner": "google", - "is_official": true, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/fd0ac369-c6ac-4927-b882-ece29cffc45d/cover.webp", + "created_at": "2024-04-17T20:34:49.861066Z", + "description": "Transfer the style of one image to another", + "github_url": "https://github.com/fofr/cog-style-transfer", + "license_url": "https://github.com/fofr/cog-style-transfer/blob/main/LICENSE", + "name": "style-transfer", + "owner": "fofr", + "is_official": false, "paper_url": null, - "run_count": 5653336, - "url": "https://replicate.com/google/nano-banana", + "run_count": 1274774, + "url": "https://replicate.com/fofr/style-transfer", "visibility": "public", "weights_url": null }, "basic_fields": [ - "prompt", - "image_input", - "output_format" + "seed", + "model", + "width" ] }, { - "title": "Object Remover", - "description": "None", - "namespace": "replicate.image.process", - "node_type": "replicate.image.process.ObjectRemover", - "properties": [ - { - "name": "org_image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "title": "DD Color", + "description": "Towards Photo-Realistic Image Colorization via Dual Decoders", + "namespace": "replicate.image.process", + "node_type": "replicate.image.process.DD_Color", + "properties": [ + { + "name": "image", + "type": { + "type": "str", + "optional": true }, - "title": "Org Image", - "description": "Original input image" + "default": null, + "title": "Image", + "description": "Grayscale input image." }, { - "name": "mask_image", + "name": "model_size", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "enum", + "values": [ + "large", + "tiny" + ], + "type_name": "nodetool.nodes.replicate.image.process.DD_Color.Model_size" }, - "title": "Mask Image", - "description": "Mask image" + "default": "large", + "title": "Model Size", + "description": "Choose the model size." } ], "outputs": [ @@ -15886,31 +16712,50 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/PeUSD8TLKs0lXSTavj96kkOSfpoAKhRIG8LY5U0erX53QgskA/in-painted.png", - "created_at": "2024-02-13T07:17:58.590961Z", - "description": null, - "github_url": null, - "license_url": null, - "name": "object_remover", - "owner": "codeplugtech", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/d8d3648a-044e-4474-8392-87d52c0c2c68/ddcolor.jpg", + "created_at": "2024-01-12T15:02:06.387410Z", + "description": "Towards Photo-Realistic Image Colorization via Dual Decoders", + "github_url": "https://github.com/piddnad/DDColor", + "license_url": "https://github.com/piddnad/DDColor/blob/master/LICENSE", + "name": "ddcolor", + "owner": "piddnad", "is_official": false, - "paper_url": null, - "run_count": 13499, - "url": "https://replicate.com/codeplugtech/object_remover", + "paper_url": "https://arxiv.org/abs/2212.11613", + "run_count": 768259, + "url": "https://replicate.com/piddnad/ddcolor", "visibility": "public", "weights_url": null }, "basic_fields": [ - "org_image", - "mask_image" + "image", + "model_size" ] }, { - "title": "Remove Background", - "description": "Remove images background", + "title": "Expand Image", + "description": "Bria Expand expands images beyond their borders in high quality. Resizing the image by generating new pixels to expand to the desired aspect ratio. Trained exclusively on licensed data for safe and risk-free commercial use", "namespace": "replicate.image.process", - "node_type": "replicate.image.process.RemoveBackground", + "node_type": "replicate.image.process.Expand_Image", "properties": [ + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" + }, + { + "name": "sync", + "type": { + "type": "bool" + }, + "default": true, + "title": "Sync", + "description": "Synchronous response mode" + }, { "name": "image", "type": { @@ -15924,7 +16769,106 @@ "metadata": null }, "title": "Image", - "description": "Input image" + "description": "Image file" + }, + { + "name": "prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" + }, + { + "name": "image_url", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Image Url", + "description": "Image URL" + }, + { + "name": "canvas_size", + "type": { + "type": "list", + "optional": true + }, + "default": null, + "title": "Canvas Size", + "description": "Desired output canvas dimensions [width, height]. Default [1000, 1000]" + }, + { + "name": "aspect_ratio", + "type": { + "type": "enum", + "values": [ + "1:1", + "2:3", + "3:2", + "3:4", + "4:3", + "4:5", + "5:4", + "9:16", + "16:9" + ], + "type_name": "nodetool.nodes.replicate.image.process.Expand_Image.Aspect_ratio" + }, + "default": "1:1", + "title": "Aspect Ratio", + "description": "Aspect ratio for expansion." + }, + { + "name": "preserve_alpha", + "type": { + "type": "bool" + }, + "default": true, + "title": "Preserve Alpha", + "description": "Preserve alpha channel in output" + }, + { + "name": "negative_prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Negative Prompt", + "description": "Negative prompt for image generation" + }, + { + "name": "content_moderation", + "type": { + "type": "bool" + }, + "default": false, + "title": "Content Moderation", + "description": "Enable content moderation" + }, + { + "name": "original_image_size", + "type": { + "type": "list", + "optional": true + }, + "default": null, + "title": "Original Image Size", + "description": "Size of original image in canvas [width, height]" + }, + { + "name": "original_image_location", + "type": { + "type": "list", + "optional": true + }, + "default": null, + "title": "Original Image Location", + "description": "Position of original image in canvas [x, y]" } ], "outputs": [ @@ -15936,44 +16880,41 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/2hczaMwD9xrsIR8h3Cl8iYGbHaCdFhIOMZ0LfoYfHlKuuIBQA/out.png", - "created_at": "2022-11-18T00:55:22.939155Z", - "description": "Remove images background", - "github_url": "https://github.com/chenxwh/rembg/tree/replicate", - "license_url": "https://github.com/danielgatis/rembg/blob/main/LICENSE.txt", - "name": "rembg", - "owner": "cjwbw", - "is_official": false, + "cover_image_url": "https://replicate.delivery/xezq/Kke10tmiC2yaekp8wUGz4BJ4SgDafE2zGUXDXNGanjEhqL6pA/tmpiutbqh22.png", + "created_at": "2025-07-03T06:08:32.245632Z", + "description": "Bria Expand expands images beyond their borders in high quality. Resizing the image by generating new pixels to expand to the desired aspect ratio. Trained exclusively on licensed data for safe and risk-free commercial use", + "github_url": null, + "license_url": "https://learn.bria.ai/hubfs/Terms%20and%20Conditions/Bria%20AI%20Online%20Terms%20and%20Conditions%20(March%202024)%20v1.1c.pdf?hsLang=en&_gl=1*iwvu7w*_gcl_au*MzQyMzUxMzAxLjE3NDcwNDU4NTg.*_ga*MjAxNDky", + "name": "expand-image", + "owner": "bria", + "is_official": true, "paper_url": null, - "run_count": 9605503, - "url": "https://replicate.com/cjwbw/rembg", + "run_count": 15564, + "url": "https://replicate.com/bria/expand-image", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/briaai/BRIA-2.3-ControlNet-Inpainting" }, "basic_fields": [ + "seed", + "sync", "image" ] }, { - "title": "Blip", - "description": "Generate image captions", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.Blip", + "title": "Magic Style Transfer", + "description": "Restyle an image with the style of another one. I strongly suggest to upscale the results with Clarity AI", + "namespace": "replicate.image.process", + "node_type": "replicate.image.process.Magic_Style_Transfer", "properties": [ { - "name": "task", + "name": "seed", "type": { - "type": "enum", - "values": [ - "image_captioning", - "visual_question_answering", - "image_text_matching" - ], - "type_name": "nodetool.nodes.replicate.image.analyze.Blip.Task" + "type": "int", + "optional": true }, - "default": "image_captioning", - "title": "Task", - "description": "Choose a task." + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank to randomize the seed" }, { "name": "image", @@ -15991,63 +16932,16 @@ "description": "Input image" }, { - "name": "caption", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Caption", - "description": "Type caption for the input image for image text matching task." - }, - { - "name": "question", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Question", - "description": "Type question for the input image for visual question answering task." - } - ], - "outputs": [ - { + "name": "prompt", "type": { "type": "str" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b59b459c-c475-414f-ba67-c424a7e6e6ca/demo.jpg", - "created_at": "2022-02-06T17:40:38.855280Z", - "description": "Generate image captions", - "github_url": "https://github.com/salesforce/BLIP", - "license_url": "https://github.com/salesforce/BLIP/blob/main/LICENSE.txt", - "name": "blip", - "owner": "salesforce", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2201.12086", - "run_count": 167989821, - "url": "https://replicate.com/salesforce/blip", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "task", - "image", - "caption" - ] - }, - { - "title": "Blip 2", - "description": "Answers questions about images", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.Blip2", - "properties": [ + "default": "An astronaut riding a rainbow unicorn", + "title": "Prompt", + "description": "Input prompt" + }, { - "name": "image", + "name": "ip_image", "type": { "type": "image" }, @@ -16058,222 +16952,199 @@ "data": null, "metadata": null }, - "title": "Image", - "description": "Input image to query or caption" + "title": "Ip Image", + "description": "Input image for img2img or inpaint mode" }, { - "name": "caption", + "name": "ip_scale", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Caption", - "description": "Select if you want to generate image captions instead of asking questions" + "default": 0.3, + "title": "Ip Scale", + "description": "IP Adapter strength.", + "min": 0.0, + "max": 1.0 }, { - "name": "context", + "name": "strength", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Context", - "description": "Optional - previous questions and answers to be used as context for answering current question" + "default": 0.9, + "title": "Strength", + "description": "When img2img is active, the denoising strength. 1 means total destruction of the input image.", + "min": 0.0, + "max": 1.0 }, { - "name": "question", + "name": "scheduler", "type": { - "type": "str" + "type": "enum", + "values": [ + "DDIM", + "DPMSolverMultistep", + "HeunDiscrete", + "KarrasDPM", + "K_EULER_ANCESTRAL", + "K_EULER", + "PNDM" + ], + "type_name": "nodetool.nodes.replicate.image.process.Magic_Style_Transfer.Scheduler" }, - "default": "What is this a picture of?", - "title": "Question", - "description": "Question to ask about this image. Leave blank for captioning" + "default": "K_EULER", + "title": "Scheduler", + "description": "scheduler" }, { - "name": "temperature", + "name": "lora_scale", "type": { "type": "float" }, - "default": 1, - "title": "Temperature", - "description": "Temperature for use with nucleus sampling", - "min": 0.5, + "default": 0.9, + "title": "Lora Scale", + "description": "LoRA additive scale. Only applicable on trained models.", + "min": 0.0, "max": 1.0 }, { - "name": "use_nucleus_sampling", + "name": "num_outputs", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Use Nucleus Sampling", - "description": "Toggles the model using nucleus sampling to generate responses" - } - ], - "outputs": [ + "default": 1, + "title": "Num Outputs", + "description": "Number of images to output", + "min": 1.0, + "max": 4.0 + }, { + "name": "lora_weights", "type": { - "type": "str" + "type": "str", + "optional": true }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/031b9aee-ed15-4429-a7e4-813b72e9edc5/gg_bridge.jpeg", - "created_at": "2023-02-13T07:06:23.521189Z", - "description": "Answers questions about images", - "github_url": "https://github.com/daanelson/cog-blip-2", - "license_url": null, - "name": "blip-2", - "owner": "andreasjansson", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2301.12597", - "run_count": 30685755, - "url": "https://replicate.com/andreasjansson/blip-2", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "image", - "caption", - "context" - ] - }, - { - "title": "Clip Features", - "description": "Return CLIP features for the clip-vit-large-patch14 model", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.ClipFeatures", - "properties": [ + "default": null, + "title": "Lora Weights", + "description": "Replicate LoRA weights to use. Leave blank to use the default weights." + }, { - "name": "inputs", + "name": "guidance_scale", "type": { - "type": "str" + "type": "float" }, - "default": "a\nb", - "title": "Inputs", - "description": "Newline-separated inputs. Can either be strings of text or image URIs starting with http[s]://" - } - ], - "outputs": [ + "default": 4, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 1.0, + "max": 50.0 + }, { + "name": "resizing_scale", "type": { - "type": "list", - "type_args": [ - { - "type": "dict" - } - ] + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/07d242b3-4246-4da2-9522-b4ad134336fc/clip_image.png", - "created_at": "2022-09-22T20:23:55.682616Z", - "description": "Return CLIP features for the clip-vit-large-patch14 model", - "github_url": "https://github.com/andreasjansson/cog-clip", - "license_url": null, - "name": "clip-features", - "owner": "andreasjansson", - "is_official": false, - "paper_url": null, - "run_count": 104790007, - "url": "https://replicate.com/andreasjansson/clip-features", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "inputs" - ] - }, - { - "title": "Clip Interrogator", - "description": "The CLIP Interrogator is a prompt engineering tool that combines OpenAI's CLIP and Salesforce's BLIP to optimize text prompts to match a given image. Use the resulting prompts with text-to-image models like Stable Diffusion to create cool art!", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.ClipInterrogator", - "properties": [ + "default": 1, + "title": "Resizing Scale", + "description": "If you want the image to have a solid margin. Scale of the solid margin. 1.0 means no resizing.", + "min": 1.0, + "max": 10.0 + }, { - "name": "mode", + "name": "apply_watermark", "type": { - "type": "enum", - "values": [ - "best", - "classic", - "fast", - "negative" - ], - "type_name": "nodetool.nodes.replicate.image.analyze.ClipInterrogator.Mode" + "type": "bool" }, - "default": "best", - "title": "Mode", - "description": "Prompt mode (best takes 10-20 seconds, fast takes 1-2 seconds)." + "default": true, + "title": "Apply Watermark", + "description": "Applies a watermark to enable determining if an image is generated in downstream applications. If you have other provisions for generating or deploying images safely, you can use this to disable watermarking." }, { - "name": "image", + "name": "negative_prompt", "type": { - "type": "image" + "type": "str" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": "", + "title": "Negative Prompt", + "description": "Input Negative Prompt" + }, + { + "name": "background_color", + "type": { + "type": "str" + }, + "default": "#A2A2A2", + "title": "Background Color", + "description": "When passing an image with alpha channel, it will be replaced with this color" + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 30, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 + }, + { + "name": "condition_canny_scale", + "type": { + "type": "float" }, - "title": "Image", - "description": "Input image" + "default": 0.15, + "title": "Condition Canny Scale", + "description": "The bigger this number is, the more ControlNet interferes", + "min": 0.0, + "max": 2.0 }, { - "name": "clip_model_name", + "name": "condition_depth_scale", "type": { - "type": "enum", - "values": [ - "ViT-L-14/openai", - "ViT-H-14/laion2b_s32b_b79k", - "ViT-bigG-14/laion2b_s39b_b160k" - ], - "type_name": "nodetool.nodes.replicate.image.analyze.ClipInterrogator.Clip_model_name" + "type": "float" }, - "default": "ViT-L-14/openai", - "title": "Clip Model Name", - "description": "Choose ViT-L for Stable Diffusion 1, ViT-H for Stable Diffusion 2, or ViT-bigG for Stable Diffusion XL." + "default": 0.35, + "title": "Condition Depth Scale", + "description": "The bigger this number is, the more ControlNet interferes", + "min": 0.0, + "max": 2.0 } ], "outputs": [ { "type": { - "type": "str" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/pbxt/HrXsgowfhbZi3dImGZoIcvnz7oZfMtFY4UAEU8vBIakTd8JQ/watercolour-4799014_960_720.jpg", - "created_at": "2022-10-28T17:47:38.473429Z", - "description": "The CLIP Interrogator is a prompt engineering tool that combines OpenAI's CLIP and Salesforce's BLIP to optimize text prompts to match a given image. Use the resulting prompts with text-to-image models like Stable Diffusion to create cool art!", - "github_url": "https://github.com/pharmapsychotic/clip-interrogator", - "license_url": "https://github.com/pharmapsychotic/clip-interrogator/blob/main/LICENSE", - "name": "clip-interrogator", - "owner": "pharmapsychotic", + "cover_image_url": "https://replicate.delivery/pbxt/CgdTGuA9wdoWGhVUMgpPIv9mh4rpLnYYViUmeLKV8wF2QGRJA/out-0.png", + "created_at": "2024-03-20T16:20:23.445929Z", + "description": "Restyle an image with the style of another one. I strongly suggest to upscale the results with Clarity AI", + "github_url": "https://github.com/BatouResearch/Cog-Face-to-Anything/tree/magic-style-transfer", + "license_url": null, + "name": "magic-style-transfer", + "owner": "fermatresearch", "is_official": false, "paper_url": null, - "run_count": 4449419, - "url": "https://replicate.com/pharmapsychotic/clip-interrogator", + "run_count": 49354, + "url": "https://replicate.com/fermatresearch/magic-style-transfer", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mode", + "seed", "image", - "clip_model_name" + "prompt" ] }, { - "title": "Img 2 Prompt", - "description": "Get an approximate text prompt, with style, matching an image. (Optimized for stable-diffusion (clip ViT-L/14))", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.Img2Prompt", + "title": "Mod Net", + "description": "A deep learning approach to remove background & adding new background image", + "namespace": "replicate.image.process", + "node_type": "replicate.image.process.ModNet", "properties": [ { "name": "image", @@ -16288,29 +17159,29 @@ "metadata": null }, "title": "Image", - "description": "Input image" + "description": "input image" } ], "outputs": [ { "type": { - "type": "str" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/504b1747-8c67-438b-b02f-a6ea9254589d/a_high_detail_shot_of_a_cat_we.png", - "created_at": "2022-08-24T08:53:28.614572Z", - "description": "Get an approximate text prompt, with style, matching an image. (Optimized for stable-diffusion (clip ViT-L/14))", - "github_url": "https://github.com/pharmapsychotic/clip-interrogator", - "license_url": "https://github.com/pharmapsychotic/clip-interrogator/blob/main/LICENSE", - "name": "img2prompt", - "owner": "methexis-inc", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/bb0ab3e4-5efa-446f-939a-23e78f2b82de/output.png", + "created_at": "2022-11-19T04:56:59.860128Z", + "description": "A deep learning approach to remove background & adding new background image", + "github_url": "https://github.com/pollinations/MODNet-BGRemover", + "license_url": null, + "name": "modnet", + "owner": "pollinations", "is_official": false, - "paper_url": null, - "run_count": 2654039, - "url": "https://replicate.com/methexis-inc/img2prompt", + "paper_url": "https://arxiv.org/pdf/2011.11961.pdf", + "run_count": 971815, + "url": "https://replicate.com/pollinations/modnet", "visibility": "public", "weights_url": null }, @@ -16319,37 +17190,11 @@ ] }, { - "title": "Llava 13 b", - "description": "Visual instruction tuning towards large language and vision models with GPT-4 level capabilities", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.Llava13b", + "title": "Nano Banana", + "description": "Google's latest image editing model in Gemini 2.5", + "namespace": "replicate.image.process", + "node_type": "replicate.image.process.Nano_Banana", "properties": [ - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "Input image" - }, - { - "name": "top_p", - "type": { - "type": "float" - }, - "default": 1, - "title": "Top P", - "description": "When decoding text, samples from the top p percentage of most likely tokens; lower to ignore less likely tokens", - "min": 0.0, - "max": 1.0 - }, { "name": "prompt", "type": { @@ -16358,66 +17203,69 @@ }, "default": null, "title": "Prompt", - "description": "Prompt to use for text generation" + "description": "A text description of the image you want to generate" }, { - "name": "max_tokens", + "name": "image_input", "type": { - "type": "int" + "type": "list" }, - "default": 1024, - "title": "Max Tokens", - "description": "Maximum number of tokens to generate. A word is generally 2-3 tokens", - "min": 0.0 + "default": [], + "title": "Image Input", + "description": "Input images to transform or use as reference (supports multiple images)" }, { - "name": "temperature", + "name": "output_format", "type": { - "type": "float" + "type": "enum", + "values": [ + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.process.Nano_Banana.Output_format" }, - "default": 0.2, - "title": "Temperature", - "description": "Adjusts randomness of outputs, greater than 1 is random and 0 is deterministic", - "min": 0.0 + "default": "jpg", + "title": "Output Format", + "description": "Format of the output image" } ], "outputs": [ { "type": { - "type": "str" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/454548d6-4978-4d85-bca3-d067dfc031bf/llava.png", - "created_at": "2023-10-09T16:27:51.777748Z", - "description": "Visual instruction tuning towards large language and vision models with GPT-4 level capabilities", - "github_url": "https://github.com/haotian-liu/LLaVA", - "license_url": "https://ai.meta.com/llama/license/", - "name": "llava-13b", - "owner": "yorickvp", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2310.03744", - "run_count": 30632354, - "url": "https://replicate.com/yorickvp/llava-13b", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/ed879e99-71b5-4689-bed3-e7305e35a28a/this.png", + "created_at": "2025-08-26T21:08:24.983047Z", + "description": "Google's latest image editing model in Gemini 2.5", + "github_url": null, + "license_url": null, + "name": "nano-banana", + "owner": "google", + "is_official": true, + "paper_url": null, + "run_count": 5653336, + "url": "https://replicate.com/google/nano-banana", "visibility": "public", "weights_url": null }, "basic_fields": [ - "image", - "top_p", - "prompt" + "prompt", + "image_input", + "output_format" ] }, { - "title": "Moondream 2", - "description": "moondream2 is a small vision language model designed to run efficiently on edge devices", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.Moondream2", + "title": "Object Remover", + "description": "None", + "namespace": "replicate.image.process", + "node_type": "replicate.image.process.ObjectRemover", "properties": [ { - "name": "image", + "name": "org_image", "type": { "type": "image" }, @@ -16428,111 +17276,59 @@ "data": null, "metadata": null }, - "title": "Image", - "description": "Input image" + "title": "Org Image", + "description": "Original input image" }, { - "name": "prompt", - "type": { - "type": "str" - }, - "default": "Describe this image", - "title": "Prompt", - "description": "Input prompt" - } - ], - "outputs": [ - { + "name": "mask_image", "type": { - "type": "str" + "type": "image" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/dc0dc539-f592-4c34-b24f-2d112f742975/moondream2.png", - "created_at": "2024-03-05T02:29:40.377800Z", - "description": "moondream2 is a small vision language model designed to run efficiently on edge devices", - "github_url": "https://github.com/lucataco/cog-moondream2", - "license_url": "https://github.com/vikhyat/moondream?tab=Apache-2.0-1-ov-file#readme", - "name": "moondream2", - "owner": "lucataco", - "is_official": false, - "paper_url": null, - "run_count": 3114450, - "url": "https://replicate.com/lucataco/moondream2", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "image", - "prompt" - ] - }, - { - "title": "NSFWImage Detection", - "description": "Fine-Tuned Vision Transformer (ViT) for NSFW Image Classification", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.NSFWImageDetection", - "properties": [ - { - "name": "image", - "type": { - "type": "str", - "optional": true + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": null, - "title": "Image", - "description": "Input image" + "title": "Mask Image", + "description": "Mask image" } ], "outputs": [ { "type": { - "type": "str" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/41507351-883e-4a5a-8d62-2fe69ef0b7fc/falcon.jpg", - "created_at": "2023-11-21T14:53:34.798862Z", - "description": "Fine-Tuned Vision Transformer (ViT) for NSFW Image Classification", - "github_url": "https://github.com/lucataco/cog-nsfw_image_detection", - "license_url": "https://huggingface.co/models?license=license:apache-2.0", - "name": "nsfw_image_detection", - "owner": "falcons-ai", - "is_official": true, - "paper_url": "https://arxiv.org/abs/2010.11929", - "run_count": 63829470, - "url": "https://replicate.com/falcons-ai/nsfw_image_detection", + "cover_image_url": "https://replicate.delivery/pbxt/PeUSD8TLKs0lXSTavj96kkOSfpoAKhRIG8LY5U0erX53QgskA/in-painted.png", + "created_at": "2024-02-13T07:17:58.590961Z", + "description": null, + "github_url": null, + "license_url": null, + "name": "object_remover", + "owner": "codeplugtech", + "is_official": false, + "paper_url": null, + "run_count": 13499, + "url": "https://replicate.com/codeplugtech/object_remover", "visibility": "public", - "weights_url": "https://huggingface.co/Falconsai/nsfw_image_detection" + "weights_url": null }, "basic_fields": [ - "image" + "org_image", + "mask_image" ] }, { - "title": "SDXLClip Interrogator", - "description": "CLIP Interrogator for SDXL optimizes text prompts to match a given image", - "namespace": "replicate.image.analyze", - "node_type": "replicate.image.analyze.SDXLClipInterrogator", + "title": "Remove Background", + "description": "Remove images background", + "namespace": "replicate.image.process", + "node_type": "replicate.image.process.RemoveBackground", "properties": [ - { - "name": "mode", - "type": { - "type": "enum", - "values": [ - "best", - "fast" - ], - "type_name": "nodetool.nodes.replicate.image.analyze.SDXLClipInterrogator.Mode" - }, - "default": "best", - "title": "Mode", - "description": "Prompt Mode: fast takes 1-2 seconds, best takes 15-25 seconds." - }, { "name": "image", "type": { @@ -16552,72 +17348,82 @@ "outputs": [ { "type": { - "type": "str" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/c200f919-4cc1-412b-8edf-e2863a5eef56/replicate-sdxl-inter.png", - "created_at": "2023-08-14T20:06:38.402771Z", - "description": "CLIP Interrogator for SDXL optimizes text prompts to match a given image", - "github_url": "https://github.com/lucataco/cog-sdxl-clip-interrogator", - "license_url": "https://github.com/pharmapsychotic/clip-interrogator/blob/main/LICENSE", - "name": "sdxl-clip-interrogator", - "owner": "lucataco", + "cover_image_url": "https://replicate.delivery/pbxt/2hczaMwD9xrsIR8h3Cl8iYGbHaCdFhIOMZ0LfoYfHlKuuIBQA/out.png", + "created_at": "2022-11-18T00:55:22.939155Z", + "description": "Remove images background", + "github_url": "https://github.com/chenxwh/rembg/tree/replicate", + "license_url": "https://github.com/danielgatis/rembg/blob/main/LICENSE.txt", + "name": "rembg", + "owner": "cjwbw", "is_official": false, "paper_url": null, - "run_count": 848344, - "url": "https://replicate.com/lucataco/sdxl-clip-interrogator", + "run_count": 9605503, + "url": "https://replicate.com/cjwbw/rembg", "visibility": "public", "weights_url": null }, "basic_fields": [ - "mode", "image" ] }, { - "title": "Become Image", - "description": "Adapt any picture of a face into another image", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.BecomeImage", + "title": "Latex OCR", + "description": "Optical character recognition to turn images of latex equations into latex format.", + "namespace": "replicate.image.ocr", + "node_type": "replicate.image.ocr.LatexOCR", "properties": [ { - "name": "seed", + "name": "image_path", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Seed", - "description": "Fix the random seed for reproducibility" - }, - { - "name": "image", - "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null - }, - "title": "Image", - "description": "An image of a person to be converted" - }, + "title": "Image Path", + "description": "Input image" + } + ], + "outputs": [ { - "name": "prompt", "type": { "type": "str" }, - "default": "a person", - "title": "Prompt" - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/980ae6b5-4ab8-417a-8148-b244f4ae0493/latex.png", + "created_at": "2023-11-06T10:13:47.198885Z", + "description": "Optical character recognition to turn images of latex equations into latex format.", + "github_url": "https://github.com/mickeybeurskens/LaTeX-OCR", + "license_url": "https://github.com/mickeybeurskens/LaTeX-OCR/blob/main/LICENSE", + "name": "latex-ocr", + "owner": "mickeybeurskens", + "is_official": false, + "paper_url": null, + "run_count": 865, + "url": "https://replicate.com/mickeybeurskens/latex-ocr", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "image_path" + ] + }, + { + "title": "Text Extract OCR", + "description": "A simple OCR Model that can easily extract text from an image.", + "namespace": "replicate.image.ocr", + "node_type": "replicate.image.ocr.TextExtractOCR", + "properties": [ { - "name": "image_to_become", + "name": "image", "type": { "type": "image" }, @@ -16628,149 +17434,61 @@ "data": null, "metadata": null }, - "title": "Image To Become", - "description": "Any image to convert the person to" - }, - { - "name": "negative_prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Negative Prompt", - "description": "Things you do not want in the image" - }, - { - "name": "prompt_strength", - "type": { - "type": "float" - }, - "default": 2, - "title": "Prompt Strength", - "description": "Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original.", - "min": 0.0, - "max": 3.0 - }, - { - "name": "number_of_images", - "type": { - "type": "int" - }, - "default": 2, - "title": "Number Of Images", - "description": "Number of images to generate", - "min": 1.0, - "max": 10.0 - }, - { - "name": "denoising_strength", - "type": { - "type": "float" - }, - "default": 1, - "title": "Denoising Strength", - "description": "How much of the original image of the person to keep. 1 is the complete destruction of the original image, 0 is the original image", - "min": 0.0, - "max": 1.0 - }, - { - "name": "instant_id_strength", - "type": { - "type": "float" - }, - "default": 1, - "title": "Instant Id Strength", - "description": "How strong the InstantID will be.", - "min": 0.0, - "max": 1.0 - }, - { - "name": "image_to_become_noise", - "type": { - "type": "float" - }, - "default": 0.3, - "title": "Image To Become Noise", - "description": "How much noise to add to the style image before processing. An alternative way of controlling stength.", - "min": 0.0, - "max": 1.0 - }, - { - "name": "control_depth_strength", - "type": { - "type": "float" - }, - "default": 0.8, - "title": "Control Depth Strength", - "description": "Strength of depth controlnet. The bigger this is, the more controlnet affects the output.", - "min": 0.0, - "max": 1.0 - }, - { - "name": "disable_safety_checker", - "type": { - "type": "bool" - }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images" - }, - { - "name": "image_to_become_strength", - "type": { - "type": "float" - }, - "default": 0.75, - "title": "Image To Become Strength", - "description": "How strong the style will be applied", - "min": 0.0, - "max": 1.0 + "title": "Image", + "description": "Image to process" } ], "outputs": [ { "type": { - "type": "image" + "type": "str" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b37fc7b7-0cef-4895-9176-bf5bb0cb7011/pearl-earring-1.webp", - "created_at": "2024-03-11T11:16:22.168373Z", - "description": "Adapt any picture of a face into another image", - "github_url": "https://github.com/fofr/cog-become-image", - "license_url": "https://github.com/fofr/cog-become-image/blob/main/weights_licenses.md", - "name": "become-image", - "owner": "fofr", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/9d31603c-2266-4705-9d2d-01b4f6bff653/IM0077782.png", + "created_at": "2023-10-19T13:20:00.740943Z", + "description": "A simple OCR Model that can easily extract text from an image.", + "github_url": null, + "license_url": null, + "name": "text-extract-ocr", + "owner": "abiruyt", "is_official": false, "paper_url": null, - "run_count": 668321, - "url": "https://replicate.com/fofr/become-image", + "run_count": 89926432, + "url": "https://replicate.com/abiruyt/text-extract-ocr", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "image", - "prompt" + "image" ] }, { - "title": "Face To Many", - "description": "Turn a face into 3D, emoji, pixel art, video game, claymation or toy", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.FaceToMany", + "title": "Clarity Upscaler", + "description": "High resolution image Upscaler and Enhancer. Use at ClarityAI.co. A free Magnific alternative. Twitter/X: @philz1337x", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.ClarityUpscaler", "properties": [ { - "name": "seed", + "name": "mask", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, + "title": "Mask", + "description": "Mask image to mark areas that should be preserved during upscaling" + }, + { + "name": "seed", + "type": { + "type": "int" + }, + "default": 1337, "title": "Seed", - "description": "Fix the random seed for reproducibility" + "description": "Random seed. Leave blank to randomize the seed" }, { "name": "image", @@ -16785,269 +17503,276 @@ "metadata": null }, "title": "Image", - "description": "An image of a person to be converted" - }, - { - "name": "style", - "type": { - "type": "enum", - "values": [ - "3D", - "Emoji", - "Video game", - "Pixels", - "Clay", - "Toy" - ], - "type_name": "nodetool.nodes.replicate.image.face.FaceToMany.Style" - }, - "default": "3D", - "title": "Style", - "description": "Style to convert to" + "description": "input image" }, { "name": "prompt", "type": { "type": "str" }, - "default": "a person", - "title": "Prompt" + "default": "masterpiece, best quality, highres, ", + "title": "Prompt", + "description": "Prompt" }, { - "name": "lora_scale", + "name": "dynamic", "type": { "type": "float" }, - "default": 1, - "title": "Lora Scale", - "description": "How strong the LoRA will be", - "min": 0.0, - "max": 1.0 + "default": 6, + "title": "Dynamic", + "description": "HDR, try from 3 - 9", + "min": 1.0, + "max": 50.0 }, { - "name": "custom_lora_url", + "name": "handfix", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + "disabled", + "hands_only", + "image_and_hands" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Handfix" }, - "default": null, - "title": "Custom Lora Url", - "description": "URL to a Replicate custom LoRA. Must be in the format https://replicate.delivery/pbxt/[id]/trained_model.tar or https://pbxt.replicate.delivery/[id]/trained_model.tar" + "default": "disabled", + "title": "Handfix", + "description": "Use clarity to fix hands in the image" }, { - "name": "negative_prompt", + "name": "pattern", "type": { - "type": "str" + "type": "bool" }, - "default": "", - "title": "Negative Prompt", - "description": "Things you do not want in the image" + "default": false, + "title": "Pattern", + "description": "Upscale a pattern with seamless tiling" }, { - "name": "prompt_strength", + "name": "sharpen", "type": { "type": "float" }, - "default": 4.5, - "title": "Prompt Strength", - "description": "Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original.", + "default": 0, + "title": "Sharpen", + "description": "Sharpen the image after upscaling. The higher the value, the more sharpening is applied. 0 for no sharpening", "min": 0.0, - "max": 20.0 + "max": 10.0 }, { - "name": "denoising_strength", + "name": "sd_model", "type": { - "type": "float" + "type": "enum", + "values": [ + "epicrealism_naturalSinRC1VAE.safetensors [84d76a0328]", + "juggernaut_reborn.safetensors [338b85bc4f]", + "flat2DAnimerge_v45Sharp.safetensors" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Sd_model" }, - "default": 0.65, - "title": "Denoising Strength", - "description": "How much of the original image to keep. 1 is the complete destruction of the original image, 0 is the original image", - "min": 0.0, - "max": 1.0 + "default": "juggernaut_reborn.safetensors [338b85bc4f]", + "title": "Sd Model", + "description": "Stable Diffusion model checkpoint" }, { - "name": "instant_id_strength", + "name": "scheduler", "type": { - "type": "float" + "type": "enum", + "values": [ + "DPM++ 2M Karras", + "DPM++ SDE Karras", + "DPM++ 2M SDE Exponential", + "DPM++ 2M SDE Karras", + "Euler a", + "Euler", + "LMS", + "Heun", + "DPM2", + "DPM2 a", + "DPM++ 2S a", + "DPM++ 2M", + "DPM++ SDE", + "DPM++ 2M SDE", + "DPM++ 2M SDE Heun", + "DPM++ 2M SDE Heun Karras", + "DPM++ 2M SDE Heun Exponential", + "DPM++ 3M SDE", + "DPM++ 3M SDE Karras", + "DPM++ 3M SDE Exponential", + "DPM fast", + "DPM adaptive", + "LMS Karras", + "DPM2 Karras", + "DPM2 a Karras", + "DPM++ 2S a Karras", + "Restart", + "DDIM", + "PLMS", + "UniPC" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Scheduler" }, - "default": 1, - "title": "Instant Id Strength", - "description": "How strong the InstantID will be.", - "min": 0.0, - "max": 1.0 + "default": "DPM++ 3M SDE Karras", + "title": "Scheduler", + "description": "scheduler" }, { - "name": "control_depth_strength", + "name": "creativity", "type": { "type": "float" }, - "default": 0.8, - "title": "Control Depth Strength", - "description": "Strength of depth controlnet. The bigger this is, the more controlnet affects the output.", + "default": 0.35, + "title": "Creativity", + "description": "Creativity, try from 0.3 - 0.9", "min": 0.0, "max": 1.0 - } - ], - "outputs": [ - { - "type": { - "type": "image" - }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/583bfb50-534d-4835-a856-80bd2abb332e/mona-list-emoji.webp", - "created_at": "2024-03-05T13:01:03.163557Z", - "description": "Turn a face into 3D, emoji, pixel art, video game, claymation or toy", - "github_url": "https://github.com/fofr/cog-face-to-many", - "license_url": "https://github.com/fofr/cog-face-to-many/blob/main/weights_licenses.md", - "name": "face-to-many", - "owner": "fofr", - "is_official": false, - "paper_url": null, - "run_count": 14509495, - "url": "https://replicate.com/fofr/face-to-many", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "seed", - "image", - "style" - ] - }, - { - "title": "Face To Sticker", - "description": "Turn a face into a sticker", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.FaceToSticker", - "properties": [ - { - "name": "seed", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Seed", - "description": "Fix the random seed for reproducibility" }, { - "name": "image", + "name": "lora_links", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str" }, - "title": "Image", - "description": "An image of a person to be converted to a sticker" + "default": "", + "title": "Lora Links", + "description": "Link to a lora file you want to use in your upscaling. Multiple links possible, seperated by comma" }, { - "name": "steps", + "name": "downscaling", "type": { - "type": "int" + "type": "bool" }, - "default": 20, - "title": "Steps" + "default": false, + "title": "Downscaling", + "description": "Downscale the image before upscaling. Can improve quality and speed for images with high resolution but lower quality" }, { - "name": "width", + "name": "resemblance", "type": { - "type": "int" + "type": "float" }, - "default": 1024, - "title": "Width" + "default": 0.6, + "title": "Resemblance", + "description": "Resemblance, try from 0.3 - 1.6", + "min": 0.0, + "max": 3.0 }, { - "name": "height", + "name": "scale_factor", "type": { - "type": "int" + "type": "float" }, - "default": 1024, - "title": "Height" + "default": 2, + "title": "Scale Factor", + "description": "Scale factor" }, { - "name": "prompt", + "name": "tiling_width", "type": { - "type": "str" + "type": "enum", + "values": [ + 16, + 32, + 48, + 64, + 80, + 96, + 112, + 128, + 144, + 160, + 176, + 192, + 208, + 224, + 240, + 256 + ], + "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_width" }, - "default": "a person", - "title": "Prompt" + "default": 112, + "title": "Tiling Width", + "description": "Fractality, set lower tile width for a high Fractality" }, { - "name": "upscale", + "name": "output_format", "type": { - "type": "bool" + "type": "enum", + "values": [ + "webp", + "jpg", + "png" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Output_format" }, - "default": false, - "title": "Upscale", - "description": "2x upscale the sticker" + "default": "png", + "title": "Output Format", + "description": "Format of the output images" }, { - "name": "upscale_steps", + "name": "tiling_height", "type": { - "type": "int" + "type": "enum", + "values": [ + 16, + 32, + 48, + 64, + 80, + 96, + 112, + 128, + 144, + 160, + 176, + 192, + 208, + 224, + 240, + 256 + ], + "type_name": "nodetool.nodes.replicate.image.upscale.ClarityUpscaler.Tiling_height" }, - "default": 10, - "title": "Upscale Steps", - "description": "Number of steps to upscale" + "default": 144, + "title": "Tiling Height", + "description": "Fractality, set lower tile height for a high Fractality" }, { - "name": "negative_prompt", + "name": "custom_sd_model", "type": { "type": "str" }, "default": "", - "title": "Negative Prompt", - "description": "Things you do not want in the image" - }, - { - "name": "prompt_strength", - "type": { - "type": "float" - }, - "default": 7, - "title": "Prompt Strength", - "description": "Strength of the prompt. This is the CFG scale, higher numbers lead to stronger prompt, lower numbers will keep more of a likeness to the original." + "title": "Custom Sd Model" }, { - "name": "ip_adapter_noise", + "name": "negative_prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0.5, - "title": "Ip Adapter Noise", - "description": "How much noise is added to the IP adapter input", - "min": 0.0, - "max": 1.0 + "default": "(worst quality, low quality, normal quality:2) JuggernautNegative-neg", + "title": "Negative Prompt", + "description": "Negative Prompt" }, { - "name": "ip_adapter_weight", + "name": "num_inference_steps", "type": { - "type": "float" + "type": "int" }, - "default": 0.2, - "title": "Ip Adapter Weight", - "description": "How much the IP adapter will influence the image", - "min": 0.0, - "max": 1.0 + "default": 18, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 100.0 }, { - "name": "instant_id_strength", + "name": "downscaling_resolution", "type": { - "type": "float" + "type": "int" }, - "default": 1, - "title": "Instant Id Strength", - "description": "How strong the InstantID will be.", - "min": 0.0, - "max": 1.0 + "default": 768, + "title": "Downscaling Resolution", + "description": "Downscaling resolution" } ], "outputs": [ @@ -17059,44 +17784,34 @@ } ], "the_model_info": { - "cover_image_url": "https://replicate.delivery/xezq/vvHSs2p5vPJtPRNW7ffCYt54fwP43r8I3kG4LPfoCCMaMBWPB/ComfyUI_00002_.png", - "created_at": "2024-02-28T15:14:15.687345Z", - "description": "Turn a face into a sticker", - "github_url": "https://github.com/fofr/cog-face-to-sticker", - "license_url": "https://github.com/fofr/cog-face-to-sticker/blob/main/weights_licenses.md", - "name": "face-to-sticker", - "owner": "fofr", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/76fbe6df-517d-480a-a6e4-dce383b40bbb/Bildschirmfoto_2024-03-30_um_09.2.png", + "created_at": "2024-03-15T02:35:32.167345Z", + "description": "High resolution image Upscaler and Enhancer. Use at ClarityAI.co. A free Magnific alternative. Twitter/X: @philz1337x", + "github_url": "https://github.com/philz1337x/clarity-upscaler", + "license_url": "https://github.com/philz1337x/clarity-upscaler/blob/main/LICENSE.txt", + "name": "clarity-upscaler", + "owner": "philz1337x", "is_official": false, - "paper_url": null, - "run_count": 1567794, - "url": "https://replicate.com/fofr/face-to-sticker", + "paper_url": "https://clarityai.co", + "run_count": 20009000, + "url": "https://replicate.com/philz1337x/clarity-upscaler", "visibility": "public", "weights_url": null }, "basic_fields": [ + "mask", "seed", - "image", - "steps" + "image" ] }, { - "title": "Instant Id", - "description": "Make realistic images of real people instantly", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.InstantId", + "title": "GFPGAN", + "description": "Practical face restoration algorithm for *old photos* or *AI-generated faces*", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.GFPGAN", "properties": [ { - "name": "seed", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" - }, - { - "name": "image", + "name": "img", "type": { "type": "image" }, @@ -17107,47 +17822,93 @@ "data": null, "metadata": null }, - "title": "Image", - "description": "Input face image" + "title": "Img", + "description": "Input" }, { - "name": "prompt", + "name": "scale", "type": { - "type": "str" + "type": "float" }, - "default": "a person", - "title": "Prompt", - "description": "Input prompt" + "default": 2, + "title": "Scale", + "description": "Rescaling factor" }, { - "name": "scheduler", + "name": "version", "type": { "type": "enum", "values": [ - "DEISMultistepScheduler", - "HeunDiscreteScheduler", - "EulerDiscreteScheduler", - "DPMSolverMultistepScheduler", - "DPMSolverMultistepScheduler-Karras", - "DPMSolverMultistepScheduler-Karras-SDE" + "v1.2", + "v1.3", + "v1.4", + "RestoreFormer" ], - "type_name": "nodetool.nodes.replicate.image.face.InstantId.Scheduler" + "type_name": "nodetool.nodes.replicate.image.upscale.GFPGAN.Version" }, - "default": "EulerDiscreteScheduler", - "title": "Scheduler", - "description": "Scheduler" + "default": "v1.4", + "title": "Version", + "description": "GFPGAN version. v1.3: better quality. v1.4: more details and better identity." + } + ], + "outputs": [ + { + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/40223a51-a460-4f27-b13a-bf5d6429b686/output_1.png", + "created_at": "2021-09-15T22:08:48.809672Z", + "description": "Practical face restoration algorithm for *old photos* or *AI-generated faces*", + "github_url": "https://github.com/replicate/GFPGAN", + "license_url": "https://github.com/TencentARC/GFPGAN/blob/master/LICENSE", + "name": "gfpgan", + "owner": "tencentarc", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2101.04061", + "run_count": 95065199, + "url": "https://replicate.com/tencentarc/gfpgan", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "img", + "scale", + "version" + ] + }, + { + "title": "High Resolution Control Net Tile", + "description": "UPDATE: new upscaling algorithm for a much improved image quality. Fermat.app open-source implementation of an efficient ControlNet 1.1 tile for high-quality upscales. Increase the creativity to encourage hallucination.", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.HighResolutionControlNetTile", + "properties": [ + { + "name": "hdr", + "type": { + "type": "float" + }, + "default": 0, + "title": "Hdr", + "description": "HDR improvement over the original image", + "min": 0.0, + "max": 1.0 }, { - "name": "enable_lcm", + "name": "seed", "type": { - "type": "bool" + "type": "int", + "optional": true }, - "default": false, - "title": "Enable Lcm", - "description": "Enable Fast Inference with LCM (Latent Consistency Models) - speeds up inference steps, trade-off is the quality of the generated image. Performs better with close-up portrait face images" + "default": null, + "title": "Seed", + "description": "Seed" }, { - "name": "pose_image", + "name": "image", "type": { "type": "image" }, @@ -17158,94 +17919,101 @@ "data": null, "metadata": null }, - "title": "Pose Image", - "description": "(Optional) reference pose image" + "title": "Image", + "description": "Control image for scribble controlnet" }, { - "name": "num_outputs", + "name": "steps", "type": { "type": "int" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of images to output", - "min": 1.0, - "max": 8.0 + "default": 8, + "title": "Steps", + "description": "Steps" }, { - "name": "sdxl_weights", + "name": "format", "type": { "type": "enum", "values": [ - "stable-diffusion-xl-base-1.0", - "juggernaut-xl-v8", - "afrodite-xl-v2", - "albedobase-xl-20", - "albedobase-xl-v13", - "animagine-xl-30", - "anime-art-diffusion-xl", - "anime-illust-diffusion-xl", - "dreamshaper-xl", - "dynavision-xl-v0610", - "guofeng4-xl", - "nightvision-xl-0791", - "omnigen-xl", - "pony-diffusion-v6-xl", - "protovision-xl-high-fidel", - "RealVisXL_V3.0_Turbo", - "RealVisXL_V4.0_Lightning" + "jpg", + "png" ], - "type_name": "nodetool.nodes.replicate.image.face.InstantId.Sdxl_weights" + "type_name": "nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Format" }, - "default": "stable-diffusion-xl-base-1.0", - "title": "Sdxl Weights", - "description": "Pick which base weights you want to use" + "default": "jpg", + "title": "Format", + "description": "Format of the output." }, { - "name": "output_format", + "name": "prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Prompt for the model" + }, + { + "name": "scheduler", "type": { "type": "enum", "values": [ - "webp", - "jpg", - "png" + "DDIM", + "DPMSolverMultistep", + "K_EULER_ANCESTRAL", + "K_EULER" ], - "type_name": "nodetool.nodes.replicate.image.face.InstantId.Output_format" + "type_name": "nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Scheduler" }, - "default": "webp", - "title": "Output Format", - "description": "Format of the output images" + "default": "DDIM", + "title": "Scheduler", + "description": "Choose a scheduler." }, { - "name": "pose_strength", + "name": "creativity", "type": { "type": "float" }, - "default": 0.4, - "title": "Pose Strength", - "description": "Openpose ControlNet strength, effective only if `enable_pose_controlnet` is true", - "min": 0.0, + "default": 0.35, + "title": "Creativity", + "description": "Denoising strength. 1 means total destruction of the original image", + "min": 0.1, "max": 1.0 }, { - "name": "canny_strength", + "name": "guess_mode", "type": { - "type": "float" + "type": "bool" }, - "default": 0.3, - "title": "Canny Strength", - "description": "Canny ControlNet strength, effective only if `enable_canny_controlnet` is true", - "min": 0.0, - "max": 1.0 + "default": false, + "title": "Guess Mode", + "description": "In this mode, the ControlNet encoder will try best to recognize the content of the input image even if you remove all prompts." }, { - "name": "depth_strength", + "name": "resolution", + "type": { + "type": "enum", + "values": [ + 2048, + 2560, + 4096 + ], + "type_name": "nodetool.nodes.replicate.image.upscale.HighResolutionControlNetTile.Resolution" + }, + "default": 2560, + "title": "Resolution", + "description": "Image resolution" + }, + { + "name": "resemblance", "type": { "type": "float" }, - "default": 0.5, - "title": "Depth Strength", - "description": "Depth ControlNet strength, effective only if `enable_depth_controlnet` is true", + "default": 0.85, + "title": "Resemblance", + "description": "Conditioning scale for controlnet", "min": 0.0, "max": 1.0 }, @@ -17254,153 +18022,230 @@ "type": { "type": "float" }, - "default": 7.5, + "default": 0, "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 50.0 - }, - { - "name": "output_quality", - "type": { - "type": "int" - }, - "default": 80, - "title": "Output Quality", - "description": "Quality of the output images, from 0 to 100. 100 is best quality, 0 is lowest quality.", + "description": "Scale for classifier-free guidance, should be 0.", "min": 0.0, - "max": 100.0 + "max": 30.0 }, { "name": "negative_prompt", "type": { "type": "str" }, - "default": "", + "default": "teeth, tooth, open mouth, longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, mutant", "title": "Negative Prompt", - "description": "Input Negative Prompt" + "description": "Negative prompt" }, { - "name": "ip_adapter_scale", + "name": "lora_details_strength", "type": { "type": "float" }, - "default": 0.8, - "title": "Ip Adapter Scale", - "description": "Scale for image adapter strength (for detail)", - "min": 0.0, - "max": 1.5 + "default": 1, + "title": "Lora Details Strength", + "description": "Strength of the image's details", + "min": -5.0, + "max": 3.0 }, { - "name": "lcm_guidance_scale", + "name": "lora_sharpness_strength", "type": { "type": "float" }, - "default": 1.5, - "title": "Lcm Guidance Scale", - "description": "Only used when `enable_lcm` is set to True, Scale for classifier-free guidance when using LCM", - "min": 1.0, - "max": 20.0 + "default": 1.25, + "title": "Lora Sharpness Strength", + "description": "Strength of the image's sharpness. We don't recommend values above 2.", + "min": -5.0, + "max": 10.0 + } + ], + "outputs": [ + { + "type": { + "type": "image" + }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/db4434b4-7b0f-49f7-b78a-774fe9e630a7/batou.jpeg", + "created_at": "2023-12-08T02:32:38.082772Z", + "description": "UPDATE: new upscaling algorithm for a much improved image quality. Fermat.app open-source implementation of an efficient ControlNet 1.1 tile for high-quality upscales. Increase the creativity to encourage hallucination.", + "github_url": null, + "license_url": null, + "name": "high-resolution-controlnet-tile", + "owner": "fermatresearch", + "is_official": false, + "paper_url": null, + "run_count": 640821, + "url": "https://replicate.com/fermatresearch/high-resolution-controlnet-tile", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "hdr", + "seed", + "image" + ] + }, + { + "title": "Magic Image Refiner", + "description": "A better alternative to SDXL refiners, providing a lot of quality and detail. Can also be used for inpainting or upscaling.", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.MagicImageRefiner", + "properties": [ + { + "name": "hdr", + "type": { + "type": "float" + }, + "default": 0, + "title": "Hdr", + "description": "HDR improvement over the original image", + "min": 0.0, + "max": 1.0 }, { - "name": "num_inference_steps", + "name": "mask", "type": { - "type": "int" + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Mask", + "description": "When provided, refines some section of the image. Must be the same size as the image" + }, + { + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Seed" + }, + { + "name": "image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": 30, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "title": "Image", + "description": "Image to refine" }, { - "name": "disable_safety_checker", + "name": "steps", "type": { - "type": "bool" + "type": "int" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images" + "default": 20, + "title": "Steps", + "description": "Steps" }, { - "name": "enable_pose_controlnet", + "name": "prompt", "type": { - "type": "bool" + "type": "str", + "optional": true }, - "default": true, - "title": "Enable Pose Controlnet", - "description": "Enable Openpose ControlNet, overrides strength if set to false" + "default": null, + "title": "Prompt", + "description": "Prompt for the model" }, { - "name": "enhance_nonface_region", + "name": "scheduler", "type": { - "type": "bool" + "type": "enum", + "values": [ + "DDIM", + "DPMSolverMultistep", + "K_EULER_ANCESTRAL", + "K_EULER" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Scheduler" }, - "default": true, - "title": "Enhance Nonface Region", - "description": "Enhance non-face region" + "default": "DDIM", + "title": "Scheduler", + "description": "Choose a scheduler." }, { - "name": "enable_canny_controlnet", + "name": "creativity", "type": { - "type": "bool" + "type": "float" }, - "default": false, - "title": "Enable Canny Controlnet", - "description": "Enable Canny ControlNet, overrides strength if set to false" + "default": 0.25, + "title": "Creativity", + "description": "Denoising strength. 1 means total destruction of the original image", + "min": 0.0, + "max": 1.0 }, { - "name": "enable_depth_controlnet", + "name": "guess_mode", "type": { "type": "bool" }, "default": false, - "title": "Enable Depth Controlnet", - "description": "Enable Depth ControlNet, overrides strength if set to false" + "title": "Guess Mode", + "description": "In this mode, the ControlNet encoder will try best to recognize the content of the input image even if you remove all prompts. The `guidance_scale` between 3.0 and 5.0 is recommended." }, { - "name": "lcm_num_inference_steps", + "name": "resolution", "type": { - "type": "int" + "type": "enum", + "values": [ + "original", + "1024", + "2048" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.MagicImageRefiner.Resolution" }, - "default": 5, - "title": "Lcm Num Inference Steps", - "description": "Only used when `enable_lcm` is set to True, Number of denoising steps when using LCM", - "min": 1.0, - "max": 10.0 + "default": "original", + "title": "Resolution", + "description": "Image resolution" }, { - "name": "face_detection_input_width", + "name": "resemblance", "type": { - "type": "int" + "type": "float" }, - "default": 640, - "title": "Face Detection Input Width", - "description": "Width of the input image for face detection", - "min": 640.0, - "max": 4096.0 + "default": 0.75, + "title": "Resemblance", + "description": "Conditioning scale for controlnet", + "min": 0.0, + "max": 1.0 }, { - "name": "face_detection_input_height", + "name": "guidance_scale", "type": { - "type": "int" + "type": "float" }, - "default": 640, - "title": "Face Detection Input Height", - "description": "Height of the input image for face detection", - "min": 640.0, - "max": 4096.0 + "default": 7, + "title": "Guidance Scale", + "description": "Scale for classifier-free guidance", + "min": 0.1, + "max": 30.0 }, { - "name": "controlnet_conditioning_scale", + "name": "negative_prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0.8, - "title": "Controlnet Conditioning Scale", - "description": "Scale for IdentityNet strength (for fidelity)", - "min": 0.0, - "max": 1.5 + "default": "teeth, tooth, open mouth, longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, mutant", + "title": "Negative Prompt", + "description": "Negative prompt" } ], "outputs": [ @@ -17412,31 +18257,31 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3bb0b275-5996-4382-b73f-5bccfbddde92/instantidcover.jpg", - "created_at": "2024-01-22T21:00:49.120905Z", - "description": "Make realistic images of real people instantly", - "github_url": "https://github.com/zsxkib/InstantID", - "license_url": "https://github.com/zsxkib/InstantID/blob/main/LICENSE", - "name": "instant-id", - "owner": "zsxkib", + "cover_image_url": "https://replicate.delivery/pbxt/H3ZmqoAgsBonKFilPafiEsvYsc2FnjD8EW3vMt6KpkYfd0ISA/out-0.png", + "created_at": "2024-01-03T16:55:24.594128Z", + "description": "A better alternative to SDXL refiners, providing a lot of quality and detail. Can also be used for inpainting or upscaling.", + "github_url": "https://github.com/BatouResearch/magic-image-refiner", + "license_url": null, + "name": "magic-image-refiner", + "owner": "fermatresearch", "is_official": false, - "paper_url": "https://arxiv.org/abs/2401.07519", - "run_count": 963930, - "url": "https://replicate.com/zsxkib/instant-id", + "paper_url": null, + "run_count": 943882, + "url": "https://replicate.com/fermatresearch/magic-image-refiner", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "image", - "prompt" + "hdr", + "mask", + "seed" ] }, { - "title": "Instant ID Artistic", - "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Dreamshaper-XL as the base model to encourage artistic generations", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.Instant_ID_Artistic", + "title": "Real Esr Gan", + "description": "Real-ESRGAN for image upscaling on an A100", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.RealEsrGan", "properties": [ { "name": "image", @@ -17454,88 +18299,24 @@ "description": "Input image" }, { - "name": "width", - "type": { - "type": "int" - }, - "default": 640, - "title": "Width", - "description": "Width of output image", - "min": 512.0, - "max": 2048.0 - }, - { - "name": "height", - "type": { - "type": "int" - }, - "default": 640, - "title": "Height", - "description": "Height of output image", - "min": 512.0, - "max": 2048.0 - }, - { - "name": "prompt", - "type": { - "type": "str" - }, - "default": "analog film photo of a man. faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage, masterpiece, best quality", - "title": "Prompt", - "description": "Input prompt" - }, - { - "name": "guidance_scale", - "type": { - "type": "float" - }, - "default": 5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 50.0 - }, - { - "name": "negative_prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Negative Prompt", - "description": "Input Negative Prompt" - }, - { - "name": "ip_adapter_scale", + "name": "scale", "type": { "type": "float" }, - "default": 0.8, - "title": "Ip Adapter Scale", - "description": "Scale for IP adapter", + "default": 4, + "title": "Scale", + "description": "Factor to scale image by", "min": 0.0, - "max": 1.0 - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 30, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 + "max": 10.0 }, { - "name": "controlnet_conditioning_scale", + "name": "face_enhance", "type": { - "type": "float" + "type": "bool" }, - "default": 0.8, - "title": "Controlnet Conditioning Scale", - "description": "Scale for ControlNet conditioning", - "min": 0.0, - "max": 1.0 + "default": false, + "title": "Face Enhance", + "description": "Run GFPGAN face enhancement along with upscaling" } ], "outputs": [ @@ -17547,32 +18328,47 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/87b24249-b2c1-43f3-b3cf-a5005f23b21c/Screenshot_2024-01-24_at_15.24.13.png", - "created_at": "2024-01-24T04:34:52.345779Z", - "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Dreamshaper-XL as the base model to encourage artistic generations", - "github_url": "https://github.com/GrandlineAI/InstantID", - "license_url": "https://github.com/InstantID/InstantID/blob/main/LICENSE", - "name": "instant-id-artistic", - "owner": "grandlineai", + "cover_image_url": "https://replicate.delivery/pbxt/lv0iOW3u6DrNOd30ybfmufqWebiuW10YjILw05YZGbeipZZCB/output.png", + "created_at": "2023-03-10T22:36:15.201038Z", + "description": "Real-ESRGAN for image upscaling on an A100", + "github_url": "https://github.com/replicate/cog-real-esrgan", + "license_url": "https://github.com/replicate/cog-real-esrgan/blob/main/LICENSE", + "name": "real-esrgan-a100", + "owner": "daanelson", "is_official": false, "paper_url": null, - "run_count": 11939, - "url": "https://replicate.com/grandlineai/instant-id-artistic", + "run_count": 14614084, + "url": "https://replicate.com/daanelson/real-esrgan-a100", "visibility": "public", "weights_url": null }, "basic_fields": [ "image", - "width", - "height" + "scale", + "face_enhance" ] }, { - "title": "Instant ID Photorealistic", - "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Juggernaut-XL v8 as the base model to encourage photorealism", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.Instant_ID_Photorealistic", + "title": "Swin 2SR", + "description": "3 Million Runs! AI Photorealistic Image Super-Resolution and Restoration", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.Swin2SR", "properties": [ + { + "name": "task", + "type": { + "type": "enum", + "values": [ + "classical_sr", + "real_sr", + "compressed_sr" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.Swin2SR.Task" + }, + "default": "real_sr", + "title": "Task", + "description": "Choose a task" + }, { "name": "image", "type": { @@ -17587,90 +18383,6 @@ }, "title": "Image", "description": "Input image" - }, - { - "name": "width", - "type": { - "type": "int" - }, - "default": 640, - "title": "Width", - "description": "Width of output image", - "min": 512.0, - "max": 2048.0 - }, - { - "name": "height", - "type": { - "type": "int" - }, - "default": 640, - "title": "Height", - "description": "Height of output image", - "min": 512.0, - "max": 2048.0 - }, - { - "name": "prompt", - "type": { - "type": "str" - }, - "default": "analog film photo of a man. faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage, masterpiece, best quality", - "title": "Prompt", - "description": "Input prompt" - }, - { - "name": "guidance_scale", - "type": { - "type": "float" - }, - "default": 5, - "title": "Guidance Scale", - "description": "Scale for classifier-free guidance", - "min": 1.0, - "max": 50.0 - }, - { - "name": "negative_prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Negative Prompt", - "description": "Input Negative Prompt" - }, - { - "name": "ip_adapter_scale", - "type": { - "type": "float" - }, - "default": 0.8, - "title": "Ip Adapter Scale", - "description": "Scale for IP adapter", - "min": 0.0, - "max": 1.0 - }, - { - "name": "num_inference_steps", - "type": { - "type": "int" - }, - "default": 30, - "title": "Num Inference Steps", - "description": "Number of denoising steps", - "min": 1.0, - "max": 500.0 - }, - { - "name": "controlnet_conditioning_scale", - "type": { - "type": "float" - }, - "default": 0.8, - "title": "Controlnet Conditioning Scale", - "description": "Scale for ControlNet conditioning", - "min": 0.0, - "max": 1.0 } ], "outputs": [ @@ -17682,379 +18394,397 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/0c6bd74f-6129-4323-8125-beb65871a8de/Screenshot_2024-01-24_at_15.24.13.png", - "created_at": "2024-01-24T07:43:55.954510Z", - "description": "InstantID : Zero-shot Identity-Preserving Generation in Seconds. Using Juggernaut-XL v8 as the base model to encourage photorealism", - "github_url": "https://github.com/GrandlineAI/InstantID", - "license_url": "https://github.com/InstantID/InstantID/blob/main/LICENSE", - "name": "instant-id-photorealistic", - "owner": "grandlineai", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/aabde67b-bf5c-4fc8-a4bd-8b2dcba60be6/swin2sr-cover3.png", + "created_at": "2022-10-28T22:59:05.692845Z", + "description": "3 Million Runs! AI Photorealistic Image Super-Resolution and Restoration", + "github_url": "https://github.com/mv-lab/swin2sr", + "license_url": "https://github.com/mv-lab/swin2sr/blob/main/LICENSE", + "name": "swin2sr", + "owner": "mv-lab", "is_official": false, - "paper_url": null, - "run_count": 43429, - "url": "https://replicate.com/grandlineai/instant-id-photorealistic", + "paper_url": "https://arxiv.org/abs/2209.11345", + "run_count": 3571744, + "url": "https://replicate.com/mv-lab/swin2sr", "visibility": "public", "weights_url": null }, "basic_fields": [ - "image", - "width", - "height" + "task", + "image" ] }, { - "title": "Photo Maker", - "description": "Create photos, paintings and avatars for anyone in any style within seconds.", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.PhotoMaker", + "title": "Swin IR", + "description": "Image Restoration Using Swin Transformer", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.SwinIR", "properties": [ { - "name": "seed", + "name": "jpeg", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Seed", - "description": "Seed. Leave blank to use a random number", - "min": 0.0, - "max": 2147483647.0 + "default": 40, + "title": "Jpeg", + "description": "scale factor, activated for JPEG Compression Artifact Reduction. Leave it as default or arbitrary if other tasks are selected" }, { - "name": "prompt", + "name": "image", "type": { - "type": "str" + "type": "image" }, - "default": "A photo of a person img", - "title": "Prompt", - "description": "Prompt. Example: 'a photo of a man/woman img'. The phrase 'img' is the trigger word." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "input image" }, { - "name": "num_steps", + "name": "noise", "type": { - "type": "int" + "type": "enum", + "values": [ + 15, + 25, + 50 + ], + "type_name": "nodetool.nodes.replicate.image.upscale.SwinIR.Noise" }, - "default": 20, - "title": "Num Steps", - "description": "Number of sample steps", - "min": 1.0, - "max": 100.0 + "default": 15, + "title": "Noise", + "description": "noise level, activated for Grayscale Image Denoising and Color Image Denoising. Leave it as default or arbitrary if other tasks are selected" }, { - "name": "style_name", + "name": "task_type", "type": { "type": "enum", "values": [ - "(No style)", - "Cinematic", - "Disney Charactor", - "Digital Art", - "Photographic (Default)", - "Fantasy art", - "Neonpunk", - "Enhance", - "Comic book", - "Lowpoly", - "Line art" + "Real-World Image Super-Resolution-Large", + "Real-World Image Super-Resolution-Medium", + "Grayscale Image Denoising", + "Color Image Denoising", + "JPEG Compression Artifact Reduction" ], - "type_name": "nodetool.nodes.replicate.image.face.PhotoMaker.Style_name" + "type_name": "nodetool.nodes.replicate.image.upscale.SwinIR.Task_type" }, - "default": "Photographic (Default)", - "title": "Style Name", - "description": "Style template. The style template will add a style-specific prompt and negative prompt to the user's prompt." - }, + "default": "Real-World Image Super-Resolution-Large", + "title": "Task Type", + "description": "Choose a task" + } + ], + "outputs": [ { - "name": "input_image", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Input Image", - "description": "The input image, for example a photo of your face." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/c62290f9-ba1d-419b-95b8-eedfe5863122/out.png", + "created_at": "2021-09-13T19:58:55.156216Z", + "description": "Image Restoration Using Swin Transformer", + "github_url": "https://github.com/JingyunLiang/SwinIR", + "license_url": "https://github.com/JingyunLiang/SwinIR/blob/main/LICENSE", + "name": "swinir", + "owner": "jingyunliang", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2108.10257", + "run_count": 6092943, + "url": "https://replicate.com/jingyunliang/swinir", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "jpeg", + "image", + "noise" + ] + }, + { + "title": "Ultimate SDUpscale", + "description": "Ultimate SD Upscale with ControlNet Tile", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.UltimateSDUpscale", + "properties": [ { - "name": "num_outputs", + "name": "cfg", "type": { - "type": "int" + "type": "float" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of output images", - "min": 1.0, - "max": 4.0 + "default": 8, + "title": "Cfg", + "description": "CFG" }, { - "name": "input_image2", + "name": "seed", "type": { - "type": "str", + "type": "int", "optional": true }, "default": null, - "title": "Input Image2", - "description": "Additional input image (optional)" + "title": "Seed", + "description": "Sampling seed, leave Empty for Random" }, { - "name": "input_image3", + "name": "image", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Input Image3", - "description": "Additional input image (optional)" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image" }, { - "name": "input_image4", + "name": "steps", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Input Image4", - "description": "Additional input image (optional)" + "default": 20, + "title": "Steps", + "description": "Steps" }, { - "name": "guidance_scale", + "name": "denoise", "type": { "type": "float" }, - "default": 5, - "title": "Guidance Scale", - "description": "Guidance scale. A guidance scale of 1 corresponds to doing no classifier free guidance.", - "min": 1.0, - "max": 10.0 + "default": 0.2, + "title": "Denoise", + "description": "Denoise" }, { - "name": "negative_prompt", + "name": "upscaler", "type": { - "type": "str" + "type": "enum", + "values": [ + "4x_NMKD-Siax_200k", + "4x-UltraSharp", + "RealESRGAN_x4plus", + "RealESRGAN_x4plus_anime_6B" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Upscaler" }, - "default": "nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry", - "title": "Negative Prompt", - "description": "Negative Prompt. The negative prompt should NOT contain the trigger word." + "default": "4x-UltraSharp", + "title": "Upscaler", + "description": "Upscaler" }, { - "name": "style_strength_ratio", + "name": "mask_blur", "type": { - "type": "float" + "type": "int" }, - "default": 20, - "title": "Style Strength Ratio", - "description": "Style strength (%)", - "min": 15.0, - "max": 50.0 + "default": 8, + "title": "Mask Blur", + "description": "Mask Blur" }, { - "name": "disable_safety_checker", + "name": "mode_type", "type": { - "type": "bool" + "type": "enum", + "values": [ + "Linear", + "Chess", + "None" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Mode_type" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." - } - ], - "outputs": [ + "default": "Linear", + "title": "Mode Type", + "description": "Mode Type" + }, { + "name": "scheduler", "type": { - "type": "image" + "type": "enum", + "values": [ + "normal", + "karras", + "exponential", + "sgm_uniform", + "simple", + "ddim_uniform" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Scheduler" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/c10ac3c0-f86a-4249-9f3d-d7723cc93d45/photomaker.jpg", - "created_at": "2024-01-16T15:42:17.882162Z", - "description": "Create photos, paintings and avatars for anyone in any style within seconds.", - "github_url": "https://github.com/datakami-models/PhotoMaker", - "license_url": "https://github.com/TencentARC/PhotoMaker/blob/main/LICENSE", - "name": "photomaker", - "owner": "tencentarc", - "is_official": false, - "paper_url": "https://huggingface.co/papers/2312.04461", - "run_count": 8077107, - "url": "https://replicate.com/tencentarc/photomaker", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "seed", - "prompt", - "num_steps" - ] - }, - { - "title": "Photo Maker Style", - "description": "Create photos, paintings and avatars for anyone in any style within seconds. (Stylization version)", - "namespace": "replicate.image.face", - "node_type": "replicate.image.face.PhotoMakerStyle", - "properties": [ + "default": "normal", + "title": "Scheduler", + "description": "Scheduler" + }, { - "name": "seed", + "name": "tile_width", "type": { - "type": "int", - "optional": true + "type": "int" }, - "default": null, - "title": "Seed", - "description": "Seed. Leave blank to use a random number", - "min": 0.0, - "max": 2147483647.0 + "default": 512, + "title": "Tile Width", + "description": "Tile Width" }, { - "name": "prompt", + "name": "upscale_by", "type": { - "type": "str" + "type": "float" }, - "default": "A photo of a person img", - "title": "Prompt", - "description": "Prompt. Example: 'a photo of a man/woman img'. The phrase 'img' is the trigger word." + "default": 2, + "title": "Upscale By", + "description": "Upscale By" }, { - "name": "num_steps", + "name": "tile_height", "type": { "type": "int" }, - "default": 20, - "title": "Num Steps", - "description": "Number of sample steps", - "min": 1.0, - "max": 100.0 + "default": 512, + "title": "Tile Height", + "description": "Tile Height" }, { - "name": "style_name", + "name": "sampler_name", "type": { "type": "enum", "values": [ - "(No style)", - "Cinematic", - "Disney Charactor", - "Digital Art", - "Photographic (Default)", - "Fantasy art", - "Neonpunk", - "Enhance", - "Comic book", - "Lowpoly", - "Line art" + "euler", + "euler_ancestral", + "heun", + "dpm_2", + "dpm_2_ancestral", + "lms", + "dpm_fast", + "dpm_adaptive", + "dpmpp_2s_ancestral", + "dpmpp_sde", + "dpmpp_sde_gpu", + "dpmpp_2m", + "dpmpp_2m_sde", + "dpmpp_2m_sde_gpu", + "dpmpp_3m_sde", + "dpmpp_3m_sde_gpu", + "dpmpp", + "ddim", + "uni_pc", + "uni_pc_bh2" ], - "type_name": "nodetool.nodes.replicate.image.face.PhotoMakerStyle.Style_name" + "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Sampler_name" }, - "default": "(No style)", - "title": "Style Name", - "description": "Style template. The style template will add a style-specific prompt and negative prompt to the user's prompt." + "default": "euler", + "title": "Sampler Name", + "description": "Sampler" }, { - "name": "input_image", + "name": "tile_padding", "type": { - "type": "image" + "type": "int" }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 32, + "title": "Tile Padding", + "description": "Tile Padding" + }, + { + "name": "seam_fix_mode", + "type": { + "type": "enum", + "values": [ + "None", + "Band Pass", + "Half Tile", + "Half Tile + Intersections" + ], + "type_name": "nodetool.nodes.replicate.image.upscale.UltimateSDUpscale.Seam_fix_mode" }, - "title": "Input Image", - "description": "The input image, for example a photo of your face." + "default": "None", + "title": "Seam Fix Mode", + "description": "Seam Fix Mode" }, { - "name": "num_outputs", + "name": "seam_fix_width", "type": { "type": "int" }, - "default": 1, - "title": "Num Outputs", - "description": "Number of output images", - "min": 1.0, - "max": 4.0 + "default": 64, + "title": "Seam Fix Width", + "description": "Seam Fix Width" }, { - "name": "input_image2", + "name": "negative_prompt", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str" }, - "title": "Input Image2", - "description": "Additional input image (optional)" + "default": "", + "title": "Negative Prompt", + "description": "Negative Prompt" }, { - "name": "input_image3", + "name": "positive_prompt", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str" }, - "title": "Input Image3", - "description": "Additional input image (optional)" + "default": "Hey! Have a nice day :D", + "title": "Positive Prompt", + "description": "Positive Prompt" }, { - "name": "input_image4", + "name": "seam_fix_denoise", "type": { - "type": "image" - }, - "default": { - "type": "image", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "float" }, - "title": "Input Image4", - "description": "Additional input image (optional)" + "default": 1, + "title": "Seam Fix Denoise", + "description": "Seam Fix Denoise" }, { - "name": "guidance_scale", + "name": "seam_fix_padding", "type": { - "type": "float" + "type": "int" }, - "default": 5, - "title": "Guidance Scale", - "description": "Guidance scale. A guidance scale of 1 corresponds to doing no classifier free guidance.", - "min": 1.0, - "max": 10.0 + "default": 16, + "title": "Seam Fix Padding", + "description": "Seam Fix Padding" }, { - "name": "negative_prompt", + "name": "seam_fix_mask_blur", "type": { - "type": "str" + "type": "int" }, - "default": "nsfw, lowres, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry", - "title": "Negative Prompt", - "description": "Negative Prompt. The negative prompt should NOT contain the trigger word." + "default": 8, + "title": "Seam Fix Mask Blur", + "description": "Seam Fix Mask Blur" }, { - "name": "style_strength_ratio", + "name": "controlnet_strength", "type": { "type": "float" }, - "default": 20, - "title": "Style Strength Ratio", - "description": "Style strength (%)", - "min": 15.0, - "max": 50.0 + "default": 1, + "title": "Controlnet Strength", + "description": "ControlNet Strength" }, { - "name": "disable_safety_checker", + "name": "force_uniform_tiles", "type": { "type": "bool" }, - "default": false, - "title": "Disable Safety Checker", - "description": "Disable safety checker for generated images." + "default": true, + "title": "Force Uniform Tiles", + "description": "Force Uniform Tiles" + }, + { + "name": "use_controlnet_tile", + "type": { + "type": "bool" + }, + "default": true, + "title": "Use Controlnet Tile", + "description": "Use ControlNet Tile" } ], "outputs": [ @@ -18066,2559 +18796,2417 @@ } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/8e85a287-826f-4c21-9079-22eac106dd6b/output.0.png", - "created_at": "2024-01-18T14:28:51.763369Z", - "description": "Create photos, paintings and avatars for anyone in any style within seconds. (Stylization version)", - "github_url": "https://github.com/TencentARC/PhotoMaker", - "license_url": "https://github.com/TencentARC/PhotoMaker/blob/main/LICENSE", - "name": "photomaker-style", - "owner": "tencentarc", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/ec52df9a-be01-4c74-af9d-a14df03bf03a/output.png", + "created_at": "2023-11-14T08:41:40.364739Z", + "description": "Ultimate SD Upscale with ControlNet Tile", + "github_url": "https://github.com/fewjative/cog-ultimate-sd-upscale", + "license_url": null, + "name": "ultimate-sd-upscale", + "owner": "fewjative", "is_official": false, - "paper_url": "https://huggingface.co/papers/2312.04461", - "run_count": 1482980, - "url": "https://replicate.com/tencentarc/photomaker-style", + "paper_url": null, + "run_count": 163771, + "url": "https://replicate.com/fewjative/ultimate-sd-upscale", "visibility": "public", "weights_url": null }, "basic_fields": [ + "cfg", "seed", - "prompt", - "num_steps" + "image" ] }, { - "title": "MMAudio", - "description": "Add sound to video using the MMAudio V2 model. An advanced AI model that synthesizes high-quality audio from video content, enabling seamless video-to-audio transformation.", - "namespace": "replicate.audio.generate", - "node_type": "replicate.audio.generate.MMAudio", + "title": "ru Dall E SR", + "description": "Real-ESRGAN super-resolution model from ruDALL-E", + "namespace": "replicate.image.upscale", + "node_type": "replicate.image.upscale.ruDallE_SR", "properties": [ - { - "name": "seed", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Seed", - "description": "Random seed. Use -1 or leave blank to randomize the seed", - "min": -1.0 - }, { "name": "image", "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Image", - "description": "Optional image file for image-to-audio generation (experimental)" - }, - { - "name": "video", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "Video", - "description": "Optional video file for video-to-audio generation" - }, - { - "name": "prompt", - "type": { - "type": "str" - }, - "default": "", - "title": "Prompt", - "description": "Text prompt for generated audio" - }, - { - "name": "duration", - "type": { - "type": "float" - }, - "default": 8, - "title": "Duration", - "description": "Duration of output in seconds", - "min": 1.0 - }, - { - "name": "num_steps", - "type": { - "type": "int" + "type": "image" }, - "default": 25, - "title": "Num Steps", - "description": "Number of inference steps" - }, - { - "name": "cfg_strength", - "type": { - "type": "float" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": 4.5, - "title": "Cfg Strength", - "description": "Guidance strength (CFG)", - "min": 1.0 + "title": "Image", + "description": "Input image" }, { - "name": "negative_prompt", + "name": "scale", "type": { - "type": "str" + "type": "enum", + "values": [ + 2, + 4, + 8 + ], + "type_name": "nodetool.nodes.replicate.image.upscale.ruDallE_SR.Scale" }, - "default": "music", - "title": "Negative Prompt", - "description": "Negative prompt to avoid certain sounds" + "default": 4, + "title": "Scale", + "description": "Choose up-scaling factor" } ], "outputs": [ { "type": { - "type": "audio" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/34262841-19bf-443c-9892-72488fec1ef2/mmaudio-cover.webp", - "created_at": "2024-12-11T14:46:16.273908Z", - "description": "Add sound to video using the MMAudio V2 model. An advanced AI model that synthesizes high-quality audio from video content, enabling seamless video-to-audio transformation.", - "github_url": "https://github.com/zsxkib/cog-mmaudio", - "license_url": "https://github.com/hkchengrex/MMAudio#MIT-1-ov-file", - "name": "mmaudio", - "owner": "zsxkib", + "cover_image_url": "https://replicate.delivery/mgxm/588170af-559f-454e-967d-8fb6c7f8304b/out.png", + "created_at": "2021-11-04T18:36:03.485750Z", + "description": "Real-ESRGAN super-resolution model from ruDALL-E", + "github_url": "https://github.com/CJWBW/rudalle-sr", + "license_url": "https://github.com/chenxwh/rudalle-sr/blob/main/LICENSE.txt", + "name": "rudalle-sr", + "owner": "cjwbw", "is_official": false, - "paper_url": "https://hkchengrex.github.io/MMAudio", - "run_count": 3135924, - "url": "https://replicate.com/zsxkib/mmaudio", + "paper_url": "https://arxiv.org/abs/2107.10833", + "run_count": 484657, + "url": "https://replicate.com/cjwbw/rudalle-sr", "visibility": "public", - "weights_url": "https://huggingface.co/hkchengrex/MMAudio/tree/main" + "weights_url": null }, "basic_fields": [ - "seed", "image", - "video" + "scale" ] }, { - "title": "Music Gen", - "description": "Generate music from a prompt or melody", - "namespace": "replicate.audio.generate", - "node_type": "replicate.audio.generate.MusicGen", + "title": "Code Former", + "description": "Robust face restoration algorithm for old photos/AI-generated faces", + "namespace": "replicate.image.enhance", + "node_type": "replicate.image.enhance.CodeFormer", "properties": [ { - "name": "seed", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Seed", - "description": "Seed for random number generator. If None or -1, a random seed will be used." - }, - { - "name": "top_k", + "name": "image", "type": { - "type": "int" + "type": "image" }, - "default": 250, - "title": "Top K", - "description": "Reduces sampling to the k most likely tokens." - }, - { - "name": "top_p", - "type": { - "type": "float" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": 0, - "title": "Top P", - "description": "Reduces sampling to tokens with cumulative probability of p. When set to `0` (default), top_k sampling is used." + "title": "Image", + "description": "Input image" }, { - "name": "prompt", + "name": "upscale", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Prompt", - "description": "A description of the music you want to generate." + "default": 2, + "title": "Upscale", + "description": "The final upsampling scale of the image" }, { - "name": "duration", + "name": "face_upsample", "type": { - "type": "int" + "type": "bool" }, - "default": 8, - "title": "Duration", - "description": "Duration of the generated audio in seconds." + "default": true, + "title": "Face Upsample", + "description": "Upsample restored faces for high-resolution AI-created images" }, { - "name": "input_audio", + "name": "background_enhance", "type": { - "type": "str", - "optional": true + "type": "bool" }, - "default": null, - "title": "Input Audio", - "description": "An audio file that will influence the generated music. If `continuation` is `True`, the generated music will be a continuation of the audio file. Otherwise, the generated music will mimic the audio file's melody." + "default": true, + "title": "Background Enhance", + "description": "Enhance background image with Real-ESRGAN" }, { - "name": "temperature", + "name": "codeformer_fidelity", "type": { "type": "float" }, - "default": 1, - "title": "Temperature", - "description": "Controls the 'conservativeness' of the sampling process. Higher temperature means more diversity." - }, + "default": 0.5, + "title": "Codeformer Fidelity", + "description": "Balance the quality (lower number) and fidelity (higher number).", + "min": 0.0, + "max": 1.0 + } + ], + "outputs": [ { - "name": "continuation", "type": { - "type": "bool" + "type": "image" }, - "default": false, - "title": "Continuation", - "description": "If `True`, generated music will continue from `input_audio`. Otherwise, generated music will mimic `input_audio`'s melody." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/cf736d61-411f-4301-89b3-16aff1a02ed1/codeformer_logo.png", + "created_at": "2023-09-06T04:10:50.158696Z", + "description": "Robust face restoration algorithm for old photos/AI-generated faces", + "github_url": "https://github.com/sczhou/CodeFormer", + "license_url": "https://github.com/sczhou/CodeFormer/blob/master/LICENSE", + "name": "codeformer", + "owner": "lucataco", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2206.11253", + "run_count": 6586606, + "url": "https://replicate.com/lucataco/codeformer", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "image", + "upscale", + "face_upsample" + ] + }, + { + "title": "Maxim", + "description": "Multi-Axis MLP for Image Processing", + "namespace": "replicate.image.enhance", + "node_type": "replicate.image.enhance.Maxim", + "properties": [ { - "name": "model_version", + "name": "image", "type": { - "type": "enum", - "values": [ - "stereo-melody-large", - "stereo-large", - "melody-large", - "large" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.MusicGen.Model_version" + "type": "image" }, - "default": "stereo-melody-large", - "title": "Model Version", - "description": "Model to use for generation" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image." }, { - "name": "output_format", + "name": "model", "type": { "type": "enum", + "optional": true, "values": [ - "wav", - "mp3" + "Image Denoising", + "Image Deblurring (GoPro)", + "Image Deblurring (REDS)", + "Image Deblurring (RealBlur_R)", + "Image Deblurring (RealBlur_J)", + "Image Deraining (Rain streak)", + "Image Deraining (Rain drop)", + "Image Dehazing (Indoor)", + "Image Dehazing (Outdoor)", + "Image Enhancement (Low-light)", + "Image Enhancement (Retouching)" ], - "type_name": "nodetool.nodes.replicate.audio.generate.MusicGen.Output_format" - }, - "default": "wav", - "title": "Output Format", - "description": "Output format for generated audio." - }, - { - "name": "continuation_end", - "type": { - "type": "int", - "optional": true + "type_name": "nodetool.nodes.replicate.image.enhance.Maxim.Model" }, "default": null, - "title": "Continuation End", - "description": "End time of the audio file to use for continuation. If -1 or None, will default to the end of the audio clip.", - "min": 0.0 - }, - { - "name": "continuation_start", - "type": { - "type": "int" - }, - "default": 0, - "title": "Continuation Start", - "description": "Start time of the audio file to use for continuation.", - "min": 0.0 - }, + "title": "Model", + "description": "Choose a model." + } + ], + "outputs": [ { - "name": "multi_band_diffusion", "type": { - "type": "bool" + "type": "image" }, - "default": false, - "title": "Multi Band Diffusion", - "description": "If `True`, the EnCodec tokens will be decoded with MultiBand Diffusion. Only works with non-stereo models." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/df5769aa-0908-4a2e-9378-c582838461db/1fromGOPR0950.png", + "created_at": "2022-04-20T16:32:30.049391Z", + "description": "Multi-Axis MLP for Image Processing", + "github_url": "https://github.com/google-research/maxim", + "license_url": "https://github.com/google-research/maxim/blob/main/LICENSE", + "name": "maxim", + "owner": "google-research", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2201.02973", + "run_count": 536110, + "url": "https://replicate.com/google-research/maxim", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "image", + "model" + ] + }, + { + "title": "Night Enhancement", + "description": "Unsupervised Night Image Enhancement", + "namespace": "replicate.image.enhance", + "node_type": "replicate.image.enhance.Night_Enhancement", + "properties": [ { - "name": "normalization_strategy", + "name": "image", "type": { - "type": "enum", - "values": [ - "loudness", - "clip", - "peak", - "rms" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.MusicGen.Normalization_strategy" + "type": "image" }, - "default": "loudness", - "title": "Normalization Strategy", - "description": "Strategy for normalizing audio." - }, - { - "name": "classifier_free_guidance", - "type": { - "type": "int" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": 3, - "title": "Classifier Free Guidance", - "description": "Increases the influence of inputs on the output. Higher values produce lower-varience outputs that adhere more closely to inputs." + "title": "Image", + "description": "Input image." } ], "outputs": [ { "type": { - "type": "audio" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a921a8b3-3e9e-48ef-995c-29143ea11bec/musicgen.jpeg", - "created_at": "2023-06-12T19:22:05.525230Z", - "description": "Generate music from a prompt or melody", - "github_url": "https://github.com/replicate/cog-musicgen", - "license_url": "https://github.com/facebookresearch/audiocraft/blob/main/LICENSE_weights", - "name": "musicgen", - "owner": "meta", + "cover_image_url": "https://replicate.delivery/mgxm/60c4c0d8-c82f-42e0-96ee-71392d32b6fe/output.png", + "created_at": "2022-08-13T15:54:02.662983Z", + "description": "Unsupervised Night Image Enhancement", + "github_url": "https://github.com/jinyeying/night-enhancement", + "license_url": "https://github.com/jinyeying/night-enhancement/blob/main/LICENSE", + "name": "night-enhancement", + "owner": "cjwbw", "is_official": false, - "paper_url": "https://arxiv.org/abs/2306.05284", - "run_count": 3013095, - "url": "https://replicate.com/meta/musicgen", + "paper_url": "https://arxiv.org/pdf/2207.10564.pdf", + "run_count": 43679, + "url": "https://replicate.com/cjwbw/night-enhancement", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "top_k", - "top_p" + "image" ] }, { - "title": "Realistic Voice Cloning", - "description": "Create song covers with any RVC v2 trained AI voice from audio files.", - "namespace": "replicate.audio.generate", - "node_type": "replicate.audio.generate.RealisticVoiceCloning", + "title": "Old Photos Restoration", + "description": "Bringing Old Photos Back to Life", + "namespace": "replicate.image.enhance", + "node_type": "replicate.image.enhance.OldPhotosRestoration", "properties": [ { - "name": "protect", - "type": { - "type": "float" - }, - "default": 0.33, - "title": "Protect", - "description": "Control how much of the original vocals' breath and voiceless consonants to leave in the AI vocals. Set 0.5 to disable.", - "min": 0.0, - "max": 0.5 - }, - { - "name": "rvc_model", - "type": { - "type": "enum", - "values": [ - "Squidward", - "MrKrabs", - "Plankton", - "Drake", - "Vader", - "Trump", - "Biden", - "Obama", - "Guitar", - "Voilin", - "CUSTOM" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Rvc_model" - }, - "default": "Squidward", - "title": "Rvc Model", - "description": "RVC model for a specific voice. If using a custom model, this should match the name of the downloaded model. If a 'custom_rvc_model_download_url' is provided, this will be automatically set to the name of the downloaded model." - }, - { - "name": "index_rate", + "name": "HR", "type": { - "type": "float" + "type": "bool" }, - "default": 0.5, - "title": "Index Rate", - "description": "Control how much of the AI's accent to leave in the vocals.", - "min": 0.0, - "max": 1.0 + "default": false, + "title": "Hr", + "description": "whether the input image is high-resolution" }, { - "name": "song_input", + "name": "image", "type": { - "type": "audio" + "type": "image" }, "default": { - "type": "audio", + "type": "image", "uri": "", "asset_id": null, "data": null, "metadata": null }, - "title": "Song Input", - "description": "Upload your audio file here." + "title": "Image", + "description": "input image." }, { - "name": "reverb_size", + "name": "with_scratch", "type": { - "type": "float" + "type": "bool" }, - "default": 0.15, - "title": "Reverb Size", - "description": "The larger the room, the longer the reverb time.", - "min": 0.0, - "max": 1.0 - }, + "default": false, + "title": "With Scratch", + "description": "whether the input image is scratched" + } + ], + "outputs": [ { - "name": "pitch_change", "type": { - "type": "enum", - "values": [ - "no-change", - "male-to-female", - "female-to-male" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_change" + "type": "image" }, - "default": "no-change", - "title": "Pitch Change", - "description": "Adjust pitch of AI vocals. Options: `no-change`, `male-to-female`, `female-to-male`." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/9f2124ae-ad0f-4a41-bf7e-c3173d0f7c9b/out.png", + "created_at": "2021-09-11T14:44:30.681818Z", + "description": "Bringing Old Photos Back to Life", + "github_url": "https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life", + "license_url": "https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/blob/master/LICENSE", + "name": "bringing-old-photos-back-to-life", + "owner": "microsoft", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2004.09484", + "run_count": 1117680, + "url": "https://replicate.com/microsoft/bringing-old-photos-back-to-life", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "HR", + "image", + "with_scratch" + ] + }, + { + "title": "Supir V 0F", + "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0F model and does NOT use LLaVA-13b.", + "namespace": "replicate.image.enhance", + "node_type": "replicate.image.enhance.Supir_V0F", + "properties": [ { - "name": "rms_mix_rate", + "name": "seed", "type": { - "type": "float" + "type": "int", + "optional": true }, - "default": 0.25, - "title": "Rms Mix Rate", - "description": "Control how much to use the original vocal's loudness (0) or a fixed loudness (1).", - "min": 0.0, - "max": 1.0 + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "filter_radius", + "name": "image", "type": { - "type": "int" + "type": "image" }, - "default": 3, - "title": "Filter Radius", - "description": "If >=3: apply median filtering median filtering to the harvested pitch results.", - "min": 0.0, - "max": 7.0 - }, - { - "name": "output_format", - "type": { - "type": "enum", - "values": [ - "mp3", - "wav" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Output_format" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": "mp3", - "title": "Output Format", - "description": "wav for best quality and large file size, mp3 for decent quality and small file size." + "title": "Image", + "description": "Low quality input image." }, { - "name": "reverb_damping", + "name": "s_cfg", "type": { "type": "float" }, - "default": 0.7, - "title": "Reverb Damping", - "description": "Absorption of high frequencies in the reverb.", - "min": 0.0, - "max": 1.0 + "default": 7.5, + "title": "S Cfg", + "description": " Classifier-free guidance scale for prompts.", + "min": 1.0, + "max": 20.0 }, { - "name": "reverb_dryness", + "name": "s_churn", "type": { "type": "float" }, - "default": 0.8, - "title": "Reverb Dryness", - "description": "Level of AI vocals without reverb.", - "min": 0.0, - "max": 1.0 + "default": 5, + "title": "S Churn", + "description": "Original churn hy-param of EDM." }, { - "name": "reverb_wetness", + "name": "s_noise", "type": { "type": "float" }, - "default": 0.2, - "title": "Reverb Wetness", - "description": "Level of AI vocals with reverb.", - "min": 0.0, - "max": 1.0 + "default": 1.003, + "title": "S Noise", + "description": "Original noise hy-param of EDM." }, { - "name": "crepe_hop_length", + "name": "upscale", "type": { "type": "int" }, - "default": 128, - "title": "Crepe Hop Length", - "description": "When `pitch_detection_algo` is set to `mangio-crepe`, this controls how often it checks for pitch changes in milliseconds. Lower values lead to longer conversions and higher risk of voice cracks, but better pitch accuracy." - }, - { - "name": "pitch_change_all", - "type": { - "type": "float" - }, - "default": 0, - "title": "Pitch Change All", - "description": "Change pitch/key of background music, backup vocals and AI vocals in semitones. Reduces sound quality slightly." - }, - { - "name": "main_vocals_volume_change", - "type": { - "type": "float" - }, - "default": 0, - "title": "Main Vocals Volume Change", - "description": "Control volume of main AI vocals. Use -3 to decrease the volume by 3 decibels, or 3 to increase the volume by 3 decibels." + "default": 1, + "title": "Upscale", + "description": "Upsampling ratio of given inputs." }, { - "name": "pitch_detection_algorithm", + "name": "a_prompt", "type": { - "type": "enum", - "values": [ - "rmvpe", - "mangio-crepe" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.RealisticVoiceCloning.Pitch_detection_algorithm" + "type": "str" }, - "default": "rmvpe", - "title": "Pitch Detection Algorithm", - "description": "Best option is rmvpe (clarity in vocals), then mangio-crepe (smoother vocals)." + "default": "Cinematic, High Contrast, highly detailed, taken using a Canon EOS R camera, hyper detailed photo - realistic maximum detail, 32k, Color Grading, ultra HD, extreme meticulous detailing, skin pore detailing, hyper sharpness, perfect without deformations.", + "title": "A Prompt", + "description": "Additive positive prompt for the inputs." }, { - "name": "instrumental_volume_change", + "name": "min_size", "type": { "type": "float" }, - "default": 0, - "title": "Instrumental Volume Change", - "description": "Control volume of the background music/instrumentals." + "default": 1024, + "title": "Min Size", + "description": "Minimum resolution of output images." }, { - "name": "backup_vocals_volume_change", + "name": "n_prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0, - "title": "Backup Vocals Volume Change", - "description": "Control volume of backup AI vocals." + "default": "painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth", + "title": "N Prompt", + "description": "Negative prompt for the inputs." }, { - "name": "custom_rvc_model_download_url", + "name": "s_stage1", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Custom Rvc Model Download Url", - "description": "URL to download a custom RVC model. If provided, the model will be downloaded (if it doesn't already exist) and used for prediction, regardless of the 'rvc_model' value." - } - ], - "outputs": [ + "default": -1, + "title": "S Stage1", + "description": "Control Strength of Stage1 (negative means invalid)." + }, { + "name": "s_stage2", "type": { - "type": "audio" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/ce3d3d2c-5a06-413c-96ff-546fc96c90e2/Out_0_1024x1024.png", - "created_at": "2023-11-09T16:32:42.062982Z", - "description": "Create song covers with any RVC v2 trained AI voice from audio files.", - "github_url": "https://github.com/zsxkib/AICoverGen.git", - "license_url": "https://github.com/SociallyIneptWeeb/AICoverGen/blob/main/LICENSE", - "name": "realistic-voice-cloning", - "owner": "zsxkib", - "is_official": false, - "paper_url": null, - "run_count": 1026648, - "url": "https://replicate.com/zsxkib/realistic-voice-cloning", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "protect", - "rvc_model", - "index_rate" - ] - }, - { - "title": "Riffusion", - "description": "Stable diffusion for real-time music generation", - "namespace": "replicate.audio.generate", - "node_type": "replicate.audio.generate.Riffusion", - "properties": [ + "default": 1, + "title": "S Stage2", + "description": "Control Strength of Stage2." + }, { - "name": "alpha", + "name": "edm_steps", "type": { - "type": "float" + "type": "int" }, - "default": 0.5, - "title": "Alpha", - "description": "Interpolation alpha if using two prompts. A value of 0 uses prompt_a fully, a value of 1 uses prompt_b fully", - "min": 0.0, - "max": 1.0 + "default": 50, + "title": "Edm Steps", + "description": "Number of steps for EDM Sampling Schedule.", + "min": 1.0, + "max": 500.0 }, { - "name": "prompt_a", + "name": "linear_CFG", "type": { - "type": "str" + "type": "bool" }, - "default": "funky synth solo", - "title": "Prompt A", - "description": "The prompt for your audio" + "default": false, + "title": "Linear Cfg", + "description": "Linearly (with sigma) increase CFG from 'spt_linear_CFG' to s_cfg." }, { - "name": "prompt_b", + "name": "color_fix_type", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + "None", + "AdaIn", + "Wavelet" + ], + "type_name": "nodetool.nodes.replicate.image.enhance.Supir_V0F.Color_fix_type" }, - "default": null, - "title": "Prompt B", - "description": "The second prompt to interpolate with the first, leave blank if no interpolation" + "default": "Wavelet", + "title": "Color Fix Type", + "description": "Color Fixing Type.." }, { - "name": "denoising", + "name": "spt_linear_CFG", "type": { "type": "float" }, - "default": 0.75, - "title": "Denoising", - "description": "How much to transform input spectrogram", - "min": 0.0, - "max": 1.0 + "default": 1, + "title": "Spt Linear Cfg", + "description": "Start point of linearly increasing CFG." }, { - "name": "seed_image_id", + "name": "linear_s_stage2", "type": { - "type": "enum", - "values": [ - "agile", - "marim", - "mask_beat_lines_80", - "mask_gradient_dark", - "mask_gradient_top_70", - "mask_graident_top_fifth_75", - "mask_top_third_75", - "mask_top_third_95", - "motorway", - "og_beat", - "vibes" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.Riffusion.Seed_image_id" + "type": "bool" }, - "default": "vibes", - "title": "Seed Image Id", - "description": "Seed spectrogram to use" + "default": false, + "title": "Linear S Stage2", + "description": "Linearly (with sigma) increase s_stage2 from 'spt_linear_s_stage2' to s_stage2." }, { - "name": "num_inference_steps", + "name": "spt_linear_s_stage2", "type": { - "type": "int" + "type": "float" }, - "default": 50, - "title": "Num Inference Steps", - "description": "Number of steps to run the diffusion model", - "min": 1.0 + "default": 0, + "title": "Spt Linear S Stage2", + "description": "Start point of linearly increasing s_stage2." } ], "outputs": [ { "type": { - "type": "audio" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4154e53a-5c5d-4ac5-9da8-62a1fec212bf/riffusion.gif", - "created_at": "2022-12-16T07:31:34.983811Z", - "description": "Stable diffusion for real-time music generation", - "github_url": "https://github.com/riffusion/riffusion", - "license_url": "https://github.com/riffusion/riffusion/blob/main/LICENSE", - "name": "riffusion", - "owner": "riffusion", + "cover_image_url": "https://replicate.delivery/pbxt/if3rev1GNfAB6IMsqqW8CqQtVP75pXvU3dLQeV6CFkVutgmJB/out.png", + "created_at": "2024-02-23T16:38:51.414944Z", + "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0F model and does NOT use LLaVA-13b.", + "github_url": "https://github.com/chenxwh/SUPIR", + "license_url": "https://github.com/Fanghua-Yu/SUPIR/blob/master/LICENSE", + "name": "supir-v0f", + "owner": "cjwbw", "is_official": false, - "paper_url": "https://www.riffusion.com/about", - "run_count": 1044734, - "url": "https://replicate.com/riffusion/riffusion", + "paper_url": "https://arxiv.org/abs/2401.13627", + "run_count": 19028, + "url": "https://replicate.com/cjwbw/supir-v0f", "visibility": "public", "weights_url": null }, "basic_fields": [ - "alpha", - "prompt_a", - "prompt_b" + "seed", + "image", + "s_cfg" ] }, { - "title": "Style TTS 2", - "description": "Generates speech from text", - "namespace": "replicate.audio.generate", - "node_type": "replicate.audio.generate.StyleTTS2", + "title": "Supir V 0Q", + "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0Q model and does NOT use LLaVA-13b.", + "namespace": "replicate.image.enhance", + "node_type": "replicate.image.enhance.Supir_V0Q", "properties": [ - { - "name": "beta", - "type": { - "type": "float" - }, - "default": 0.7, - "title": "Beta", - "description": "Only used for long text inputs or in case of reference speaker, determines the prosody of the speaker. Use lower values to sample style based on previous or reference speech instead of text.", - "min": 0.0, - "max": 1.0 - }, { "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 0, + "default": null, "title": "Seed", - "description": "Seed for reproducibility" + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "text", + "name": "image", "type": { - "type": "str", - "optional": true + "type": "image" }, - "default": null, - "title": "Text", - "description": "Text to convert to speech" + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Low quality input image." }, { - "name": "alpha", + "name": "s_cfg", "type": { "type": "float" }, - "default": 0.3, - "title": "Alpha", - "description": "Only used for long text inputs or in case of reference speaker, determines the timbre of the speaker. Use lower values to sample style based on previous or reference speech instead of text.", - "min": 0.0, - "max": 1.0 + "default": 7.5, + "title": "S Cfg", + "description": " Classifier-free guidance scale for prompts.", + "min": 1.0, + "max": 20.0 }, { - "name": "weights", + "name": "s_churn", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Weights", - "description": "Replicate weights url for inference with model that is fine-tuned on new speakers. If provided, a reference speech must also be provided. If not provided, the default model will be used." + "default": 5, + "title": "S Churn", + "description": "Original churn hy-param of EDM." }, { - "name": "reference", + "name": "s_noise", "type": { - "type": "audio" - }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "float" }, - "title": "Reference", - "description": "Reference speech to copy style from" + "default": 1.003, + "title": "S Noise", + "description": "Original noise hy-param of EDM." }, { - "name": "diffusion_steps", + "name": "upscale", "type": { "type": "int" }, - "default": 10, - "title": "Diffusion Steps", - "description": "Number of diffusion steps", - "min": 0.0, - "max": 50.0 + "default": 1, + "title": "Upscale", + "description": "Upsampling ratio of given inputs." }, { - "name": "embedding_scale", + "name": "a_prompt", "type": { - "type": "float" + "type": "str" }, - "default": 1, - "title": "Embedding Scale", - "description": "Embedding scale, use higher values for pronounced emotion", - "min": 0.0, - "max": 5.0 - } - ], - "outputs": [ + "default": "Cinematic, High Contrast, highly detailed, taken using a Canon EOS R camera, hyper detailed photo - realistic maximum detail, 32k, Color Grading, ultra HD, extreme meticulous detailing, skin pore detailing, hyper sharpness, perfect without deformations.", + "title": "A Prompt", + "description": "Additive positive prompt for the inputs." + }, { + "name": "min_size", "type": { - "type": "audio" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/b3443880-411e-4b5f-b9f9-3db28c59b578/out-0.png", - "created_at": "2023-11-20T19:22:15.416691Z", - "description": "Generates speech from text", - "github_url": "https://github.com/yl4579/StyleTTS2", - "license_url": "https://github.com/yl4579/StyleTTS2/blob/main/LICENSE", - "name": "styletts2", - "owner": "adirik", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2306.07691", - "run_count": 131616, - "url": "https://replicate.com/adirik/styletts2", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "beta", - "seed", - "text" - ] - }, - { - "title": "Tortoise TTS", - "description": "Generate speech from text, clone voices from mp3 files. From James Betker AKA \"neonbjb\".", - "namespace": "replicate.audio.generate", - "node_type": "replicate.audio.generate.TortoiseTTS", - "properties": [ + "default": 1024, + "title": "Min Size", + "description": "Minimum resolution of output images." + }, { - "name": "seed", + "name": "n_prompt", "type": { - "type": "int" + "type": "str" }, - "default": 0, - "title": "Seed", - "description": "Random seed which can be used to reproduce results." + "default": "painting, oil painting, illustration, drawing, art, sketch, oil painting, cartoon, CG Style, 3D render, unreal engine, blurring, dirty, messy, worst quality, low quality, frames, watermark, signature, jpeg artifacts, deformed, lowres, over-smooth", + "title": "N Prompt", + "description": "Negative prompt for the inputs." }, { - "name": "text", + "name": "s_stage1", "type": { - "type": "str" + "type": "int" }, - "default": "The expressiveness of autoregressive transformers is literally nuts! I absolutely adore them.", - "title": "Text", - "description": "Text to speak." + "default": -1, + "title": "S Stage1", + "description": "Control Strength of Stage1 (negative means invalid)." }, { - "name": "preset", + "name": "s_stage2", "type": { - "type": "enum", - "values": [ - "ultra_fast", - "fast", - "standard", - "high_quality" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Preset" + "type": "float" }, - "default": "fast", - "title": "Preset", - "description": "Which voice preset to use. See the documentation for more information." + "default": 1, + "title": "S Stage2", + "description": "Control Strength of Stage2." }, { - "name": "voice_a", + "name": "edm_steps", "type": { - "type": "enum", - "values": [ - "angie", - "cond_latent_example", - "deniro", - "freeman", - "halle", - "lj", - "myself", - "pat2", - "snakes", - "tom", - "train_daws", - "train_dreams", - "train_grace", - "train_lescault", - "weaver", - "applejack", - "daniel", - "emma", - "geralt", - "jlaw", - "mol", - "pat", - "rainbow", - "tim_reynolds", - "train_atkins", - "train_dotrice", - "train_empire", - "train_kennard", - "train_mouse", - "william", - "random", - "custom_voice", - "disabled" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_a" + "type": "int" }, - "default": "random", - "title": "Voice A", - "description": "Selects the voice to use for generation. Use `random` to select a random voice. Use `custom_voice` to use a custom voice." + "default": 50, + "title": "Edm Steps", + "description": "Number of steps for EDM Sampling Schedule.", + "min": 1.0, + "max": 500.0 }, { - "name": "voice_b", + "name": "linear_CFG", "type": { - "type": "enum", - "values": [ - "angie", - "cond_latent_example", - "deniro", - "freeman", - "halle", - "lj", - "myself", - "pat2", - "snakes", - "tom", - "train_daws", - "train_dreams", - "train_grace", - "train_lescault", - "weaver", - "applejack", - "daniel", - "emma", - "geralt", - "jlaw", - "mol", - "pat", - "rainbow", - "tim_reynolds", - "train_atkins", - "train_dotrice", - "train_empire", - "train_kennard", - "train_mouse", - "william", - "random", - "custom_voice", - "disabled" - ], - "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_b" + "type": "bool" }, - "default": "disabled", - "title": "Voice B", - "description": "(Optional) Create new voice from averaging the latents for `voice_a`, `voice_b` and `voice_c`. Use `disabled` to disable voice mixing." + "default": false, + "title": "Linear Cfg", + "description": "Linearly (with sigma) increase CFG from 'spt_linear_CFG' to s_cfg." }, { - "name": "voice_c", + "name": "color_fix_type", "type": { "type": "enum", - "values": [ - "angie", - "cond_latent_example", - "deniro", - "freeman", - "halle", - "lj", - "myself", - "pat2", - "snakes", - "tom", - "train_daws", - "train_dreams", - "train_grace", - "train_lescault", - "weaver", - "applejack", - "daniel", - "emma", - "geralt", - "jlaw", - "mol", - "pat", - "rainbow", - "tim_reynolds", - "train_atkins", - "train_dotrice", - "train_empire", - "train_kennard", - "train_mouse", - "william", - "random", - "custom_voice", - "disabled" + "values": [ + "None", + "AdaIn", + "Wavelet" ], - "type_name": "nodetool.nodes.replicate.audio.generate.TortoiseTTS.Voice_c" + "type_name": "nodetool.nodes.replicate.image.enhance.Supir_V0Q.Color_fix_type" }, - "default": "disabled", - "title": "Voice C", - "description": "(Optional) Create new voice from averaging the latents for `voice_a`, `voice_b` and `voice_c`. Use `disabled` to disable voice mixing." + "default": "Wavelet", + "title": "Color Fix Type", + "description": "Color Fixing Type.." }, { - "name": "cvvp_amount", + "name": "spt_linear_CFG", "type": { "type": "float" }, - "default": 0, - "title": "Cvvp Amount", - "description": "How much the CVVP model should influence the output. Increasing this can in some cases reduce the likelyhood of multiple speakers. Defaults to 0 (disabled)", - "min": 0.0, - "max": 1.0 + "default": 1, + "title": "Spt Linear Cfg", + "description": "Start point of linearly increasing CFG." }, { - "name": "custom_voice", + "name": "linear_s_stage2", "type": { - "type": "audio" + "type": "bool" }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": false, + "title": "Linear S Stage2", + "description": "Linearly (with sigma) increase s_stage2 from 'spt_linear_s_stage2' to s_stage2." + }, + { + "name": "spt_linear_s_stage2", + "type": { + "type": "float" }, - "title": "Custom Voice", - "description": "(Optional) Create a custom voice based on an mp3 file of a speaker. Audio should be at least 15 seconds, only contain one speaker, and be in mp3 format. Overrides the `voice_a` input." + "default": 0, + "title": "Spt Linear S Stage2", + "description": "Start point of linearly increasing s_stage2." } ], "outputs": [ { "type": { - "type": "audio" + "type": "image" }, "name": "output" } ], "the_model_info": { - "cover_image_url": null, - "created_at": "2022-08-02T02:01:54.555794Z", - "description": "Generate speech from text, clone voices from mp3 files. From James Betker AKA \"neonbjb\".", - "github_url": "https://github.com/afiaka87/tortoise-tts", - "license_url": "https://github.com/afiaka87/tortoise-tts/blob/main/LICENSE", - "name": "tortoise-tts", - "owner": "afiaka87", + "cover_image_url": "https://replicate.delivery/pbxt/gYLkKNiBcnZDD9dnPxlUR4iurpbr1QANec0VmA2kv3Ol6zMJA/out.png", + "created_at": "2024-02-23T16:26:24.376439Z", + "description": "Practicing Model Scaling for Photo-Realistic Image Restoration In the Wild. This is the SUPIR-v0Q model and does NOT use LLaVA-13b.", + "github_url": "https://github.com/chenxwh/SUPIR", + "license_url": "https://github.com/Fanghua-Yu/SUPIR/blob/master/LICENSE", + "name": "supir-v0q", + "owner": "cjwbw", "is_official": false, - "paper_url": "https://github.com/neonbjb/tortoise-tts", - "run_count": 172255, - "url": "https://replicate.com/afiaka87/tortoise-tts", + "paper_url": "https://arxiv.org/abs/2401.13627", + "run_count": 116918, + "url": "https://replicate.com/cjwbw/supir-v0q", "visibility": "public", "weights_url": null }, "basic_fields": [ "seed", - "text", - "preset" + "image", + "s_cfg" ] }, { - "title": "Audio Super Resolution", - "description": "AudioSR: Versatile Audio Super-resolution at Scale", - "namespace": "replicate.audio.enhance", - "node_type": "replicate.audio.enhance.AudioSuperResolution", + "title": "Audio To Waveform", + "description": "Create a waveform video from audio", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.AudioToWaveform", "properties": [ { - "name": "seed", + "name": "audio", "type": { - "type": "int", - "optional": true + "type": "audio" }, - "default": null, - "title": "Seed", - "description": "Random seed. Leave blank to randomize the seed" + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Audio", + "description": "Audio file to create waveform from" }, { - "name": "ddim_steps", + "name": "bg_color", "type": { - "type": "int" + "type": "str" }, - "default": 50, - "title": "Ddim Steps", - "description": "Number of inference steps", - "min": 10.0, - "max": 500.0 + "default": "#000000", + "title": "Bg Color", + "description": "Background color of waveform" }, { - "name": "input_file", + "name": "fg_alpha", "type": { - "type": "audio" + "type": "float" }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": 0.75, + "title": "Fg Alpha", + "description": "Opacity of foreground waveform" + }, + { + "name": "bar_count", + "type": { + "type": "int" }, - "title": "Input File", - "description": "Audio to upsample" + "default": 100, + "title": "Bar Count", + "description": "Number of bars in waveform" }, { - "name": "guidance_scale", + "name": "bar_width", "type": { "type": "float" }, - "default": 3.5, - "title": "Guidance Scale", - "description": "Scale for classifier free guidance", - "min": 1.0, - "max": 20.0 + "default": 0.4, + "title": "Bar Width", + "description": "Width of bars in waveform. 1 represents full width, 0.5 represents half width, etc." + }, + { + "name": "bars_color", + "type": { + "type": "str" + }, + "default": "#ffffff", + "title": "Bars Color", + "description": "Color of waveform bars" + }, + { + "name": "caption_text", + "type": { + "type": "str" + }, + "default": "", + "title": "Caption Text", + "description": "Caption text for the video" } ], "outputs": [ { "type": { - "type": "audio" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/6bc4e480-6695-451b-940d-48a3b83a1356/replicate-prediction-jvi5xvlbg4v4.png", - "created_at": "2023-09-20T04:53:52.943393Z", - "description": "AudioSR: Versatile Audio Super-resolution at Scale", - "github_url": "https://github.com/haoheliu/versatile_audio_super_resolution", - "license_url": "https://huggingface.co/haoheliu/wellsolve_audio_super_resolution_48k/blob/main/README.md", - "name": "audio-super-resolution", - "owner": "nateraw", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/5d5cad9c-d4ba-44e1-8c4f-dc08648bbf5e/fofr_a_waveform_bar_chart_video_e.png", + "created_at": "2023-06-13T15:26:38.672021Z", + "description": "Create a waveform video from audio", + "github_url": "https://github.com/fofr/audio-to-waveform", + "license_url": "https://github.com/fofr/audio-to-waveform/blob/main/LICENSE", + "name": "audio-to-waveform", + "owner": "fofr", "is_official": false, - "paper_url": "https://arxiv.org/abs/2309.07314", - "run_count": 61012, - "url": "https://replicate.com/nateraw/audio-super-resolution", + "paper_url": "https://gradio.app/docs/#make_waveform", + "run_count": 383547, + "url": "https://replicate.com/fofr/audio-to-waveform", "visibility": "public", "weights_url": null }, "basic_fields": [ - "seed", - "ddim_steps", - "input_file" + "audio", + "bg_color", + "fg_alpha" ] }, { - "title": "Demucs", - "description": "Demucs is an audio source separator created by Facebook Research.", - "namespace": "replicate.audio.separate", - "node_type": "replicate.audio.separate.Demucs", + "title": "Gen 4 Aleph", + "description": "A new way to edit, transform and generate video", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Gen4_Aleph", "properties": [ { - "name": "jobs", - "type": { - "type": "int" - }, - "default": 0, - "title": "Jobs", - "description": "Choose the number of parallel jobs to use for separation." - }, - { - "name": "stem", + "name": "seed", "type": { - "type": "enum", - "values": [ - "none", - "drums", - "bass", - "other", - "vocals", - "guitar", - "piano" - ], - "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Stem" + "type": "int", + "optional": true }, - "default": "none", - "title": "Stem", - "description": "If you just want to isolate one stem, you can choose it here." + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "audio", + "name": "video", "type": { - "type": "audio" - }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "type": "str", + "optional": true }, - "title": "Audio", - "description": "Upload the file to be processed here." + "default": null, + "title": "Video", + "description": "Input video to generate from. Videos must be less than 16MB. Only 5s of the input video will be used." }, { - "name": "model", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "htdemucs", - "htdemucs_ft", - "htdemucs_6s", - "hdemucs_mmi", - "mdx_q", - "mdx_extra_q" - ], - "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Model" + "type": "str", + "optional": true }, - "default": "htdemucs", - "title": "Model", - "description": "Choose the demucs audio that proccesses your audio. The readme has more information on what to choose." + "default": null, + "title": "Prompt", + "description": "Text prompt for video generation" }, { - "name": "split", + "name": "aspect_ratio", "type": { - "type": "bool" + "type": "enum", + "values": [ + "16:9", + "9:16", + "4:3", + "3:4", + "1:1", + "21:9" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Gen4_Aleph.Aspect_ratio" }, - "default": true, - "title": "Split", - "description": "Choose whether or not the audio should be split into chunks." + "default": "16:9", + "title": "Aspect Ratio", + "description": "Video aspect ratio" }, { - "name": "shifts", + "name": "reference_image", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 1, - "title": "Shifts", - "description": "Choose the amount random shifts for equivariant stabilization. This performs multiple predictions with random shifts of the input and averages them, which makes it x times slower." - }, + "default": null, + "title": "Reference Image", + "description": "Reference image to influence the style or content of the output." + } + ], + "outputs": [ { - "name": "overlap", "type": { - "type": "float" + "type": "video" }, - "default": 0.25, - "title": "Overlap", - "description": "Choose the amount of overlap between prediction windows." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b8148ec5-c33f-4e04-a006-2d5c7d4d092a/combined_left_right.mp4", + "created_at": "2025-08-05T09:25:34.423358Z", + "description": "A new way to edit, transform and generate video", + "github_url": null, + "license_url": null, + "name": "gen4-aleph", + "owner": "runwayml", + "is_official": true, + "paper_url": "https://runwayml.com/research/introducing-runway-aleph", + "run_count": 10340, + "url": "https://replicate.com/runwayml/gen4-aleph", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "seed", + "video", + "prompt" + ] + }, + { + "title": "Gen 4 Turbo", + "description": "Generate 5s and 10s 720p videos fast", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Gen4_Turbo", + "properties": [ { - "name": "segment", + "name": "seed", "type": { "type": "int", "optional": true }, "default": null, - "title": "Segment", - "description": "Choose the segment length to use for separation." + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "clip_mode", + "name": "image", "type": { - "type": "enum", - "values": [ - "rescale", - "clamp", - "none" - ], - "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Clip_mode" + "type": "str", + "optional": true }, - "default": "rescale", - "title": "Clip Mode", - "description": "Choose the strategy for avoiding clipping. Rescale will rescale entire signal if necessary or clamp will allow hard clipping." + "default": null, + "title": "Image", + "description": "Initial image for video generation (first frame)" }, { - "name": "mp3_preset", + "name": "prompt", "type": { - "type": "enum", - "values": [ - 2, - 3, - 4, - 5, - 6, - 7 - ], - "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Mp3_preset" + "type": "str", + "optional": true }, - "default": 2, - "title": "Mp3 Preset", - "description": "Choose the preset for the MP3 output. Higher is faster but worse quality. If MP3 is not selected as the output type, this has no effect." + "default": null, + "title": "Prompt", + "description": "Text prompt for video generation" }, { - "name": "wav_format", + "name": "duration", "type": { "type": "enum", "values": [ - "int16", - "int24", - "float32" + 5, + 10 ], - "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Wav_format" - }, - "default": "int24", - "title": "Wav Format", - "description": "Choose format for the WAV output. If WAV is not selected as the output type, this has no effect." - }, - { - "name": "mp3_bitrate", - "type": { - "type": "int" + "type_name": "nodetool.nodes.replicate.video.generate.Gen4_Turbo.Duration" }, - "default": 320, - "title": "Mp3 Bitrate", - "description": "Choose the bitrate for the MP3 output. Higher is better quality but larger file size. If MP3 is not selected as the output type, this has no effect." + "default": 5, + "title": "Duration", + "description": "Duration of the output video in seconds" }, { - "name": "output_format", + "name": "aspect_ratio", "type": { "type": "enum", "values": [ - "mp3", - "flac", - "wav" + "16:9", + "9:16", + "4:3", + "3:4", + "1:1", + "21:9" ], - "type_name": "nodetool.nodes.replicate.audio.separate.Demucs.Output_format" + "type_name": "nodetool.nodes.replicate.video.generate.Gen4_Turbo.Aspect_ratio" }, - "default": "mp3", - "title": "Output Format", - "description": "Choose the audio format you would like the result to be returned in." + "default": "16:9", + "title": "Aspect Ratio", + "description": "Video aspect ratio" } ], "outputs": [ { "type": { - "type": "audio" - }, - "name": "vocals" - }, - { - "type": { - "type": "audio" - }, - "name": "drums" - }, - { - "type": { - "type": "audio" - }, - "name": "bass" - }, - { - "type": { - "type": "audio" + "type": "video" }, - "name": "other" + "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/c13b51bf-69a4-474e-ad73-d800466ca357/588ff17a-e9c9-49c7-b572-e1b189d87.png", - "created_at": "2022-11-08T22:25:48.183283Z", - "description": "Demucs is an audio source separator created by Facebook Research.", - "github_url": "https://github.com/ryan5453/demucs-cog", - "license_url": "https://github.com/ryan5453/demucs-cog/blob/main/LICENSE", - "name": "demucs", - "owner": "ryan5453", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2111.03600", - "run_count": 680198, - "url": "https://replicate.com/ryan5453/demucs", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/32f1975a-faa7-419b-8781-01c2f1593dc4/replicate-prediction-y3p6xca9r.mp4", + "created_at": "2025-07-21T16:53:27.233701Z", + "description": "Generate 5s and 10s 720p videos fast", + "github_url": null, + "license_url": null, + "name": "gen4-turbo", + "owner": "runwayml", + "is_official": true, + "paper_url": null, + "run_count": 15898, + "url": "https://replicate.com/runwayml/gen4-turbo", "visibility": "public", "weights_url": null }, "basic_fields": [ - "jobs", - "stem", - "audio" + "seed", + "image", + "prompt" ] }, { - "title": "GPT 4 o Transcribe", - "description": "A speech-to-text model that uses GPT-4o to transcribe audio", - "namespace": "replicate.audio.transcribe", - "node_type": "replicate.audio.transcribe.GPT4o_Transcribe", + "title": "Hailuo 02", + "description": "Hailuo 2 is a text-to-video and image-to-video model that can make 6s or 10s videos at 768p (standard) or 1080p (pro). It excels at real world physics.", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Hailuo_02", "properties": [ { - "name": "prompt", + "name": "prompt", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Prompt", + "description": "Text prompt for generation" + }, + { + "name": "duration", + "type": { + "type": "enum", + "values": [ + 6, + 10 + ], + "type_name": "nodetool.nodes.replicate.video.generate.Hailuo_02.Duration" + }, + "default": 6, + "title": "Duration", + "description": "Duration of the video in seconds. 10 seconds is only available for 768p resolution." + }, + { + "name": "resolution", + "type": { + "type": "enum", + "values": [ + "512p", + "768p", + "1080p" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Hailuo_02.Resolution" + }, + "default": "1080p", + "title": "Resolution", + "description": "Pick between standard 512p, 768p, or pro 1080p resolution. The pro model is not just high resolution, it is also higher quality." + }, + { + "name": "last_frame_image", "type": { "type": "str", "optional": true }, "default": null, - "title": "Prompt", - "description": "An optional text to guide the model's style or continue a previous audio segment. The prompt should match the audio language." + "title": "Last Frame Image", + "description": "Last frame image for video generation. The final frame of the output video will match this image." }, { - "name": "language", + "name": "prompt_optimizer", "type": { - "type": "str", - "optional": true + "type": "bool" }, - "default": null, - "title": "Language", - "description": "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency." + "default": true, + "title": "Prompt Optimizer", + "description": "Use prompt optimizer" }, { - "name": "audio_file", + "name": "first_frame_image", "type": { "type": "str", "optional": true }, "default": null, - "title": "Audio File", - "description": "The audio file to transcribe. Supported formats: mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm" - }, - { - "name": "temperature", - "type": { - "type": "float" - }, - "default": 0, - "title": "Temperature", - "description": "Sampling temperature between 0 and 1", - "min": 0.0, - "max": 1.0 + "title": "First Frame Image", + "description": "First frame image for video generation. The output video will have the same aspect ratio as this image." } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b1aa75b9-0353-401e-a38f-5e129bee9658/4o-transcribe.webp", - "created_at": "2025-05-20T13:56:11.066606Z", - "description": "A speech-to-text model that uses GPT-4o to transcribe audio", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e2953b9d-ef83-4a4a-b90f-1ef168223bf2/tmpbufkswx1.mp4", + "created_at": "2025-07-02T11:02:01.844243Z", + "description": "Hailuo 2 is a text-to-video and image-to-video model that can make 6s or 10s videos at 768p (standard) or 1080p (pro). It excels at real world physics.", "github_url": null, - "license_url": "https://openai.com/policies/", - "name": "gpt-4o-transcribe", - "owner": "openai", + "license_url": null, + "name": "hailuo-02", + "owner": "minimax", "is_official": true, "paper_url": null, - "run_count": 9029, - "url": "https://replicate.com/openai/gpt-4o-transcribe", + "run_count": 95634, + "url": "https://replicate.com/minimax/hailuo-02", "visibility": "public", "weights_url": null }, "basic_fields": [ "prompt", - "language", - "audio_file" + "duration", + "resolution" ] }, { - "title": "Incredibly Fast Whisper", - "description": "whisper-large-v3, incredibly fast, powered by Hugging Face Transformers! \ud83e\udd17", - "namespace": "replicate.audio.transcribe", - "node_type": "replicate.audio.transcribe.IncrediblyFastWhisper", + "title": "Hotshot XL", + "description": "\ud83d\ude0a Hotshot-XL is an AI text-to-GIF model trained to work alongside Stable Diffusion XL", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.HotshotXL", "properties": [ { - "name": "task", + "name": "mp4", "type": { - "type": "enum", - "values": [ - "transcribe", - "translate" - ], - "type_name": "nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Task" + "type": "bool" }, - "default": "transcribe", - "title": "Task", - "description": "Task to perform: transcribe or translate to another language." + "default": false, + "title": "Mp4", + "description": "Save as mp4, False for GIF" }, { - "name": "audio", + "name": "seed", "type": { - "type": "audio" + "type": "int", + "optional": true }, - "default": { - "type": "audio", - "uri": "", - "asset_id": null, - "data": null, - "metadata": null + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank to randomize the seed" + }, + { + "name": "steps", + "type": { + "type": "int" }, - "title": "Audio", - "description": "Audio file" + "default": 30, + "title": "Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 }, { - "name": "hf_token", + "name": "width", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + 256, + 320, + 384, + 448, + 512, + 576, + 640, + 672, + 704, + 768, + 832, + 896, + 960, + 1024 + ], + "type_name": "nodetool.nodes.replicate.video.generate.HotshotXL.Width" }, - "default": null, - "title": "Hf Token", - "description": "Provide a hf.co/settings/token for Pyannote.audio to diarise the audio clips. You need to agree to the terms in 'https://huggingface.co/pyannote/speaker-diarization-3.1' and 'https://huggingface.co/pyannote/segmentation-3.0' first." + "default": 672, + "title": "Width", + "description": "Width of the output" }, { - "name": "language", + "name": "height", "type": { "type": "enum", "values": [ - "None", - "afrikaans", - "albanian", - "amharic", - "arabic", - "armenian", - "assamese", - "azerbaijani", - "bashkir", - "basque", - "belarusian", - "bengali", - "bosnian", - "breton", - "bulgarian", - "cantonese", - "catalan", - "chinese", - "croatian", - "czech", - "danish", - "dutch", - "english", - "estonian", - "faroese", - "finnish", - "french", - "galician", - "georgian", - "german", - "greek", - "gujarati", - "haitian creole", - "hausa", - "hawaiian", - "hebrew", - "hindi", - "hungarian", - "icelandic", - "indonesian", - "italian", - "japanese", - "javanese", - "kannada", - "kazakh", - "khmer", - "korean", - "lao", - "latin", - "latvian", - "lingala", - "lithuanian", - "luxembourgish", - "macedonian", - "malagasy", - "malay", - "malayalam", - "maltese", - "maori", - "marathi", - "mongolian", - "myanmar", - "nepali", - "norwegian", - "nynorsk", - "occitan", - "pashto", - "persian", - "polish", - "portuguese", - "punjabi", - "romanian", - "russian", - "sanskrit", - "serbian", - "shona", - "sindhi", - "sinhala", - "slovak", - "slovenian", - "somali", - "spanish", - "sundanese", - "swahili", - "swedish", - "tagalog", - "tajik", - "tamil", - "tatar", - "telugu", - "thai", - "tibetan", - "turkish", - "turkmen", - "ukrainian", - "urdu", - "uzbek", - "vietnamese", - "welsh", - "yiddish", - "yoruba" + 256, + 320, + 384, + 448, + 512, + 576, + 640, + 672, + 704, + 768, + 832, + 896, + 960, + 1024 ], - "type_name": "nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Language" + "type_name": "nodetool.nodes.replicate.video.generate.HotshotXL.Height" }, - "default": "None", - "title": "Language", - "description": "Language spoken in the audio, specify 'None' to perform language detection." + "default": 384, + "title": "Height", + "description": "Height of the output" }, { - "name": "timestamp", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "chunk", - "word" - ], - "type_name": "nodetool.nodes.replicate.audio.transcribe.IncrediblyFastWhisper.Timestamp" + "type": "str" }, - "default": "chunk", - "title": "Timestamp", - "description": "Whisper supports both chunked as well as word level timestamps." + "default": "a camel smoking a cigarette, hd, high quality", + "title": "Prompt", + "description": "Input prompt" }, { - "name": "batch_size", + "name": "scheduler", "type": { - "type": "int" + "type": "enum", + "values": [ + "DDIMScheduler", + "DPMSolverMultistepScheduler", + "HeunDiscreteScheduler", + "KarrasDPM", + "EulerAncestralDiscreteScheduler", + "EulerDiscreteScheduler", + "PNDMScheduler" + ], + "type_name": "nodetool.nodes.replicate.video.generate.HotshotXL.Scheduler" }, - "default": 24, - "title": "Batch Size", - "description": "Number of parallel batches you want to compute. Reduce if you face OOMs." + "default": "EulerAncestralDiscreteScheduler", + "title": "Scheduler", + "description": "Select a Scheduler" }, { - "name": "diarise_audio", + "name": "negative_prompt", "type": { - "type": "bool" + "type": "str" }, - "default": false, - "title": "Diarise Audio", - "description": "Use Pyannote.audio to diarise the audio clips. You will need to provide hf_token below too." + "default": "blurry", + "title": "Negative Prompt", + "description": "Negative prompt" } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/4c5d637c-c441-4857-9791-7c11111b38b4/52ebbd85-50a7-4741-b398-30e31.webp", - "created_at": "2023-11-13T13:28:53.689979Z", - "description": "whisper-large-v3, incredibly fast, powered by Hugging Face Transformers! \ud83e\udd17", - "github_url": "https://github.com/chenxwh/insanely-fast-whisper", - "license_url": "https://github.com/Vaibhavs10/insanely-fast-whisper/blob/main/LICENSE", - "name": "incredibly-fast-whisper", - "owner": "vaibhavs10", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/70393e62-deab-4f95-ace7-eaeb8a9800db/compressed.gif", + "created_at": "2023-10-05T04:09:21.646870Z", + "description": "\ud83d\ude0a Hotshot-XL is an AI text-to-GIF model trained to work alongside Stable Diffusion XL", + "github_url": "https://github.com/lucataco/cog-hotshot-xl", + "license_url": "https://github.com/hotshotco/Hotshot-XL/blob/main/LICENSE", + "name": "hotshot-xl", + "owner": "lucataco", "is_official": false, - "paper_url": null, - "run_count": 15309490, - "url": "https://replicate.com/vaibhavs10/incredibly-fast-whisper", + "paper_url": "https://huggingface.co/hotshotco/SDXL-512", + "run_count": 782529, + "url": "https://replicate.com/lucataco/hotshot-xl", "visibility": "public", "weights_url": null }, "basic_fields": [ - "task", - "audio", - "hf_token" + "mp4", + "seed", + "steps" ] }, { - "title": "Claude 3 7 Sonnet", - "description": "The most intelligent Claude model and the first hybrid reasoning model on the market (claude-3-7-sonnet-20250219)", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Claude_3_7_Sonnet", + "title": "Hunyuan Video", + "description": "A state-of-the-art text-to-video generation model capable of creating high-quality videos with realistic motion from text descriptions", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Hunyuan_Video", "properties": [ { - "name": "image", + "name": "fps", "type": { - "type": "str", + "type": "int" + }, + "default": 24, + "title": "Fps", + "description": "Frames per second of the output video", + "min": 1.0 + }, + { + "name": "seed", + "type": { + "type": "int", "optional": true }, "default": null, - "title": "Image", - "description": "Optional input image. Images are priced as (width px * height px)/750 input tokens" + "title": "Seed", + "description": "Random seed (leave empty for random)" + }, + { + "name": "width", + "type": { + "type": "int" + }, + "default": 864, + "title": "Width", + "description": "Width of the video in pixels (must be divisible by 16)", + "min": 16.0, + "max": 1280.0 + }, + { + "name": "height", + "type": { + "type": "int" + }, + "default": 480, + "title": "Height", + "description": "Height of the video in pixels (must be divisible by 16)", + "min": 16.0, + "max": 1280.0 }, { "name": "prompt", "type": { - "type": "str", - "optional": true + "type": "str" }, - "default": null, + "default": "A cat walks on the grass, realistic style", "title": "Prompt", - "description": "Input prompt" + "description": "The prompt to guide the video generation" }, { - "name": "max_tokens", + "name": "infer_steps", "type": { "type": "int" }, - "default": 8192, - "title": "Max Tokens", - "description": "Maximum number of output tokens", - "min": 1024.0, - "max": 64000.0 + "default": 50, + "title": "Infer Steps", + "description": "Number of denoising steps", + "min": 1.0 }, { - "name": "system_prompt", + "name": "video_length", "type": { - "type": "str" + "type": "int" }, - "default": "", - "title": "System Prompt", - "description": "System prompt" + "default": 129, + "title": "Video Length", + "description": "Number of frames to generate (must be 4k+1, ex: 49 or 129)", + "min": 1.0, + "max": 200.0 }, { - "name": "max_image_resolution", + "name": "embedded_guidance_scale", "type": { "type": "float" }, - "default": 0.5, - "title": "Max Image Resolution", - "description": "Maximum image resolution in megapixels. Scales down image before sending it to Claude, to save time and money.", - "min": 0.001, - "max": 2.0 + "default": 6, + "title": "Embedded Guidance Scale", + "description": "Guidance scale", + "min": 1.0, + "max": 10.0 } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/56aed331-fb30-4e82-9708-b63b2fa90699/claude-3.7-logo.webp", - "created_at": "2025-02-25T15:21:57.270034Z", - "description": "The most intelligent Claude model and the first hybrid reasoning model on the market (claude-3-7-sonnet-20250219)", - "github_url": null, - "license_url": "https://www.anthropic.com/legal/consumer-terms", - "name": "claude-3.7-sonnet", - "owner": "anthropic", - "is_official": true, - "paper_url": null, - "run_count": 2684220, - "url": "https://replicate.com/anthropic/claude-3.7-sonnet", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3bebc89d-37c7-47ea-9a7b-a334b76eea87/hunyuan-featured.webp", + "created_at": "2024-12-03T14:21:37.443615Z", + "description": "A state-of-the-art text-to-video generation model capable of creating high-quality videos with realistic motion from text descriptions", + "github_url": "https://github.com/zsxkib/HunyuanVideo/tree/replicate", + "license_url": "https://huggingface.co/tencent/HunyuanVideo/blob/main/LICENSE", + "name": "hunyuan-video", + "owner": "tencent", + "is_official": false, + "paper_url": "https://github.com/Tencent/HunyuanVideo/blob/main/assets/hunyuanvideo.pdf", + "run_count": 112508, + "url": "https://replicate.com/tencent/hunyuan-video", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/tencent/HunyuanVideo" }, "basic_fields": [ - "image", - "prompt", - "max_tokens" + "fps", + "seed", + "width" ] }, { - "title": "Deepseek R 1", - "description": "A reasoning model trained with reinforcement learning, on par with OpenAI o1", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Deepseek_R1", + "title": "Kling Lip Sync", + "description": "Add lip-sync to any video with an audio file or text", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Kling_Lip_Sync", "properties": [ { - "name": "top_p", + "name": "text", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 1, - "title": "Top P", - "description": "Top-p (nucleus) sampling" + "default": null, + "title": "Text", + "description": "Text content for lip sync (if not using audio)" }, { - "name": "prompt", + "name": "video_id", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "", - "title": "Prompt", - "description": "Prompt" + "default": null, + "title": "Video Id", + "description": "ID of a video generated by Kling. Cannot be used with video_url." }, { - "name": "max_tokens", + "name": "voice_id", "type": { - "type": "int" + "type": "enum", + "values": [ + "en_AOT", + "en_oversea_male1", + "en_girlfriend_4_speech02", + "en_chat_0407_5-1", + "en_uk_boy1", + "en_PeppaPig_platform", + "en_ai_huangzhong_712", + "en_calm_story1", + "en_uk_man2", + "en_reader_en_m-v1", + "en_commercial_lady_en_f-v1", + "zh_genshin_vindi2", + "zh_zhinen_xuesheng", + "zh_tiyuxi_xuedi", + "zh_ai_shatang", + "zh_genshin_klee2", + "zh_genshin_kirara", + "zh_ai_kaiya", + "zh_tiexin_nanyou", + "zh_ai_chenjiahao_712", + "zh_girlfriend_1_speech02", + "zh_chat1_female_new-3", + "zh_girlfriend_2_speech02", + "zh_cartoon-boy-07", + "zh_cartoon-girl-01", + "zh_ai_huangyaoshi_712", + "zh_you_pingjing", + "zh_ai_laoguowang_712", + "zh_chengshu_jiejie", + "zh_zhuxi_speech02", + "zh_uk_oldman3", + "zh_laopopo_speech02", + "zh_heainainai_speech02", + "zh_dongbeilaotie_speech02", + "zh_chongqingxiaohuo_speech02", + "zh_chuanmeizi_speech02", + "zh_chaoshandashu_speech02", + "zh_ai_taiwan_man2_speech02", + "zh_xianzhanggui_speech02", + "zh_tianjinjiejie_speech02", + "zh_diyinnansang_DB_CN_M_04-v2", + "zh_yizhipiannan-v1", + "zh_guanxiaofang-v2", + "zh_tianmeixuemei-v1", + "zh_daopianyansang-v1", + "zh_mengwa-v1" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Kling_Lip_Sync.Voice_id" }, - "default": 20480, - "title": "Max Tokens", - "description": "The maximum number of tokens the model should generate as output." + "default": "en_AOT", + "title": "Voice Id", + "description": "Voice ID for speech synthesis (if using text and not audio)" }, { - "name": "temperature", + "name": "video_url", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0.1, - "title": "Temperature", - "description": "The value used to modulate the next token probabilities." + "default": null, + "title": "Video Url", + "description": "URL of a video for lip syncing. It can be an .mp4 or .mov file, should be less than 100MB, with a duration of 2-10 seconds, and a resolution of 720p-1080p (720-1920px dimensions). Cannot be used with video_id." }, { - "name": "presence_penalty", + "name": "audio_file", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0, - "title": "Presence Penalty", - "description": "Presence penalty" + "default": null, + "title": "Audio File", + "description": "Audio file for lip sync. Must be .mp3, .wav, .m4a, or .aac and less than 5MB." }, { - "name": "frequency_penalty", + "name": "voice_speed", "type": { "type": "float" }, - "default": 0, - "title": "Frequency Penalty", - "description": "Frequency penalty" + "default": 1, + "title": "Voice Speed", + "description": "Speech rate (only used if using text and not audio)", + "min": 0.8, + "max": 2.0 } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/302182ab-af74-4963-97f2-6121a80c61d7/deepseek-r1-cover.webp", - "created_at": "2025-01-29T02:46:11.806773Z", - "description": "A reasoning model trained with reinforcement learning, on par with OpenAI o1", - "github_url": "https://github.com/deepseek-ai/DeepSeek-R1", - "license_url": "https://github.com/deepseek-ai/DeepSeek-R1/blob/main/LICENSE", - "name": "deepseek-r1", - "owner": "deepseek-ai", + "cover_image_url": "https://replicate.delivery/xezq/92rRwTYlfo0BLSIIcirPaRwPtJhN0lrl4ww79omyef38rCdpA/tmp2ni84f_5.mp4", + "created_at": "2025-05-18T20:54:54.551885Z", + "description": "Add lip-sync to any video with an audio file or text", + "github_url": null, + "license_url": null, + "name": "kling-lip-sync", + "owner": "kwaivgi", "is_official": true, "paper_url": null, - "run_count": 2027425, - "url": "https://replicate.com/deepseek-ai/deepseek-r1", + "run_count": 12996, + "url": "https://replicate.com/kwaivgi/kling-lip-sync", "visibility": "public", - "weights_url": "https://huggingface.co/deepseek-ai/DeepSeek-R1" + "weights_url": null }, "basic_fields": [ - "top_p", - "prompt", - "max_tokens" + "text", + "video_id", + "voice_id" ] }, { - "title": "Deepseek V 3 1", - "description": "Latest hybrid thinking model from Deepseek", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Deepseek_V3_1", + "title": "Kling V 2 1", + "description": "Use Kling v2.1 to generate 5s and 10s videos in 720p and 1080p resolution from a starting image (image-to-video)", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Kling_V2_1", "properties": [ { - "name": "top_p", + "name": "mode", "type": { - "type": "float" + "type": "enum", + "values": [ + "standard", + "pro" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Kling_V2_1.Mode" }, - "default": 1, - "title": "Top P", - "description": "Top-p (nucleus) sampling", - "min": 0.0, - "max": 1.0 + "default": "standard", + "title": "Mode", + "description": "Standard has a resolution of 720p, pro is 1080p. Both are 24fps." }, { "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "", + "default": null, "title": "Prompt", - "description": "Prompt" + "description": "Text prompt for video generation" }, { - "name": "max_tokens", + "name": "duration", "type": { - "type": "int" + "type": "enum", + "values": [ + 5, + 10 + ], + "type_name": "nodetool.nodes.replicate.video.generate.Kling_V2_1.Duration" }, - "default": 1024, - "title": "Max Tokens", - "description": "The maximum number of tokens the model should generate as output.", - "min": 1.0, - "max": 16384.0 + "default": 5, + "title": "Duration", + "description": "Duration of the video in seconds" }, { - "name": "temperature", + "name": "end_image", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0.1, - "title": "Temperature", - "description": "The value used to modulate the next token probabilities.", - "min": 0.0, - "max": 2.0 + "default": null, + "title": "End Image", + "description": "Last frame of the video (pro mode is required when this parameter is set)" }, { - "name": "presence_penalty", + "name": "start_image", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0, - "title": "Presence Penalty", - "description": "Presence penalty", - "min": -2.0, - "max": 2.0 + "default": null, + "title": "Start Image", + "description": "First frame of the video. You must use a start image with kling-v2.1." }, { - "name": "frequency_penalty", + "name": "negative_prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0, - "title": "Frequency Penalty", - "description": "Frequency penalty", - "min": -2.0, - "max": 2.0 + "default": "", + "title": "Negative Prompt", + "description": "Things you do not want to see in the video" } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8d444a48-2b5e-46ba-80dd-bfbdae41ffb8/tmp2xmj7b2x.jpg", - "created_at": "2025-08-25T18:41:12.219732Z", - "description": "Latest hybrid thinking model from Deepseek", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a7690882-d1d2-44fb-b487-f41bd367adcf/replicate-prediction-2epyczsz.webp", + "created_at": "2025-06-19T18:53:08.443897Z", + "description": "Use Kling v2.1 to generate 5s and 10s videos in 720p and 1080p resolution from a starting image (image-to-video)", "github_url": null, "license_url": null, - "name": "deepseek-v3.1", - "owner": "deepseek-ai", + "name": "kling-v2.1", + "owner": "kwaivgi", "is_official": true, "paper_url": null, - "run_count": 2927, - "url": "https://replicate.com/deepseek-ai/deepseek-v3.1", + "run_count": 1257619, + "url": "https://replicate.com/kwaivgi/kling-v2.1", "visibility": "public", "weights_url": null }, "basic_fields": [ - "top_p", + "mode", "prompt", - "max_tokens" + "duration" ] }, { - "title": "GPT 4 1", - "description": "OpenAI's Flagship GPT model for complex tasks.", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.GPT_4_1", + "title": "LTX Video", + "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched.", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.LTX_Video", "properties": [ { - "name": "top_p", + "name": "cfg", "type": { "type": "float" }, - "default": 1, - "title": "Top P", - "description": "Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", - "min": 0.0, - "max": 1.0 + "default": 3, + "title": "Cfg", + "description": "How strongly the video follows the prompt", + "min": 1.0, + "max": 20.0 }, { - "name": "prompt", + "name": "seed", "type": { - "type": "str", + "type": "int", "optional": true }, "default": null, - "title": "Prompt", - "description": "The prompt to send to the model. Do not use if using messages." + "title": "Seed", + "description": "Set a seed for reproducibility. Random by default." }, { - "name": "messages", + "name": "image", "type": { - "type": "list" + "type": "image" }, - "default": [], - "title": "Messages", - "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Optional input image to use as the starting frame" + }, + { + "name": "model", + "type": { + "type": "enum", + "values": [ + "0.9.1", + "0.9" + ], + "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Model" + }, + "default": "0.9.1", + "title": "Model", + "description": "Model version to use" + }, + { + "name": "steps", + "type": { + "type": "int" + }, + "default": 30, + "title": "Steps", + "description": "Number of steps", + "min": 1.0, + "max": 50.0 }, { - "name": "image_input", + "name": "length", "type": { - "type": "list" + "type": "enum", + "values": [ + 97, + 129, + 161, + 193, + 225, + 257 + ], + "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Length" }, - "default": [], - "title": "Image Input", - "description": "List of images to send to the model" + "default": 97, + "title": "Length", + "description": "Length of the output video in frames" }, { - "name": "temperature", + "name": "prompt", "type": { - "type": "float" + "type": "str" }, - "default": 1, - "title": "Temperature", - "description": "Sampling temperature between 0 and 2", - "min": 0.0, - "max": 2.0 + "default": "best quality, 4k, HDR, a tracking shot of a beautiful scene", + "title": "Prompt", + "description": "Text prompt for the video. This model needs long descriptive prompts, if the prompt is too short the quality won't be good." }, { - "name": "system_prompt", + "name": "target_size", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + 512, + 576, + 640, + 704, + 768, + 832, + 896, + 960, + 1024 + ], + "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Target_size" }, - "default": null, - "title": "System Prompt", - "description": "System prompt to set the assistant's behavior" + "default": 640, + "title": "Target Size", + "description": "Target size for the output video" }, { - "name": "presence_penalty", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "1:1", + "1:2", + "2:1", + "2:3", + "3:2", + "3:4", + "4:3", + "4:5", + "5:4", + "9:16", + "16:9", + "9:21", + "21:9" + ], + "type_name": "nodetool.nodes.replicate.video.generate.LTX_Video.Aspect_ratio" }, - "default": 0, - "title": "Presence Penalty", - "description": "Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", - "min": -2.0, - "max": 2.0 + "default": "3:2", + "title": "Aspect Ratio", + "description": "Aspect ratio of the output video. Ignored if an image is provided." }, { - "name": "frequency_penalty", + "name": "negative_prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0, - "title": "Frequency Penalty", - "description": "Frequency penalty parameter - positive values penalize the repetition of tokens.", - "min": -2.0, - "max": 2.0 + "default": "low quality, worst quality, deformed, distorted", + "title": "Negative Prompt", + "description": "Things you do not want to see in your video" }, { - "name": "max_completion_tokens", + "name": "image_noise_scale", "type": { - "type": "int" + "type": "float" }, - "default": 4096, - "title": "Max Completion Tokens", - "description": "Maximum number of completion tokens to generate" + "default": 0.15, + "title": "Image Noise Scale", + "description": "Lower numbers stick more closely to the input image", + "min": 0.0, + "max": 1.0 } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8dbaab0b-d3e7-4bae-8772-d7e1f879d537/gpt-4.1.webp", - "created_at": "2025-05-01T04:55:34.442201Z", - "description": "OpenAI's Flagship GPT model for complex tasks.", - "github_url": null, - "license_url": "https://openai.com/policies/", - "name": "gpt-4.1", - "owner": "openai", - "is_official": true, + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/184609cb-a0c5-47c9-8fec-987fb21cc977/replicate-prediction-_QTChmfY.webp", + "created_at": "2024-11-29T14:15:01.460922Z", + "description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched.", + "github_url": "https://github.com/Lightricks/LTX-Video", + "license_url": "https://github.com/Lightricks/LTX-Video/blob/main/LICENSE", + "name": "ltx-video", + "owner": "lightricks", + "is_official": false, "paper_url": null, - "run_count": 117824, - "url": "https://replicate.com/openai/gpt-4.1", + "run_count": 157441, + "url": "https://replicate.com/lightricks/ltx-video", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/Lightricks/LTX-Video" }, "basic_fields": [ - "top_p", - "prompt", - "messages" + "cfg", + "seed", + "image" ] }, { - "title": "GPT 4 1 Mini", - "description": "Fast, affordable version of GPT-4.1", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.GPT_4_1_Mini", + "title": "Lipsync 2", + "description": "Generate realistic lipsyncs with Sync Labs' 2.0 model", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Lipsync_2", "properties": [ { - "name": "top_p", + "name": "audio", "type": { - "type": "float" + "type": "audio" }, - "default": 1, - "title": "Top P", - "description": "Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", - "min": 0.0, - "max": 1.0 - }, - { - "name": "prompt", - "type": { - "type": "str", - "optional": true + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": null, - "title": "Prompt", - "description": "The prompt to send to the model. Do not use if using messages." + "title": "Audio", + "description": "Input audio file (.wav)" }, { - "name": "messages", + "name": "video", "type": { - "type": "list" + "type": "video" }, - "default": [], - "title": "Messages", - "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." + "default": { + "type": "video", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null, + "duration": null, + "format": null + }, + "title": "Video", + "description": "Input video file (.mp4)" }, { - "name": "image_input", + "name": "sync_mode", "type": { - "type": "list" + "type": "enum", + "values": [ + "loop", + "bounce", + "cut_off", + "silence", + "remap" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Lipsync_2.Sync_mode" }, - "default": [], - "title": "Image Input", - "description": "List of images to send to the model" + "default": "loop", + "title": "Sync Mode", + "description": "Lipsync mode when audio and video durations are out of sync" }, { "name": "temperature", "type": { "type": "float" }, - "default": 1, + "default": 0.5, "title": "Temperature", - "description": "Sampling temperature between 0 and 2", + "description": "How expressive lipsync can be (0-1)", "min": 0.0, - "max": 2.0 - }, - { - "name": "system_prompt", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "System Prompt", - "description": "System prompt to set the assistant's behavior" - }, - { - "name": "presence_penalty", - "type": { - "type": "float" - }, - "default": 0, - "title": "Presence Penalty", - "description": "Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", - "min": -2.0, - "max": 2.0 - }, - { - "name": "frequency_penalty", - "type": { - "type": "float" - }, - "default": 0, - "title": "Frequency Penalty", - "description": "Frequency penalty parameter - positive values penalize the repetition of tokens.", - "min": -2.0, - "max": 2.0 + "max": 1.0 }, { - "name": "max_completion_tokens", + "name": "active_speaker", "type": { - "type": "int" + "type": "bool" }, - "default": 4096, - "title": "Max Completion Tokens", - "description": "Maximum number of completion tokens to generate" + "default": false, + "title": "Active Speaker", + "description": "Whether to detect active speaker (i.e. whoever is speaking in the clip will be used for lipsync)" } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/6f1609f1-ba45-4513-bfd6-7dfcb95efad8/Screenshot_2025-05-01_at_12.03.png", - "created_at": "2025-05-01T06:57:43.806670Z", - "description": "Fast, affordable version of GPT-4.1", + "cover_image_url": "https://replicate.delivery/xezq/wJSCHDW1zvqcBtInTLFK9rW6N52db0y5FImHrJlyjYi12gQF/tmpr6cxkcvr.mp4", + "created_at": "2025-07-15T14:19:02.814147Z", + "description": "Generate realistic lipsyncs with Sync Labs' 2.0 model", "github_url": null, - "license_url": "https://openai.com/policies/", - "name": "gpt-4.1-mini", - "owner": "openai", + "license_url": null, + "name": "lipsync-2", + "owner": "sync", "is_official": true, "paper_url": null, - "run_count": 1153729, - "url": "https://replicate.com/openai/gpt-4.1-mini", + "run_count": 3382, + "url": "https://replicate.com/sync/lipsync-2", "visibility": "public", "weights_url": null }, "basic_fields": [ - "top_p", - "prompt", - "messages" + "audio", + "video", + "sync_mode" ] }, { - "title": "GPT 4 1 Nano", - "description": "Fastest, most cost-effective GPT-4.1 model from OpenAI", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.GPT_4_1_Nano", + "title": "Lipsync 2 Pro", + "description": "Studio-grade lipsync in minutes, not weeks", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Lipsync_2_Pro", "properties": [ { - "name": "top_p", + "name": "audio", "type": { - "type": "float" + "type": "audio" }, - "default": 1, - "title": "Top P", - "description": "Nucleus sampling parameter - the model considers the results of the tokens with top_p probability mass. (0.1 means only the tokens comprising the top 10% probability mass are considered.)", - "min": 0.0, - "max": 1.0 - }, - { - "name": "prompt", - "type": { - "type": "str", - "optional": true + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null }, - "default": null, - "title": "Prompt", - "description": "The prompt to send to the model. Do not use if using messages." + "title": "Audio", + "description": "Input audio file (.wav)" }, { - "name": "messages", + "name": "video", "type": { - "type": "list" + "type": "video" }, - "default": [], - "title": "Messages", - "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." + "default": { + "type": "video", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null, + "duration": null, + "format": null + }, + "title": "Video", + "description": "Input video file (.mp4)" }, { - "name": "image_input", + "name": "sync_mode", "type": { - "type": "list" + "type": "enum", + "values": [ + "loop", + "bounce", + "cut_off", + "silence", + "remap" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Lipsync_2_Pro.Sync_mode" }, - "default": [], - "title": "Image Input", - "description": "List of images to send to the model" + "default": "loop", + "title": "Sync Mode", + "description": "Lipsync mode when audio and video durations are out of sync" }, { "name": "temperature", "type": { "type": "float" }, - "default": 1, + "default": 0.5, "title": "Temperature", - "description": "Sampling temperature between 0 and 2", + "description": "How expressive lipsync can be (0-1)", "min": 0.0, - "max": 2.0 - }, - { - "name": "system_prompt", - "type": { - "type": "str", - "optional": true - }, - "default": null, - "title": "System Prompt", - "description": "System prompt to set the assistant's behavior" - }, - { - "name": "presence_penalty", - "type": { - "type": "float" - }, - "default": 0, - "title": "Presence Penalty", - "description": "Presence penalty parameter - positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.", - "min": -2.0, - "max": 2.0 - }, - { - "name": "frequency_penalty", - "type": { - "type": "float" - }, - "default": 0, - "title": "Frequency Penalty", - "description": "Frequency penalty parameter - positive values penalize the repetition of tokens.", - "min": -2.0, - "max": 2.0 + "max": 1.0 }, { - "name": "max_completion_tokens", + "name": "active_speaker", "type": { - "type": "int" + "type": "bool" }, - "default": 4096, - "title": "Max Completion Tokens", - "description": "Maximum number of completion tokens to generate" + "default": false, + "title": "Active Speaker", + "description": "Whether to detect active speaker (i.e. whoever is speaking in the clip will be used for lipsync)" } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/f2c12cca-5859-407a-9189-0509526e4757/Screenshot_2025-05-01_at_12.29.png", - "created_at": "2025-05-01T07:26:10.557033Z", - "description": "Fastest, most cost-effective GPT-4.1 model from OpenAI", + "cover_image_url": "https://replicate.delivery/xezq/boKOqiuyz9omClm432RN1vzB3wejNr36em4lmJ2SC6If6KnqA/tmp47bgpsi_.mp4", + "created_at": "2025-08-27T19:58:34.559850Z", + "description": "Studio-grade lipsync in minutes, not weeks", "github_url": null, - "license_url": "https://openai.com/policies/", - "name": "gpt-4.1-nano", - "owner": "openai", + "license_url": null, + "name": "lipsync-2-pro", + "owner": "sync", "is_official": true, "paper_url": null, - "run_count": 366855, - "url": "https://replicate.com/openai/gpt-4.1-nano", + "run_count": 560, + "url": "https://replicate.com/sync/lipsync-2-pro", "visibility": "public", "weights_url": null }, "basic_fields": [ - "top_p", - "prompt", - "messages" + "audio", + "video", + "sync_mode" ] }, { - "title": "GPT 5", - "description": "OpenAI's new model excelling at coding, writing, and reasoning.", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.GPT_5", + "title": "Music 01", + "description": "Quickly generate up to 1 minute of music with lyrics and vocals in the style of a reference track", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Music_01", "properties": [ { - "name": "prompt", + "name": "lyrics", + "type": { + "type": "str" + }, + "default": "", + "title": "Lyrics", + "description": "Lyrics with optional formatting. You can use a newline to separate each line of lyrics. You can use two newlines to add a pause between lines. You can use double hash marks (##) at the beginning and end of the lyrics to add accompaniment. Maximum 350 to 400 characters." + }, + { + "name": "bitrate", + "type": { + "type": "enum", + "values": [ + 32000, + 64000, + 128000, + 256000 + ], + "type_name": "nodetool.nodes.replicate.video.generate.Music_01.Bitrate" + }, + "default": 256000, + "title": "Bitrate", + "description": "Bitrate for the generated music" + }, + { + "name": "voice_id", "type": { "type": "str", "optional": true }, "default": null, - "title": "Prompt", - "description": "The prompt to send to the model. Do not use if using messages." + "title": "Voice Id", + "description": "Reuse a previously uploaded voice ID" }, { - "name": "messages", + "name": "song_file", "type": { - "type": "list" + "type": "audio" }, - "default": [], - "title": "Messages", - "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Song File", + "description": "Reference song, should contain music and vocals. Must be a .wav or .mp3 file longer than 15 seconds." }, { - "name": "verbosity", + "name": "voice_file", "type": { - "type": "enum", - "values": [ - "low", - "medium", - "high" - ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5.Verbosity" + "type": "audio" }, - "default": "medium", - "title": "Verbosity", - "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." + "default": { + "type": "audio", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Voice File", + "description": "Voice reference. Must be a .wav or .mp3 file longer than 15 seconds. If only a voice reference is given, an a cappella vocal hum will be generated." }, { - "name": "image_input", + "name": "sample_rate", "type": { - "type": "list" + "type": "enum", + "values": [ + 16000, + 24000, + 32000, + 44100 + ], + "type_name": "nodetool.nodes.replicate.video.generate.Music_01.Sample_rate" }, - "default": [], - "title": "Image Input", - "description": "List of images to send to the model" + "default": 44100, + "title": "Sample Rate", + "description": "Sample rate for the generated music" }, { - "name": "system_prompt", + "name": "instrumental_id", "type": { "type": "str", "optional": true }, "default": null, - "title": "System Prompt", - "description": "System prompt to set the assistant's behavior" - }, - { - "name": "reasoning_effort", - "type": { - "type": "enum", - "values": [ - "minimal", - "low", - "medium", - "high" - ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5.Reasoning_effort" - }, - "default": "minimal", - "title": "Reasoning Effort", - "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "title": "Instrumental Id", + "description": "Reuse a previously uploaded instrumental ID" }, { - "name": "max_completion_tokens", + "name": "instrumental_file", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Max Completion Tokens", - "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "title": "Instrumental File", + "description": "Instrumental reference. Must be a .wav or .mp3 file longer than 15 seconds. If only an instrumental reference is given, a track without vocals will be generated." } ], "outputs": [ { "type": { - "type": "str" + "type": "audio" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/df3c6e87-cc46-40d9-a48f-381f80c7b10f/Screenshot_2025-08-07_at_1.04..png", - "created_at": "2025-08-07T01:46:29.933808Z", - "description": "OpenAI's new model excelling at coding, writing, and reasoning.", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/1d2de931-15ff-48b0-9c4d-2f9200eb2913/music-01-cover.jpg", + "created_at": "2024-12-17T12:40:30.320043Z", + "description": "Quickly generate up to 1 minute of music with lyrics and vocals in the style of a reference track", "github_url": null, - "license_url": null, - "name": "gpt-5", - "owner": "openai", + "license_url": "https://intl.minimaxi.com/protocol/terms-of-service", + "name": "music-01", + "owner": "minimax", "is_official": true, "paper_url": null, - "run_count": 127403, - "url": "https://replicate.com/openai/gpt-5", + "run_count": 353804, + "url": "https://replicate.com/minimax/music-01", "visibility": "public", "weights_url": null }, "basic_fields": [ - "prompt", - "messages", - "verbosity" + "lyrics", + "bitrate", + "voice_id" ] }, { - "title": "GPT 5 Mini", - "description": "Faster version of OpenAI's flagship GPT-5 model", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.GPT_5_Mini", + "title": "Pixverse V 5", + "description": "Create 5s-8s videos with enhanced character movement, visual effects, and exclusive 1080p-8s support. Optimized for anime characters and complex actions", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Pixverse_V5", "properties": [ { - "name": "prompt", + "name": "seed", "type": { - "type": "str", + "type": "int", "optional": true }, "default": null, - "title": "Prompt", - "description": "The prompt to send to the model. Do not use if using messages." + "title": "Seed", + "description": "Random seed. Set for reproducible generation" }, { - "name": "messages", + "name": "image", "type": { - "type": "list" + "type": "str", + "optional": true }, - "default": [], - "title": "Messages", - "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." + "default": null, + "title": "Image", + "description": "Image to use for the first frame of the video" }, { - "name": "verbosity", + "name": "effect", "type": { "type": "enum", "values": [ - "low", - "medium", - "high" + "None", + "Let's YMCA!", + "Subject 3 Fever", + "Ghibli Live!", + "Suit Swagger", + "Muscle Surge", + "360\u00b0 Microwave", + "Warmth of Jesus", + "Emergency Beat", + "Anything, Robot", + "Kungfu Club", + "Mint in Box", + "Retro Anime Pop", + "Vogue Walk", + "Mega Dive", + "Evil Trigger" ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Mini.Verbosity" + "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Effect" }, - "default": "medium", - "title": "Verbosity", - "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." + "default": "None", + "title": "Effect", + "description": "Special effect to apply to the video. V5 supports effects. Does not work with last_frame_image." }, { - "name": "image_input", + "name": "prompt", "type": { - "type": "list" + "type": "str", + "optional": true }, - "default": [], - "title": "Image Input", - "description": "List of images to send to the model" + "default": null, + "title": "Prompt", + "description": "Text prompt for video generation" }, { - "name": "system_prompt", + "name": "quality", "type": { - "type": "str", - "optional": true + "type": "enum", + "values": [ + "360p", + "540p", + "720p", + "1080p" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Quality" }, - "default": null, - "title": "System Prompt", - "description": "System prompt to set the assistant's behavior" + "default": "540p", + "title": "Quality", + "description": "Resolution of the video. 360p and 540p cost the same, but 720p and 1080p cost more. V5 supports 1080p with 8 second duration." }, { - "name": "reasoning_effort", + "name": "duration", "type": { "type": "enum", "values": [ - "minimal", - "low", - "medium", - "high" + 5, + 8 ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Mini.Reasoning_effort" + "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Duration" }, - "default": "minimal", - "title": "Reasoning Effort", - "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "default": 5, + "title": "Duration", + "description": "Duration of the video in seconds. 8 second videos cost twice as much as 5 second videos. V5 supports 1080p with 8 second duration." }, { - "name": "max_completion_tokens", + "name": "aspect_ratio", "type": { - "type": "int", + "type": "enum", + "values": [ + "16:9", + "9:16", + "1:1" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Pixverse_V5.Aspect_ratio" + }, + "default": "16:9", + "title": "Aspect Ratio", + "description": "Aspect ratio of the video" + }, + { + "name": "negative_prompt", + "type": { + "type": "str" + }, + "default": "", + "title": "Negative Prompt", + "description": "Negative prompt to avoid certain elements in the video" + }, + { + "name": "last_frame_image", + "type": { + "type": "str", "optional": true }, "default": null, - "title": "Max Completion Tokens", - "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "title": "Last Frame Image", + "description": "Use to generate a video that transitions from the first image to the last image. Must be used with image." } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/518903fa-a7de-4876-a79e-aac7fdeae577/Screenshot_2025-08-07_at_1.04..png", - "created_at": "2025-08-07T01:46:38.852666Z", - "description": "Faster version of OpenAI's flagship GPT-5 model", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/17daf77f-f059-4703-bbf8-284cfdf3a066/cover-tmp2sgncxf1.webp", + "created_at": "2025-08-27T16:59:19.868043Z", + "description": "Create 5s-8s videos with enhanced character movement, visual effects, and exclusive 1080p-8s support. Optimized for anime characters and complex actions", "github_url": null, "license_url": null, - "name": "gpt-5-mini", - "owner": "openai", + "name": "pixverse-v5", + "owner": "pixverse", "is_official": true, "paper_url": null, - "run_count": 45503, - "url": "https://replicate.com/openai/gpt-5-mini", + "run_count": 14438, + "url": "https://replicate.com/pixverse/pixverse-v5", "visibility": "public", "weights_url": null }, "basic_fields": [ - "prompt", - "messages", - "verbosity" + "seed", + "image", + "effect" ] }, { - "title": "GPT 5 Nano", - "description": "Fastest, most cost-effective GPT-5 model from OpenAI", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.GPT_5_Nano", + "title": "Ray", + "description": "Fast, high quality text-to-video and image-to-video (Also known as Dream Machine)", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Ray", "properties": [ + { + "name": "loop", + "type": { + "type": "bool" + }, + "default": false, + "title": "Loop", + "description": "Whether the video should loop, with the last frame matching the first frame for smooth, continuous playback. This input is ignored if end_image_url or end_video_id are set." + }, { "name": "prompt", "type": { @@ -20627,137 +21215,199 @@ }, "default": null, "title": "Prompt", - "description": "The prompt to send to the model. Do not use if using messages." + "description": "Text prompt for video generation" }, { - "name": "messages", + "name": "end_image", "type": { - "type": "list" + "type": "str", + "optional": true }, - "default": [], - "title": "Messages", - "description": "A JSON string representing a list of messages. For example: [{\"role\": \"user\", \"content\": \"Hello, how are you?\"}]. If provided, prompt and system_prompt are ignored." + "default": null, + "title": "End Image", + "description": "An optional last frame of the video to use as the ending frame." }, { - "name": "verbosity", + "name": "start_image", "type": { - "type": "enum", - "values": [ - "low", - "medium", - "high" - ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Nano.Verbosity" + "type": "str", + "optional": true }, - "default": "medium", - "title": "Verbosity", - "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." + "default": null, + "title": "Start Image", + "description": "An optional first frame of the video to use as the starting frame." }, { - "name": "image_input", + "name": "aspect_ratio", "type": { - "type": "list" + "type": "enum", + "values": [ + "1:1", + "3:4", + "4:3", + "9:16", + "16:9", + "9:21", + "21:9" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Ray.Aspect_ratio" }, - "default": [], - "title": "Image Input", - "description": "List of images to send to the model" + "default": "16:9", + "title": "Aspect Ratio", + "description": "Aspect ratio of the video. Ignored if a start frame, end frame or video ID is given." }, { - "name": "system_prompt", + "name": "end_video_id", "type": { "type": "str", "optional": true }, "default": null, - "title": "System Prompt", - "description": "System prompt to set the assistant's behavior" + "title": "End Video Id", + "description": "Prepend a new video generation to the beginning of an existing one (Also called 'reverse extend'). You can combine this with start_image_url, or start_video_id." }, { - "name": "reasoning_effort", + "name": "end_image_url", "type": { - "type": "enum", - "values": [ - "minimal", - "low", - "medium", - "high" - ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Nano.Reasoning_effort" + "type": "image" }, - "default": "minimal", - "title": "Reasoning Effort", - "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "End Image Url", + "description": "URL of an image to use as the ending frame" }, { - "name": "max_completion_tokens", + "name": "start_video_id", "type": { - "type": "int", + "type": "str", "optional": true }, "default": null, - "title": "Max Completion Tokens", - "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "title": "Start Video Id", + "description": "Continue or extend a video generation with a new generation. You can combine this with end_image_url, or end_video_id." + }, + { + "name": "start_image_url", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Start Image Url", + "description": "URL of an image to use as the starting frame" } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/fbb1068e-ae55-4d4f-9ee8-3e3da859f69f/Screenshot_2025-08-07_at_1.04.57P.png", - "created_at": "2025-08-07T01:46:49.288485Z", - "description": "Fastest, most cost-effective GPT-5 model from OpenAI", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/496f8ab2-3a87-4fe7-9867-5572460c2b5e/ray-cover.webp", + "created_at": "2024-12-12T16:30:42.287210Z", + "description": "Fast, high quality text-to-video and image-to-video (Also known as Dream Machine)", "github_url": null, - "license_url": null, - "name": "gpt-5-nano", - "owner": "openai", + "license_url": "https://lumalabs.ai/dream-machine/api/terms", + "name": "ray", + "owner": "luma", "is_official": true, - "paper_url": null, - "run_count": 40105, - "url": "https://replicate.com/openai/gpt-5-nano", + "paper_url": "https://lumalabs.ai/dream-machine", + "run_count": 53087, + "url": "https://replicate.com/luma/ray", "visibility": "public", "weights_url": null }, "basic_fields": [ + "loop", "prompt", - "messages", - "verbosity" + "end_image" ] }, { - "title": "GPT 5 Structured", - "description": "GPT-5 with support for structured outputs, web search and custom tools", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.GPT_5_Structured", + "title": "Robust Video Matting", + "description": "extract foreground of a video", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.RobustVideoMatting", "properties": [ { - "name": "model", + "name": "input_video", + "type": { + "type": "video" + }, + "default": { + "type": "video", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null, + "duration": null, + "format": null + }, + "title": "Input Video", + "description": "Video to segment." + }, + { + "name": "output_type", "type": { "type": "enum", "values": [ - "gpt-5", - "gpt-5-mini", - "gpt-5-nano" + "green-screen", + "alpha-mask", + "foreground-mask" ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Structured.Model" + "type_name": "nodetool.nodes.replicate.video.generate.RobustVideoMatting.Output_type" }, - "default": "gpt-5", - "title": "Model", - "description": "GPT-5 model to use." - }, + "default": "green-screen", + "title": "Output Type" + } + ], + "outputs": [ { - "name": "tools", "type": { - "type": "list" + "type": "video" }, - "default": [], - "title": "Tools", - "description": "Tools to make available to the model. Should be a JSON object containing a list of tool definitions." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/1f92fd8f-2b90-4998-b5ae-1e23678ab004/showreel.gif", + "created_at": "2022-11-25T14:06:18.152759Z", + "description": "extract foreground of a video", + "github_url": "https://github.com/PeterL1n/RobustVideoMatting", + "license_url": "https://github.com/PeterL1n/RobustVideoMatting/blob/master/LICENSE", + "name": "robust_video_matting", + "owner": "arielreplicate", + "is_official": false, + "paper_url": "https://arxiv.org/abs/2108.11515", + "run_count": 59497, + "url": "https://replicate.com/arielreplicate/robust_video_matting", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "input_video", + "output_type" + ] + }, + { + "title": "Video 01", + "description": "Generate 6s videos with prompts or images. (Also known as Hailuo). Use a subject reference to make a video with a character and the S2V-01 model.", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Video_01", + "properties": [ { "name": "prompt", "type": { @@ -20766,898 +21416,1029 @@ }, "default": null, "title": "Prompt", - "description": "A simple text input to the model, equivalent to a text input with the user role. Ignored if input_item_list is provided." - }, - { - "name": "verbosity", - "type": { - "type": "enum", - "values": [ - "low", - "medium", - "high" - ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Structured.Verbosity" - }, - "default": "medium", - "title": "Verbosity", - "description": "Constrains the verbosity of the model's response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. GPT-5 supports this parameter to help control whether answers are short and to the point or long and comprehensive." - }, - { - "name": "image_input", - "type": { - "type": "list" - }, - "default": [], - "title": "Image Input", - "description": "List of images to send to the model" + "description": "Text prompt for generation" }, { - "name": "json_schema", + "name": "prompt_optimizer", "type": { - "type": "dict" + "type": "bool" }, - "default": {}, - "title": "Json Schema", - "description": "A JSON schema that the response must conform to. For simple data structures we recommend using `simple_text_format_schema` which will be converted to a JSON schema for you." + "default": true, + "title": "Prompt Optimizer", + "description": "Use prompt optimizer" }, { - "name": "instructions", + "name": "first_frame_image", "type": { "type": "str", "optional": true }, "default": null, - "title": "Instructions", - "description": "A system (or developer) message inserted into the model's context. When using along with previous_response_id, the instructions from a previous response will not be carried over to the next response. This makes it simple to swap out system (or developer) messages in new responses." + "title": "First Frame Image", + "description": "First frame image for video generation. The output video will have the same aspect ratio as this image." }, { - "name": "simple_schema", + "name": "subject_reference", "type": { - "type": "list" + "type": "str", + "optional": true }, - "default": [], - "title": "Simple Schema", - "description": "Create a JSON schema for the output to conform to. The schema will be created from a simple list of field specifications. Strings: 'thing' (defaults to string), 'thing:str', 'thing:string'. Booleans: 'is_a_thing:bool' or 'is_a_thing:boolean'. Numbers: 'count:number', 'count:int'. Lists: 'things:list' (defaults to list of strings), 'things:list:str', 'number_things:list:number', etc. Nested objects are not supported, use `json_schema` instead." - }, + "default": null, + "title": "Subject Reference", + "description": "An optional character reference image to use as the subject in the generated video (this will use the S2V-01 model)" + } + ], + "outputs": [ { - "name": "input_item_list", "type": { - "type": "list" + "type": "video" }, - "default": [], - "title": "Input Item List", - "description": "A list of one or many input items to the model, containing different content types. This parameter corresponds with the `input` OpenAI API parameter. For more details see: https://platform.openai.com/docs/api-reference/responses/create#responses_create-input. Similar to the `messages` parameter, but with more flexibility in the content types." - }, + "name": "output" + } + ], + "the_model_info": { + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/b56c831c-4c68-4443-b69e-b71b105afe7f/minimax.webp", + "created_at": "2024-11-26T14:40:21.652537Z", + "description": "Generate 6s videos with prompts or images. (Also known as Hailuo). Use a subject reference to make a video with a character and the S2V-01 model.", + "github_url": null, + "license_url": "https://intl.minimaxi.com/protocol/terms-of-service", + "name": "video-01", + "owner": "minimax", + "is_official": true, + "paper_url": null, + "run_count": 582391, + "url": "https://replicate.com/minimax/video-01", + "visibility": "public", + "weights_url": null + }, + "basic_fields": [ + "prompt", + "prompt_optimizer", + "first_frame_image" + ] + }, + { + "title": "Video 01 Live", + "description": "An image-to-video (I2V) model specifically trained for Live2D and general animation use cases", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Video_01_Live", + "properties": [ { - "name": "reasoning_effort", + "name": "prompt", "type": { - "type": "enum", - "values": [ - "minimal", - "low", - "medium", - "high" - ], - "type_name": "nodetool.nodes.replicate.text.generate.GPT_5_Structured.Reasoning_effort" + "type": "str", + "optional": true }, - "default": "minimal", - "title": "Reasoning Effort", - "description": "Constrains effort on reasoning for GPT-5 models. Currently supported values are minimal, low, medium, and high. The minimal value gets answers back faster without extensive reasoning first. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "default": null, + "title": "Prompt", + "description": "Text prompt for generation" }, { - "name": "enable_web_search", + "name": "prompt_optimizer", "type": { "type": "bool" }, - "default": false, - "title": "Enable Web Search", - "description": "Allow GPT-5 to use web search for the response." - }, - { - "name": "max_output_tokens", - "type": { - "type": "int", - "optional": true - }, - "default": null, - "title": "Max Output Tokens", - "description": "Maximum number of completion tokens to generate. For higher reasoning efforts you may need to increase your max_completion_tokens to avoid empty responses (where all the tokens are used on reasoning)." + "default": true, + "title": "Prompt Optimizer", + "description": "Use prompt optimizer" }, { - "name": "previous_response_id", + "name": "first_frame_image", "type": { "type": "str", "optional": true }, "default": null, - "title": "Previous Response Id", - "description": "The ID of a previous response to continue from." + "title": "First Frame Image", + "description": "First frame image for video generation. The output video will have the same aspect ratio as this image." } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/60ebe2fc-dcd1-4185-90b2-bf0cc34c9688/replicate-prediction-qhzgvzbn7.jpg", - "created_at": "2025-08-14T15:32:22.469348Z", - "description": "GPT-5 with support for structured outputs, web search and custom tools", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/c202ad97-edd0-40b6-afaf-c99d71398d44/video-01-live-cover.webp", + "created_at": "2024-12-16T20:27:52.715593Z", + "description": "An image-to-video (I2V) model specifically trained for Live2D and general animation use cases", "github_url": null, - "license_url": null, - "name": "gpt-5-structured", - "owner": "openai", + "license_url": "https://intl.minimaxi.com/protocol/terms-of-service", + "name": "video-01-live", + "owner": "minimax", "is_official": true, "paper_url": null, - "run_count": 42702, - "url": "https://replicate.com/openai/gpt-5-structured", + "run_count": 165159, + "url": "https://replicate.com/minimax/video-01-live", "visibility": "public", "weights_url": null }, "basic_fields": [ - "model", - "tools", - "prompt" + "prompt", + "prompt_optimizer", + "first_frame_image" ] }, { - "title": "Llama 3 1 405 B Instruct", - "description": "Meta's flagship 405 billion parameter language model, fine-tuned for chat completions", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Llama3_1_405B_Instruct", + "title": "Wan 2 1 1 3B", + "description": "Generate 5s 480p videos. Wan is an advanced and powerful visual generation model developed by Tongyi Lab of Alibaba Group", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Wan_2_1_1_3B", "properties": [ { - "name": "top_k", - "type": { - "type": "int" - }, - "default": 50, - "title": "Top K", - "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." - }, - { - "name": "top_p", + "name": "seed", "type": { - "type": "float" + "type": "int", + "optional": true }, - "default": 0.9, - "title": "Top P", - "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." + "default": null, + "title": "Seed", + "description": "Random seed for reproducible results (leave blank for random)" }, { "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "", + "default": null, "title": "Prompt", - "description": "Prompt" - }, - { - "name": "max_tokens", - "type": { - "type": "int" - }, - "default": 512, - "title": "Max Tokens", - "description": "The maximum number of tokens the model should generate as output." + "description": "Text prompt describing what you want to generate" }, { - "name": "min_tokens", + "name": "frame_num", "type": { - "type": "int" + "type": "enum", + "values": [ + 17, + 33, + 49, + 65, + 81 + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Frame_num" }, - "default": 0, - "title": "Min Tokens", - "description": "The minimum number of tokens the model should generate as output." + "default": 81, + "title": "Frame Num", + "description": "Video duration in frames (based on standard 16fps playback)" }, { - "name": "temperature", + "name": "resolution", "type": { - "type": "float" + "type": "enum", + "values": [ + "480p" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Resolution" }, - "default": 0.6, - "title": "Temperature", - "description": "The value used to modulate the next token probabilities." + "default": "480p", + "title": "Resolution", + "description": "Video resolution" }, { - "name": "system_prompt", + "name": "aspect_ratio", "type": { - "type": "str" + "type": "enum", + "values": [ + "16:9", + "9:16" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_1_3B.Aspect_ratio" }, - "default": "You are a helpful assistant.", - "title": "System Prompt", - "description": "System prompt to send to the model. This is prepended to the prompt and helps guide system behavior. Ignored for non-chat models." + "default": "16:9", + "title": "Aspect Ratio", + "description": "Video aspect ratio" }, { - "name": "stop_sequences", + "name": "sample_shift", "type": { - "type": "str", - "optional": true + "type": "float" }, - "default": null, - "title": "Stop Sequences", - "description": "A comma-separated list of sequences to stop generation at. For example, ',' will stop generation at the first instance of 'end' or ''." + "default": 8, + "title": "Sample Shift", + "description": "Sampling shift factor for flow matching (recommended range: 8-12)", + "min": 0.0, + "max": 20.0 }, { - "name": "presence_penalty", + "name": "sample_steps", "type": { - "type": "float" + "type": "int" }, - "default": 0, - "title": "Presence Penalty", - "description": "Presence penalty" + "default": 30, + "title": "Sample Steps", + "description": "Number of sampling steps (higher = better quality but slower)", + "min": 10.0, + "max": 50.0 }, { - "name": "frequency_penalty", + "name": "sample_guide_scale", "type": { "type": "float" }, - "default": 0, - "title": "Frequency Penalty", - "description": "Frequency penalty" + "default": 6, + "title": "Sample Guide Scale", + "description": "Classifier free guidance scale (higher values strengthen prompt adherence)", + "min": 0.0, + "max": 20.0 } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/81ca001f-6a0a-4bef-b2f1-32466887df20/meta-logo.png", - "created_at": "2024-07-22T20:40:30.648238Z", - "description": "Meta's flagship 405 billion parameter language model, fine-tuned for chat completions", - "github_url": "https://github.com/meta-llama/llama-models/blob/main/models/llama3_1", - "license_url": "https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/LICENSE", - "name": "meta-llama-3.1-405b-instruct", - "owner": "meta", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/a07f6849-fd97-4f6b-9166-887e84b0cb47/replicate-prediction-0s06z711.webp", + "created_at": "2025-02-26T14:24:14.098215Z", + "description": "Generate 5s 480p videos. Wan is an advanced and powerful visual generation model developed by Tongyi Lab of Alibaba Group", + "github_url": "https://github.com/Wan-Video/Wan2.1", + "license_url": "https://huggingface.co/datasets/choosealicense/licenses/blob/main/markdown/apache-2.0.md", + "name": "wan-2.1-1.3b", + "owner": "wan-video", "is_official": true, - "paper_url": null, - "run_count": 6447804, - "url": "https://replicate.com/meta/meta-llama-3.1-405b-instruct", + "paper_url": "https://wanxai.com/", + "run_count": 42222, + "url": "https://replicate.com/wan-video/wan-2.1-1.3b", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B" }, "basic_fields": [ - "top_k", - "top_p", - "prompt" + "seed", + "prompt", + "frame_num" ] }, { - "title": "Llama 3 70 B", - "description": "Base version of Llama 3, a 70 billion parameter language model from Meta.", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Llama3_70B", + "title": "Wan 2 1 I 2V 480 p", + "description": "Accelerated inference for Wan 2.1 14B image to video, a comprehensive and open suite of video foundation models that pushes the boundaries of video generation.", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Wan_2_1_I2V_480p", "properties": [ { - "name": "top_k", + "name": "seed", + "type": { + "type": "int", + "optional": true + }, + "default": null, + "title": "Seed", + "description": "Random seed. Set for reproducible generation" + }, + { + "name": "image", + "type": { + "type": "image" + }, + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Image for use as the initial frame of the video." + }, + { + "name": "prompt", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 50, - "title": "Top K", - "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." + "default": null, + "title": "Prompt", + "description": "Text prompt for image generation" }, { - "name": "top_p", + "name": "fast_mode", + "type": { + "type": "enum", + "values": [ + "Off", + "Balanced", + "Fast" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Fast_mode" + }, + "default": "Balanced", + "title": "Fast Mode", + "description": "Speed up generation with different levels of acceleration. Faster modes may degrade quality somewhat. The speedup is dependent on the content, so different videos may see different speedups." + }, + { + "name": "lora_scale", "type": { "type": "float" }, - "default": 0.9, - "title": "Top P", - "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." + "default": 1, + "title": "Lora Scale", + "description": "Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. You may still need to experiment to find the best value for your particular lora.", + "min": 0.0, + "max": 4.0 }, { - "name": "prompt", + "name": "aspect_ratio", "type": { - "type": "str" + "type": "enum", + "values": [ + "16:9", + "9:16" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_1_I2V_480p.Aspect_ratio" }, - "default": "", - "title": "Prompt", - "description": "Prompt" + "default": "16:9", + "title": "Aspect Ratio", + "description": "Aspect ratio of the output video." }, { - "name": "max_tokens", + "name": "lora_weights", "type": { - "type": "int" + "type": "str", + "optional": true }, - "default": 512, - "title": "Max Tokens", - "description": "The maximum number of tokens the model should generate as output." + "default": null, + "title": "Lora Weights", + "description": "Load LoRA weights. Supports HuggingFace URLs in the format huggingface.co//, CivitAI URLs in the format civitai.com/models/[/], or arbitrary .safetensors URLs from the Internet." }, { - "name": "min_tokens", + "name": "sample_shift", "type": { "type": "int" }, - "default": 0, - "title": "Min Tokens", - "description": "The minimum number of tokens the model should generate as output." + "default": 3, + "title": "Sample Shift", + "description": "Flow shift parameter for video generation", + "min": 0.0, + "max": 10.0 }, { - "name": "temperature", + "name": "sample_steps", "type": { - "type": "float" + "type": "int" }, - "default": 0.6, - "title": "Temperature", - "description": "The value used to modulate the next token probabilities." + "default": 30, + "title": "Sample Steps", + "description": "Number of inference steps", + "min": 1.0, + "max": 40.0 }, { - "name": "prompt_template", + "name": "negative_prompt", "type": { "type": "str" }, - "default": "{prompt}", - "title": "Prompt Template", - "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." + "default": "", + "title": "Negative Prompt", + "description": "Negative prompt to avoid certain elements" }, { - "name": "presence_penalty", + "name": "sample_guide_scale", "type": { "type": "float" }, - "default": 1.15, - "title": "Presence Penalty", - "description": "Presence penalty" + "default": 5, + "title": "Sample Guide Scale", + "description": "Guidance scale for generation", + "min": 1.0, + "max": 10.0 }, { - "name": "frequency_penalty", + "name": "disable_safety_checker", "type": { - "type": "float" + "type": "bool" }, - "default": 0.2, - "title": "Frequency Penalty", - "description": "Frequency penalty" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated videos" } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/8e044b4c-0b20-4717-83bd-a94d89fb0dbe/meta-logo.png", - "created_at": "2024-04-17T18:05:18.044746Z", - "description": "Base version of Llama 3, a 70 billion parameter language model from Meta.", - "github_url": null, - "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", - "name": "meta-llama-3-70b", - "owner": "meta", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/75f0346d-ec4c-4078-bb40-6705578c0d21/replicate-prediction-br080xq9.webp", + "created_at": "2025-02-26T20:09:34.365160Z", + "description": "Accelerated inference for Wan 2.1 14B image to video, a comprehensive and open suite of video foundation models that pushes the boundaries of video generation.", + "github_url": "https://github.com/Wan-Video/Wan2.1", + "license_url": "https://github.com/Wan-Video/Wan2.1/blob/main/LICENSE.txt", + "name": "wan-2.1-i2v-480p", + "owner": "wavespeedai", "is_official": true, "paper_url": null, - "run_count": 841369, - "url": "https://replicate.com/meta/meta-llama-3-70b", + "run_count": 414154, + "url": "https://replicate.com/wavespeedai/wan-2.1-i2v-480p", "visibility": "public", - "weights_url": null + "weights_url": "https://huggingface.co/Wan-AI/Wan2.1-T2V-14B" }, "basic_fields": [ - "top_k", - "top_p", + "seed", + "image", "prompt" ] }, { - "title": "Llama 3 70 B Instruct", - "description": "A 70 billion parameter language model from Meta, fine tuned for chat completions", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Llama3_70B_Instruct", + "title": "Wan 2 2 I 2V Fast", + "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B image-to-video", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Wan_2_2_I2V_Fast", "properties": [ { - "name": "top_k", + "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 50, - "title": "Top K", - "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank for random" }, { - "name": "top_p", + "name": "image", "type": { - "type": "float" + "type": "image" }, - "default": 0.9, - "title": "Top P", - "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." + "default": { + "type": "image", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null + }, + "title": "Image", + "description": "Input image to generate video from." }, { "name": "prompt", "type": { - "type": "str" + "type": "str", + "optional": true }, - "default": "", + "default": null, "title": "Prompt", - "description": "Prompt" + "description": "Prompt for video generation" }, { - "name": "max_tokens", + "name": "go_fast", "type": { - "type": "int" + "type": "bool" }, - "default": 512, - "title": "Max Tokens", - "description": "The maximum number of tokens the model should generate as output." + "default": true, + "title": "Go Fast", + "description": "Go fast" }, { - "name": "min_tokens", + "name": "num_frames", "type": { "type": "int" }, - "default": 0, - "title": "Min Tokens", - "description": "The minimum number of tokens the model should generate as output." + "default": 81, + "title": "Num Frames", + "description": "Number of video frames. 81 frames give the best results", + "min": 81.0, + "max": 121.0 }, { - "name": "temperature", + "name": "resolution", "type": { - "type": "float" + "type": "enum", + "values": [ + "480p", + "720p" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Resolution" }, - "default": 0.6, - "title": "Temperature", - "description": "The value used to modulate the next token probabilities." + "default": "720p", + "title": "Resolution", + "description": "Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" }, { - "name": "prompt_template", + "name": "aspect_ratio", "type": { - "type": "str" + "type": "enum", + "values": [ + "16:9", + "9:16" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_I2V_Fast.Aspect_ratio" }, - "default": "{prompt}", - "title": "Prompt Template", - "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." + "default": "16:9", + "title": "Aspect Ratio", + "description": "Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" }, { - "name": "presence_penalty", + "name": "sample_shift", "type": { "type": "float" }, - "default": 1.15, - "title": "Presence Penalty", - "description": "Presence penalty" + "default": 12, + "title": "Sample Shift", + "description": "Sample shift factor", + "min": 1.0, + "max": 20.0 }, { - "name": "frequency_penalty", + "name": "frames_per_second", + "type": { + "type": "int" + }, + "default": 16, + "title": "Frames Per Second", + "description": "Frames per second. Note that the pricing of this model is based on the video duration at 16 fps", + "min": 5.0, + "max": 30.0 + }, + { + "name": "disable_safety_checker", "type": { - "type": "float" + "type": "bool" }, - "default": 0.2, - "title": "Frequency Penalty", - "description": "Frequency penalty" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated video." } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/3dcb020b-1fad-4101-84cf-88af9b20ac21/meta-logo.png", - "created_at": "2024-04-17T21:44:13.482460Z", - "description": "A 70 billion parameter language model from Meta, fine tuned for chat completions", - "github_url": "https://github.com/meta-llama/llama3", - "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", - "name": "meta-llama-3-70b-instruct", - "owner": "meta", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/e04b60c1-dbc9-4606-8b37-6da8c7e27f5e/replicate-prediction-xd6kc1a96.mp4", + "created_at": "2025-07-30T18:13:03.381058Z", + "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B image-to-video", + "github_url": null, + "license_url": null, + "name": "wan-2.2-i2v-fast", + "owner": "wan-video", "is_official": true, "paper_url": null, - "run_count": 160492085, - "url": "https://replicate.com/meta/meta-llama-3-70b-instruct", + "run_count": 946371, + "url": "https://replicate.com/wan-video/wan-2.2-i2v-fast", "visibility": "public", "weights_url": null }, "basic_fields": [ - "top_k", - "top_p", + "seed", + "image", "prompt" ] }, { - "title": "Llama 3 8 B", - "description": "Base version of Llama 3, an 8 billion parameter language model from Meta.", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Llama3_8B", + "title": "Wan 2 2 T 2V Fast", + "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B text-to-video", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Wan_2_2_T2V_Fast", "properties": [ { - "name": "top_k", + "name": "seed", "type": { - "type": "int" + "type": "int", + "optional": true }, - "default": 50, - "title": "Top K", - "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank for random" }, { - "name": "top_p", + "name": "prompt", "type": { - "type": "float" + "type": "str", + "optional": true }, - "default": 0.9, - "title": "Top P", - "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." + "default": null, + "title": "Prompt", + "description": "Prompt for video generation" }, { - "name": "prompt", + "name": "go_fast", "type": { - "type": "str" + "type": "bool" }, - "default": "", - "title": "Prompt", - "description": "Prompt" + "default": true, + "title": "Go Fast", + "description": "Go fast" }, { - "name": "max_tokens", + "name": "num_frames", "type": { "type": "int" }, - "default": 512, - "title": "Max Tokens", - "description": "The maximum number of tokens the model should generate as output." + "default": 81, + "title": "Num Frames", + "description": "Number of video frames. 81 frames give the best results", + "min": 81.0, + "max": 121.0 }, { - "name": "min_tokens", + "name": "resolution", "type": { - "type": "int" + "type": "enum", + "values": [ + "480p", + "720p" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Resolution" }, - "default": 0, - "title": "Min Tokens", - "description": "The minimum number of tokens the model should generate as output." + "default": "720p", + "title": "Resolution", + "description": "Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" }, { - "name": "temperature", + "name": "aspect_ratio", "type": { - "type": "float" + "type": "enum", + "values": [ + "16:9", + "9:16" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Wan_2_2_T2V_Fast.Aspect_ratio" }, - "default": 0.6, - "title": "Temperature", - "description": "The value used to modulate the next token probabilities." + "default": "16:9", + "title": "Aspect Ratio", + "description": "Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is 480x832px" }, { - "name": "prompt_template", + "name": "sample_shift", "type": { - "type": "str" + "type": "float" }, - "default": "{prompt}", - "title": "Prompt Template", - "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." + "default": 12, + "title": "Sample Shift", + "description": "Sample shift factor", + "min": 1.0, + "max": 20.0 }, { - "name": "presence_penalty", + "name": "frames_per_second", "type": { - "type": "float" + "type": "int" }, - "default": 1.15, - "title": "Presence Penalty", - "description": "Presence penalty" + "default": 16, + "title": "Frames Per Second", + "description": "Frames per second. Note that the pricing of this model is based on the video duration at 16 fps", + "min": 5.0, + "max": 30.0 }, { - "name": "frequency_penalty", + "name": "disable_safety_checker", "type": { - "type": "float" + "type": "bool" }, - "default": 0.2, - "title": "Frequency Penalty", - "description": "Frequency penalty" + "default": false, + "title": "Disable Safety Checker", + "description": "Disable safety checker for generated video." } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/dd9ac11a-edda-4d33-b413-6a721c44dfb0/meta-logo.png", - "created_at": "2024-04-17T18:04:26.049832Z", - "description": "Base version of Llama 3, an 8 billion parameter language model from Meta.", - "github_url": "https://github.com/meta-llama/llama3", - "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", - "name": "meta-llama-3-8b", - "owner": "meta", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/08195778-ca4f-401d-b1eb-fecc242b97c0/output.mp4", + "created_at": "2025-07-30T11:03:52.081987Z", + "description": "A very fast and cheap PrunaAI optimized version of Wan 2.2 A14B text-to-video", + "github_url": null, + "license_url": null, + "name": "wan-2.2-t2v-fast", + "owner": "wan-video", "is_official": true, "paper_url": null, - "run_count": 51025551, - "url": "https://replicate.com/meta/meta-llama-3-8b", + "run_count": 68296, + "url": "https://replicate.com/wan-video/wan-2.2-t2v-fast", "visibility": "public", "weights_url": null }, "basic_fields": [ - "top_k", - "top_p", - "prompt" + "seed", + "prompt", + "go_fast" ] }, { - "title": "Llama 3 8 B Instruct", - "description": "An 8 billion parameter language model from Meta, fine tuned for chat completions", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Llama3_8B_Instruct", + "title": "Zeroscope V 2 XL", + "description": "Zeroscope V2 XL & 576w", + "namespace": "replicate.video.generate", + "node_type": "replicate.video.generate.Zeroscope_V2_XL", "properties": [ { - "name": "top_k", + "name": "fps", "type": { "type": "int" }, - "default": 50, - "title": "Top K", - "description": "The number of highest probability tokens to consider for generating the output. If > 0, only keep the top k tokens with highest probability (top-k filtering)." + "default": 8, + "title": "Fps", + "description": "fps for the output video" }, { - "name": "top_p", + "name": "seed", "type": { - "type": "float" + "type": "int", + "optional": true }, - "default": 0.9, - "title": "Top P", - "description": "A probability threshold for generating the output. If < 1.0, only keep the top tokens with cumulative probability >= top_p (nucleus filtering). Nucleus filtering is described in Holtzman et al. (http://arxiv.org/abs/1904.09751)." + "default": null, + "title": "Seed", + "description": "Random seed. Leave blank to randomize the seed" }, { - "name": "prompt", + "name": "model", "type": { - "type": "str" + "type": "enum", + "values": [ + "xl", + "576w", + "potat1", + "animov-512x" + ], + "type_name": "nodetool.nodes.replicate.video.generate.Zeroscope_V2_XL.Model" }, - "default": "", - "title": "Prompt", - "description": "Prompt" + "default": "xl", + "title": "Model", + "description": "Model to use" }, { - "name": "max_tokens", + "name": "width", "type": { "type": "int" }, - "default": 512, - "title": "Max Tokens", - "description": "The maximum number of tokens the model should generate as output." + "default": 576, + "title": "Width", + "description": "Width of the output video", + "min": 256.0 }, { - "name": "min_tokens", + "name": "height", "type": { "type": "int" }, - "default": 0, - "title": "Min Tokens", - "description": "The minimum number of tokens the model should generate as output." + "default": 320, + "title": "Height", + "description": "Height of the output video", + "min": 256.0 }, { - "name": "temperature", + "name": "prompt", "type": { - "type": "float" + "type": "str" }, - "default": 0.6, - "title": "Temperature", - "description": "The value used to modulate the next token probabilities." + "default": "An astronaut riding a horse", + "title": "Prompt", + "description": "Input prompt" }, { - "name": "prompt_template", + "name": "batch_size", "type": { - "type": "str" + "type": "int" }, - "default": "{prompt}", - "title": "Prompt Template", - "description": "Prompt template. The string `{prompt}` will be substituted for the input prompt. If you want to generate dialog output, use this template as a starting point and construct the prompt string manually, leaving `prompt_template={prompt}`." + "default": 1, + "title": "Batch Size", + "description": "Batch size", + "min": 1.0 + }, + { + "name": "init_video", + "type": { + "type": "str", + "optional": true + }, + "default": null, + "title": "Init Video", + "description": "URL of the initial video (optional)" }, { - "name": "presence_penalty", + "name": "num_frames", "type": { - "type": "float" + "type": "int" }, - "default": 1.15, - "title": "Presence Penalty", - "description": "Presence penalty" + "default": 24, + "title": "Num Frames", + "description": "Number of frames for the output video" }, { - "name": "frequency_penalty", + "name": "init_weight", "type": { "type": "float" }, - "default": 0.2, - "title": "Frequency Penalty", - "description": "Frequency penalty" - } - ], - "outputs": [ + "default": 0.5, + "title": "Init Weight", + "description": "Strength of init_video" + }, { + "name": "guidance_scale", "type": { - "type": "str" + "type": "float" }, - "name": "output" - } - ], - "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/68b7dc1a-4767-4353-b066-212b0126b5de/meta-logo.png", - "created_at": "2024-04-17T21:44:58.480057Z", - "description": "An 8 billion parameter language model from Meta, fine tuned for chat completions", - "github_url": "https://github.com/meta-llama/llama3", - "license_url": "https://github.com/meta-llama/llama3/blob/main/LICENSE", - "name": "meta-llama-3-8b-instruct", - "owner": "meta", - "is_official": true, - "paper_url": null, - "run_count": 379769007, - "url": "https://replicate.com/meta/meta-llama-3-8b-instruct", - "visibility": "public", - "weights_url": null - }, - "basic_fields": [ - "top_k", - "top_p", - "prompt" - ] - }, - { - "title": "Llama Guard 3 11 B Vision", - "description": "A Llama-3.2-11B pretrained model, fine-tuned for content safety classification", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.LlamaGuard_3_11B_Vision", - "properties": [ + "default": 7.5, + "title": "Guidance Scale", + "description": "Guidance scale", + "min": 1.0, + "max": 100.0 + }, { - "name": "image", + "name": "negative_prompt", "type": { "type": "str", "optional": true }, "default": null, - "title": "Image", - "description": "Image to moderate" + "title": "Negative Prompt", + "description": "Negative prompt" }, { - "name": "prompt", + "name": "remove_watermark", "type": { - "type": "str" + "type": "bool" }, - "default": "Which one should I buy?", - "title": "Prompt", - "description": "User message to moderate" + "default": false, + "title": "Remove Watermark", + "description": "Remove watermark" + }, + { + "name": "num_inference_steps", + "type": { + "type": "int" + }, + "default": 50, + "title": "Num Inference Steps", + "description": "Number of denoising steps", + "min": 1.0, + "max": 500.0 } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/d7d7e254-bf5a-458f-9754-791a7db8ba44/replicate-prediction-m8j_JCyBlXR.webp", - "created_at": "2024-12-23T20:39:23.769654Z", - "description": "A Llama-3.2-11B pretrained model, fine-tuned for content safety classification", - "github_url": "https://github.com/lucataco/cog-Llama-Guard-3-11B-Vision", - "license_url": "https://huggingface.co/meta-llama/Llama-3.2-1B/blob/main/LICENSE.txt", - "name": "llama-guard-3-11b-vision", - "owner": "meta", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/d56e8888-a591-4edd-a9d3-2285b2ab66b4/1mrNnh8.jpg", + "created_at": "2023-06-24T18:30:41.874899Z", + "description": "Zeroscope V2 XL & 576w", + "github_url": "https://github.com/anotherjesse/cog-text2video", + "license_url": "https://github.com/anotherjesse/cog-text2video/blob/main/LICENSE", + "name": "zeroscope-v2-xl", + "owner": "anotherjesse", "is_official": false, - "paper_url": "https://arxiv.org/abs/2312.06674", - "run_count": 1474, - "url": "https://replicate.com/meta/llama-guard-3-11b-vision", + "paper_url": "https://huggingface.co/cerspense/zeroscope_v2_576w", + "run_count": 293579, + "url": "https://replicate.com/anotherjesse/zeroscope-v2-xl", "visibility": "public", - "weights_url": "https://huggingface.co/meta-llama/Llama-Guard-3-11B-Vision" + "weights_url": null }, "basic_fields": [ - "image", - "prompt" + "fps", + "seed", + "model" ] }, { - "title": "Llama Guard 3 8 B", - "description": "A Llama-3.1-8B pretrained model, fine-tuned for content safety classification", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.LlamaGuard_3_8B", + "title": "Runway Upscale V 1", + "description": "Upscale videos by 4x, up to a maximum of 4k", + "namespace": "replicate.video.enhance", + "node_type": "replicate.video.enhance.Runway_Upscale_V1", "properties": [ { - "name": "prompt", + "name": "video", "type": { - "type": "str" + "type": "video" }, - "default": "I forgot how to kill a process in Linux, can you help?", - "title": "Prompt", - "description": "User message to moderate" - }, - { - "name": "assistant", - "type": { - "type": "str", - "optional": true + "default": { + "type": "video", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null, + "duration": null, + "format": null }, - "default": null, - "title": "Assistant", - "description": "Assistant response to classify" + "title": "Video", + "description": "Video to upscale. Videos must be shorter than 40s, less than 4096px per side, and less than 16MB." } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_cover_image/b59edf5b-6571-4673-8cd8-87488501f5b7/replicate-prediction-d2c_9x54OXs.webp", - "created_at": "2024-12-21T00:37:41.039448Z", - "description": "A Llama-3.1-8B pretrained model, fine-tuned for content safety classification", - "github_url": "https://github.com/lucataco/cog-Llama-Guard-3-8B", - "license_url": "https://huggingface.co/meta-llama/Llama-3.1-70B-Instruct/blob/main/LICENSE", - "name": "llama-guard-3-8b", - "owner": "meta", - "is_official": false, - "paper_url": "https://arxiv.org/abs/2407.21783", - "run_count": 356535, - "url": "https://replicate.com/meta/llama-guard-3-8b", + "cover_image_url": "https://replicate.delivery/xezq/NJxpchtMgYI5GdFnuUFrBUbNOoQe8GGpfrECUWID5HWQAXDVA/tmp1vhr_qld.mp4", + "created_at": "2025-07-22T16:20:08.063207Z", + "description": "Upscale videos by 4x, up to a maximum of 4k", + "github_url": null, + "license_url": null, + "name": "upscale-v1", + "owner": "runwayml", + "is_official": true, + "paper_url": null, + "run_count": 4938, + "url": "https://replicate.com/runwayml/upscale-v1", "visibility": "public", - "weights_url": "https://huggingface.co/meta-llama/Llama-Guard-3-8B" + "weights_url": null }, "basic_fields": [ - "prompt", - "assistant" + "video" ] }, { - "title": "Snowflake Arctic Instruct", - "description": "An efficient, intelligent, and truly open-source language model", - "namespace": "replicate.text.generate", - "node_type": "replicate.text.generate.Snowflake_Arctic_Instruct", + "title": "Topaz Video Upscale", + "description": "Video Upscaling from Topaz Labs", + "namespace": "replicate.video.enhance", + "node_type": "replicate.video.enhance.Topaz_Video_Upscale", "properties": [ { - "name": "name", + "name": "video", "type": { - "type": "str", - "optional": true + "type": "video" }, - "default": null, - "title": "Name" + "default": { + "type": "video", + "uri": "", + "asset_id": null, + "data": null, + "metadata": null, + "duration": null, + "format": null + }, + "title": "Video", + "description": "Video file to upscale" }, { - "name": "name_file", + "name": "target_fps", "type": { - "type": "str", - "optional": true + "type": "int" }, - "default": null, - "title": "Name File" + "default": 60, + "title": "Target Fps", + "description": "Target FPS (choose from 15fps to 120fps)", + "min": 15.0, + "max": 120.0 + }, + { + "name": "target_resolution", + "type": { + "type": "enum", + "values": [ + "720p", + "1080p", + "4k" + ], + "type_name": "nodetool.nodes.replicate.video.enhance.Topaz_Video_Upscale.Target_resolution" + }, + "default": "1080p", + "title": "Target Resolution", + "description": "Target resolution" } ], "outputs": [ { "type": { - "type": "str" + "type": "video" }, "name": "output" } ], "the_model_info": { - "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/793e32b4-913c-4036-a847-4afb38e42fc1/Snowflake_Arctic_Opengraph_120.png", - "created_at": "2024-04-24T00:08:29.300675Z", - "description": "An efficient, intelligent, and truly open-source language model", - "github_url": "https://github.com/Snowflake-Labs/snowflake-arctic", - "license_url": "https://www.apache.org/licenses/LICENSE-2.0", - "name": "snowflake-arctic-instruct", - "owner": "snowflake", + "cover_image_url": "https://tjzk.replicate.delivery/models_models_featured_image/8252807c-a5ac-4008-96a5-814201b4738a/topaz_img.png", + "created_at": "2025-04-24T21:56:18.449571Z", + "description": "Video Upscaling from Topaz Labs", + "github_url": null, + "license_url": null, + "name": "video-upscale", + "owner": "topazlabs", "is_official": true, "paper_url": null, - "run_count": 1979650, - "url": "https://replicate.com/snowflake/snowflake-arctic-instruct", + "run_count": 720556, + "url": "https://replicate.com/topazlabs/video-upscale", "visibility": "public", "weights_url": null }, "basic_fields": [ - "name", - "name_file" + "video", + "target_fps", + "target_resolution" ] } ] diff --git a/uv.lock b/uv.lock index 758ef42..337bf26 100644 --- a/uv.lock +++ b/uv.lock @@ -3162,7 +3162,7 @@ wheels = [ [[package]] name = "nodetool-core" -version = "0.6.2rc22" +version = "0.6.2rc26" source = { registry = "https://nodetool-ai.github.io/nodetool-registry/simple/" } dependencies = [ { name = "aioconsole" }, @@ -3171,6 +3171,7 @@ dependencies = [ { name = "aiosqlite" }, { name = "annotated-types" }, { name = "anthropic" }, + { name = "attrs" }, { name = "authlib" }, { name = "boto3" }, { name = "bs4" }, @@ -3265,12 +3266,12 @@ dependencies = [ { name = "websockets" }, ] wheels = [ - { url = "https://github.com/nodetool-ai/nodetool-core/releases/download/v0.6.2-rc.22/nodetool_core-0.6.2rc22-py3-none-any.whl" }, + { url = "https://github.com/nodetool-ai/nodetool-core/releases/download/v0.6.2-rc.26/nodetool_core-0.6.2rc26-py3-none-any.whl" }, ] [[package]] name = "nodetool-replicate" -version = "0.6.2rc22" +version = "0.6.2rc26" source = { editable = "." } dependencies = [ { name = "nodetool-core" }, @@ -3284,8 +3285,8 @@ stable = [ [package.metadata] requires-dist = [ - { name = "nodetool-core", specifier = "==0.6.2rc22" }, - { name = "nodetool-core", marker = "extra == 'stable'", specifier = "==0.6.2rc22" }, + { name = "nodetool-core", specifier = "==0.6.2rc26" }, + { name = "nodetool-core", marker = "extra == 'stable'", specifier = "==0.6.2rc26" }, { name = "replicate" }, ] provides-extras = ["stable"]