ComfyUI Node

GPT 6 Luna

Two Nodes Called Luna, and How Not to Mix Them Up

By felipederosilva·Created about a month ago·Updated a day ago· 3
GPT 6 Luna
  • images
  • text
  • raw_json
  • credits_consumed
  • usage_json
  • credits_left
◄prompt►
◄system_prompt►
◄streamfalse►
◄tools_json[]►
◄history_json[]►
◄reasoning_efforthigh►
◄web_searchfalse►
◄max_output_tokens4096►
◄expert_override_json{}►

First, the naming trap

There's a GPT 5.6 Luna and a GPT 6 Luna in this pack, both under KIE Next/LLM/OpenAI/GPT, both with identical-looking controls. Search the node menu for "Luna" and you'll get two results that differ only by a version number. Luna, like Sol and Terra, is a reseller catalogue name - these are KIE SKUs, not models you can look up a spec sheet for - so nothing in the names tells you which to prefer. Your own A/B test does: same prompt into both, compare text, token counts in usage_json, and credits_consumed.

If you swap one for the other inside a saved workflow, expect to rewire. They're separate node classes with separate IDs, so deleting one and adding the other means reconnecting the text output.

What the node does

It's a hosted LLM behind a ComfyUI socket: text in, text out, over the network through KIE, billed per call, no weights and no VRAM on your side. In a graph it's a text stage - prompt expansion before a local sampler, captions from an image on the images input, or structured output a downstream node parses.

The polite thing to say about local alternatives: an 8B abliterated model on your own card does routine prompt rewriting for free, offline, and without a content filter. Use the hosted nodes when the text is the hard part - long constraint-heavy briefs, awkward phrasing, output that has to parse first try - and keep the routine stuff local.

The mechanism

The pack builds its node classes from KIE's published API documentation at startup, so the class name is generated: KIE_Next_GPT_6_Luna_24b53a6b, slug plus an eight-character hash derived from the operation and model. That hash is why workflows keep working across pack versions - the identifier isn't tied to a release number.

These LLM nodes are direct transport, unlike the pack's image and video nodes, which submit a job and poll a status endpoint. Here it's a single HTTP call to the documented endpoint, one response back, text extracted into a STRING, and the full provider payload preserved in raw_json.

Inputs

prompt is required and multiline. system_prompt is the quality lever most people skip - instructing "output only the final prompt, no preamble" changes the result more than upgrading the model does.

reasoning_effort (low, medium, high, xhigh) defaults to high. Lower it. For prompt rewriting, medium gives you the same sentence faster and cheaper; reserve the top end for prompts that require actual reasoning about composition and conflicting constraints.

max_output_tokens runs 1 to 131072, default 4096. Watch it: a low cap truncates silently, so a cut-off JSON array looks like a model that lost interest rather than a setting that clipped it.

images is an optional single IMAGE socket - the pack uploads what you connect, which makes this a captioner or an art critic in your graph. web_search enables KIE's web-search tool where the endpoint supports it. tools_json is for tool/function definitions and can stay []. history_json holds prior messages as JSON; the node has no memory between executions, so continuity is manual. expert_override_json merges raw JSON into the request when you need a field the pack doesn't expose.

Outputs

text goes downstream. raw_json is where to look when the text seems wrong - refusals and unexpected response shapes both show up there. usage_json reports token usage, and credits_consumed with credits_left gives the spend; the same pair also renders on the node as a receipt after a successful run, which is the fastest way to catch a costly loop.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt

Restart ComfyUI, then paste your key once at Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key - validated against KIE before it's saved, and shown afterwards only as a masked fingerprint. Headless installs can set KIE_API_KEY, which outranks the saved key. Dependencies are requests, Pillow, numpy, PyYAML; nothing is downloaded and nothing needs CUDA. The README's preferred installs are the Windows one-click installer or the ZIPs in dist/, and it describes Registry/Manager publication as "prepared" rather than done - so if Manager can't find the pack, git clone it.

Two habits that save money

Measure before you commit. Put the node in a two-node graph - this plus a text preview - while you're experimenting. A graph where the LLM is upstream of a batch of generations charges you per execution whether or not you liked the wording.

Keep an eye on the menu. The pack rebuilds its node library from KIE's current documentation, so models the reseller retires drop out and new ones appear without a pack update. A node that used to exist and doesn't any more means the catalogue moved, not that your install broke.

CategoryKIE Next/LLM/OpenAI/GPT

Inputs (10)

NameTypeDefaultDescription
promptSTRINGUser prompt / message.
system_promptoptSTRING—
streamoptBOOLEANfalse—
tools_jsonoptSTRING[]Optional function/tool definitions supported by this model endpoint.
history_jsonoptSTRING[]Optional prior message/input array as JSON.
imagesoptIMAGE—
reasoning_effortoptCOMBOhigh4 options: low, medium, high, xhigh
web_searchoptBOOLEANfalseUse KIE's web-search tool where this endpoint supports it.
max_output_tokensoptINT40961–131072—
expert_override_jsonoptSTRING{}Expert-only request overrides. Normal use does not require this.

Outputs (5)

NameTypeDescription
textSTRING—
raw_jsonSTRING—
credits_consumedFLOAT—
usage_jsonSTRING—
credits_leftFLOAT—