BigPlayer Natural Language Root
One LLM call, every output — the node that holds the whole pack together
- provider_config
- preset_config
- session
BigPlayer Natural Language Root is the node that makes this pack a single-API-call system instead of a pile of separate LLM nodes each burning a request. You type freeform prose into it, and it looks at which other BigPlayer modules are attached to it in your graph, builds one provider request covering all of them, gets one structured response back, validates it against a strict schema, and publishes a shared session. Each module then reads only its own validated slice. One call, many outputs, deterministic caching on top.
The shape the README gives is BigPlayer LLM Provider -> Natural Language Root -> one or more module nodes. Modules are the capability consumers - Basic Prompt, Split Prompt, KSampler Config, Checkpoint Picker - plus Prompt Debug for transparency.
Inputs
prose- the freeform intent. "A moody portrait of a red fox in a snowstorm, cinematic lighting" is the whole input. This is the field the LLM actually works from.provider_config- the bundle from BigPlayer LLM Provider. This is your key and model.preset_config(optional) - workflow state from the state-indication nodes (Checkpoint State, LoRA State, ControlNet State). Give it a preset and the LLM works forward from what your graph already has.
The output is a single session (a BIGPLAYER_LLM_SESSION wire) that every module takes as its input.
How it discovers your modules
Here's the clever part, and the source of most of its gotchas: the root doesn't get told which modules exist - it inspects the workflow graph at run time. It walks the graph, finds any BigPlayer module whose session input links directly back to this root, and consolidates them. Directly linked matters: a module connected through a reroute or switch may not register. Duplicate identical modules are allowed and share the same result; two modules of the same type with conflicting configs fail the run before any provider call is made.
The caching behavior
With assume_determinism on (the default from the provider node), the root hashes the prose, model, capability configs, and preset together. Unchanged input reuses the cached result - the README's stated goal is "repeatable workflows." If you want a re-roll, turn determinism off on the provider node or change the prose.
Troubleshooting
- "Requires at least one attached output module" - you wired the root but forgot to attach any module node to its
sessionoutput. The root won't call the provider for nothing. - "The prose input cannot be empty" - the root errors rather than silently passing blank text.
- Conflicting duplicate modules - you have two of the same module type with different configs on one root. Fix or remove one.
- Provider errors - no working API key means the call fails here, cleanly. The code is explicit about failing predictably rather than silently swallowing errors.
Install is the pack install (Manager, search "BigPlayer Prompting", or git clone https://github.com/josh-ent/comfyui-bigplayer-llm-nodes into custom_nodes), then restart. Light deps - httpx and pydantic, no model downloads.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| prose | STRING | Freeform intent that should be transformed into structured workflow data. | |
| provider_config | BIGPLAYER_LLM_PROVIDER | Provider bundle produced by the BigPlayer LLM Provider node. | |
| preset_configopt | BIGPLAYER_PRESET_CONFIG | Optional preset workflow state produced by BigPlayer state-indication nodes. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| session | BIGPLAYER_LLM_SESSION | — |