System One Yes/No
Ask a Model One Question and Get a Probability Back
- backend
- probability
- verdict
- report
The display name says Yes/No; the class is called SystemOneNoul, named after the question type the backends actually answer with. Whatever you call it, this is the node for the one judgment that gates everything: does this prompt name a real person? Yes → swap in a stand-in prompt. No → carry on.
That's not a hypothetical use case. The pack ships it as demo 3, and the KB's read on likeness law is that the risk is real and unglamorous: non-sexual likeness of real people isn't reached federally today in the US, but it would be under NO FAKES, and it may already be under your state's right of publicity. A two-node guard in front of your sampler is a cheap answer to a genuinely boring legal question - and unlike the checkpoint-side filters people argue about, this one is a check you own and can tune.
How it works
You wire in a backend, give it state (usually your prompt), instructions (the question), and a threshold. The node sends the backend a noul question and gets back a probability that the statement is true, then splits it: probability is the raw number, verdict is probability >= threshold. Default 0.5, and for once the default is reasonable.
true_criteria and false_criteria are optional and let you spell out what each side means - "true means the prompt names a specific real person or public figure; false means a generic or fictional description". They only work as a pair: set one and not the other and you get Give both true_criteria and false_criteria, or neither.
The node also prints its own bar on the canvas after a run - probability: 0.99 ###################. verdict: yes (threshold 0.50) - which is how you tune thresholds without staring at logs.
The backend choice is the whole ballgame here
Read the README's table for this one twice, because it's the strongest evidence in the whole pack that provider choice isn't cosmetic:
| Prompt | Laya | Jev | | --- | --- | --- | | Taylor Swift on stage, concert photo | 0.47, passes | 0.99, swapped | | Barack Obama eating ice cream on a bench | 0.36, passes | 0.99, swapped | | a businessman giving a speech on stage | 0.39, passes | 0.03, passes |
Laya's scores for real and generic people overlap - 0.33 to 0.47 against 0.39. No threshold separates them. That's not a tuning problem; the local model doesn't have the world knowledge to know who Taylor Swift is, so there's nothing to threshold. Jev separates the same three prompts by a mile.
So: use Jev for identity, celebrity, artist-name, studio-name and language questions - anything needing knowledge of the world rather than of English. Use Laya for things it can actually judge from the text in front of it, like tone or explicitness. Getting this backwards produces a guard that reports "all clear" at 0.4 and lets everything through, which is worse than no guard, because you'll trust it.
Outputs and wiring
probability (FLOAT), verdict (BOOLEAN), report (STRING) - JSON with the question, raw answer, backend and latency.
verdict is the one you wire into a switch or an If/Else to pick between your real prompt and the stand-in. Keep probability visible somewhere while you build; a guard sitting at 0.51 and one at 0.99 need very different responses from you, and the boolean hides that distinction completely.
Two notes: the node is an output node, so it runs even with nothing wired downstream - which is exactly how the demo gates a prompt before sampling ever happens. And it answers about text only. Laya and Jev raise cannot see images; use a Clef backend. if you point an image at them.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/dante01yoon/ComfyUI-SystemOne
pip install -r ComfyUI-SystemOne/requirements.txt
export TYPESAFE_API_KEY=... # for Jev
Search System One in ComfyUI Manager if you'd rather not use git. The requirements file is a single line (laya>=0.3.24); you only need it for local Laya. The key has to be exported in the shell that launches ComfyUI, not in a separate terminal, or you'll get The Jev backend needs the TYPESAFE_API_KEY environment variable set before starting ComfyUI. on the first run.
Honestly
If you only ever install one node from this pack, install this one plus the Backend and run it on Jev. It's a guard that costs a fraction of a cent per prompt and answers a question you'd otherwise be guessing at. If you're running Laya and expecting a celebrity detector, you're going to have a bad time - the README publishes the numbers that prove it, which is more honesty than most pack authors manage.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| backend | SYSTEMONE_BACKEND | — | |
| state | STRING | What the model looks at: plain text, or a JSON object/array. | |
| instructions | STRING | The question to answer about the state. | |
| threshold | FLOAT | 0.500–1 | — |
| true_criteriaopt | STRING | — | |
| false_criteriaopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| probability | FLOAT | — |
| verdict | BOOLEAN | — |
| report | STRING | — |