QwenVL (Basic)
QwenVL (Basic) hides every knob and still reads your images
- image
- video
- source_path
- RESPONSE
The sibling to QwenVL (Advanced) in this pack, and honestly the one you should probably start with. QwenVL (Basic) is the same vision-language engine with every sampling knob welded shut, so your first run is "pick a model, pick a prompt, read the answer" instead of a wall of floats. The defaults are good enough that the only reason to reach for Advanced is when you know exactly which default you want to break.
What you get to touch
The Basic node strips the list down to what actually matters:
model_name- the same 83-model menu, HuggingFace and [GGUF] entries, first run downloads weights automatically.enable_thinking- the Qwen3.5 toggle. ON reasons step-by-step in<think>…</think>blocks, OFF answers directly. Only affects Qwen3.5 models; ignored for the rest.preset_prompt/custom_prompt- the template that decides whether you get "Tags" or "Ultra Detailed Description" or your own instruction.quantizationandattention_mode- HF models only. 4-bit / 8-bit / FP16, and the attention backend.max_tokens- output length, default 512.keep_model_loadedandseed- caching in VRAM and reproducibility.
That's the entire surface. Everything else - temperature, top_p, repetition_penalty, frame_count, num_beams, device, torch compile - is fixed at the values the author tuned: temperature 0.6, top_p 0.9, repetition penalty 1.2, 16 sampled video frames, greedy-friendly defaults. Those sit right in the middle of the README's own sampling recommendations for both thinking and instruct modes, so you're not losing much.
Why you'd reach for it
Two reasons. First, testing: you want to know whether QwenVL can do the job before you spend an afternoon on parameters, and this node answers that in one run. Second, consistency: no temperature or frame_count knob means every run of the same seed is the same run. If you're auto-captioning a folder and want stable output, that's a feature, not a limitation.
The trade-off is real, though. Want fewer than 16 video frames for a short clip, or a hot temperature for creative descriptions? The knob isn't here - that's Advanced territory. And if you later need GGUF-specific control like gpu_layers or ctx, Basic doesn't expose those either. It's a great door, but it's not the whole house.
How it works
Mechanically it's a thin wrapper over the same backend as Advanced - the process() method literally calls the shared backend with constants: frame_count 16, temperature 0.6, top_p 0.9, repetition_penalty 1.2, num_beams 1, device auto. Feed it an image tensor or a video frame batch, pick a preset, and out pops RESPONSE, a single STRING you can pipe into Save Text or any text consumer. The source_path input is accepted but not consumed by the backends in the current release, so wire up the tensors.
Install
Same pack, same steps. ComfyUI Manager → search "QwenVL Utils" → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/AkihaTatsu/ComfyUI-QwenVL-Utils.git
cd ComfyUI-QwenVL-Utils
pip install -r requirements.txt
If you want 4/8-bit quantization add bitsandbytes; GGUF models need llama-cpp-python (Qwen3.5 GGUF specifically needs JamePeng's fork at >= 0.3.30).
Troubleshooting
The usual suspects from the README: OOM means step down the quantization or switch to a [GGUF] Q4_K_M model; ImportError: transformers means upgrade to transformers>=4.45.0; flash-attn errors mean you don't have an Ampere+ GPU - auto mode will fall back to SDPA, so just leave attention_mode alone. The pack is new (no community footprint yet), so when something odd happens, the parent implementation's threads on r/comfyui are the best place to find people who've already hit it - the two packs share most of their failure modes.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model_name | COMBO | Qwen3.5-0.8B | Select the vision-language model. HuggingFace models offer full-precision inference; [GGUF] models use quantized llama.cpp backend for lower VRAM. First run downloads weights automatically. |
| enable_thinking | BOOLEAN | false | [Qwen3.5+ models only] Enable Thinking mode for Qwen3.5 unified models. When ON (Thinking mode), the model reasons step-by-step inside <think>…</think> blocks before producing the final answer — best for complex reasoning, math, and coding tasks. When OFF (Instruct mode), the model responds directly without internal reasoning — faster and more concise for straightforward queries. Only affects Qwen3.5 models; ignored for other model families. |
| quantization | COMBO | None (FP16) | [HF models only] Precision vs VRAM trade-off. FP16 gives the best quality; 8-bit suits 8-16 GB GPUs; 4-bit fits 6 GB or lower but is slower. |
| attention_mode | COMBO | auto | [HF models only] Attention backend selection. • auto: Auto-select best available (recommended) • flash_attention_2: External flash-attn package (best performance, needs separate installation) • sdpa_flash: PyTorch SDPA Flash backend (excellent performance, best compatibility) • sage_attention: SageAttention wrapper (experimental, memory efficient) • sdpa_math: PyTorch SDPA math backend (stable fallback) • eager: Standard PyTorch attention (slowest, always works) • sdpa: Legacy option, auto-selects Flash or math |
| preset_prompt | COMBO | 🖼️ Detailed Description | Built-in instruction template describing how the model should analyze the media. Selecting '❌ None' sends no system instruction (use custom_prompt instead). |
| custom_prompt | STRING | When filled, completely replaces the preset prompt template. Leave empty to use the selected preset_prompt. | |
| max_tokens | INT | 51264–256000 | Maximum number of new tokens the model may generate. Larger values produce longer answers but take more time and memory. Both HF and GGUF backends respect this limit. |
| keep_model_loaded | BOOLEAN | false | Keep the model loaded in VRAM/RAM after inference so subsequent runs skip the loading step. Disable to free memory after each run. |
| seed | INT | 11–4294967295 | Random seed for sampling reproducibility and video frame selection. Reuse the same seed to reproduce identical results. |
| imageopt | IMAGE | — | |
| videoopt | IMAGE | — | |
| source_pathopt | PATH | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| RESPONSE | STRING | — |