System Message Presets
Grab a System Prompt for Flux2-Style LLM Encoders, Don't Type It Again
- system_prompt
Modern image models don't read your prompt with CLIP anymore - the encoder is a general-purpose LLM and your prompt is a chat turn. Those models take a system message too, and if you're hand-writing the same "you are FLUX.2 by Black Forest Labs, an image-editing expert..." block into every workflow, UC_SystemMessagePresets is here to end that. It's a dropdown of ready-made system prompts, plus one toggle.
What's in the dropdown
The presets come straight from the pack's presets collection, and there are three families:
- F2_SYSTEM_MESSAGE - the default. A generic "you are an AI that reasons about image descriptions" system prompt used in Flux2-style workflows.
- F2_SYSTEM_MESSAGE_UPSAMPLING_T2I / I2I - expert prompt-engineering personas for upscaling, one for text-to-image, one for image-editing workflows. These are the "rewrite my prompt to be more descriptive while keeping the subject" instructions.
- A long list of style presets - PHOTOGRAPHY_PHOTOREALISM, 3D, ANIME, CYBERPUNK, GHIBLI, PIXAR, DISNEY, COMIC_BOOK, POKEMON, MINECRAFT, PIXEL_ART, RETRO_GAME, and a couple dozen more. Each one instructs the model to convert your editing request into a concise instruction that pushes the output toward that style while preserving composition and identity.
The style presets are the genuinely useful part if you run image-edit models (Flux2 dev, Qwen-Image lineage): they turn "make it look like X" into the kind of structured, single-instruction edit prompt those LLM encoders actually respond to - which, per the prompt-engineering consensus, is exactly how you get better adherence from an instruction-following encoder.
The two inputs, and the one that's a trap
- preset - the dropdown. That's it.
- escape_parentheses (default off) - when on, every unescaped
(and)in the preset gets backslash-escaped before output. The tooltip says it plainly: it prevents errors from parentheses left in the prompt. If the preset's output is going into a text field that a CLIP-era weight parser will chew on, flip this on so(word:1.3)-style syntax doesn't get misinterpreted as weights. On an LLM encoder it matters less, but it's harmless insurance.
The output is a single STRING socket, system_prompt, which wires straight into the system_prompt input of the pack's system-prompt text encode nodes (UC_TextEncodeFlux2SystemPrompt, UC_TextEncodeKleinSystemPrompt, the SystemEdit family) or any text field.
Installing it
It ships in ComfyUI-UtilsCollection by silveroxides:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
Restart ComfyUI, or search "ComfyUI-UtilsCollection" in Manager. Dependencies are just opencv-python and typing-extensions - this is a pure text node.
Where people get tripped up
The presets are fixed strings from the pack, so if you want your own system message you'll be editing a workflow JSON or just typing it directly - the node is for the stock set, not a custom library. And don't expect the preset to force a style; it's guidance for the encoder, and a strong positive prompt can override it. If a style preset seems to do nothing on your model, check that the model's encoder is actually an LLM-encoder type that consumes system messages at all - feed these into a plain CLIP encoder and they're just words in the prompt.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | F2_SYSTEM_MESSAGE | 85 options: F2_SYSTEM_MESSAGE, F2_SYSTEM_MESSAGE_UPSAMPLING_I2I, F2_SYSTEM_MESSAGE_UPSAMPLING_T2I, STYLE_3D, STYLE_70S_SCIFI, STYLE_ADULT_SWIM, +79 |
| escape_parentheses | BOOLEAN | false | Prevents errors from parentheses left in the prompt. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| system_prompt | STRING | — |