๐ค Multi-Image Comparison
Six images, one prompt, a written verdict โ A/B testing reads this good
- model_config
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- context
You upscaled the same render two ways and now you're squinting at side-by-side PNGs trying to decide which is actually sharper. This node does the squinting for you - it feeds up to six images to a real vision-language model and comes back with a written verdict. It's the pack's "tell me what changed" utility, built for exactly those A/B workflows: comparing generations, checking how an edit ripples through a sequence, judging style or quality. Instead of eyeballing pixels, you get a paragraph arguing for one over the other. Genuinely handy when the difference is subtle.
How it works
This is a preset-prompt wrapper around the pack's Transformers mode. You feed it a model_config (of type TRANSFORMERS_MODEL, straight out of the pack's VisionModelLoaderTransformers node - the Qwen3-VL family), plus images, and it runs them through the same generation engine the single-image vision node uses.
The trick is the comparison_type dropdown. It has seven preset lenses plus custom, and each one maps to a written English prompt sent to the model:
similarities- what the images sharedifferences- what makes each uniquechanges- what changed from one to the nextrelationships- how they connect, what story they tell togethersequence- treating them as a timelinequality- resolution, clarity, composition, technical executionstyle- artistic technique and aesthetic choices
The UI labels are bilingual (e.g. "similarities - ๆพๅบ็ธไผผไนๅค"), but the prompts actually sent to the model are English. Pick custom and it uses your custom_prompt field instead - that's the one input that matters when you want the comparison framed your way, like "which has more accurate hands."
The inputs that matter
model_config- required; no config, no model. Wire it from the loader.comparison_type- the whole point of the node; this is the lens.image_1throughimage_6- all optional; wire only what you have. Two images is the common case.temperature(default 0.7) andmax_tokens(default 2048) - leave alone unless output is rambly or terse.seed- lock it when you want the same comparison reproducible.
Output is a single context string. It's an output node, so the text lands on the node itself; wire it to a text preview or downstream text node to move it around the graph.
Where people get burned
This is the heavy path, not the GGUF one. It runs a full Qwen3-VL checkpoint through HuggingFace Transformers - several gigabytes downloaded on first run, and real VRAM once loaded. The engine loads the model on demand, so your first comparison pays the load cost. Feed it your biggest renders, too: images get resized internally to the model's expected pixel range, and a tiny preview loses the detail you were comparing. And remember the ecosystem's debugging rule - change one thing at a time, lock the seed, then compare. This node makes that habit almost too easy.
Install
ComfyUI Manager (search "ComfyUI-GGUF-FX") or:
cd ComfyUI/custom_nodes
git clone https://github.com/weekii/ComfyUI-GGUF-FX.git
cd ComfyUI-GGUF-FX
pip install -r requirements.txt
Restart, and let the first run download the checkpoint while you make coffee. If you're VRAM-capped, this is the moment to consider the pack's GGUF vision path instead - full-precision Transformers models are why GGUF quantization exists in the first place.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| model_config | TRANSFORMERS_MODEL | โ | |
| comparison_type | COMBO | similarities - ๆพๅบ็ธไผผไนๅค | ๅฏนๆฏ็ฑปๅ |
| custom_prompt | STRING | ่ชๅฎไนๆ็คบ่ฏ๏ผๅฝ้ๆฉ custom ๆถไฝฟ็จ๏ผ | |
| temperature | FLOAT | 0.700โ2 | ็ๆๆธฉๅบฆ๏ผๆงๅถ่พๅบ็้ๆบๆง๏ผQwen3-VL ๆจ่: 0.7๏ผ |
| max_tokens | INT | 2048128โ256000 | ๆๅคง็ๆ token ๆฐ |
| seed | INT | 00โ18446744073709550000 | ้ๆบ็งๅญ๏ผ็จไบๅฏ้ๅค็็ๆ็ปๆ |
| image_1opt | IMAGE | โ | |
| image_2opt | IMAGE | โ | |
| image_3opt | IMAGE | โ | |
| image_4opt | IMAGE | โ | |
| image_5opt | IMAGE | โ | |
| image_6opt | IMAGE | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| context | STRING | โ |