Nodes/ComfyUI-UtilsCollection/VLM System Instruction Advanced Presets
ComfyUI Node

VLM System Instruction Advanced Presets

Preset captioning prompts, plus the knobs to actually customize them

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
VLM System Instruction Advanced Presets
    • system_instruction
    presetaction_system_instruction
    jailbreakfalse
    system_query
    user_query

    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.

    Categoryadvanced/text

    Inputs (4)

    NameTypeDefaultDescription
    presetCOMBOaction_system_instruction29 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
    jailbreakBOOLEANfalse
    system_querySTRING
    user_querySTRING

    Outputs (1)

    NameTypeDescription
    system_instructionSTRING