Nodes/ComfyUI-krea2-negpip/Apply Krea2 NegPiP
ComfyUI Node

Apply Krea2 NegPiP

Krea 2 has no real negative prompt. This node gives you one.

By blue-pen5805·Created 2 months ago·Updated about a month ago· 108
Apply Krea2 NegPiP
  • model
  • clip
  • model
  • clip
value_strength1.00
patch_txtfusion_refinersfalse
block_start0
block_end27
block_stride1

Here's the thing about Krea 2 that trips everyone up: it runs at CFG 1.0 (Turbo) or low CFG, and at those settings a separate negative prompt barely does anything. You keep typing "blurry, low quality" into the negative box, it keeps coming out blurry, and you're not imagining it - the mechanism just isn't there. Apply Krea2 NegPiP is the workaround: it lets you write (blurry:-1.0) inside the positive prompt and have that token actively suppressed, NegPiP-style, instead of hoping a CFG-gated negative prompt rescues you.

What it actually is

"NegPiP" is short for negative prompt in prompt - an old idea from hako-mikan's sd-webui-negpip for A1111 that this pack ports to Krea 2. Instead of a whole second prompt, you tag individual tokens with weights: a portrait photo, (blurry:-1.0), (low quality:-1.2). The node parses those weights, and during sampling it flips the attention value vectors of the negative tokens so the model actively steers away from them.

It's one node in a tiny, dependency-free pack: no requirements to pip, no model files to download, no API key. The author (blue-pen5805) is the same person behind sdweb-easy-stablecascade-diffusers, so this isn't a drive-by one-off - it's a real little project.

How it works

The node patches two things and hands them back to you as a patched MODEL and CLIP:

  • CLIP side. It wraps the Qwen3-VL encoder's encode_token_weights to parse ComfyUI's (word:-1.2) syntax. Positive and non-unit weights still scale the text conditioning normally; negative tokens get their positions recorded and packed into a "sidecar" - metadata smuggled into the flattened multilayer text features with magic markers and a checksum.
  • DiT side. At sampling, it decodes that sidecar and, for the marked token positions, multiplies the attention V vector by -value_strength. That's the NegPiP trick: flip the values, suppress the concept, in every block the node is told to touch.

You plug MODEL and CLIP in, and wire the outputs onward to your text encoder and sampler. Forgetting that second half - using the original CLIP for encoding instead of the patched one - is the #1 way to silently get nothing.

Inputs that matter

Only a few of the seven fields are worth touching:

  • value_strength - how hard the negative effect hits. Default 1.0; people tend to sit around there or slightly higher. 0 turns it off entirely.
  • patch_txtfusion_refiners - off by default; flip it on only if you're chasing a stronger effect on Krea 2's fusion/refiner path.
  • block_start / block_end / block_stride - optional, defaulting to 0–27 with stride 1, i.e. every block. Fine to leave alone; drop them to limit the effect to part of the network if you find it too aggressive.

Installing

The usual, no surprises:

cd ComfyUI/custom_nodes
git clone https://github.com/blue-pen5805/ComfyUI-krea2-negpip.git

Then restart ComfyUI. Or search "krea2 negpip" in ComfyUI Manager. There are no extra dependencies - the only real requirement is a ComfyUI that can load Krea 2 at all (0.25.0+), with the model, the Qwen3-VL text encoder, and the Qwen-Image VAE all in place. Load the CLIP with CLIPLoader type krea2 specifically.

Common issues

  • "Krea2 NegPiP requires CLIPLoader type='krea2'" - this raises if your CLIP isn't a real Krea 2 Qwen3-VL encoder. Switch the loader type, then wire the patched CLIP output through.
  • It works better on simple prompts. In the release thread, early users found that on long, detailed prompts the negative words often get ignored. Keep your (word:-1.x) tags short and early in the prompt.
  • Image placeholders and custom embeddings are handled conservatively - negative weights after an image embedding may not apply.
  • Performance cost was asked about but nobody measured it publicly; the patch only runs during the diffusion call and is restored after, so it's not a permanent mutation of your model.

The syntax takes a second to get used to, and yes, people have written regex chains to auto-convert a traditional negative prompt into (tag:-1.0) format appended to the positive prompt. That's honestly the cleanest workflow: keep writing negatives normally, let the regex translate them, and let this node do the real work.

Categoryloaders

Inputs (7)

NameTypeDefaultDescription
modelMODEL
clipCLIP
value_strengthFLOAT1.000–8
patch_txtfusion_refinersBOOLEANfalse
block_startoptINT00–999
block_endoptINT270–999
block_strideoptINT11–16

Outputs (2)

NameTypeDescription
modelMODEL
clipCLIP