VLM System Instruction Advanced Presets
Preset captioning prompts, plus the knobs to actually customize them
- system_instruction
The plain UC_VLMSysInstrPresets gives you a captioning system prompt, but it's a wall of text you can't touch. This is the version with editing controls bolted on: same preset library, plus system_query and user_query fields that get injected into the preset at defined positions, plus a jailbreak toggle that wraps the whole thing in extra framing. If you want a canned captioning prompt and your own instructions layered into it, this is the node.
What it is
The advanced sibling in the pack's VLM system-instruction family. Same curated preset list as the base node (the system_instructions_vlm library: neutral_*, action_*, photo_*, toon_*, the Ideogram JSON presets, the video-timeline ones). The difference is composition: it lets you build a final system instruction from the preset plus your own injected text, instead of taking the preset verbatim.
How the injection works
The code makes the formula explicit:
preset content
+ system_query_prefix + your system_query
(+ user_query_prefix + your user_query + user_query_suffix)
+ system_query_suffix
(+ jailbreak_prefix / jailbreak_suffix if jailbreak is on)
Concretely: whatever you type in system_query gets wrapped by the preset's "additional instructions" scaffolding and appended to the preset. If you also provide a user_query, it nests inside the system query block. Type only a user_query and it appends on its own. The jailbreak boolean, when enabled, wraps the entire result with the library's jailbreak prefix and suffix.
The point of the query fields is that the presets are written with {system_query} and {user_query} placeholder concepts in their instructions - the captioning rules reference "instructions specified with the system_query variable take priority" - so injecting through these fields keeps the preset's logic coherent. You're filling in the variables the prompt was designed to accept, not appending blindly to a wall of text.
The inputs and output
- preset - the dropdown.
- jailbreak - toggle, wraps the result in extra framing.
- system_query - your instructions, injected into the preset's system-query slot.
- user_query - your subject/style steering, nested inside.
- Output: system_instruction (STRING).
Installing it
Part of ComfyUI-UtilsCollection:
cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection
Restart ComfyUI (or use Manager, search "ComfyUI-UtilsCollection"). No models, minimal deps, needs a current ComfyUI.
Common issues
The mental model to hold: the injected text lands at a specific structural position, not wherever you want it. If your instructions are supposed to override the preset's core rules, system_query is that slot (the preset says so); a user_query is steering, not overriding. And the jailbreak toggle is exactly what it sounds like - it adds framing that pushes an aligned VLM past its usual refusals. It's useful in the uncensored-captioning workflows this whole preset family is built for, but flip it on deliberately, not as a default habit, since it changes both the tone and the refusal behavior of whatever model you feed the result to.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | action_system_instruction | 29 options: action_system_instruction, action_system_instruction_crude, action_system_instruction_qwen, cinematic_dumb_intelligent, ideogram_4_json_instruction, ideogram_4_json_instruction_color, +23 |
| jailbreak | BOOLEAN | false | — |
| system_query | STRING | — | |
| user_query | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| system_instruction | STRING | — |