LLM Image Description
Caption your images with GPT-4o, Claude, or Gemini instead of a local VLM
- image
- description
This node does exactly what the name says and nothing more: it takes an image, hands it to a cloud multimodal model - GPT-4o, Claude 3.5 Sonnet, or one of two Gemini variants - and gives you back a text description. No local weights, no VRAM hit, no captioning model to download. You're outsourcing the "what's in this picture" question to whichever frontier LLM you point it at, and paying per call for the privilege.
Where it fits
If you've done any LoRA training, you already know the captioning landscape: JoyCaption and Florence 2 are the community's local go-tos for turning a folder of training images into usable captions, and BLIP has been "pure trash" by community consensus for years now - people actively warn each other off it. Those are free, run on your own GPU, and are built specifically for training-caption quality. This node is a different tool for a different moment: you want one image described in natural language, right now, using whatever a current top-tier model actually sees in it - object relationships, styling, mood - and you don't mind an API bill or don't have the VRAM to spare for a local vision model. It's not really built for batch-captioning a 2,000-image training set; do that with the free local options and save this for one-off description, alt text, or feeding a description into a downstream prompt-building chain in your graph.
Inputs and output
The whole node is five fields, no optional inputs:
image- the image to describe.model- a dropdown of four choices baked into the node:gpt-4o,claude-3-5-sonnet-20241022,gemini-1.5-pro-latest,gemini-2.0-flash-exp. Note the dated snapshot IDs - those are 2024/2025-era model strings, not "whatever's current," so if a provider retires that snapshot the call just breaks until the node is updated.api_urlandapi_key- your endpoint and credential for whichever provider you picked. Both default to empty, so the node does nothing useful until you fill them in yourself.prompt_template- the instruction sent alongside the image, defaulting to "Please describe this image in detail:". This is your one real lever: swap it for something like "list the objects in this image" or "describe the art style only" and you get a completely different kind of output from the same call.
Output is a single description string - plug it straight into a text display node, a CLIP text encode for img2img, or any downstream node expecting a prompt string.
Installing it
Standard path: open ComfyUI Manager, search "ComfyUI-Chat-Image", install, restart. Manually, it's cd ComfyUI/custom_nodes && git clone https://github.com/wqjuser/ComfyUI-Chat-Image then a restart. The README itself is a single line ("use an online LLM to describe images"), so there's no model download and no heavyweight dependency list to plan around - this is thin API glue, not a local inference stack. If ComfyUI's console throws an import error on load, that's almost always a missing Python package the node needs for HTTP calls; check the traceback and pip-install whatever it names into ComfyUI's own environment.
Where people actually get stuck
The failures here are basically all configuration, not the node itself. Get the api_url wrong - wrong version path, wrong base URL for a proxy - and you'll get an HTTP error instead of a description. Get the api_key wrong or out of credit and same story. And because the model list is hardcoded to specific snapshot strings, picking claude-3-5-sonnet-20241022 against an API key that's since been rotated to a newer default, or gemini-1.5-pro-latest after Google's cycled its "latest" alias forward, can quietly stop working - that's on the provider's model lifecycle, not this node.
One more thing worth saying plainly: any node that asks you to paste in a live API key is a node worth knowing what it's actually doing with that key, because custom nodes run as ordinary Python with full access to your machine - there's real precedent in this exact category (an "LLM + vision" node that turned out to be a credential-stealing trojan, with consequences serious enough to end in a federal conviction) for why "it's just an API caller" is worth a quick look at the source rather than blind trust. That's not a claim about this specific pack - it's the standing rule for anything in the image+LLM-API space.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| model | COMBO | 4 options: gpt-4o, claude-3-5-sonnet-20241022, gemini-1.5-pro-latest, gemini-2.0-flash-exp | |
| api_url | STRING | — | |
| api_key | STRING | — | |
| prompt_template | STRING | Please describe this image in detail: | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| description | STRING | — |