Non-System Prompt VLMs API Node
The same vision-node, minus the system role — for VLMs that reject system messages
- image
- LLM ANSWERS
- seed
- model
- api_url
- api_key
"Non-System Prompt" is a weird name until you've hit the problem it solves. Some vision models - particularly older Qwen-VL releases and a few DashScope-era endpoints - throw errors when you send them a chat message with the system role. They simply don't recognize it. This node is the pack's Vision LLM API Node rebuilt to dodge that: instead of a system message, it smuggles your instructions in as an assistant message at the front of the conversation, then asks the user turn. Same job - caption an image, analyze a render, write a prompt from a picture - but it works against endpoints that would 400 the other node.
So the decision between the two is dead simple: try Vision LLMs API Node first; if the VLM you're targeting complains about the system role, switch to this one. Same inputs, same outputs, same default provider (Alibaba DashScope's OpenAI-compatible endpoint, model qwen-vl-max-0201), same quirks - it analyzes the first frame of your IMAGE only, converts it to base64, and hardcodes temperature to 0.5.
How it works
Mechanically it's nearly identical to its sibling. Your IMAGE tensor → first frame → temp PNG → base64 data URI. That goes into a chat-completions call as an image_url content part. The one structural difference is in the message array: in the normal path it's built as [assistant: system_prompt, user: prompt + image] instead of [system: system_prompt, user: ...]. To the model it reads like the instruction was "said" rather than "dictated", which is a hack, but it's the standard compatibility workaround for OpenAI-dialect providers with incomplete system-role support.
It also inherits the sibling's use_jailbreak toggle - same baked-in "Advanced Text-to-Image Prompt Generator" persona and the uncensored "Cora" conversation wrapper. Same caveats as the other node: it's an NSFW-adjacent guardrail-dropping prompt baked into the source, your call whether that's a feature.
The inputs that matter
image(IMAGE),prompt(STRING),system_prompt(STRING, multiline) - the same three as the Vision node.system_promptbecomes the leading assistant message here.model,api_url,api_key- defaults are DashScope/Qwen; swap freely.seed,use_jailbreak.
Outputs: LLM ANSWERS (STRING) plus pass-throughs of seed, model, api_url, api_key.
Installing it
Ships in AhBumm/ComfyUI_BillBum_Nodes. ComfyUI Manager search "billbum", or:
cd ComfyUI/custom_nodes
git clone https://github.com/AhBumm/ComfyUI_BillBum_APIset_Nodes.git
cd ComfyUI_BillBum_APIset_Nodes && pip install -r requirements.txt
Restart ComfyUI. Light deps, no model downloads - the openai client does the talking.
Where people get burned
- Default key mismatch. DashScope URL + non-DashScope key = auth error. Change both together.
- "Old" is not "deprecated" here. It's the author's marker; this node remains the compatibility fix for system-role-hostile VLMs. Reach for it specifically when the other vision node errors on the system message.
- First frame only, same as the sibling - don't expect batch captioning.
- Model name drift:
qwen-vl-max-0201is a dated snapshot; update to whatever the Aliyun console currently lists if you get "model not found".
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| use_jailbreak | BOOLEAN | false | — |
| seed | INT | 00–18446744073709550000 | — |
| prompt | STRING | — | |
| model | STRING | qwen-vl-max-0201 | — |
| api_url | STRING | https://dashscope.aliyuncs.com/compatible-mode/v1 | — |
| api_key | STRING | YOUR_API_KEY_HERE | — |
| system_prompt | STRING | — | |
| image | IMAGE | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| LLM ANSWERS | STRING | — |
| seed | INT | — |
| model | STRING | — |
| api_url | STRING | — |
| api_key | STRING | — |