# AI Image Generation

# AI Image Generation

Chatlix kann auf Knopfdruck Bilder mit `gpt-image-1` (OpenAI) generieren. Das ist klassisch als Reward-Reaktion gedacht: Zuschauer löst einen Twitch-Reward ein → Chatlix generiert ein Bild aus dem Prompt → Overlay zeigt es kurz an.

## Kosten

**15 Credits pro Bild** (`gpt-image-1`, 1024×1024). Belastet wird **nach** erfolgreichem Provider-Call. Bei Provider-Fehlern (`ok:false`) fällt **keine** Buchung an.

## Manuelle Generierung im Dashboard

Dashboard → AI-Builder → Tab `« Bild »`.

1. Prompt eingeben (z. B. `Pixel-Art-Drache mit Twitch-Logo`).
2. `« Generieren »`. Wartezeit typischerweise 5–15 Sekunden.
3. Ergebnis wird angezeigt. Buttons: `« Speichern »` (legt es im Media-Bereich ab), `« Im Overlay zeigen »` (Test-Push an deine aktive Overlay-Browserquelle), `« Verwerfen »`.

Gespeicherte Bilder landen im normalen Media-Storage und können wie jede andere Datei in Overlays, Alerts oder Stream-Memory verwendet werden.

## Als Reward-Reaktion (Twitch)

Das typische Setup:

1. Twitch-Reward anlegen oder existierenden auswählen (Dashboard → Twitch → Rewards).
2. Automation-Regel: Trigger = `twitch.reward.redeemed`, Filter = dein Reward.
3. Aktion = `« AI-Bild generieren »`.
4. Prompt-Template: z. B. `{user_input_or_user_message}`. Der Zuschauer-Text aus dem Reward landet als Prompt.
5. Aktion = `« Overlay zeigen »`. Eingabe = generiertes Bild. Anzeigedauer z. B. 8 Sekunden.

Wichtig: setze einen **Cost** auf den Reward, der mindestens den Credit-Wert deckt. 15 Credits müssen für dich wirtschaftlich passen, sonst nutzt jemand das als Spam-Reward.

## Prompt-Hygiene

- **Kürze hilft**. Modelle sind besser im verstehen kurzer, klarer Prompts als langer Beschreibungen.
- **Stil-Hinweis voranstellen**: `Anime-Stil, ...` oder `Foto-realistisch, ...`.
- **Negativ-Prompts** werden von `gpt-image-1` nicht unterstützt — anders als bei Stable-Diffusion. Stattdessen positiv formulieren.

## Inhaltliche Filter

Provider-seitig läuft eine Content-Policy. Verstoßende Prompts kommen mit:

```json
{"ok": false, "error": "content_policy_violation"}
```

zurück, **ohne** Credit-Abzug. Wenn dein Channel ein Publikum hat, das gern an die Grenzen geht: du kannst die Reward-Aktion mit einer Pre-Filter-Liste kombinieren (Dashboard → Automation → Filter „Wort-Blocklist“), um offensichtliche Trigger-Wörter abzufangen, bevor sie überhaupt OpenAI sehen.

## Stub-Modus für Tests

Wenn du eine Reward-Regel testen willst, ohne echte Bilder zu generieren: Stub-Modus aktivieren (interne Konfiguration). Der Endpoint liefert dann ein deterministisches Test-Bild zurück, ohne OpenAI zu kontaktieren und ohne Credits zu buchen. Praktisch um Overlay-Layout, Alert-Sound, Timing zu testen.

## Was passiert wenn OpenAI down ist

- Endpoint liefert `HTTP 200 + ok:false + error=provider_unavailable`.
- Keine Credit-Buchung.
- Reward bleibt in Twitch als „eingelöst“ — du kannst ihn manuell refunden oder die Automation-Regel um eine Fallback-Aktion ergänzen (z. B. „statt Bild eine Text-Antwort posten“).

## Bekannte Grenzen

- Bilder werden nicht „verbessert“ wenn du sie nochmal generierst — `gpt-image-1` ist nicht deterministisch.
- Keine Bild-zu-Bild-Funktion in Chatlix (Stand 2026-05). Nur Text-zu-Bild.
- Maximale Anzeige-Dauer im Overlay ist nicht limitiert, aber lange Anzeigen blockieren weitere Alert-Bilder. Empfehlung: 6–10 Sekunden.
- Bilder werden im Media-Storage gespeichert und zählen gegen das Speicher-Kontingent deines Plans.

## AI-Bild-Action intern

Für Entwickler: die Action lebt unter `/v1/ai/` als Endpoint, der Code liegt in `Chatlix\Service\Ai`. Die Action ist additiv zu MediaService (für Storage) und Alert-Pipeline (für Overlay-Push) — sie ersetzt nichts, sondern hängt sich davor.
