VLM (fal)
Ask Gemini, Claude, or GPT-4o about an image, from inside ComfyUI
- image
- STRING
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, orCustom. - 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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | google/gemini-2.5-flash | 6 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_prompt | STRING | — | |
| image | IMAGE | — | |
| temperature | FLOAT | 1.00–2 | — |
| reasoning | BOOLEAN | false | — |
| max_tokensopt | INT | 00–100000 | — |
| custom_model_nameopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |