Every node id, input name and existing widget position is unchanged, so saved
workflows load; new inputs are appended only.
Wildcards
- core/wildcards: Dynamic Prompts / Impact Pack grammar, tag queries, variables,
conditionals, concept / verbatim / loose bindings, reproducible seeds.
Wired into every enhancer node; reads ComfyUI/models/wildcards.
- New nodes: Wildcard Processor, Semantic Variation (direction axes),
Concept Survival Check. Starter lists in wildcards/.
- Random choices use a private generator; global random state is untouched.
Platform profiles
- core/profiles + profiles/*.yaml: one file per model (format, length,
negative prompt or none, quality tokens, text and dialogue syntax, vendor
rewriter prompt fetched once and cached). profiles_user/ overrides by id.
- New node: Platform Prompt Rewriter (prose, tags, edit instructions, JSON,
MiniMax H3 fields, Hailuo brackets), with validators for each format.
- Text-to-Image and Image-to-Image read profiles through platforms.py;
corrected facts for FLUX, Kontext, Chroma, Wan, AuraFlow, Kolors, NoobAI,
Qwen-Image, HunyuanImage. Negative prompt is empty for models without one.
- Hosted / API models: Seedream 5, Nano Banana, GPT Image, Midjourney V8,
FLUX.2 pro, Ideogram 3, Recraft V4, Seedance 2.0 / 2.5, Kling 3.0, Veo 3.1,
Gemini Omni Flash, Runway, Wan 3.0, Luma, hosted H3, Grok, Vidu, PixVerse.
Reports say how to switch the vendor's own prompt rewriting off.
- Illustrious: spaced tags, quality tags last, 25-80 words (OnomaAI paper).
Video nodes
- target_model and duration_seconds appended to the three video expanders.
Default target is MiniMax H3; wan22_video is the original path, unchanged.
A workflow saved earlier loads with the default until the input is set.
Also included: the Alice, Ideogram Magic Prompt and prompt-database nodes that
were already registered in __init__.py but had not been committed.
Fixes: v1 {animal} / {label:a|b} wildcards were inert in the video nodes;
Image-to-Video save_to_file raised NameError; T2I padded short-prompt models.
.gitattributes added (text=auto) so CRLF working files stop showing as
whole-file changes. prompt_database.db and the cached Ideogram prompt are
git-ignored.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VpCi6nw5UECMdZ7ayYJvN
62 lines
3.3 KiB
YAML
62 lines
3.3 KiB
YAML
id: flux2_dev
|
|
name: "FLUX.2 [dev]"
|
|
developer: "Black Forest Labs"
|
|
summary: "32B model read through Mistral-Small-3.2-24B. Prose or structured JSON, exact hex colours, strong text rendering, text-to-image and reference editing in one model."
|
|
modality: image
|
|
tasks: [t2i, edit]
|
|
encoder: "Mistral-Small-3.2-24B-Instruct (512 tokens)"
|
|
encoder_family: llm
|
|
caption_style: prose
|
|
languages: [en]
|
|
target_words: [40, 110]
|
|
max_tokens: 512
|
|
negative: "no"
|
|
quality_tokens: forbid
|
|
quoted_text: double
|
|
weights: false
|
|
hex_colors: true
|
|
structure: "Subject + action or pose + style or medium + context or setting + lighting + technical. Word order matters: earlier = stronger."
|
|
rules:
|
|
- "Front-load the subject; FLUX.2 pays most attention to what comes first."
|
|
- "Always describe the light: source, direction, quality, colour temperature. It is the biggest quality lever."
|
|
- "For photorealism give camera, lens, aperture and film stock rather than words like 'realistic'."
|
|
- "Anything that would carry text in reality (signs, labels, screens) needs explicit quoted text, or the model writes gibberish."
|
|
- "30-80 words suits most ideas; go past 80 only for complex multi-subject scenes."
|
|
avoid:
|
|
- "Negative phrasing: 'no glasses' becomes 'clear face, eyes visible'"
|
|
- "Keyword soup ('woman, portrait, beautiful, 8k, detailed')"
|
|
- "A hex code that is not bound to an object"
|
|
- "Prompt weights"
|
|
task_rules:
|
|
edit:
|
|
target_words: [30, 80]
|
|
structure: "One instruction: what changes, then what stays the same (face, lighting, composition)."
|
|
validator: edit_instruction
|
|
rules:
|
|
- "One concise instruction, 50-80 words, about 30 for a brief request."
|
|
- "Analytical language; no decorative words such as 'whimsical' or 'cascading'."
|
|
- "Say what changes AND what stays the same."
|
|
- "Refer to real elements of the source image; refer to several inputs as 'image 1', 'image 2'."
|
|
- "Turn negatives into positives: 'don't change X' becomes 'keep X'."
|
|
- "Make abstractions concrete."
|
|
replace_rules: true
|
|
official:
|
|
- task: t2i
|
|
url: "https://raw.githubusercontent.com/black-forest-labs/flux2/main/src/flux2/system_messages.py"
|
|
format: python_var
|
|
variable: SYSTEM_MESSAGE_UPSAMPLING_T2I
|
|
- task: edit
|
|
url: "https://raw.githubusercontent.com/black-forest-labs/flux2/main/src/flux2/system_messages.py"
|
|
format: python_var
|
|
variable: SYSTEM_MESSAGE_UPSAMPLING_I2I
|
|
note: "BFL's edit prompt contains the line 'Keep content PG-13' (their hosted-service policy). It is left as published; add a drop_lines pattern in a profiles_user copy to remove it."
|
|
tailoring: |
|
|
Length: 30-80 words for most ideas, up to about 110 for complex scenes. Describe the light source and direction in every prompt.
|
|
When exact colours matter, bind a hex code to the object and announce it with the word "color": "a scarf in color #C4725A".
|
|
sources:
|
|
- {url: "https://docs.bfl.ml/guides/prompting_guide_flux2", supports: "structure, lengths, JSON schema, hex colours, no negatives, typography", confidence: high}
|
|
- {url: "https://raw.githubusercontent.com/black-forest-labs/flux2/main/src/flux2/text_encoder.py", supports: "512-token limit, encoders", confidence: high}
|
|
- {url: "https://raw.githubusercontent.com/black-forest-labs/flux2/main/src/flux2/system_messages.py", supports: "official upsampling prompts", confidence: high}
|
|
checked: "2026-09-20"
|
|
confidence: high
|