Nodes/ComfyUI-llama-multimodal/[llama.cpp] Build Noul
ComfyUI Node

[llama.cpp] Build Noul

The yes/no question your vision model answers with a number

By craftingmod·Created 3 months ago·Updated 26 days ago· 3
[llama.cpp] Build Noul
    • question
    ◄question►

    Most people wire a vision model into ComfyUI to describe something - caption a training set, seed an img2img prompt. Then one day you want it to decide something. Is there water in this shot? Is this frame a close-up? Did the hands come out wrong? And you're back to begging a chat model for a clean answer and regex-ing the prose it hands you back.

    [llama.cpp] Build Noul is one half of this pack's answer to that. It takes a single question and packs it into a typed "noul" question payload - a true-or-false probability question - that the System One node on the other end can actually score instead of chatting about.

    Where this sits in the pack

    The pack (ComfyUI-llama-multimodal by craftingmod, publisher id alyac) runs GGUF LLMs and VLMs inside ComfyUI through llama.cpp, either in-process ([llama.cpp] Create Native Session) or against a llama server process ([llama.cpp] Create Runtime Session, [llama.cpp] Connect Session). Decision questions come in two flavours: a legacy "prefill" path that scores letter tokens A–Z and works on basically any model, and the System One path these nodes belong to, which posts to the server's /v1/systemone endpoint and gets a proper probability distribution back.

    Noul is the simplest member of that family: no option list, no scale, just true/false. If you've used the pack's choice or score questions, noul is what you reach for when the honest answer is binary.

    What it actually does

    Build Noul is a pure payload builder - it runs no inference. Its one input, question, is a multiline STRING (the author's own default is empty, so type something). It validates that the text is non-empty, then emits a question output of custom type OLLAMA_IMAGE_LIST_LLAMA_CPP_QUESTION shaped as {type: "noul", question: "..."}.

    That object is the thing you wire into [llama.cpp] System One Decide (or either sequential variant). Downstream, the session sends your combined system/context text as the request's state, plus any images as data URLs, with the question marked noul and no criteria list. The server answers with a true/false probability, and [llama.cpp] Extract Answer turns that into numbers.

    Note there is no answer input here, and no images input either. True/false is implicit, and media belongs to the Decide node that does the asking. That's deliberate: the builder stays reusable, one question can feed several decisions.

    Installing it

    The whole pack installs the same way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/craftingmod/ComfyUI-llama-multimodal.git
    

    …then restart ComfyUI. Or search llama multimodal in ComfyUI Manager and install ComfyUI-llama-multimodal. You need ComfyUI 0.19.3 or later - these nodes are built on the current node API, so an old build will not load them.

    Two more things before the first run: your GGUF model and its matching mmproj projector go in ComfyUI/models/LLM, and if llama isn't on your PATH you get the runtime from Settings → llama-multimodal → Download llama.cpp. The decision nodes specifically need the pack's optional llama dependency (makoto-decision, which is also in its requirements.txt); if the import is missing you'll get an error telling you to install the optional llama dependencies and restart.

    Where people get burned

    Native sessions are rejected. System One needs a Runtime or Connect Session. Plug a Native Session into Decide and it fails explicitly rather than quietly degrading - the prefill letter-scoring path is the one that takes Native.

    Don't cross the wires with the prefill path. A noul payload fed into [llama.cpp] Prefill Decide errors out, because that node wants the {question, answer} shape from Build Question (Prefill), not {type, question}.

    The server has to support the endpoint. /v1/systemone is not something every llama.cpp server build exposes, and the pack does not fall back to token scoring when it's missing - you get a 404/501-style failure. Point a Connect Session at a stock server and ask a question, and that's what you'll see.

    The number is not calibrated confidence. It's the model's probability for "true" as a decision primitive. A 0.62 is a nudge in a workflow, not a measurement, and it moves with your wording. "Is there water in the image?" and "Does the image contain water?" are different questions to a small model.

    And the classic LLM-in-ComfyUI trap applies: if the node runs but nothing downstream happens, check that a Decide node is actually wired to it. A builder with nothing plugged in is a very quiet no-op.

    Categoryllama_cpp/decision/system_one

    Inputs (1)

    NameTypeDefaultDescription
    questionSTRING—

    Outputs (1)

    NameTypeDescription
    questionOLLAMA_IMAGE_LIST_LLAMA_CPP_QUESTION—