Text Encode System Prompt (Scaled Bias) (Legacy)
One encoder, three model templates, zero guessing
- clip
- CONDITIONING
If you've been reading through this pack's encoder nodes you've noticed a pattern: Flux 2 dev wants [SYSTEM_PROMPT][INST] brackets, Klein wants chatml plus a <think> block, Z-Image wants its own <|im_start|> flavor. Each has a dedicated node. This is the one node that does all three behind a single dropdown - the generalist you reach for when you're not sure which model you'll run, or when you want one encoder in a workflow and a model_type combo to flip it.
How it works
One interface, one output (CONDITIONING):
- model_type - the combo that decides the template:
flux2dev,klein, orz-image. - prompt - your request.
- system_prompt - behavior instructions, wrapped in the selected model's format.
- thinking_content - used only by
klein(per the tooltip), where it fills the<think>block; ignored for the other two.
Select the model type and the node picks the correct wrapper: Flux 2 dev's Mistral-style [SYSTEM_PROMPT]…[/SYSTEM_PROMPT][INST]…[/INST], Klein's chatml with think block, or Z-Image's chatml system template. The scaled-bias layer is always on, so <tag=strength> emphasis in your prompt works across all three.
Leave system_prompt empty and you get a plain, correctly-templated encode for the selected model. The one catch worth knowing: with klein, an empty system prompt still produces the template with the think block placeholder, because that's how Klein's tokenizer expects the input - a structural requirement, not a bug.
When to use it instead of the per-model nodes
The per-model nodes (ScaledBiasTextEncodeFlux2SystemPrompt, …Klein…, …ZIT…) are slightly more explicit and give you model-specific input names. This one is better when you're building a reusable workflow that might run on different models, or when you're experimenting - swapping flux2dev → klein on the combo is faster than swapping nodes. The tradeoff: you must remember that thinking_content only means something on klein, and the input set is a union, so the UI shows fields that some models ignore.
Where people get burned
- Setting
model_typewrong is silent. No validation stops you from encoding Flux 2 text with Z-Image's template - it just produces worse results. Double-check the combo before a long queue. thinking_contentdoing nothing onflux2dev/z-imagehas confused more than one person. It's Klein-only by design.- Same caveat as the whole family: strengths above ~1.5 in bias tags oversaturate.
Installing it
Ships in silveroxides/ComfyUI-UtilsCollection. ComfyUI Manager: search ComfyUI-UtilsCollection, install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
cd ComfyUI-UtilsCollection
pip install -r requirements.txt # opencv-python, typing-extensions
Restart. No model downloads for the node. Legacy alias of UC_ScaledBiasTextEncodeSystemPrompt, identical behavior.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| model_type | COMBO | flux2dev | Select the model type to use the correct template format. |
| prompt | STRING | — | |
| system_prompt | STRING | — | |
| thinking_content | STRING | (Klein only) Custom thinking content to inject. Leave empty for default. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |