Nodes/ComfyUI_EmAySee_CustomNodes/EmAySee Advanced Oobabooga Connector
ComfyUI Node

EmAySee Advanced Oobabooga Connector

Point ComfyUI at a local LLM — the kitchen-sink Oobabooga chat connector

By EmAySee·Created about a year ago·Updated 4 months ago· 2
EmAySee Advanced Oobabooga Connector
    • answer
    • thinking
    • full_raw
    api_urlhttp://10.0.0.71:5000/v1/chat/completions
    api_keysupersecretkey
    promptEnter prompt here
    system_promptYou are a helpful assistant.
    seed-1
    max_tokens512
    temperature1.00
    top_p1.00
    min_p0.00
    top_k0
    repetition_penalty1.00
    reasoning_effortmedium
    auto_continuefalse
    max_continues3
    stop_on_errortrue
    best_of1
    echofalse
    frequency_penalty0.00
    presence_penalty0.00
    n1
    suffix
    user
    preset
    dynatemp_low1.00
    dynatemp_high1.00
    dynatemp_exponent1.00
    smoothing_factor0.00
    smoothing_curve1.0
    typical_p1.00
    xtc_threshold0.10
    xtc_probability0.00
    epsilon_cutoff0.00
    eta_cutoff0.00
    tfs1.00
    top_a0.00
    top_n_sigma0.00
    dry_multiplier0.00
    dry_allowed_length2
    dry_base1.75
    encoder_repetition_penalty1.00
    no_repeat_ngram_size0
    repetition_penalty_range1024
    penalty_alpha0.00
    guidance_scale1.0
    mirostat_mode0
    mirostat_tau5.0
    mirostat_eta0.10
    prompt_lookup_num_tokens0
    max_tokens_second0
    do_sampletrue
    dynamic_temperaturefalse
    temperature_lastfalse
    auto_max_new_tokensfalse
    ban_eos_tokenfalse
    add_bos_tokentrue
    enable_thinkingtrue
    skip_special_tokenstrue
    static_cachefalse
    truncation_length0
    custom_token_bans
    negative_prompt
    dry_sequence_breakers"\n", ":", "\"", "*"
    grammar_string
    sampler_priority
    stop_sequences

    ComfyUI runs diffusion models locally, and it can run a text model too - you just need a bridge. EmAySee Advanced Oobabooga Connector is that bridge: it sends your prompt to a text-generation-webui (Oobabooga) instance running an OpenAI-compatible API and returns the model's answer as a string you can feed anywhere in the graph.

    The promise is real: one node, a prompt in, an answer out, and suddenly you have an LLM inside ComfyUI doing prompt rewriting, tag generation, workflow scripting, whatever you can get a local model to do. And "local" is the operative word - no API key from a cloud vendor, no per-token billing, the same spirit as running your own Stable Diffusion. The author, who posts about these nodes on Reddit, is upfront that this family of connectors is not a one-and-done: "you need to craft a good prompt to have it convert though," they wrote, "you need to give the LLM a set of instructions." Treat it as a raw API client, not a magic prompt-improver.

    How it works

    The node posts a JSON payload to your api_url using the OpenAI /v1/chat/completions schema, with system_prompt and prompt as the message pair. Around fifty sampler settings - temperature, top_p, top_k, min_p, repetition penalty, DRY, mirostat, and more - are forwarded if you've changed them from defaults, so it behaves like the full text-generation-webui API exposed as a node.

    Two behaviors stand out. First, auto_continue: if the model stops because it hit max_tokens, the node re-calls the API up to max_continues times, appending the output until the model finishes naturally - a genuine convenience for long generations. Second, thinking parsing: it scans the response for <think>...</think> blocks (the format reasoning models like DeepSeek R1 use) and splits the output into answer and thinking. If a <think> tag is opened but never closed, the answer becomes the literal string [REASONING TRUNCATED] and the thinking gets the rest - a design choice worth knowing about, because that exact string is a sentinel some of the pack's other nodes watch for.

    The inputs that matter

    There are a lot of them, but a beginner sets these:

    • api_url - defaults to http://10.0.0.71:5000/v1/chat/completions. That's the author's LAN address; you must change it to your own Oobabooga server. It must be running with its API enabled (--api flag) at the matching port.
    • api_key - defaults to supersecretkey. If your server isn't enforcing auth, any value works; if it is, use the real one.
    • prompt and system_prompt - the actual conversation. This is where you invest your effort.
    • seed (-1 = random), max_tokens, temperature, top_p, min_p - the core generation controls.

    Outputs are answer (clean text), thinking (the extracted reasoning), and full_raw (the entire JSON response, pretty-printed - your debugging friend).

    Install

    Part of the EmAySee pack:

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

    Restart ComfyUI (or Manager → "ComfyUI_EmAySee_CustomNodes"). No requirements.txt - it needs only requests, which ComfyUI already ships. You do need a running Oobabooga text-generation-webui with the API enabled.

    Gotchas

    The default api_url pointing at 10.0.0.71 is the #1 gotcha - every new user hits a connection error until they change it. Next, stop_on_error defaults to True, meaning a backend error crashes the workflow; flip it to False if you'd rather get an error string and keep going. Timeout is 600 seconds, so a slow model won't bail early - but it also means a hung server stalls your workflow for ten minutes. And remember: this is hobbyware with an explicit no-support disclaimer, and the "OpenAI-compatible" label means it should work with other compatible servers (vLLM, LM Studio) but is only tested against Oobabooga. Start with reasoning_effort: medium and a well-crafted system prompt, and you're most of the way there.

    CategoryEmAySee/LLM

    Inputs (65)

    NameTypeDefaultDescription
    api_urlSTRINGhttp://10.0.0.71:5000/v1/chat/completions
    api_keySTRINGsupersecretkey
    promptSTRINGEnter prompt here
    system_promptSTRINGYou are a helpful assistant.
    seedINT-1-1–18446744073709550000
    max_tokensINT5121–32768
    temperatureFLOAT1.000–2
    top_pFLOAT1.000–1
    min_pFLOAT0.000–1
    top_kINT00–200
    repetition_penaltyFLOAT1.001–2
    reasoning_effortCOMBOmedium3 options: low, medium, high
    auto_continueBOOLEANfalse
    max_continuesINT31–10
    stop_on_errorBOOLEANtrue
    best_ofoptINT11–10
    echooptBOOLEANfalse
    frequency_penaltyoptFLOAT0.00-2–2
    presence_penaltyoptFLOAT0.00-2–2
    noptINT11–10
    suffixoptSTRING
    useroptSTRING
    presetoptSTRING
    dynatemp_lowoptFLOAT1.000–2
    dynatemp_highoptFLOAT1.000–2
    dynatemp_exponentoptFLOAT1.000–10
    smoothing_factoroptFLOAT0.000–10
    smoothing_curveoptFLOAT1.00.1–10
    typical_poptFLOAT1.000–1
    xtc_thresholdoptFLOAT0.100–1
    xtc_probabilityoptFLOAT0.000–1
    epsilon_cutoffoptFLOAT0.000–1
    eta_cutoffoptFLOAT0.000–1
    tfsoptFLOAT1.000–1
    top_aoptFLOAT0.000–1
    top_n_sigmaoptFLOAT0.000–10
    dry_multiplieroptFLOAT0.000–2
    dry_allowed_lengthoptINT20–20
    dry_baseoptFLOAT1.751–5
    encoder_repetition_penaltyoptFLOAT1.001–2
    no_repeat_ngram_sizeoptINT00–20
    repetition_penalty_rangeoptINT10240–8192
    penalty_alphaoptFLOAT0.000–10
    guidance_scaleoptFLOAT1.00–20
    mirostat_modeoptINT00–2
    mirostat_tauoptFLOAT5.00–20
    mirostat_etaoptFLOAT0.100–1
    prompt_lookup_num_tokensoptINT00–20
    max_tokens_secondoptINT00–32768
    do_sampleoptBOOLEANtrue
    dynamic_temperatureoptBOOLEANfalse
    temperature_lastoptBOOLEANfalse
    auto_max_new_tokensoptBOOLEANfalse
    ban_eos_tokenoptBOOLEANfalse
    add_bos_tokenoptBOOLEANtrue
    enable_thinkingoptBOOLEANtrue
    skip_special_tokensoptBOOLEANtrue
    static_cacheoptBOOLEANfalse
    truncation_lengthoptINT00–131072
    custom_token_bansoptSTRING
    negative_promptoptSTRING
    dry_sequence_breakersoptSTRING"\n", ":", "\"", "*"
    grammar_stringoptSTRING
    sampler_priorityoptSTRING
    stop_sequencesoptSTRING

    Outputs (3)

    NameTypeDescription
    answerSTRING
    thinkingSTRING
    full_rawSTRING