Local AI Generate
A raw local LLM call, right inside your graph
- config
- image
- generated_text
Local AI Generate is the unfiltered text generator of the WepeNerd pack: a raw chat-completion call to your local llama-server, with optional image input that turns it into a vision-language call. The enhancer and captioner nodes are specialized wrappers around this same machinery - this is the one you use when the job doesn't fit a preset, like writing dialogue for a video, generating a JSON blob for a downstream node, or asking a question and feeding the answer into something else.
Inputs: config (the GGUF_LLM_CONFIG from Local AI Model (Advanced)), prompt, system_prompt, then the full sampler panel - max_tokens, temperature, top_p, top_k, repetition_penalty, seed, min_p, presence_penalty, frequency_penalty, plus reasoning_effort and a sampling_preset. image_max_edge and jpeg_quality only matter when you connect the optional image input.
Two inputs do most of the work for a beginner:
sampling_preset-customhands you full control, but the two Qwen presets are the smart defaults:qwen_non_thinkingsets temperature 0.7 / top-p 0.8 / top-k 20 with reasoning off, andqwen_thinkingraises top-p to 0.95 and reasoning to high. If you're running a Qwen GGUF (the README's reference model is a Qwen), start with these instead of hand-rolling samplers.reasoning_effort-noneby default. Set it higher and the model deliberates before answering, which costs tokens and, for a prompt-rewriting job, is usually worse. This is the QwQ-class trap the KB warns about: a reasoner spends tokens thinking and leaks its scratch-work into output. The pack strips<think>...</think>blocks and never returns hiddenreasoning_content, so you won't see the scratch - but you also pay for it.
The one structural constraint: max_tokens must be smaller than context_size from the config, with headroom for prompt and media tokens. The node validates this and errors with a clear message if not. And if you connect image, the config must have an mmproj projector selected - otherwise the node rejects the request before it starts, because a text-only model can't see the picture. Images are downscaled to image_max_edge (1024 default) and JPEG-encoded, same as the captioners.
Output is one generated_text string. Wire it to a Show Text / preview node to read it, or feed it anywhere the graph wants text. Because release_after_generate defaults to true in the config, each run spins the server up and tears it down - fine for occasional calls, and if you're chaining many consecutive generations, flip that flag off in the config node and watch the VRAM caveat from the config article.
Install as with the rest of the pack: ComfyUI Manager, search WepeNerd, or git clone https://github.com/WepeNerd/ComfyUI-WepeNerd.git into custom_nodes + pip install -r requirements.txt, restart. The model lives in ComfyUI/models/LLM, and llama-server must be a real executable on PATH - the pack refuses to guess there.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| config | GGUF_LLM_CONFIG | — | |
| prompt | STRING | — | |
| system_prompt | STRING | — | |
| max_tokens | INT | 5121–32768 | — |
| temperature | FLOAT | 0.700–2 | — |
| top_p | FLOAT | 0.950–1 | — |
| top_k | INT | 400–1000 | — |
| repetition_penalty | FLOAT | 1.050–5 | — |
| seed | INT | 00–18446744073709550000 | — |
| reasoning_effort | COMBO | 5 options: default, none, low, medium, high | |
| sampling_preset | COMBO | 3 options: custom, qwen_non_thinking, qwen_thinking | |
| min_p | FLOAT | 0.000–1 | — |
| presence_penalty | FLOAT | 0.00-2–2 | — |
| frequency_penalty | FLOAT | 0.00-2–2 | — |
| image_max_edge | INT | 102464–4096 | — |
| jpeg_quality | INT | 901–100 | — |
| imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| generated_text | STRING | — |