Nodes/ComfyUI-UtilsCollection/Text Encode System Prompt (Scaled Bias) (Legacy)
ComfyUI Node

Text Encode System Prompt (Scaled Bias) (Legacy)

One encoder, three model templates, zero guessing

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
Text Encode System Prompt (Scaled Bias) (Legacy)
  • clip
  • CONDITIONING
model_typeflux2dev
prompt
system_prompt
thinking_content

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, or z-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 flux2devklein 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_type wrong 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_content doing nothing on flux2dev/z-image has 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.

Categoryadvanced/conditioning

Inputs (5)

NameTypeDefaultDescription
clipCLIP
model_typeCOMBOflux2devSelect the model type to use the correct template format.
promptSTRING
system_promptSTRING
thinking_contentSTRING(Klein only) Custom thinking content to inject. Leave empty for default.

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING