API Qwen Image2Text_R
QvQ reads your image and shows its work
- image
- text
- thinking
API Qwen Image2Text_R is the reasoning variant of the pack's image interrogation node: it sends your image to QvQ - Alibaba's open visual reasoning model - and returns both a final description and the chain-of-thought that produced it. The _R is doing real work here; it's the model that thinks about the image before answering, and you get to read the thinking.
This is the node for the hard reverse-prompting jobs where a plain VLM answer isn't enough: counting objects, resolving ambiguities, or analyzing composition and lighting in depth when you're trying to reverse-engineer a look. A reasoner is genuinely better at these than a quick captioner, and the thinking output lets you sanity-check whether it actually looked at the right part of the frame. Just don't use it for bulk captioning - a 32B reasoning call per image is slow and pricey compared to the plain Image2Text node, and llm-in-comfyui.md's "reasoners are overkill for routine rewrites" applies to captions too.
How it works
Same DashScope OpenAI-compatible endpoint and base64-PNG image encoding as the non-R node, but with stream=True and the stream split into reasoning_content and content - exactly the pattern the pack's APIQwenTextGen_R uses, applied to a vision model. The model dropdown currently has one choice, qvq-max (the qvq-max-latest alias is commented out in the source), so there's no knob to fiddle; you're riding the flagship QvQ endpoint. Key resolution is the pack standard: DASHSCOPE_API_KEY env var first, then the api_key field.
The inputs that matter
image(IMAGE, required) - any image tensor from the canvas. Single image, not a batch.prompt(multiline) - the instruction. Worth being specific, since you're paying for reasoning tokens: "Describe this image's composition, lighting and style, then extract a usable SDXL prompt."api_key- env var or field; both empty throwsAPI Key is not set.seed- accepted, ignored by the API.
Outputs: text (the final description/prompt) and thinking (the reasoning trace). text wires onward into your pipeline; thinking goes to a text viewer if you want to verify it's reasoning about the actual content and not hallucinating.
Installing it
Comes with ComfyUI_Prompt-All-In-One (billwuhao). ComfyUI Manager → search Prompt-All-In-One, or clone and pip install from the repo (requirements.txt), then restart. It lives under 🎤MW/MW-Prompt-All-In-One with the rest of the Qwen family.
Where people get burned
The thinking output is streamed into a separate string from the answer, so don't expect one combined blob - concatenate if you need both together. Cost is the other trap: every reasoning call burns a lot more tokens than a plain caption, so use the non-R node for cheap bulk jobs and save this one for the frames that actually need a thinking pass. And as with all the API nodes in this pack, your image leaves the machine and the answer is subject to the vendor's filtering - QvQ won't caption content the API refuses, which is the standing reason people prefer local captioners (JoyCaption) for that job.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| api_key | STRING | — | |
| prompt | STRING | — | |
| model | COMBO | qvq-max | 1 options: qvq-max |
| seed | INT | 00–18446744073709550000 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| thinking | STRING | — |