SF LLM Chat
One node, every frontier LLM — Claude, Gemini, and GPT-5 right in your graph
- image
- response
- token_usage
You know the workflow pattern: generate an image, then wish you had a caption, an alt-text, a style analysis, or a "what went wrong here" note without leaving ComfyUI. SF LLM Chat is the node for that. It's one block that talks to Claude, Gemini, or the GPT-5 family, takes an optional image along with your prompt, and hands you back a string you can pipe into a text box, a filename token, or another node. No local model, no VRAM, no GPU - just an API key and a few cents of tokens.
This is one of the "stillfront" nodes - part of the comfyui-stillfront pack, all prefixed SF. The pack splits cleanly into API-backed nodes, and this is the text brain of the bunch.
How it works
The node makes a plain HTTP call to a frontier LLM API. Feed it an image and it converts the tensor to a base64 PNG and sends it as a vision block alongside your text - handy for "describe this render" or "what's wrong with this face" loops.
One thing the README glosses over, and the dropdown hides: the routing is simpler than the 11-model list suggests. Gemini models go to Google's API; everything else - including the GPT-5 entries - currently goes through the Anthropic path. So treat the GPT-5 dropdown options as aspirational for now and pick Claude or Gemini for actual work.
Worth knowing before you reach for the knobs:
seedonly actually does anything on Gemini models. The tooltip is blunt about it: Claude doesn't support seeds, so the field exists for UI consistency and does nothing there.max_tokensdefaults to 4096 but goes to 200,000 if you're dumping a long transcript or big text file through it.temperatureis the usual 0–2, default 0.7.timeoutdefaults to 500 seconds - increase it if you're doing large-text processing and the call keeps dying on the wire.
The inputs that matter
Most of what you'll set is the obvious stuff: api_key, prompt, system_prompt (optional, for role-pinning the model), and model. The dropdown has 11 entries spanning the frontier: claude-opus-4-5, claude-sonnet-4-5, claude-haiku-4-5, gemini-3-pro-preview, gemini-3-flash-preview, and the GPT-5 line from gpt-5.2 down to gpt-5-nano. For a captioning job, Haiku or Flash is plenty and cheap; for real reasoning about a workflow, the big ones earn their price.
It outputs two strings: response (the actual answer) and token_usage (a usage report you can wire to a display node or log). Wire response into a text display, a prompt encoder, or anything that eats a STRING.
Installing it
The pack is comfyui-stillfront. Easiest route is ComfyUI Manager - search "comfyui-stillfront" (or "Stillfront Custom Nodes") and install. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/comfyui-stillfront
cd comfyui-stillfront
pip install -r requirements.txt
Then restart ComfyUI. No models download - everything is API calls, which is the whole point.
Troubleshooting
- "API key is required" errors. Leave
api_keyblank and the node falls back to env vars -ANTHROPIC_API_KEYfor Claude models,GEMINI_API_KEYfor Gemini. Setting either env var once beats pasting keys into every workflow. - Picked a GPT-5 model and got an Anthropic error. As noted above, the GPT-5 entries currently route through the Anthropic API, so they'll fail or behave oddly until the pack finishes wiring OpenAI. Use Claude or Gemini for now.
- Same output every run with Claude. Not a bug - that's the seed thing above. Claude ignores seeds.
- Timeouts on long jobs. Bump
timeout; the default 500s is generous but a 200k-token request on a slow provider can still blow past it.
It's not going to beat a purpose-built prompt-refiner node at any one job. But as a general "ask a frontier model anything, mid-graph" block, it's hard to beat for the price.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| model | COMBO | claude-sonnet-4-5 | 11 options: claude-opus-4-5, claude-sonnet-4-5, claude-haiku-4-5, gemini-3-pro-preview, gemini-3-flash-preview, gpt-5.2, +5 |
| prompt | STRING | — | |
| max_tokens | INT | 40961–200000 | — |
| temperature | FLOAT | 0.700–2 | — |
| seed | INT | 1-1–18446744073709550000 | Random seed for reproducible results. -1 for random seed. Note: Only works with Gemini models, Claude doesn't support seeds. |
| timeout | INT | 50010–3600 | Request timeout in seconds. Increase for large text processing (default: 500s) |
| system_promptopt | STRING | — | |
| imageopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| response | STRING | — |
| token_usage | STRING | — |