Nodes/⚗ AlchemicaSampler/⚗ Alchemica · Prompt enhancer (text encoder) [1.0, use Alchemica Prompt Enhancer (Krea 2 text encoder)]
ComfyUI Node

⚗ Alchemica · Prompt enhancer (text encoder) [1.0, use Alchemica Prompt Enhancer (Krea 2 text encoder)]

Krea 2's own text encoder writes your prompt — no Ollama, no API key, no copy-paste

By Nessuno76·Created 23 days ago·Updated 6 days ago· 3
⚗ Alchemica · Prompt enhancer (text encoder) [1.0, use Alchemica Prompt Enhancer (Krea 2 text encoder)]
  • clip
  • immagine
  • scena
  • dettaglio
  • negativo
  • report
◄idea►
◄stilefoto realistica►
◄parole80►
◄creativita0.00►
◄seed0►
◄pelleliscia (senza peluria)►
◄istruzioni►

Every "prompt enhancer" node you've seen either phones an API or wants you to run a 7B instruct model alongside your sampler. This one cheats: the text encoder you already load for Krea 2 is a language model - Qwen3-VL-4B - so it can write the prompt on its way to encoding it. No Ollama, no key, no second download.

How it works

You give it an idea, in any language, a few words is fine. It calls the text encoder's generate path, the model writes an English prompt, and the node returns three strings split by role:

  • scena - subject, pose, framing, setting, light, colours, style.
  • dettaglio - the rendering half: skin, fabric, material, optics.
  • negativo - the things to avoid, for NAG.
  • report - what happened, including which sentences a rule filter removed.

The split isn't decoration, it's the same scene/detail logic the ⚗ Two-phase prompt node formalises. And because Qwen3-VL is a vision-language model, it can work from a reference image too: connect anything to the optional immagine input and leave idea empty, and it describes the picture instead of illustrating your sentence.

The fields you'll touch

idea - multiline, any language. Empty + no image is an error ("write an idea or connect an image"), not an empty prompt.

stile - eight presets that steer the register: foto realistica, ritratto, still life / laboratorio, paesaggio, architettura, cinematografico, illustrazione, libero. libero (free) is the one that lets the model do what it wants.

parole - target length of the SCENE, 30–200, default 80. The detail text comes out about a third of that.

creativita - 0 to 1.5, default 0. At 0 the enhancer is deterministic: same idea, same text, every run. That's the setting you want while you're tuning a sampler, because otherwise you can't tell whether a change came from your settings or from the prompt being rewritten. At 0.6–0.9 you get variations - and then seed starts mattering. Bump the seed for a different take.

immagine (optional) - visual reference.

What's baked into its rules

The prompt it produces is constrained, and the constraints come out of the author's measurements rather than taste. No words that paint water drops on skin. No "imperfections" (they render as bumps). No negations in the positive text - at CFG 1 a negation drags in the thing it negates. Consistent optics. A filter drops any generated sentence that breaks a rule, and the report output tells you what got removed, which is genuinely useful the first few times because it teaches you the model's blind spots.

Wiring

⚗ Load Krea 2 · clip → ⚗ Prompt enhancer · clip
                        scena ──────────→ ⚗ Two-phase prompt · scena
                        dettaglio ──────→ ⚗ Two-phase prompt · dettaglio
                        negativo ───────→ ⚗ Text / NAG · negativo

You can also feed scena straight into a single-prompt sampler if you're not using two-phase, or read the strings in a text preview node. The report output is a STRING; hook it to ShowText if you want to see the filter's work.

Installing

Part of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler

Restart the ComfyUI server. The hard requirement here is ComfyUI 0.36.0 or newer - the enhancer uses CLIP.generate, which older builds don't expose. If the pack's "complete" nodes fail to load, __init__.py catches the error and prints Pro nodes NOT loaded / complete-package nodes NOT loaded to the console with the traceback; that message is your first place to look.

Traps

First run feels broken. It isn't - the text encoder has to load and write the prompt, and after that the model reloads for sampling. Later runs reuse the cached text. The pack's own quick start calls this out because it looks exactly like a hang.

Changing the idea invalidates the cache. The prompt is cached until the idea changes. Editing one word means paying the generation cost again.

Creativity above 0 without a fixed seed. You'll get a new prompt and a new image, and you'll never be able to attribute either. Set creativita to 0 for anything reproducible.

Explicit ideas. Qwen3-VL's instruct variant carries the usual assistant refusals, and it's the same encoder being asked to write rather than merely embed - so a subject it declines to describe is a real failure mode. The community's answer to this in captioning work is abliterated Qwen3-VL builds; here you're stuck with the encoder Krea 2 ships. Keep the idea specific rather than loaded with keywords and it behaves.

Category⚗ AlchemicaMente/legacy (1.0)

Inputs (9)

NameTypeDefaultDescription
clipCLIPKrea 2's text encoder: it writes the prompt, then encodes it
ideaSTRINGAny language, a few words are enough. Empty + image = describes the image
stileCOMBOfoto realistica8 options: foto realistica, ritratto, still life / laboratorio, paesaggio, architettura, cinematografico, +2
paroleINT8030–200Length of the SCENE (the detail is about 30-50% of it)
creativitaFLOAT0.000–1.50 = deterministic (same text every run). 0.6-0.9 = variations; change the seed
seedINT00–18446744073709550000Only matters when creativita (creativity) > 0
immagineoptIMAGEVisual reference: the model looks at it (Qwen3-VL is a vision-language model)
pelleoptCOMBOliscia (senza peluria)Skin rendering in the DETAIL. smooth = no body/vellus hair (also added to the negative); natural = fine vellus hair (the 1.0.0 behaviour); model decides = hair not mentioned
istruzionioptSTRINGYour own extra instructions for the enhancer, any language. They are added to its rules and win when they conflict. E.g. 'Skin: smooth, tanned. Always golden hour light.'

Outputs (4)

NameTypeDescription
scenaSTRING—
dettaglioSTRING—
negativoSTRING—
reportSTRING—