148 lines
5.8 KiB
Markdown
148 lines
5.8 KiB
Markdown
# Plan: Chat-Fenster mit freier Promptwahl
|
||
|
||
**Stand:** 02.03.2026
|
||
**Status:** ✅ **Umgesetzt**
|
||
**Ziel:** Schnelle, direkte KI-Interaktion ohne Umweg über feste Prompts
|
||
|
||
---
|
||
|
||
## 1. Übersicht
|
||
|
||
| Element | Beschreibung |
|
||
|--------|--------------|
|
||
| **Chatfenster** | Unter dem Editor, freie Texteingabe an die KI |
|
||
| **Kontext** | Aktueller Artikel (Titel, Inhalt, SEO) wird automatisch mitgegeben |
|
||
| **Prompts** | Feste Prompts bleiben optional (für "KI generieren" aus Quelle) |
|
||
| **Priorität** | Chat = Hauptweg, feste Prompts = Nebenweg |
|
||
|
||
---
|
||
|
||
## 2. Layout
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ Nav, Status, Publish-Ziele │
|
||
├──────────────────────────────┬──────────────────────────────┤
|
||
│ Inhalt (Editor) │ Vorschau │
|
||
│ │ │
|
||
├──────────────────────────────┴──────────────────────────────┤
|
||
│ 💬 KI-Chat (freie Eingabe) │
|
||
│ ┌─────────────────────────────────────────────────────────┐ │
|
||
│ │ Nachrichtenverlauf (User/KI) │ │
|
||
│ ├───────────────────────────────────────────────────────┤ │
|
||
│ │ [Eingabefeld] [Senden] │ │
|
||
│ └─────────────────────────────────────────────────────────┘ │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ SEO, Medien, Buttons │
|
||
├─────────────────────────────────────────────────────────────┤
|
||
│ Redaktionsplan (nach Scrollen) │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
- Chat direkt unter Editor + Vorschau
|
||
- **Standard: offen** (schnelle Interaktion), einklappbar mit Chevron „▸ KI-Chat“
|
||
- Eingabefeld groß genug für längere Anweisungen
|
||
|
||
---
|
||
|
||
## 3. API
|
||
|
||
### Endpoint: `POST /api/chat`
|
||
|
||
**Request:**
|
||
```json
|
||
{
|
||
"message": "Mach den ersten Absatz knackiger",
|
||
"history": [
|
||
{"role": "user", "content": "..."},
|
||
{"role": "assistant", "content": "..."}
|
||
],
|
||
"context": {
|
||
"title": "Aktueller Titel",
|
||
"content": "Aktueller Inhalt...",
|
||
"seo_title": "...",
|
||
"seo_description": "...",
|
||
"focus_keyword": "..."
|
||
}
|
||
}
|
||
```
|
||
|
||
**Response:**
|
||
```json
|
||
{
|
||
"reply": "Antwort der KI...",
|
||
"suggested_content": "Optional: überarbeiteter Text zum Übernehmen"
|
||
}
|
||
```
|
||
|
||
- Backend: OpenRouter wie bei `/api/polish`, aber mit Chat-System-Prompt
|
||
- System-Prompt: „Du bist ein Redakteurs-Assistent. Der User arbeitet an einem Artikel. Kontext: [Titel, Inhalt, SEO]. Antworte kurz und handlungsorientiert. Wenn der User Änderungen will, gib den überarbeiteten Text als `suggested_content` zurück.“
|
||
|
||
---
|
||
|
||
## 4. Chat-UI (Frontend)
|
||
|
||
| Element | Beschreibung |
|
||
|---------|--------------|
|
||
| Nachrichtenliste | User-Nachrichten rechts/unterschiedlich, KI links/anders |
|
||
| Eingabefeld | Textarea oder input, Enter zum Senden |
|
||
| Senden-Button | Expliziter Klick |
|
||
| Spinner | Während die KI antwortet |
|
||
| Übernehmen-Button | Bei Antworten mit `suggested_content` – übernimmt in Editor/SEO |
|
||
| History | Nur Session (im Speicher), max. 6 Nachrichtenpaare, kein DB-Persistenz (v1) |
|
||
|
||
---
|
||
|
||
## 5. Ablauf
|
||
|
||
1. User tippt im Chat: „Kürze den zweiten Absatz“
|
||
2. Frontend sendet: message + context (aktueller Artikel) + history (falls vorhanden)
|
||
3. Backend ruft OpenRouter auf, KI antwortet
|
||
4. Antwort erscheint im Chat
|
||
5. Optional: KI liefert `suggested_content` → Button „In Editor übernehmen“
|
||
|
||
---
|
||
|
||
## 6. Feste Prompts (Anpassung)
|
||
|
||
| Änderung | Beschreibung |
|
||
|----------|--------------|
|
||
| Quelle + Ton + Prompt | Bleiben für „KI generieren“ (Artikel aus URL/Text erzeugen) |
|
||
| Position | Können kompakter werden (z.B. eine Zeile), Chat ist prominenter |
|
||
| Optional | Wenn User nur chatten will: Quelle/Prompt ignorierbar |
|
||
|
||
---
|
||
|
||
## 7. Aufwand (grobe Schätzung)
|
||
|
||
| Teil | Zeilen / Aufwand |
|
||
|------|------------------|
|
||
| `POST /api/chat` in app.py | ~40 Zeilen |
|
||
| Chat-UI in index.html | ~80 Zeilen HTML/JS |
|
||
| Integration Kontext (getArticleData) | ~5 Zeilen |
|
||
| **Gesamt** | ~2–3 Stunden |
|
||
|
||
---
|
||
|
||
## 8. Entscheidungen (festgelegt)
|
||
|
||
| Punkt | Entscheidung |
|
||
|-------|--------------|
|
||
| **Chat Standard** | Offen (schnelle Interaktion), einklappbar optional |
|
||
| **History persistieren** | Nein – nur Session, bei Artikel-Wechsel/Reload neu |
|
||
| **Übernehmen-Button** | Zeigen, wenn `suggested_content` vorhanden |
|
||
| **Max. History** | 6 Nachrichtenpaare (12 Nachrichten) |
|
||
|
||
---
|
||
|
||
## 9. Reihenfolge (bei Umsetzung)
|
||
|
||
1. API-Endpoint `/api/chat`
|
||
2. Chat-UI (Eingabe + Senden + Anzeige)
|
||
3. Kontext-Anbindung (Artikel mitschicken)
|
||
4. Übernehmen-Button (optional)
|
||
5. Feinschliff (Spinner, Fehlerbehandlung, Einklappbar)
|
||
|
||
---
|
||
|
||
*Plan erstellt für Redax-WP. Umsetzung nur nach explizitem OK.*
|