Text Generate Qwen3.5 (System Prompt)
Qwen3.5 as a chat bot in your node graph, system prompt included
- clip
- image
- generated_text
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.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| prompt | STRING | Message sent to the model. Braces can be used normally. | |
| system_message | STRING | Optional instructions applied before the user message. | |
| max_length | INT | 5121–8192 | — |
| sampling_mode | COMBO | 2 options: [object Object], [object Object] | |
| imageopt | IMAGE | — | |
| thinkingopt | BOOLEAN | false | Include model thinking text when available. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| generated_text | STRING | — |