Text Encode with Flux2 Klein System Prompt
The Text Encode That Lets You Edit Klein's Thinking Block
- clip
- CONDITIONING
Flux 2 Klein is the distilled answer to "Flux 2 is too heavy for my card," and it runs on a Qwen3 LLM as its text encoder - which means your prompt is a chat turn with roles, and Klein even has a reasoning block it fills in before answering. UC_TextEncodeKleinSystemPrompt is the encode node that lets you rewrite both of those: the system message and the <think> content Klein generates before the actual image instruction. You can inject your own thinking.
Why you'd reach for it
Klein's encoder doesn't read tags - it reads an instruction, and the template this node builds is:
<|im_start|>system
<your system prompt><|im_end|>
<|im_start|>user
<your prompt><|im_end|>
<|im_start|>assistant
<think>
<your thinking content>
</think>
The thinking_content input is the genuinely novel knob here. Leave it empty and the template emits an empty think block - the default behavior - or type custom reasoning ("the subject is a red car on a rainy street; preserve the car's exact proportions...") and that becomes the reasoning the model conditions on. That's a lever no CLIP-era encoder ever had, and it's exactly the kind of structured prompting the community has found works on LLM-encoder models.
With no system prompt, the template simply omits the system turn and goes straight to the user turn + think block, so the node degrades gracefully.
The inputs
- clip - Klein's Qwen3 encoder.
- prompt - the actual generation/instruction text.
- system_prompt - role framing; leave empty for no system turn.
- thinking_content - custom reasoning to inject into the think block; empty = default.
Both prompt and system_prompt are dynamic-prompts aware. Output is one CONDITIONING tensor.
Installing it
It's part of ComfyUI-UtilsCollection by silveroxides:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
Restart ComfyUI, or install "ComfyUI-UtilsCollection" via Manager. Requirements are the pack's minimal opencv-python + typing-extensions; encoding runs through core.
The caveats
Remember Klein is guidance-distilled - it runs at CFG 1, and prompt weighting is disabled on its encoder, so (word:1.3) does nothing here. The think block is conditioning, not a literal hidden monologue: it shapes the encoded instruction, and its effect is model-dependent, so treat it as something to experiment with rather than a switch you flip for guaranteed wins. And don't confuse this with the Flux2 dev encode - dev uses a different (Mistral-3) encoder and template; the pack has a separate node for it. Klein's whole appeal is fitting on ~13GB of VRAM; if you're on the 9B, watch your encoder memory before anything else.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| prompt | STRING | — | |
| system_prompt | STRING | — | |
| thinking_content | STRING | Custom thinking content to inject. Leave empty for default. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |