Merge pull request #151 from Runware/feature-Krea2

Added support for creativity, moodboard in Runware Image Inference Settings
This commit is contained in:
Sirshendu Ganguly
2026-05-28 12:52:18 +05:30
committed by GitHub
6 changed files with 116 additions and 3 deletions
@@ -0,0 +1,56 @@
"""
Runware Image Inference Settings Moodboards
Builds settings.moodboards: list of { "id": "<uuid>", "strength": <number> }.
"""
from typing import Any, Dict, List, Tuple
class RunwareImageInferenceSettingsMoodboards:
"""Build moodboards list for image inference settings."""
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"id": ("STRING", {
"default": "",
"tooltip": "Moodboard UUID (settings.moodboards[].id).",
}),
},
"optional": {
"useStrength": ("BOOLEAN", {
"default": False,
"label_on": "Enabled",
"label_off": "Disabled",
"tooltip": "Include strength in moodboards entry.",
}),
"strength": ("FLOAT", {
"default": 0.35,
"min": -0.5,
"max": 1.5,
"step": 0.01,
"tooltip": "Moodboard strength (-0.5 to 1.5). Only used when useStrength is enabled.",
}),
},
}
RETURN_TYPES = ("RUNWAREIMAGEINFERENCEMOODBOARDS",)
RETURN_NAMES = ("moodboards",)
FUNCTION = "build_moodboards"
CATEGORY = "Runware"
DESCRIPTION = (
"Build settings.moodboards for image inference settings. "
"Outputs one-element array with required id and optional strength."
)
def build_moodboards(self, **kwargs) -> Tuple[List[Dict[str, Any]]]:
moodboard_id = str(kwargs.get("id") or "").strip()
if not moodboard_id:
return ([],)
entry: Dict[str, Any] = {"id": moodboard_id}
if kwargs.get("useStrength", False):
entry["strength"] = float(kwargs.get("strength", 0.35))
return ([entry],)
+25 -2
View File
@@ -3,7 +3,8 @@ Runware Image Inference Settings (registered as Runware Settings for workflow co
Provides settings for image generation including temperature, systemPrompt, topP, layers,
quality, background, style, search, promptExtend, editRegions, thinking (boolean),
thinkingLevel (high/medium/low), sequential, renderingSpeed (TURBO/DEFAULT/QUALITY),
magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, and colorPalette
magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, creativity (raw/low/medium/high), colorPalette,
and moodboards
(from Runware Image Inference Settings Color Palette).
"""
@@ -193,6 +194,17 @@ class RunwareSettings:
"max": 100,
"step": 1,
}),
"useCreativity": ("BOOLEAN", {
"tooltip": "Enable to include creativity in settings.",
"default": False,
}),
"creativity": (["raw", "low", "medium", "high"], {
"default": "medium",
"tooltip": "Creativity level. Only used when 'Use Creativity' is enabled.",
}),
"moodboards": ("RUNWAREIMAGEINFERENCEMOODBOARDS", {
"tooltip": "Connect Runware Image Inference Settings Moodboards. When connected with at least one entry, it is merged into settings.moodboards.",
}),
}
}
@@ -203,7 +215,8 @@ class RunwareSettings:
DESCRIPTION = (
"Configure general settings for image generation: temperature, system prompt, top-p, layers, quality, background, style, search, "
"promptExtend, editRegions (JSON), thinking (boolean), thinkingLevel (high/medium/low), sequential, "
"renderingSpeed (TURBO/DEFAULT/QUALITY), magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, and optional colorPalette from the Color Palette node."
"renderingSpeed (TURBO/DEFAULT/QUALITY), magicPrompt (AUTO/ON/OFF), autoCrop, dilatePixels, "
"creativity (raw/low/medium/high), and optional colorPalette and moodboards from dedicated settings nodes."
)
def createSettings(self, **kwargs) -> tuple[Dict[str, Any]]:
@@ -229,6 +242,7 @@ class RunwareSettings:
useMagicPrompt = kwargs.get("useMagicPrompt", False)
useAutoCrop = kwargs.get("useAutoCrop", False)
useDilatePixels = kwargs.get("useDilatePixels", False)
useCreativity = kwargs.get("useCreativity", False)
# Get value parameters
temperature = kwargs.get("temperature", 1.0)
@@ -241,6 +255,7 @@ class RunwareSettings:
style = kwargs.get("style", "auto")
renderingSpeed = kwargs.get("renderingSpeed", "DEFAULT")
magicPrompt = kwargs.get("magicPrompt", "AUTO")
creativity = kwargs.get("creativity", "medium")
# Build settings dictionary - only include what is enabled
settings: Dict[str, Any] = {}
@@ -290,6 +305,9 @@ class RunwareSettings:
palette: Optional[List[Dict[str, Any]]] = kwargs.get("colorPalette")
if palette is not None and isinstance(palette, list) and len(palette) > 0:
settings["colorPalette"] = palette
moodboards: Optional[List[Dict[str, Any]]] = kwargs.get("moodboards")
if moodboards is not None and isinstance(moodboards, list) and len(moodboards) > 0:
settings["moodboards"] = moodboards
if useRenderingSpeed:
settings["renderingSpeed"] = str(renderingSpeed)
@@ -299,6 +317,11 @@ class RunwareSettings:
settings["autoCrop"] = bool(kwargs.get("autoCrop", False))
if useDilatePixels:
settings["dilatePixels"] = int(kwargs.get("dilatePixels", 10))
if useCreativity:
creativity = str(creativity)
if creativity not in ("raw", "low", "medium", "high"):
raise ValueError("creativity must be raw, low, medium, or high when useCreativity is enabled.")
settings["creativity"] = creativity
# Clean up None values
settings = {k: v for k, v in settings.items() if v is not None}