Nodes/Customizable API Call Nodes by BillBum/Non-System Prompt VLMs API Node
ComfyUI Node

Non-System Prompt VLMs API Node

The same vision-node, minus the system role — for VLMs that reject system messages

By AhBumm·Created 2 years ago·Updated 3 months ago· 11
Non-System Prompt VLMs API Node
  • image
  • LLM ANSWERS
  • seed
  • model
  • api_url
  • api_key
use_jailbreakfalse
seed0
prompt
modelqwen-vl-max-0201
api_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1
api_keyYOUR_API_KEY_HERE
system_prompt

"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_prompt becomes 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-0201 is a dated snapshot; update to whatever the Aliyun console currently lists if you get "model not found".
CategoryBillBum_API

Inputs (8)

NameTypeDefaultDescription
use_jailbreakBOOLEANfalse
seedINT00–18446744073709550000
promptSTRING
modelSTRINGqwen-vl-max-0201
api_urlSTRINGhttps://dashscope.aliyuncs.com/compatible-mode/v1
api_keySTRINGYOUR_API_KEY_HERE
system_promptSTRING
imageIMAGE

Outputs (5)

NameTypeDescription
LLM ANSWERSSTRING
seedINT
modelSTRING
api_urlSTRING
api_keySTRING