Nodes/ComfyUI OneThing CV Node/OneThingAI Image Understanding
ComfyUI Node

OneThingAI Image Understanding

Let a cloud vision model describe your images — OneThingAI Image Understanding

By OneThingAI·Created about a year ago·Updated about a year ago· 1
OneThingAI Image Understanding
  • image
  • STRING
api_key
modelgpt-4o
system_prompt
user_contentPlease describe this image in detail.
retries3
timeout20
max_tokens500

Here's the thing that will either sell you on this node or make you close the tab: it does not load a model, it does not touch your GPU, and it costs you no VRAM. OneThingAI Image Understanding takes an image in your ComfyUI graph, ships it off to a cloud vision API, and hands back a plain-text description. In an ecosystem where half your nodes are 5GB model downloads, that's refreshing - or a dealbreaker, depending on how you feel about your images leaving the machine.

What it's actually for

This is an image-to-text node in the narrow, literal sense: IMAGE in, STRING out. Feed it a generated image and have it write the prompt back out, or describe a reference photo you're trying to match. Where it shines is as the text source for a workflow: wire the STRING output into a text display node, a prompt builder, or anything that consumes natural language.

If your real goal is bulk-captioning a LoRA training dataset, pause before you pick this. That job's community standard is a local captioner - JoyCaption or Florence 2 for natural language, WD14 for tags - free and private. This node is the paid-cloud route: zero setup beyond a key, but your images leave the box and you pay per call.

How it works

The mechanism is transparent - the whole node is one file. It takes your IMAGE tensor, converts it to a PIL image, encodes it as base64 PNG, and builds an OpenAI-style chat payload: your system_prompt (if set), a user message containing your user_content text plus the image as a data:image/png;base64,... URL. That gets POSTed to https://api-model.onethingai.com/v1/chat/completions - yes, an OpenAI-compatible endpoint - with a Bearer token from your API key.

Then the resilience part: the request runs through a urllib3 retry adapter that retries on 429, 500, 502, 503, and 504 with exponential backoff, up to your retries count. One quirk: if the API call throws, the node doesn't raise - it returns an "Error: ..." string as its output. Handy for debugging, but a downstream node can silently receive an error message as if it were a description.

The inputs and outputs that matter

The input list looks long, but a beginner really sets two of them:

  • api_key - the OneThing AI key, pasted as plain text. Leave it empty and the node hard-fails with "API key is required" rather than calling the API.
  • user_content - the actual instruction, defaulting to "Please describe this image in detail." Want a caption instead? Type that. Want tags only? Say so.
  • system_prompt - optional system-level instruction, empty by default. Set the "persona" of the describer once here and leave user_content free.
  • model - defaults to gpt-4o. The node doesn't validate model names, so you can point it at whatever the API accepts; knowing which names are valid is on you.
  • max_tokens (default 500, up to 10000), retries (default 3), timeout (default 20s) - tune these if responses come back truncated or timed out.

The single output is a STRING - wire it into a text display node or any text-hungry downstream node.

Installing it

The README's route is a straight clone, and here's the good news: its requirements.txt is just Pillow and requests, both of which a stock ComfyUI already ships. The "dependency" step is effectively a no-op - no torch reinstall, no version pinning wars:

cd ComfyUI/custom_nodes
git clone https://github.com/OneThingAI/ComfyUI_Onething_CV.git
pip install -r requirements.txt

Restart ComfyUI and you'll find "OneThingAI Image Understanding" under OneThingAI/CV. One honest caveat: this pack isn't in the ComfyUI Manager registry as of this writing, so Manager search likely comes up empty - the clone above is the reliable path.

Common issues

  • "API key is required" - the node raises before it ever calls the network. Paste the key into the node widget; there's no shared/global key field in this pack.
  • Timeouts on big images - everything is base64 PNG over the wire, so a huge render is a fat payload. Bump timeout toward 100s and/or downscale the input first.
  • Error: in the output string - that's the node's error channel, not a crash. Retries are already handled internally; a persistent error usually means a bad key, no internet, or the service being down.
  • Privacy - images go to a third party's servers; nothing in the README or code says otherwise, so don't feed this sensitive or licensed content.

Where you might get burned: OneThing AI is a niche service with basically no community footprint on r/comfyui or r/StableDiffusion - no threads about its uptime, pricing, or model quality to lean on. If the service is solid, this is a handy utility; if it goes quiet, you've got a dead node and the answer is a local captioner anyway. Great for occasional descriptions inside a workflow; don't build anything critical on it.

CategoryOneThingAI/CV

Inputs (8)

NameTypeDefaultDescription
imageIMAGE
api_keySTRING
modelSTRINGgpt-4o
system_promptSTRING
user_contentSTRINGPlease describe this image in detail.
retriesINT30–5
timeoutINT205–100
max_tokensINT500100–10000

Outputs (1)

NameTypeDescription
STRINGSTRING