Nodes/ComfyUI_EmAySee_CustomNodes/EmAySee Deep Reasoning Connector
ComfyUI Node

EmAySee Deep Reasoning Connector

The same reasoning LLM connector, now with a seed you can actually fix

By EmAySee·Created about a year ago·Updated 5 months ago· 3
EmAySee Deep Reasoning Connector
    • answer
    • thinking
    • full_raw
    ◄promptEnter prompt here►
    ◄system_promptYou are a helpful assistant.►
    ◄api_urlhttp://10.0.0.71:5000/v1/chat/completions►
    ◄api_keysupersecretkey►
    ◄model_namedefault►
    ◄seed0►
    ◄max_tokens_per_call4096►
    ◄truncation_length32768►
    ◄temperature0.60►
    ◄top_p0.95►
    ◄min_p0.50►
    ◄top_k20►
    ◄repetition_penalty1.15►
    ◄repetition_penalty_range2048►
    ◄reasoning_effortlow►
    ◄xtc_threshold0.10►
    ◄xtc_probability0.00►
    ◄dry_multiplier0.8►
    ◄dry_base1.75►
    ◄dry_allowed_length1►
    ◄auto_continuetrue►
    ◄max_continues3►
    ◄stop_on_errortrue►

    This is EmAySee_DeepReasoningConnector with one field added: a seed input that actually gets sent to the backend. Same three outputs (answer, thinking, full_raw), same auto-continue loop that re-posts when the model hits its token cap, same think-tag parsing that peels the chain-of-thought out of the reply. If you've read that article, you know the mechanics. The question here is only whether the seed earns its keep.

    What the seed does (and doesn't)

    The non-seeded connector's seed is a prop - this one isn't. The node passes seed straight into the payload, so a backend that honors it (text-generation-webui does) will produce a reproducible generation for a given prompt and seed. That's the real value: for prompt-engineering, where you want to A/B the same instruction across seeds, or for logging where a run should be reproducible later, a fixed seed turns "LLM said something random" into "LLM said this, and here's how to get it again."

    Two caveats, both worth knowing before you trust it:

    • The backend has to honor the field. Many OpenAI-compatible proxies and some llama.cpp setups ignore an incoming seed or only apply it if sampling is enabled. If your output still varies with seed fixed, that's your server, not the node.
    • control_after_generate is on by default. ComfyUI will advance/randomize the seed widget after every run. To actually reproduce a result you must turn that control off and lock the seed. The node sends the seed faithfully; it doesn't fight the UI over it.

    Inputs and outputs

    Everything from the sibling node carries over: prompt, system_prompt, api_url (default is again the author's LAN http://10.0.0.71:5000/v1/chat/completions - change it), api_key, model_name, reasoning_effort, the textgen sampler knobs, auto_continue/max_continues, stop_on_error. The addition is seed, an INT 0–2^64. Outputs: answer, thinking, full_raw - the same three ports, wired into text displays or downstream text-processing.

    Install

    Same pack, same path: ComfyUI Manager → search "EmAySee", or

    cd ComfyUI/custom_nodes
    git clone https://github.com/EmAySee/ComfyUI_EmAySee_CustomNodes
    

    then restart. No extra dependencies - requests ships with ComfyUI - and no model downloads. The model itself lives in your local text-generation-webui / llama.cpp server, which the node reaches over HTTP.

    The honest take

    If you want reproducible LLM output in ComfyUI, this is the version to reach for - the plain connector's seed is decorative and this one isn't. Just remember reproducibility here is best-effort: local samplers with XTC/DRY/min-p active are deliberately stochastic, and a "reproducible" run mostly means "same starting point, same dice." Good enough for A/B testing prompt wording, which is what most people actually need it for.

    CategoryEmAySee/LLM

    Inputs (23)

    NameTypeDefaultDescription
    promptSTRINGEnter prompt here—
    system_promptSTRINGYou are a helpful assistant.—
    api_urlSTRINGhttp://10.0.0.71:5000/v1/chat/completions—
    api_keySTRINGsupersecretkey—
    model_nameSTRINGdefault—
    seedINT00–18446744073709550000—
    max_tokens_per_callINT40961–8192—
    truncation_lengthINT327680–131072—
    temperatureFLOAT0.600–2—
    top_pFLOAT0.950–1—
    min_pFLOAT0.500–1—
    top_kINT200–200—
    repetition_penaltyFLOAT1.151–2—
    repetition_penalty_rangeINT20480–8192—
    reasoning_effortCOMBOlow3 options: low, medium, high
    xtc_thresholdFLOAT0.100–1—
    xtc_probabilityFLOAT0.000–1—
    dry_multiplierFLOAT0.80–2—
    dry_baseFLOAT1.751–5—
    dry_allowed_lengthINT10–20—
    auto_continueBOOLEANtrue—
    max_continuesINT31–10—
    stop_on_errorBOOLEANtrue—

    Outputs (3)

    NameTypeDescription
    answerSTRING—
    thinkingSTRING—
    full_rawSTRING—