Nodes/EBU LMStudio LLM Integration/EBU LMStudio Brainstormer
ComfyUI Node

EBU LMStudio Brainstormer

An LLM-powered wildcard generator for your prompts

By burnsbert·Created 2 years ago·Updated 6 months ago· 51
EBU LMStudio Brainstormer
    • result
    • full_list
    topicFantasy Setting Magic Spells
    for_each_ideaA magic spell that a wizard or sorceress might cast in a fantasy novel. I want the name of the spell and a brief description of what it does.
    raw_list_size20
    return_list_size10
    ignore_the_first0
    additional_notes_1
    additional_notes_2
    urlhttp://127.0.0.1:1234/v1/chat/completions
    context_length4096
    seed0
    max_tokens300
    temp0.70
    top_p0.95
    utf8_safe_replacefalse

    Think of this as a wildcard file that writes itself. Instead of maintaining a static text file of "50 fantasy spells" or "30 outfit ideas" and randomly picking a line, you hand this node a topic and a description of what one idea should look like, and a local LLM generates the list fresh, on demand, then picks one for you. The default example is exactly that: topic Fantasy Setting Magic Spells, and a for_each_idea instruction asking for a spell name plus a brief description. Swap those two fields for anything - outfit concepts, background settings, camera angles, whatever axis of variation you want across a batch - and it works the same way.

    How the two-stage generation actually works

    There are two size knobs and they do different jobs. raw_list_size (default 20) is how many ideas the LLM generates in one pass. return_list_size (default 10) is how many of those it keeps and hands back to you. Generating more than you keep isn't wasteful padding - it's what gives you run-to-run variety even on the exact same topic, since a different subset (or a re-shuffled one, if you're changing the seed) comes back each time instead of a static list you'd memorize after three uses.

    ignore_the_first is the one field that needs a little context to make sense. LLMs asked for a numbered list tend to lead with the most obvious, stereotypical answer for a given topic - ask for fantasy spells and "fireball" is showing up first more often than not. Setting ignore_the_first to a small number skips past that predictable opener and biases you toward the list's less obvious middle, which is genuinely useful if you're trying to avoid the same three or four ideas surfacing across every run.

    The rest of the fields - additional_notes_1, additional_notes_2, url, context_length, seed, max_tokens, temp, top_p, utf8_safe_replace - are the same shape as EbuLMStudioMakeRequest's request controls, with one difference worth flagging: temp here goes up to 3, not the usual 1. That's a wide-open range built for exactly this use case - cranking temperature well past "coherent chat response" territory is fine, even desirable, when the goal is maximum variety across a batch rather than one careful, considered answer. additional_notes_1/2 are free-text slots for constraints you don't want to rewrite for_each_idea to accommodate - "avoid anything violent," "keep descriptions under 15 words," that kind of thing.

    Outputs

    result is a single idea, chosen from the filtered list - wire this straight into your prompt conditioning for a one-off generation. full_list is everything that survived the raw-to-return trim, as one string - route this into a Show Text node (or save it to a file) if you want to see the whole batch, curate it by hand, or split it out for a proper batch run instead of taking whatever got picked for you.

    Installing it

    Via ComfyUI Manager - search "EBU LMStudio" - or manually: cd ComfyUI/custom_nodes && git clone https://github.com/burnsbert/ComfyUI-EBU-LMStudio, restart ComfyUI. As with the rest of the pack, the real setup work is on the LM Studio side: install it separately, turn on Developer Mode for the local server, have at least one model downloaded, and confirm lms ls --detailed lists it before you expect this node to work.

    Where people get burned

    Structured, numbered-list generation is genuinely harder for small local models than a single free-form reply - a weak 3-4B model can mangle the numbering or merge two ideas together, and if the parser can't cleanly split what came back, you may see fewer results than return_list_size promised. If your list keeps coming back short, that's usually the model, not the node - try a stronger one in LM Studio, or reduce raw_list_size/return_list_size to something more modest. Long for_each_idea instructions combined with a large raw_list_size also eat tokens fast; if full_list looks cut off mid-idea, raise max_tokens before assuming something's broken. And like every node in this pack, nothing here is deterministic on repeat identical inputs unless seed changes - ComfyUI will otherwise serve you a cached result instead of a fresh brainstorm.

    CategoryLMStudio

    Inputs (14)

    NameTypeDefaultDescription
    topicSTRINGFantasy Setting Magic Spells
    for_each_ideaSTRINGA magic spell that a wizard or sorceress might cast in a fantasy novel. I want the name of the spell and a brief description of what it does.
    raw_list_sizeINT20
    return_list_sizeINT10
    ignore_the_firstINT0
    additional_notes_1STRING
    additional_notes_2STRING
    urlSTRINGhttp://127.0.0.1:1234/v1/chat/completions
    context_lengthINT4096512–65536
    seedINT00–18446744073709550000
    max_tokensINT30010–100000
    tempFLOAT0.700–3
    top_pFLOAT0.950–1
    utf8_safe_replaceBOOLEANfalse

    Outputs (2)

    NameTypeDescription
    resultSTRING
    full_listSTRING