Tune static workflows to CyberRealisticXL recommended settings

The static workflow JSONs default to CyberRealisticXLPlay (set in an
earlier commit), but the KSampler still had euler/normal/CFG7/20 — the
generic settings I scaffolded with. Updated to the creator-published
defaults: dpmpp_2m_sde / karras / CFG 4 / 28 steps. CLIP skip 1
already correct (no node needed; default behavior).

Added a section to the deployment README spelling out the trade-off:
static workflows are locked to one checkpoint family at a time because
Open WebUI's nodes mapping doesn't expose sampler/CFG/scheduler/CLIP
skip/prefix. For multi-checkpoint use, the smart_image_gen Tool path is
the only one that gets these right per-prompt.

Re-paste workflows into Open WebUI Settings → Images to pick up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-19 12:47:46 -05:00
parent 45d5541be0
commit b815cd6a5f
3 changed files with 32 additions and 12 deletions

View File

@@ -202,11 +202,31 @@ provides a prompt, image, seed, etc. Each entry:
Recognised `type` strings (per Open WebUI source): `model`, `prompt`,
`negative_prompt`, `width`, `height`, `n` (batch size), `steps`, `seed`,
and `image` (img2img / edit only).
and `image` (img2img / edit only). Notably **not** mappable: sampler,
scheduler, CFG, CLIP skip, prompt prefix.
If you swap in a fancier workflow (SDXL, Flux, ControlNet, custom
samplers, NL masking via SAM nodes, etc.), update the matching
`*.nodes.json` so the node IDs and input keys still line up.
This means the static workflow JSONs are tuned for a single checkpoint
family at a time. The shipped defaults match
`CyberRealisticXLPlay_V8.0_FP16.safetensors`
(`dpmpp_2m_sde` / `karras` / CFG 4 / 28 steps / CLIP skip 1 / no prefix).
**If you change the admin's Default Model to a different checkpoint
family** (Pony, NoobAI, Illustrious, etc.), edit the workflow JSONs:
- `KSampler` node: change `sampler_name`, `scheduler`, `cfg`, `steps`
- For checkpoints needing CLIP skip 2: add a `CLIPSetLastLayer` node and
rewire `CLIPTextEncode` nodes through it (see
[openwebui-tools/smart_image_gen.py](openwebui-tools/smart_image_gen.py)
for the exact graph).
- For Pony or NoobAI/Illustrious: the required quality-tag prefix
(`score_9, score_8_up, ...` or `masterpiece, best quality, ...`) has
to be typed by the user every time, since the workflow can't inject
it. **For multi-checkpoint deployments, use the smart_image_gen Tool
instead** — it handles per-checkpoint sampler / CFG / steps / CLIP
skip / prefix automatically based on the LLM's `style` choice.
If you swap in a fancier workflow (Flux, ControlNet, NL masking via
SAM nodes, etc.), update the matching `*.nodes.json` so the node IDs
and input keys still line up.
## Common gotchas

View File

@@ -3,10 +3,10 @@
"class_type": "KSampler",
"inputs": {
"seed": 0,
"steps": 20,
"cfg": 7,
"sampler_name": "euler",
"scheduler": "normal",
"steps": 28,
"cfg": 4.0,
"sampler_name": "dpmpp_2m_sde",
"scheduler": "karras",
"denoise": 0.75,
"model": ["4", 0],
"positive": ["6", 0],

View File

@@ -3,10 +3,10 @@
"class_type": "KSampler",
"inputs": {
"seed": 0,
"steps": 20,
"cfg": 7,
"sampler_name": "euler",
"scheduler": "normal",
"steps": 28,
"cfg": 4.0,
"sampler_name": "dpmpp_2m_sde",
"scheduler": "karras",
"denoise": 1,
"model": ["4", 0],
"positive": ["6", 0],