ComfyUI Node

VLM (fal)

Ask Gemini, Claude, or GPT-4o about an image, from inside ComfyUI

By gokayfem·Created 2 years ago·Updated a day ago· 203
VLM (fal)
  • image
  • STRING
prompt
modelgoogle/gemini-2.5-flash
system_prompt
temperature1.0
reasoningfalse
max_tokens0
custom_model_name

This is the node you use when you want a smart model to look at an image and talk about it - caption it, describe it in detail, answer a question about it, or turn it into a generation prompt. VLM stands for vision-language model, and gokayfem (who literally wrote the original ComfyUI VLM_nodes pack) knows this corner well. The trick here is that instead of downloading a multi-gigabyte local vision model, you route the image to a hosted frontier model through fal and get text back.

What it actually does

Nothing runs locally. You give it an image and a prompt, the node sends both to fal.ai, fal calls whichever model you picked, and you get back a string of text. No VRAM, no model files - billed per call by fal.

Where this earns its keep: prompt building and captioning. Point it at a reference image with a prompt like "describe this image as a detailed text-to-image prompt" and pipe the output straight into your positive conditioning. Or use it to auto-caption a folder of images before LoRA training. It's a text tool that happens to see.

The inputs that matter

  • image (required): the picture the model looks at.
  • prompt (required): what you're asking. "Caption this," "what's written on the sign," "describe the lighting and camera angle," "write a Midjourney-style prompt for this."
  • model: pick your brain. google/gemini-2.5-flash (the default, fast and cheap), anthropic/claude-sonnet-4.5, openai/gpt-4o, qwen/qwen3-vl-235b-a22b-instruct, x-ai/grok-4-fast, or Custom.
  • system_prompt: optional framing - "You are a concise image captioner. Reply in one sentence." Steers tone and format.
  • temperature: 0 to 2. Low for factual, literal descriptions; higher for looser, more creative writing.

Two optionals matter for cost and control: reasoning (a boolean that lets the model think before answering - better on hard questions, more expensive), and max_tokens (cap the reply length; 0 means no explicit cap). If you set model to Custom, put the fal model id in custom_model_name. The single output is a STRING - feed it into a text/prompt node, a Show Text display, or straight into a CLIP encode.

Installing it

Easiest: ComfyUI Manager → search ComfyUI-fal-API → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/gokayfem/ComfyUI-fal-API.git
cd ComfyUI-fal-API
pip install -r requirements.txt

Restart ComfyUI. No model file to download - the dependencies are fal-client and a fal API key. Copy config.ini.example to config.ini in the pack folder and set the key under [API], or export FAL_KEY before launch. Without a key, every call fails.

Where people get burned

Besides the key, the thing to internalize is that different models behave differently - Gemini Flash is cheap and terse, GPT-4o and Claude are more verbose and often more accurate on tricky reads, and the reasoning toggle changes both cost and quality. If a Custom model errors, you probably fat-fingered the fal model id; the pack shows fal's real error text, so read it. Some models will also decline to describe certain images on content-policy grounds, which again comes through as a readable error. And the usual Windows Portable fix applies if you hit an import error: .\python_embeded\python.exe -m pip install fal-client.

CategoryFAL/VLM

Inputs (8)

NameTypeDefaultDescription
promptSTRING
modelCOMBOgoogle/gemini-2.5-flash6 options: google/gemini-2.5-flash, anthropic/claude-sonnet-4.5, openai/gpt-4o, qwen/qwen3-vl-235b-a22b-instruct, x-ai/grok-4-fast, Custom
system_promptSTRING
imageIMAGE
temperatureFLOAT1.00–2
reasoningBOOLEANfalse
max_tokensoptINT00–100000
custom_model_nameoptSTRING

Outputs (1)

NameTypeDescription
STRINGSTRING