Nodes/ComfyUI-NynxzNodes/Qwen3-VL Describe
ComfyUI Node

Qwen3-VL Describe

Run your Qwen3-VL text encoder as an actual LLM — no llama.cpp, no second model

By Nynxz·Created 10 months ago·Updated a day ago· 0
Qwen3-VL Describe
  • clip
  • image
  • text
promptDescribe this image in detail.
systemYou are a helpful assistant.
max_tokens256
do_sampletrue
temperature0.70
top_k50
top_p0.90
min_p0.00
repetition_penalty1.05
seed0

Here's a trick people don't expect: the CLIP you already load to condition an image model is itself a language model, and nothing stops you from running it as one. Qwen3-VL Describe from ComfyUI-NynxzNodes does exactly that - it takes a Qwen3-VL text encoder, an image, and a prompt, and generates text through ComfyUI's own inference path. No llama.cpp, no transformers, no separate model eating VRAM. The same qwen3vl_4b / qwen3vl_8b encoder you feed the pack's Text Encode (Fusion) becomes a captioner, prompt expander, or VQA bot on demand.

The author's point is a good one: captioning a reference and fusing it are the same model doing two jobs, so there's no second load and no second VRAM footprint. If you already run a Qwen-Image-family or Krea 2 workflow, this is essentially a free LLM riding on infrastructure you already have.

What you set

  • clip - the Qwen3-VL text encoder (the same load you use for Fusion/Qwen-Image).
  • prompt - your instruction or question. Defaults to "Describe this image in detail."
  • image (optional) - the picture to look at. Leave it unwired and it's a plain text prompt, which makes this a passable text LLM too.
  • max_tokens (default 256) - generation length cap; the model also stops at its own end-of-turn token, so for simple captions the default usually suffices.
  • system - the system prompt, defaulting to the standard "You are a helpful assistant."

Then the sampling stack - do_sample (on by default), temperature, top_k, top_p, min_p, repetition_penalty, seed. Flip do_sample off and the sampler parameters are ignored for a greedy, deterministic run. For captioning you often want deterministic; for creative prompt expansion, sampling with a bumped temperature is the point. Everything from system down folds into an "advanced" group in the UI, so the collapsed node is friendly.

The single output is text - a string you can pipe into a prompt field, a save node, or the pack's String Template Parser if you want to build workflows around the result.

What it's good for

Auto-captioning batches of images (or generated frames) to build LoRA training data - the Qwen3-VL line is the community's default local captioner for exactly this. Expanding a terse prompt into the fuller phrasing a model prefers. And plain image Q&A, which is more useful than it sounds once you start using it to inspect your own outputs ("what's actually in this frame?").

Install

Part of Nynxz's Custom Nodes: ComfyUI Manager → search "NynxzNodes" and install from the registry, or

cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzNodes

No pip dependencies - this is what makes the "no llama.cpp" claim real. Hand-clones need the frontend built (pnpm install && pnpm build; web/ is gitignored), so prefer Manager/registry. Restart ComfyUI; update ComfyUI if nodes don't register.

Gotchas

The model must actually be a Qwen3-VL encoder for the vision half to work - feeding it a plain CLIP gives you a text-only model that can't see the image. And note the instruct builds carry the usual assistant-style refusals; if you caption NSFW training data, you may hit the same abliterated-build workaround the community uses for Qwen3-VL generally.

CategoryNynxz/Qwen3-VL

Inputs (12)

NameTypeDefaultDescription
clipCLIPA Qwen3-VL 4B/8B text encoder (as loaded for Qwen-Image).
promptSTRINGDescribe this image in detail.The instruction / question for the model.
systemSTRINGYou are a helpful assistant.System prompt.
max_tokensINT2561–4096Maximum new tokens to generate. Generation also stops at the model's end-of-turn token.
do_sampleBOOLEANtrueSample (on) vs greedy/deterministic (off). Off ignores temperature/top-k/top-p.
temperatureFLOAT0.700–2
top_kINT500–200
top_pFLOAT0.900–1
min_pFLOAT0.000–1
repetition_penaltyFLOAT1.051–2
seedINT00–18446744073709550000Sampling seed (used when do_sample is on).
imageoptIMAGEOptional image to look at. Without it this is a plain text prompt.

Outputs (1)

NameTypeDescription
textSTRING