External LLM Prompt
An LLM in Your Graph Without Loading a Single Local Model
- image
- response
The name is a bit of a letdown once you realize what it means: "External LLM" isn't a euphemism for some cloud dependency - it just means the LLM isn't running inside ComfyUI. External LLM Prompt sends your system and user prompts to an OpenAI-compatible provider you configure, and returns the response as text. No local model, no VRAM, no quantized weights. If you're already paying for an OpenAI-compatible endpoint, this is the cheapest way to put a language model inside your ComfyUI graph.
How it works
The provider is configured in Settings, not on the node. Two SimpleSyrup settings matter:
- SimpleSyrup: External LLM endpoint - the OpenAI-compatible base URL.
- SimpleSyrup: External LLM API key - the key, stored in OS credential storage (via the pack's
keyringdependency) rather than plaintext.
Saving the endpoint and key refreshes the provider's model list, so the node's model dropdown gets populated from what your endpoint actually offers. Unconfigured, it shows the placeholder "Configure external LLM endpoint" - which is the README's polite way of saying "go to Settings first."
On the node itself:
- system_prompt: the instruction sent as the system message ("You are a prompt engineer...").
- user_prompt: the actual request.
- max_tokens (default 1024): response length ceiling; longer replies cost more time and money.
- reasoning_effort (default
default): reasoning behavior for providers that support it.defaultomits provider-specific controls;offexplicitly disables thinking via chat template options where available. - image (optional): attach an image to the user message for vision-capable models. With a batch connected, the first image is used.
Output is a single response STRING - the assistant's reply, ready to wire into a prompt encoder, a text display, or another node.
What it's good for
This is the "prompt enhancer" class of node, and the KB's guidance applies: LLM-enhanced prompting works best when the job is narrow and structured. Use it to rewrite a rough idea into a model-appropriate prompt, to generate a structured prompt from a description, or to produce tags/descriptions that feed other nodes. What it won't do is run offline, be free, or be uncensored the way a local model can be - for that you'd want a local-LLM node instead. Also note the honest ceiling: a chat LLM's output is chat, and if you wire raw prose into a prompt box, preamble and all, it bleeds into your conditioning. Keep the system prompt tight ("reply with only the prompt, no commentary") and inspect the response before automating.
Security posture is straightforward: it's an API call, not arbitrary local code - but the endpoint and key are still credentials, which is exactly why the key goes to OS keychain rather than the workflow JSON.
Install
Ships in the SimpleSyrup pack. ComfyUI Manager → search SimpleSyrup → Install → restart, or:
Set-Location ComfyUI\custom_nodes
git clone https://github.com/Artificial-Sweetener/SimpleSyrup.git
Set-Location SimpleSyrup
..\..\venv\Scripts\python.exe -m pip install -r requirements.txt
Restart ComfyUI; current build required (v3 extension API).
Common issues
- Model dropdown is stuck on "Configure external LLM endpoint" - you haven't saved a valid endpoint (and key, if required) in Settings; save them and the list refreshes.
- Vision image ignored - your provider model doesn't support vision. Image inputs require a vision-capable model.
- Responses come back chatty - tighten the system prompt; ask for raw output.
- Node missing - update ComfyUI first.
It's the lightest way to add an LLM to a workflow: one API key, no gigabytes of weights, and a text socket out.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Configure external LLM endpoint | External model used for the prompt request. |
| system_prompt | STRING | Instruction text sent as the system message. | |
| user_prompt | STRING | Prompt text sent as the user message. | |
| max_tokens | INT | 10241–32768 | Maximum number of response tokens the external model may generate. Higher values allow longer replies but can take longer and cost more. |
| reasoning_effort | COMBO | default | Reasoning behavior for compatible providers. Default omits provider-specific controls; off sends thinking disabled through chat template options. |
| imageopt | IMAGE | Optional image sent with the user message for vision-capable external models. When a batch is connected, the first image is used. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| response | STRING | Assistant response returned by the external model. |