Nodes/ComfyUI-UtilsCollection/Text Generate Qwen3.5 (System Prompt)
ComfyUI Node

Text Generate Qwen3.5 (System Prompt)

Qwen3.5 as a chat bot in your node graph, system prompt included

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
Text Generate Qwen3.5 (System Prompt)
  • clip
  • image
  • generated_text
prompt
system_message
max_length512
sampling_mode
thinkingfalse

Qwen3.5 is a chat model, and this node finally treats it like one. It runs the Qwen you loaded as a text encoder as an actual conversation: a system_message for standing instructions, a user prompt, an optional image, and a clean text string coming out the other side. If you've been fighting to get a chat-style system prompt into a generation workflow, this is the node that makes it painless.

What it is

The Qwen3.5-specific sibling of the pack's UC_TextGenerate. Where the general node is a Swiss-army LLM with image fusion, this one is a focused chat wrapper: build a message, generate, get text. The author's docstring spells out the design constraint - the chat template is assembled by plain string concatenation, never .format() - so any characters in your input, including {, }, and backslashes, are completely safe. No template-injection errors, ever.

How it works

The node constructs the Qwen3.5 chat template by hand. If you provide a system_message, it goes in a <|im_start|>system block. Then the user block: if you've connected an image, it inserts <|vision_start|><|image_pad|><|vision_end|> before your prompt - the model sees the picture. Then the assistant block.

Here's the subtle bit: when thinking is off, the node inserts an empty <think>\n</think> to explicitly suppress reasoning output, because Qwen3.5 produces thinking by default and you usually don't want it in a caption or a prompt. Flip thinking on and it lets the model reason, and keeps the thinking text in the output.

sampling_mode is the same dynamic combo pattern as the big TextGenerate: on exposes temperature, top_k, top_p, min_p, repetition_penalty, seed, and presence_penalty; off gives deterministic, repeatable output.

The inputs and outputs that matter

  • clip - your Qwen3.5 encoder loaded through ComfyUI.
  • prompt - the actual message. Braces are safe.
  • system_message - optional standing instructions, applied before the user message.
  • image (optional) - a single image the model can see.
  • max_length - response cap (default 512, up to 8192).
  • thinking - include the model's reasoning text when available.
  • Output: generated_text (STRING). Feed it into a text encode, a file-name builder, whatever.

Installing it

Part of ComfyUI-UtilsCollection:

cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection

Restart ComfyUI, or use ComfyUI Manager (search "ComfyUI-UtilsCollection"). The pack's Python deps are minimal and it needs a current ComfyUI - it's written against the modern Core node API.

Common issues

The biggest surprise for people is the thinking behavior: with thinking off you get fast, clean answers; with it on, you get reasoning text mixed into the response, which you may need to strip before the string goes into a diffusion prompt. Also remember this is Qwen3.5-specific - the template won't make sense on other encoders. And the usual VRAM caution from the LLM-in-graph playbook applies: keep max_length sane and don't load a bigger Qwen than your card comfortably holds alongside your diffusion model.

Categoryadvanced/textgen

Inputs (7)

NameTypeDefaultDescription
clipCLIP
promptSTRINGMessage sent to the model. Braces can be used normally.
system_messageSTRINGOptional instructions applied before the user message.
max_lengthINT5121–8192
sampling_modeCOMBO2 options: [object Object], [object Object]
imageoptIMAGE
thinkingoptBOOLEANfalseInclude model thinking text when available.

Outputs (1)

NameTypeDescription
generated_textSTRING