ArchAi3D_Qwen_Encoder_V3
The encoder with a preset for image-vs-text balance and a recommended CFG
- clip
- vae
- image1_vl
- image2_vl
- image3_vl
- image1_latent
- image2_latent
- image3_latent
- conditioning
- latent
- formatted_prompt
- recommended_cfg
By the time a pack is on its third encoder, it's solving a very specific annoyance: people don't want to think about strength numbers. Encoder V3 turns the two strength sliders from V2 into a dropdown of named balances - Image-Dominant through Text-Dominant - and then goes one better: it outputs a recommended CFG value tuned to whichever balance you picked, so you can wire it straight into the KSampler's cfg. It's the encoder for "I know what I want, I just don't want to tune it."
The panel
The new controls, in order of importance:
conditioning_balance- the V3 preset dropdown. Pick a named balance (the tooltip confirms the spectrum runs Image-Dominant → Text-Dominant) and the node sets the context/user strength pairing for you. The tooltip also notes it works great withConditioningAverage, which suggests the intended workflow is averaging this conditioning with something else when you want even finer control.conditioning_balance_override- an optional STRING input. The tooltip says to connect a "Conditioning Balance" node here to override the dropdown; leave it empty and the dropdown rules.manual_context_strength(0–3) andmanual_user_strength(0–3) - only used when the preset is "Custom". The extended 0–3 range exists "for extreme conditioning control," i.e. for people who know exactly why they want 2.7.
Everything else is the V2 platform: system_prompt, image1/2/3_label, image1/2/3_latent_strength, debug_mode, and the optional vae + *_vl/*_latent inputs.
Outputs
Four - one more than the other encoders:
conditioning- text + vision embeddings with reference latent metadata.latent- the image1 latent, VAEDecode-compatible.formatted_prompt- the ChatML prompt for debugging.recommended_cfg(FLOAT) - ⭐ the new one. A suggested CFG scale in the 2.5–5.5 range based on your balance preset. Connect this to the KSampler'scfgparameter and the image/text balance you picked on the front panel is carried all the way to sampling.
How it works
Underneath, it's the V2 two-stage interpolation (context blend + user blend) - the presets are just named combinations of those two alphas, and "Custom" exposes them directly. The extra reach (0–3 vs 0–1.5) is extrapolation past the normal range, which is legal in the interpolation scheme and lets you push either stage hard when the edit demands it. The recommended CFG is computed from the same preset so the prompt strength and the guidance strength move together - the pack's attempt to remove the "why does it look washed out" post-sampling discovery.
The honest take
V3 is a workflow-comfort upgrade, not a quality upgrade over V2 - same pipeline, same outputs, nicer front panel. It earns its keep in two situations: you're building a workflow to share with non-tuners, or you want the balance-to-CFG wiring. If you're solo and comfortable with two sliders, V2 is cheaper. If you find yourself re-deriving "image-dominant needs lower CFG" from memory every session, V3 is the one that just hands it to you.
Install
Pack install, once:
cd ComfyUI/custom_nodes
git clone https://github.com/amir84ferdos/ComfyUI-ArchAi3d-Qwen.git
cd ComfyUI-ArchAi3d-Qwen && pip install -r requirements.txt
Or ComfyUI Manager → "ArchAi3d Qwen". Restart, find it under ArchAi3d/Qwen/Encoders. As always, you need the Qwen-Image-Edit checkpoint + Qwen-VL CLIP, quantized on consumer GPUs. And recommended_cfg only helps if you actually wire it - it's a FLOAT output, not magic.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | Qwen-VL CLIP model for encoding text and vision tokens | |
| prompt | STRING | Text prompt (vision tokens inserted automatically in ChatML format) | |
| system_prompt | STRING | Optional system prompt (wrapped in ChatML <|im_start|>system block) | |
| conditioning_balance | COMBO | V3 PRESET: Choose conditioning balance (Image-Dominant → Text-Dominant). Works great with ConditioningAverage! | |
| conditioning_balance_override | STRING | OPTIONAL: Connect ⚖️ Conditioning Balance node here to override the preset above. Leave empty to use the dropdown. | |
| manual_context_strength | FLOAT | 1.000–3 | CUSTOM ONLY: Manual context strength (only used when preset = Custom). Extended range: 0.0-3.0 for extreme conditioning control |
| manual_user_strength | FLOAT | 1.000–3 | CUSTOM ONLY: Manual user strength (only used when preset = Custom). Extended range: 0.0-3.0 for extreme conditioning control |
| image1_label | STRING | Image 1 | Custom label for Image 1 |
| image2_label | STRING | Image 2 | Custom label for Image 2 |
| image3_label | STRING | Image 3 | Custom label for Image 3 |
| image1_latent_strength | FLOAT | 1.000–2 | Image1 latent strength (1.0=normal, <1.0=weaker, >1.0=stronger) |
| image2_latent_strength | FLOAT | 1.000–2 | Image2 latent strength (1.0=normal, <1.0=weaker, >1.0=stronger) |
| image3_latent_strength | FLOAT | 1.000–2 | Image3 latent strength (1.0=normal, <1.0=weaker, >1.0=stronger) |
| debug_mode | BOOLEAN | false | Enable console logging (shows preset values, strengths, shapes) |
| vaeopt | VAE | VAE for encoding reference latents (required if using latent images) | |
| image1_vlopt | IMAGE | Image 1 for vision encoder (RGB only, expects correct size) | |
| image2_vlopt | IMAGE | Image 2 for vision encoder (RGB only, expects correct size) | |
| image3_vlopt | IMAGE | Image 3 for vision encoder (RGB only, expects correct size) | |
| image1_latentopt | IMAGE | Image 1 for reference latent (RGB only, expects correct size) | |
| image2_latentopt | IMAGE | Image 2 for reference latent (RGB only, expects correct size) | |
| image3_latentopt | IMAGE | Image 3 for reference latent (RGB only, expects correct size) |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | Text+vision embeddings with reference latents metadata attached |
| latent | LATENT | Image1 latent in standard format (for VAEDecode or other latent nodes) |
| formatted_prompt | STRING | Final ChatML-formatted prompt with vision tokens (for debugging) |
| recommended_cfg | FLOAT | ⭐ NEW: Recommended CFG scale based on preset (2.5-5.5). Connect to KSampler's cfg parameter for optimal image/text balance! |