GPT 5.6 Luna
Three Names, One Interface, No Spec Sheet
- images
- text
- raw_json
- credits_consumed
- usage_json
- credits_left
What Luna is, and what it isn't
It's a GPT 5.6-family text model that KIE.ai resells, wrapped as one node in KIE Next/LLM/OpenAI/GPT. Text in, text out, over the network, billed per call, nothing on your GPU.
What it isn't is documented anywhere you can look up. Sol, Luna and Terra are catalogue names on the reseller's side - the pack takes each display name straight from KIE's own documentation titles - so there's no model card, no published benchmark, and no community consensus to lean on. Anyone telling you Luna is "the fast one" or "the cheap one" is guessing.
The practical consequence is that you choose between these siblings empirically. Sending the same awkward prompt through two of them and comparing the text, the token counts in usage_json, and credits_consumed takes about a minute and gives you an answer about your prompts rather than someone else's vibes.
Where a node like this earns its keep
It's a text stage: prompt expansion before your local sampler, captions from an image you wire into the images socket, or structured output - a set of variations, a JSON prompt object, a shot list - that a downstream node parses.
Be honest about when you need it at all. Prompt rewriting is the one LLM job a small local model handles fine, and a local 8B is free, instant, offline and unfiltered. The hosted path makes sense when the text genuinely has to be good: long multi-constraint briefs, awkward phrasing, output that must parse on the first try. Otherwise you're paying per call for something an 8B does while your GPU is idle anyway.
How the node works
The pack generates nodes at startup from KIE's API documentation, so the class id is derived: KIE_Next_GPT_5_6_Luna_1cbfcee4, where the eight-character suffix is a hash of the operation and model. That's a stability feature - save a workflow today and it still resolves after a pack update, as long as KIE's documentation for that operation stays put.
Transport is direct: one HTTP request to the documented endpoint and one response back. That's different from the pack's image and video nodes, which POST a job and poll a status endpoint until it completes. The assistant's text is extracted and returned as a STRING, with the full provider payload kept in raw_json.
The controls
prompt is required. system_prompt is the one that decides whether you get a prompt back or a chatty paragraph - "output only the final prompt, no explanation" is worth more than any model swap.
reasoning_effort is low, medium, high, or xhigh, and it defaults to high. For rewriting, try medium; the reasoning budget mostly buys latency and tokens on tasks that don't need it. max_output_tokens goes from 1 to 131072 with a default of 4096, and it fails quietly - a cap that's too low looks like a terse answer, not an error.
images accepts one optional image and uploads it for you, which turns this into a captioner or a critic of a generation you didn't like. web_search toggles KIE's web-search tool where the endpoint supports it. tools_json holds function definitions ([] normally), and history_json holds prior messages as JSON - the node has no memory between runs, so that's the only continuity there is. expert_override_json merges raw JSON into the request body for fields the pack doesn't expose; leave it {}.
Outputs
text is what you wire into the graph. raw_json is the full response, and it's the first thing to read when the output looks wrong - it usually shows the refusal or the shape the extractor walked. usage_json is the token accounting, useful for judging whether a reasoning setting is worth its cost. credits_consumed and credits_left report spend and also appear on the node as a receipt after a successful run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r requirements.txt
Restart ComfyUI, then do the one-time key setup at Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. It's validated against KIE before replacing anything previously saved, and only a masked fingerprint is shown afterwards. On servers, KIE_API_KEY takes priority over the saved key. Dependencies are requests, Pillow, numpy, PyYAML - the LLM nodes add nothing else, and there's nothing to download. Registry/Manager publishing is described in the README as "prepared," so if Manager's search comes up empty, clone the repo or use a ZIP from dist/.
Two install-side notes worth knowing. The pack's offline bootstrap only ships a couple of these LLM nodes; the rest appear once the live catalog sync runs, so an empty menu on first launch just needs a restart (or the Refresh Model Catalog node). And the node list is rebuilt from KIE's current documentation, so a model the reseller retires can vanish from the menu between launches.
Watch the meter
Every execution is a paid request, including the ones nested inside a batch. If you're exploring prompt styles, build a small graph - this node, a text preview, a save - rather than bolting it onto the full pipeline, so you can see the wording before you also pay for the pixels.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | User prompt / message. | |
| system_promptopt | STRING | — | |
| streamopt | BOOLEAN | false | — |
| tools_jsonopt | STRING | [] | Optional function/tool definitions supported by this model endpoint. |
| history_jsonopt | STRING | [] | Optional prior message/input array as JSON. |
| imagesopt | IMAGE | — | |
| reasoning_effortopt | COMBO | high | 4 options: low, medium, high, xhigh |
| web_searchopt | BOOLEAN | false | Use KIE's web-search tool where this endpoint supports it. |
| max_output_tokensopt | INT | 40961–131072 | — |
| expert_override_jsonopt | STRING | {} | Expert-only request overrides. Normal use does not require this. |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| text | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| usage_json | STRING | — |
| credits_left | FLOAT | — |