Text Prompt
Let a local LLM write your prompts (the 2023 way)
- params
- STRING
Zuellni Text Prompt is a node that has a small language model write your prompt for you, then hands the text back as a STRING you can drop straight into a CLIP Text Encode. No API keys, no cloud - it talks to a local oobabooga text-generation-webui server over HTTP. It's the 2023 answer to a question that's very 2026: "what if a language model wrote the prompt for the image model?"
Fair warning up front: the whole pack is archived and unmaintained. The author said so themselves in the README. This node is a fossil, but it's a working fossil - underneath it's just an HTTP client that POSTs your text to a server and parses the reply, so it keeps ticking on modern ComfyUI long after fancier packs broke. Whether it's worth the setup is the real question.
How it works
The node has exactly three inputs: text (the prompt you'd normally type, as a multiline string), seed (a number, passed to the LLM for reproducibility), and params - a DICT that must come from the sibling Zuellni Text Loader node. Loader holds the connection settings: the api endpoint (default http://localhost:5000/api/v1/chat), plus all the sampling knobs like temperature, top_k, top_p, and max_tokens. Text Prompt just stuffs your text and seed into that request and fires it off.
The response parsing is hard-wired to oobabooga's chat API shape (results[0].history.visible[-1]), which means two gotchas. First, the model answers in character - the Loader's character field is a persona, so you'll get prose wrapped around your prompt unless you tune it. Second, point it at any other endpoint (say, an OpenAI-style /v1/chat/completions API) and the parse breaks. This node only speaks old oobabooga.
Install and setup
Via ComfyUI Manager, search for "Zuellni/ComfyUI-Custom-Nodes". Or clone manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Zuellni/ComfyUI-Custom-Nodes custom_nodes\Zuellni
On first run the pack auto-installs its requirements.txt, which is heavy - transformers, diffusers, bitsandbytes, accelerate. None of that is for this node; those are for the pack's DeepFloyd IF nodes. If you only want the text nodes, let it create the config, then set IF to false under Load Nodes in config.json so the bloat stops loading.
The real dependency is a running oobabooga server with --api and a model preloaded - the API can't swap models, so pick one before starting:
python server.py --api --model llama-7b-4bit-128g-wizard
That's the heaviest lift in the whole setup, and it's the part people underestimate. Running a multi-GB LLM just to phrase a prompt is a lot of VRAM for a small payoff.
Troubleshooting
The #1 failure mode: the Loader isn't connected, so params is empty and the node errors immediately. It's a required input - there's no standalone mode. Next: "connection refused" means text-generation-webui isn't running with --api, or isn't on the port the Loader points at. And if you get responses but they're rambling nonsense, that's the character and template settings in the Loader doing their thing, not a bug.
Reproducibility is a coin flip. The seed is passed to the API, but whether the backend actually honors it depends on your quantization and sampler. Treat it as a "sometimes seed," not a guarantee.
Honestly? This whole approach - local LLM server writing your prompt - is the era before LLM text encoders made prompt engineering a conversation with the model itself. It's a fun historical artifact and it still works if you're curious. But if your goal is "LLM helps me prompt," check what your checkpoint's encoder expects first; on a modern LLM-encoded model this is solving a problem the model already solved.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| seed | INT | 00–18446744073709550000 | — |
| params | DICT | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |