Skip to main content
ClaudeWave
Skill126 estrellas del repoactualizado 3d ago

flux2-klein-prompting

>

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/AnastasiyaW/claude-code-config /tmp/flux2-klein-prompting && cp -r /tmp/flux2-klein-prompting/skills/ai-ml/flux2-klein-prompting ~/.claude/skills/flux2-klein-prompting
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# FLUX.2 [klein] — Prompt Engineering Guide

## Core principle: prose, not tags

Official BFL prompting guide requires **connected prose**, not keyword lists.
Write: who/what is in the image, where, in what style, materials/light/camera, and — for editing — what must remain unchanged.

---

## Model variants quick reference

| Axis | Options | Notes |
|---|---|---|
| Size | 4B / 9B | 9B better for complex instructions; 4B fastest |
| Mode | Distilled / Base | Distilled = 4 steps, CFG≈1.0; Base = 50 steps, CFG≈4.0 |
| License | 4B Apache-2.0 / 9B Non-Commercial | Check before commercial use |
| Task | T2I / Edit (I2I) / Multi-reference | Edit requires `input_image`; up to 4 ref images via API |

**9B uses Qwen3 8B text embedder** → solid multilingual support (Russian works natively).

---

## Prompt structure

### T2I (text-to-image)
1. **Subject** — who/what, key attributes
2. **Scene/context** — where, time of day, surroundings
3. **Composition** — framing, angle, background
4. **Light/materials** — source, softness, reflections, texture
5. **Style/genre** — photorealism, illustration, catalog, poster, UI
6. **Text in image** (if needed) — exact string in quotes + position/font

### Edit (I2I, no mask)
1. **Base anchor** — "This exact image but…"
2. **What to change** — object / background / text / color / material
3. **What to preserve** — face, lighting, style, perspective, brand elements
4. **Multi-reference** — reference by "image 2 / image 3", keep prompt concise

---

## Key rules

**Text in image** → always in straight quotes, specify position. Without this: garbled glyphs.
```
Заголовок: "ТОЧНЫЙ ТЕКСТ". Шрифт жирный гротеск, ровный кернинг. Других надписей не добавлять.
```

**Negatives → positives** → don't say "don't change X", say "preserve X"
```
❌ "не меняй освещение"
✅ "Сохрани освещение, перспективу и лицо"
```

**Multi-reference** → simplify text, use explicit indexing
```
"Возьми персонажа из image 2 и помести рядом с объектом из image 1."
```

**Distilled for previews, Base for finals**

---

## Ready-to-use templates (Russian)

### Photorealistic object
```
Фотореалистичная предметная фотография [объект] на [фон], ракурс [сверху/на уровне глаз/крупный план], мягкий студийный свет, реалистичные материалы и фактуры, аккуратные тени, высокая детализация. Без логотипов и водяных знаков.
```

### Product mockup / e-commerce
```
Каталожный product shot: [товар] в центре кадра, фон [описание], чистая композиция, цвет товара строго [HEX или словом], реалистичные отражения, нейтральный стиль, как для e-commerce.
```

### Logo / icon
```
Минималистичная иконка: [смысл/символ], плоский дизайн, 2–3 цвета, чёткий силуэт, без мелких деталей. Без текста.
```

### Character design
```
Персонаж: [кто], внешний вид: [рост/пропорции/одежда], выражение лица [эмоция], стиль [аниме/3D/иллюстрация], палитра [цвета], фон простой. Сохранить узнаваемость: [признак 1], [признак 2].
```

### Sticker pack (6 emotions)
```
Набор стикеров одного персонажа (6 штук): радость, злость, удивление, смущение, сон, восторг. Единый стиль, толстый контур, яркая палитра, прозрачный фон, без текста.
```

### Poster with readable text
```
Постер [стиль]. Вверху крупный заголовок: "ТОЧНЫЙ ТЕКСТ". Шрифт: жирный гротеск, ровный кернинг, читаемо. Ниже подзаголовок: "Ещё одна строка". Остальные надписи не добавлять.
```

### UI mockup (mobile)
```
UI‑мокап мобильного приложения [тематика]. 3 экрана в одной сетке. Читаемые заголовки на русском в кавычках: "[Экран 1]", "[Экран 2]", "[Экран 3]". Минималистичная дизайн‑система, много воздуха, аккуратная типографика, без лишнего декоративного шума.
```

### Seamless texture
```
Бесшовная текстура (seamless): [материал], равномерное освещение, без объектов, без текста, высокая детализация, натуральные вариации, без резких пятен.
```

### Edit: replace / recolor / swap background
```
Это то же изображение, но: [что изменить]. Сохрани: [освещение / перспектива / лицо / композиция / стиль]. Сделай результат фотореалистичным и согласованным по теням и отражениям.
```

### Edit: add text to sign/label
```
Это то же изображение, но добавь на [табличку/вывеску] точный текст: "[ТЕКСТ]". Сохрани стиль таблички, фон и освещение. Текст должен быть читаемым. Больше текста не добавляй.
```

### Edit: multi-reference character swap
```
Это то же изображение, но возьми персонажа из image 2 и помести рядом с персонажем из image 1. Сохрани реалистичные тени, масштаб и общую атмосферу сцены.
```

---

## API parameters

### Recommended defaults (from official BFL HF Spaces)
| Mode | Steps | guidance_scale | Use for |
|---|---|---|---|
| Distilled | 4 | ~1.0 | Fast previews, interactive |
| Base | 50 | ~4.0 | Final renders, detail/diversity |

### BFL API constraints (klein endpoints)
- `steps` / `guidance` not exposed in klein API (unlike flex) — control via prompt + seed + resolution
- Input: min 64×64, max 4MP (2048×2048), recommended ≤2MP
- Output always multiple of 16; input auto-resized to ×16
- Up to 4 reference images via API
- Result is a signed URL valid **10 minutes** — download immediately

### Available API fields (klein)
`prompt`, `input_image`, `input_image_2..4`, `seed`, `width`, `height`, `safety_tolerance`, `output_format`, `webhook`

---

## Python: BFL API (async polling)

```python
import os, time, requests

BFL_API_KEY = os.environ["BFL_API_KEY"]

# 1. Create task
create = requests.post(
    "https://api.bfl.ai/v1/flux-2-klein-4b",
    headers={"x-key": BFL_API_KEY, "Content-Type": "application/json"},
    json={
        "prompt": 'Это то же изображение, но добавь на вывеску текст "ОТКРЫТО". '
                  "Сохрани фон, освещение и перспективу. Больше текста не добавляй.",
        "input_image": "https://example.com/your-image.png",
        "seed": 42,
        "output_format": "png",
    },
    timeout=60,
)
task = create.json()

# 2. Poll until ready
while True:
    time.sleep(0.5)
    data = requests.get(task["polling_url"], headers={"x-key": BFL_API_KEY}).json