URL视觉丨API
Your own endpoint for vision — any OpenAI-compatible VLM, one key
- image
- image2
- image3
- generated_text
- conversation_info
- total_tokens
- raw_response
- status
Where the pack's named vision nodes are locked to one provider, CustomURLVisionAPI is the open door: give it an OpenAI-compatible base_url, a model ID, and it becomes a vision node for whatever VLM that endpoint serves - a local vLLM running Qwen-VL, an OpenRouter vision model, a hosted gateway. If you've already got one working OpenAI-compatible vision endpoint, this is the node that makes the QING pack feel worth installing by itself.
It's part of ComfyUI-QING's API category, and it shares the multi-turn history machinery of the pack's other chat nodes. The distinguishing feature over the plain language node is, obviously, images: it accepts up to three (via image2 and image3) and sends them along with your question for multi-image understanding.
How it works. Standard OpenAI chat-completions client pointed at your base_url (root or /v1 both accepted), with your image attached and the question in text_input. The image_detail enum (auto/low/high) maps to OpenAI's image_url.detail parameter - that's the "how much of the image do we actually send at high resolution" control, and low is a meaningful speed/cost win for simple checks. Keys resolve in the same priority order as the pack's other custom-URL nodes: api_key_override, then CUSTOM_URL_API_KEY, then the QING settings panel. History defaults to 6 rounds - enough to refine a description of the same image, short enough that captions don't go stale.
The inputs that matter.
image- required; what the model sees.text_input- your question (default "describe this image").base_urlandmodel- the endpoint and model ID, exactly as your server names them.max_tokens(2048) andhistory(6).- Optional:
image2/image3,image_detail,temperature,top_p,repetition_penalty,timeout_sec,clear_history, pluscustom_headers_jsonandextra_body_jsonfor nonstandard auth or params.
Outputs: generated_text, conversation_info, total_tokens, raw_response, status - the same five-port bundle as the language node, with raw_response/status as your debugging window.
How to install. ComfyUI-QING is a one-pack install - search "ComfyUI-QING" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/GAO-SHIQING/ComfyUI-QING
cd ComfyUI-QING
python install_dependencies.py
The openai library is already in the pack's requirements. Restart after installing. The README's clone URL is typo'd (GAOSHI-QING, missing the H) - use the URL above or Manager.
Troubleshooting. Same endpoint-debugging playbook as CustomURLLanguageAPI: wrong base_url, wrong model ID, or a key not where the node looks - and status/raw_response will tell you which. Vision adds two quirks: some cheap/old OpenAI-compatible endpoints don't support image_detail, so set it to auto if you get parameter errors; and if your endpoint rejects repetition_penalty (many don't implement it), you may need to reset it to 1.0 or drop it. Multi-image support is endpoint-dependent too - a server that only handles one image per request will error when image2 is connected. As with all these API nodes, remember what leaves the machine: if the endpoint is a remote provider, your images go with your question.
Inputs (18)
| Name | Type | Default | Description |
|---|---|---|---|
| text_input | STRING | 请描述这张图片。 | 发送给视觉模型的问题 |
| system_prompt | STRING | 可选 system prompt | |
| custom_headers_json | STRING | 可选JSON对象,例如 {"X-API-Key":"..."} | |
| extra_body_json | STRING | 可选JSON对象,会合并进请求体 | |
| image | IMAGE | 发送给视觉模型的图像 | |
| base_url | STRING | OpenAI兼容服务地址,可填根地址或 /v1 | |
| model | STRING | 视觉模型ID,按自定义服务实际名称填写 | |
| api_key_override | STRING | 仅当前节点生效;留空时读取 CUSTOM_URL_API_KEY 或 QING custom_url_api_key | |
| max_tokens | INT | 20481–128000 | — |
| history | INT | 61–20 | 保留的历史对话轮数 |
| image2opt | IMAGE | 可选第二张图像,多图理解时一并发送 | |
| image3opt | IMAGE | 可选第三张图像,多图理解时一并发送 | |
| image_detailopt | COMBO | auto | OpenAI image_url.detail 参数 |
| temperatureopt | FLOAT | 0.700–2 | — |
| top_popt | FLOAT | 0.900–1 | — |
| repetition_penaltyopt | FLOAT | 1.000.5–2 | — |
| timeout_secopt | INT | 1205–600 | — |
| clear_historyopt | BOOLEAN | false | 清除该节点内存中的对话历史 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| generated_text | STRING | — |
| conversation_info | STRING | — |
| total_tokens | INT | — |
| raw_response | STRING | — |
| status | STRING | — |