π¦ Ollama Text Describer π¦
Run any text through a local LLM inside your graph
- result
Strip away the "vision" part and this is just a text-in, text-out LLM call node - you give it some input text plus a prompt, it runs both through a local Ollama model (Qwen2.5, DeepSeek-R1, Mistral, whatever you've pulled) and hands back the model's response. No images involved at all, which is what separates it from its siblings OllamaImageDescriber and OllamaImageCaptioner.
The obvious use in an image-gen graph is prompt engineering on autopilot: take a rough idea, run it through this node with a system prompt that says "expand this into a detailed Stable Diffusion prompt," and wire the result straight into your CLIPTextEncode. It's also handy as a generic text processor mid-graph - summarizing, reformatting, rewriting tone - anywhere you'd otherwise reach for an external LLM API but would rather keep it local and free.
How it works
Like every node in this pack, it's an HTTP client for your local Ollama server (default http://localhost:11434), so Ollama needs to already be running with the model pulled. There's no images input on this one at all - the node's job is purely text - so whatever text you want processed has to arrive as a widget or wired STRING input, not through the model itself.
The inputs and outputs that matter
There's no dedicated "input text" widget separate from prompt on this node - the model dropdown is where most of the decision-making happens, and it's a much bigger list than the vision nodes: 40 choices including the full DeepSeek-R1 family (1.5b through 32b), Qwen2/Qwen2.5 at multiple sizes, and more, because text-only models don't need multimodal training.
model/custom_model- pick a text model. Smaller models (1.5bβ3b) are fast and fine for straightforward rewriting; reach for something likedeepseek-r1:8bor bigger if you want actual reasoning quality.promptandsystem_context- this is where your actual instruction lives. Defaults are generic ("Describe the following input in detailβ¦"); replace them with your real task.temperature- this node caps it at 0β1 rather than 0β10 like the vision describers, so the practical range is narrower: near 0 for deterministic, factual output; toward 1 for more varied phrasing.
The rest - top_k, top_p, repeat_penalty, seed_number, num_ctx, max_tokens, keep_model_alive - are standard sampling controls, same defaults as the rest of the pack. There's also an optional structured_output_format if you want the response constrained to a JSON schema, which you'd then pull apart with the JSON Property Extractor node.
Output is a single result STRING - feed it into a CLIPTextEncode, a Save Text node, or chain it into another LLM node for multi-step processing.
How to install it
Needs Ollama installed and running, with at least one text model pulled (ollama pull qwen2.5:7b, for instance - no vision capability required for this node). Get the pack via ComfyUI Manager (search "ComfyUI-Ollama-Describer") or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/alisson-anjos/ComfyUI-Ollama-Describer.git
pip install -r requirements.txt # or install.bat on Windows
Restart ComfyUI afterward.
Common issues & troubleshooting
The connection-refused error on localhost:11434 is the same recurring problem across this whole pack - it means Ollama isn't running, so start it first. Beyond that, the biggest trap specific to this node is picking a large reasoning model (a 32b DeepSeek-R1, say) and being surprised it's slow or runs out of memory - those models genuinely need real VRAM or RAM if running on CPU, and Ollama will happily try and choke rather than warn you up front. If you're just doing light prompt rewriting, a small model in the 1.5bβ7b range is almost always enough and dramatically faster.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | 40 options: deepscaler:1.5b (F16, 3.6GB), deepseek-r1:32b (Q4_K_M, 20.0GB), deepseek-r1:14b (Q4_K_M, 9.0GB), deepseek-r1:8b (Q4_K_M, 4.9GB), deepseek-r1:7b (Q4_K_M, 4.7GB), deepseek-r1:1.5b (Q4_K_M, 1.1GB), +34 | |
| custom_model | STRING | β | |
| api_host | STRING | http://localhost:11434 | β |
| timeout | INT | 3000β18446744073709550000 | β |
| temperature | FLOAT | 0.20β1 | β |
| top_k | INT | 400β100 | β |
| top_p | FLOAT | 0.90β10 | β |
| repeat_penalty | FLOAT | 1.10β10 | β |
| seed_number | INT | 42-1β18446744073709550000 | β |
| num_ctx | INT | 2048 | β |
| max_tokens | INT | 10241β18446744073709550000 | β |
| keep_model_alive | INT | -1-1β18446744073709550000 | β |
| system_context | STRING | You are a helpful AI assistant specialized in generating detailed and accurate textual descriptions. Your task is to analyze the input provided and create a clear, concise, and informative description. Focus on the key aspects of the input, and ensure the description is easy to understand and relevant to the context. | β |
| prompt | STRING | Describe the following input in detail, focusing on its key features and context. Provide a clear and concise description that highlights the most important aspects. Input: | β |
| structured_output_formatopt | STRING | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| result | STRING | β |