⚗ Alchemica · Prompt [1.0, use Alchemica Prompt (enhance + encode + NAG)]
Loader to sampler in one node, prompt and negative included
- clip
- model
- immagine
- model
- positive
- negative
- report
A stock Krea 2 graph is a text encoder, a prompt box, a conditioning, a NAG patch and a latent. This node is all of them standing in a line, which is why the pack's starter workflow only needs five nodes total.
What it is
AlchemicaPrompt is the 1.0 all-in-one prompt block from ComfyUI-AlchemicaSampler: it writes the prompt with Krea 2's own text encoder (or takes yours as written), encodes scene and detail into one conditioning, and patches the negative into the model's attention. Model in, model out with the guidance applied; text in, conditioning out. Nothing else sits between the loader and the sampler.
Fair warning on the name. It shows up as "⚗ Alchemica · Prompt [1.0, use Alchemica Prompt (enhance + encode + NAG)]" with Italian widgets, because 1.1 renamed everything: this node became AlchemicaPromptAllInOne, and that was then superseded by AlchemicaPromptStudio, which adds the list/string/example modes, Ollama and the start latent. All three run the same core. New graph, use PromptStudio; this one is here because your saved workflow points at it.
How it works
modo has two settings and they define everything.
genera da idea - you write a few words in idea (any language), and Krea 2's Qwen3-VL text encoder writes the prompt for you: a SCENE paragraph, a DETAIL paragraph about surfaces, skin, fabric and optics, and a NEGATIVE list. The encoder is the same model that then encodes the result, which is why this costs a model call on the first run and why the prompt appears in the report rather than in a widget. stile picks the photographic register, parole sets the scene length, and creativita at 0 is fully deterministic - same text every queue - while 0.6–0.9 gives variations and makes seed matter. Connect immagine with idea empty and it describes the image instead. The author's rules are worth knowing because they show up in the output: affirmative language only, and it will not describe skin as wet, dewy or glistening, because that phrasing reliably produced sweaty-looking renders.
tal quale - your scena, dettaglio and negativo are used exactly as typed. dettaglio empty means scene only. This is the mode for when you already know what you want to say.
Then the interesting part: NAG. Krea 2 Turbo is guidance-distilled and runs at CFG 1, and at CFG 1 there is no unconditional pass, so a negative prompt box does nothing at all - that's true of every distilled model of this generation, not a quirk here. What actually has no unconditional pass is the guidance term; NAG (normalized attention guidance) intervenes in attention space instead, so your negativo does something at CFG 1. Defaults are the calibrated ones: nag_scala 3, nag_tau 2.5 capping how far it may push away from the positive, nag_alpha 0.25 blending back toward the original attention, nag_blocchi for which DiT blocks participate. nag_sigma_da at −1 is the clever default: NAG switches on at the profile's hand-off sigma (~0.87), below which composition is already locked, so you remove unwanted things without moving the picture. The pack's own measurement: water droplets removed, image 99.3% identical to the run without it, about +40% time on the refinement stage.
struttura is the other guidance lever: PAG sharpens and adds contrast, SEG blurs the queries - and the tooltip is honest that SEG halos above 0.3.
Inputs and outputs
model and clip come in from the loader (or the LoRA stack); positive and negative go to the sampler, and negative only matters if you push the sampler's cfg above 1. model is the one to watch: NAG rides on it, so wire this output to the sampler, not the loader's. report is your only window into what the encoder wrote.
Installing it
ComfyUI Manager, search "AlchemicaSampler", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
# restart the server, not just the page
ComfyUI 0.36.0+ is a hard requirement here - the prompt writing uses CLIP.generate, which landed in that version. There are no extra Python packages, but you need the three Krea 2 files (krea2_turbo_nvfp4 or its fp8 sibling, the Qwen3-VL encoder, the Qwen-Image VAE) in models/diffusion_models, models/text_encoders and models/vae.
Where it goes wrong
- "Krea 2 conditioning-size error". The text encoder was loaded with a type other than
krea2. Use ⚗ Load Krea 2, or set CLIPLoader's type by hand. - First queue is slow. The encoder writes the text, then the image model has to be brought back. Later runs reuse the cached answer - and changing the NAG values or the resolution won't trigger a rewrite, but editing
istruzioniwill. - The negative does nothing. Check
nag_scalaisn't 0 and that you're at cfg 1 with the patched model, not the raw loader output. - New widgets, old values. If you update the pack and the node still looks wrong, restart the server. The pack prints a warning when it sees unrecognised inputs for exactly this reason.
Inputs (26)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | Text encoder di Krea 2: scrive il prompt (se 'genera da idea') e lo codifica sempre | |
| model | MODEL | Qui arriva NAG/struttura applicati, pronto per il sampler | |
| modo | COMBO | genera da idea | genera da idea = scrive scena/dettaglio/negativo da 'idea'. tal quale = usa 'scena'/'dettaglio'/'negativo' come li scrivi, senza generazione |
| idea | STRING | Usata solo con 'genera da idea'. Qualunque lingua, bastano poche parole. Vuota + immagine = descrive l'immagine | |
| scena | STRING | Con 'tal quale': il prompt usato com'e'. Con 'genera da idea': ignorata (la scrive il text encoder: leggi il risultato nel 'report') | |
| dettaglio | STRING | Con 'tal quale': dettaglio usato com'e' (vuoto = solo 'scena'). Con 'genera da idea': ignorato | |
| negativo | STRING | Con 'tal quale': negativo per il NAG, usato com'e'. Con 'genera da idea': ignorato | |
| stile | COMBO | foto realistica | Usato solo con 'genera da idea' |
| parole | INT | 8030–200 | Lunghezza della SCENA (il dettaglio e' il 30-50% in piu'). Usato solo con 'genera da idea' |
| creativita | FLOAT | 0.000–1.5 | 0 = deterministico (stesso testo ogni volta). 0.6-0.9 = variazioni; cambia il seed. Usato solo con 'genera da idea' |
| seed | INT | 00–18446744073709550000 | Conta solo con 'genera da idea' e creativita > 0 |
| nag_scala | FLOAT | 3.00–20 | NAG: forza del negativo a cfg 1. 0 = spento. Tarato: 3 |
| nag_tau | FLOAT | 2.51–10 | NAG: limite della norma (quanto puo' allontanarsi dal positivo) |
| nag_alpha | FLOAT | 0.250–1 | NAG: mescola con l'attenzione originale |
| nag_blocchi | STRING | tutti | Blocchi DiT (0-27): 'tutti', '0-13', '5,8,10-12' |
| nag_sigma_da | FLOAT | -1.00-1–1 | NAG attivo da questa sigma in giu'. 1.0 = da subito (puo' cambiare la composizione). -1 = dalla sigma di passaggio del profilo (~0.87): togli il negativo SENZA cambiare la composizione |
| nag_sigma_a | FLOAT | 0.000–1 | NAG attivo fino a questa sigma |
| struttura | COMBO | spenta | PAG = attenzione identita': piu' nitido e contrastato. SEG = query sfocate: aloni sopra 0.3 |
| struttura_scala | FLOAT | 0.00-5–10 | Forza della guida di struttura. 0 = spenta |
| struttura_blocchi | STRING | 8-19 | — |
| seg_sfocatura | FLOAT | 10.00.5–1000 | SEG: sigma gaussiana in token (>=1000 = infinita) |
| struttura_sigma_da | FLOAT | -1.00-1–1 | Finestra della guida di struttura: da questa sigma... (-1 = dal profilo) |
| struttura_sigma_a | FLOAT | 0.000–1 | ...fino a questa (costa solo dentro la finestra) |
| immagineopt | IMAGE | Riferimento visivo (Qwen3-VL lo guarda). Solo con 'genera da idea' | |
| pelleopt | COMBO | liscia (senza peluria) | Solo con 'genera da idea' |
| istruzioniopt | STRING | Tue istruzioni extra per l'enhancer, qualunque lingua. Solo con 'genera da idea' |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | Con NAG/struttura applicati: collega qui il sampler |
| positive | CONDITIONING | Scena + dettaglio in un solo conditioning: collega qui il 'positive' del sampler |
| negative | CONDITIONING | Negativo codificato: serve solo se nel sampler metti cfg > 1 |
| report | STRING | — |