◆ TIPO Prompt Optimizer
Rank and clean up a prompt automatically
- optimized_prompt
- candidate_prompts
- diagnostics
One thing worth clearing up before you install this: if you've used SwarmUI or Forge, "TIPO" might already mean something specific to you - KBlueLeaf's TIPO-500M-ft, a small language model on Hugging Face that expands and rewrites tag prompts. This node is not that. It's EasyIllustrious's own, same-named take on the same general idea: take a rough prompt, generate several candidate rewrites, and pick the best one - but implemented as a self-contained function inside the pack rather than a separate model checkpoint you download and load. No extra weights to fetch, no GPU model load, but also don't expect the exact phrase-level rewriting behavior the original LLM-based tool is known for. Same name, different machinery.
What it does
TIPOPromptOptimizer takes a prompt (multiline string - comma-separated tags recommended, per the tooltip) and generates candidates (3–32, default 8) variant versions of it. enable_synonyms (default on) allows synonym swaps between candidates so they're meaningfully different from each other rather than near-duplicates. flavor (balanced/vibrant/soft/natural) biases which candidate actually wins the ranking - this is the same flavor system the pack's scene-generator nodes expose when their own "Enable TIPO Optimization" toggle is on, so if you've used those, the behavior here should feel familiar. max_length (80–800, default 320) is a soft character cap on the winning result, and seed (0 = auto) makes the candidate generation reproducible if you want the same run twice.
Two optional fields let you steer the ranking rather than just accept whatever wins on its own: negative_prompt gives it terms to actively downweight or strip out of candidates, and style_anchors (default balanced colors, clean lineart, consistent shading) names tags it should favor pulling candidates toward.
Outputs
Three strings: optimized_prompt is the winning candidate - the one you actually wire into your CLIP text encoder. candidate_prompts gives you the full set it generated, useful if the winner isn't quite right and you want to see what else it considered instead of re-rolling blind. diagnostics reports on how it scored things, which is the place to look if you're trying to understand why a particular candidate won.
When to reach for this over the scene generators' built-in version
If you're already using IllustriousScenesPlus or IllustriousSmartSceneGenerator, you don't need this node - both have their own Enable TIPO Optimization toggle running the same logic internally. Reach for the standalone version when you're optimizing a prompt that didn't come from either of those: something typed by hand, built from IllustriousPrompt, or assembled from several of this pack's other selector nodes chained together.
Installing it
ComfyUI Manager: search "EasyIllustrious," install, restart - the recommended path. Manual: cd ComfyUI/custom_nodes && git clone https://github.com/regiellis/ComfyUI-EasyIllustrious, then pip install -r ComfyUI-EasyIllustrious/requirements.txt inside your ComfyUI environment, then restart.
Troubleshooting
If you were expecting the real TIPO model's style of output and this node's results feel more like reshuffled synonyms than a genuine rewrite, that's the architecture difference above, not a bug - it's candidate ranking, not language generation. If every candidate keeps coming back similar to each other, bump candidates up and make sure enable_synonyms is actually on; if the winning prompt keeps getting truncated in a way that drops something important, raise max_length rather than fighting it through style_anchors. And as with the rest of this pack, it's beta-stage, single-developer work - check diagnostics and candidate_prompts rather than trusting optimized_prompt blind on a prompt that really matters.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Base prompt to optimize (comma-separated tags recommended). | |
| candidates | INT | 83–32 | How many prompt variants to generate and rank. |
| seed | INT | 00–2147483647 | Random seed (0 = auto). |
| enable_synonyms | BOOLEAN | true | Allow synonym swaps for variation. |
| flavor | COMBO | balanced | Flavor bias for ranking. |
| max_length | INT | 32080–800 | Soft cap for final prompt length (characters). |
| negative_promptopt | STRING | Terms to avoid (downweighted/removed). | |
| style_anchorsopt | STRING | balanced colors, clean lineart, consistent shading | Anchor tags to encourage in the optimized prompt. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| optimized_prompt | STRING | — |
| candidate_prompts | STRING | — |
| diagnostics | STRING | — |