Text Advanced Parameters
The LLM sampling knobs that don't fit on the main node
- params_json
The Generate Text node keeps things to four fields on purpose - temperature, max tokens, model, prompt. That's the right call for a beginner. But once you want structured JSON out of an LLM, or reproducibility, or a hard stop sequence, you need the knobs that node doesn't expose. That's what this one is: a box of standard OpenAI chat-completion parameters that produces a JSON string you plug into Generate Text's advanced_params_json input.
How it works
There's no network call here at all. Every parameter is checked against its default and only the ones you've actually changed get emitted into a JSON object. Leave everything alone and you get {} - a no-op. That behavior is deliberate and worth understanding: it means the advanced node never stomps on the main node's defaults. It also means you can build a workflow with the params node attached but not worry about it silently overriding anything.
The inputs
A few genuinely useful ones:
top_p(0–1, default 1) - nucleus sampling. Lower it and the model only considers the most likely tokens. Most people either leave this at 1 or dial it to 0.9.frequency_penaltyandpresence_penalty(−2 to 2) - the anti-repetition controls. Positive values discourage the model from repeating itself; this is the closest thing to a "stop saying the same thing" slider.seed- set any value ≥ 0 for reproducible output. Leave at −1 for the default random behavior.stop_sequences- comma-separated strings that halt generation."\n\n"is the classic.response_format-textorjson_object. The latter tells the API to return valid JSON, which is what you want when the text output feeds a parser.n- how many completions to return (1–10).enable_logprobs+top_logprobs- the token-probability introspection pair; niche, but if you're building anything that scores or inspects generations, this is the only place in the pack to reach them.
Wiring it up
Just connect the params_json string output to Generate Text's advanced_params_json input. The main node parses the JSON and merges it into the request, so the two work as a pair - this node is decoration without the generation node.
Installing it
Part of the ComfyUI-AI-CustomURL pack, so it installs with everything else:
cd ComfyUI/custom_nodes
git clone https://github.com/bowtiedbluefin/ComfyUI-AI-CustomURL
cd ComfyUI-AI-CustomURL
pip install -r requirements.txt
Or ComfyUI Manager → search "AI CustomURL" → Install, then restart. No models, no extra deps beyond what the pack already pulls in.
Things to know
Two honest gotchas. First, these are standard OpenAI parameters, so unlike the image and speech advanced nodes, they genuinely work against OpenAI's own API - this is the trustworthy one of the four. Second, json_object mode only works reliably when the word "json" appears in the prompt, per OpenAI's own contract - write prompts like "Return a JSON object with fields x and y" or you'll get a 400.
It's a boring utility node in a small single-author pack, but it does one job cleanly and - refreshingly - defaults to doing nothing until you ask.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| top_p | FLOAT | 1.000–1 | — |
| frequency_penalty | FLOAT | 0.0-2–2 | — |
| presence_penalty | FLOAT | 0.0-2–2 | — |
| seed | INT | -1-1–2147483647 | — |
| stop_sequences | STRING | — | |
| response_format | COMBO | text | 2 options: text, json_object |
| n | INT | 11–10 | — |
| enable_logprobs | COMBO | false | 2 options: false, true |
| top_logprobs | INT | 00–20 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| params_json | STRING | — |