docs: add example system/user prompts for prose, speeches, and code

Add example_system_prompts/ (prose, speeches, coding) and matching
example_user_prompts/ (four user prompts per domain, one file each so they
run directly via --prompt-file), plus a README mapping the pairs and the run
command against the default model.

Also refine the three system prompts: separate narrative register from
character speech and add a length default (prose); add a duration→word-count
rule, spoken-language guidance, a no-invented-evidence rule, and a salutation
note (speeches); fix the mangled numbered list and add a language default,
a no-invented-APIs rule, and clearer output ordering (coding).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-07-07 19:56:26 +02:00
commit f193acf032
16 changed files with 366 additions and 0 deletions

View file

@ -0,0 +1,43 @@
# Beispiel-User-Prompts
Diese User-Prompts sind zum Testen der System-Prompts in
[`../example_system_prompts/`](../example_system_prompts/) gedacht — je vier pro
Domäne, jeweils als eigene Datei, damit sie direkt über `--prompt-file` laufen.
Referenzmodell (zunächst): das Default-Modell aus `llama.cpp.config`
(`models/qwen3/Qwen3.6-35B-A3B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf`).
## Zuordnung
| System-Prompt | passende User-Prompts |
|---|---|
| `system_prompt_prosa.md` | `prosa_01_werkstatt.md`, `prosa_02_dystopie.md`, `prosa_03_essay.md`, `prosa_04_dialog.md` |
| `system_prompt_reden.md` | `reden_01_abifeier.md`, `reden_02_windkraft.md`, `reden_03_umstrukturierung.md`, `reden_04_gedenken.md` |
| `system_prompt_coding.md` | `coding_01_jsonl_validator.md`, `coding_02_refactor.md`, `coding_03_ts_retry.md`, `coding_04_performance.md` |
Jeder User-Prompt fordert gezielt Eigenschaften heraus, die der jeweilige
System-Prompt verspricht (z. B. „show, don't tell" und Schlussbild bei Prosa;
Zielkonflikte und vorweggenommene Einwände bei Reden; Sicherheit, Fehler-
behandlung und Tests beim Coding).
## Ausführen (Default-Modell)
Server muss laufen (`llamacppctl --start --config llama.cpp.config`). Dann z. B.:
```bash
llamacppctl --chat --config llama.cpp.config \
--system-file example_system_prompts/system_prompt_prosa.md \
--prompt-file example_user_prompts/prosa_01_werkstatt.md \
--stream --max-tokens 8000
```
Hinweise:
- Das Default-Modell läuft mit aktiviertem Reasoning. Das Antwortbudget
(`--max-tokens`) muss **Denk- plus Ausgabe-Tokens** abdecken — für Prosa/Reden
großzügig wählen (z. B. 600010000), sonst bricht die sichtbare Antwort ab
oder bleibt leer.
- **`--stream` benutzen.** Ohne Streaming wartet das Tool die komplette Antwort
in einem einzigen Read ab und läuft beim langen Reasoning-Output in den
Default-`--read-timeout` (30 s). Beim Streaming setzt jeder Token den Timeout
zurück. Für lange nicht-gestreamte Läufe zusätzlich `--read-timeout 600`.

View file

@ -0,0 +1,9 @@
Entwirf und implementiere ein Python-Modul, das eine große JSONL-Datei streamend (zeilenweise, ohne die gesamte Datei in den Speicher zu laden) einliest und jede Zeile gegen ein einfaches, übergebenes Schema validiert (erwartete Feldnamen und ihre Typen).
Anforderungen:
- Valide Datensätze werden als Generator zurückgegeben (lazy).
- Fehlerhafte Zeilen werden mit Zeilennummer und Fehlergrund gesammelt, ohne die Verarbeitung abzubrechen.
- Saubere Fehlerbehandlung für: kaputtes JSON, fehlende Felder, falsch getypte Felder, IO-Fehler.
- pytest-Tests, die die wichtigsten Fälle abdecken (gültig, ungültiges JSON, fehlendes Feld, falscher Typ, leere Datei).
Nenne im Anschluss kurz deine wichtigsten Designentscheidungen.

View file

@ -0,0 +1,20 @@
Analysiere den folgenden Python-Code, benenne seine Schwächen und schreibe ihn robust und wartbar um. Gib danach eine kurze Begründung der wichtigsten Änderungen und ein paar pytest-Beispieltests.
```python
import sqlite3
conn = sqlite3.connect('users.db')
def get_user(name):
cur = conn.execute("SELECT * FROM users WHERE name = '" + name + "'")
return cur.fetchone()
def add_user(name, age):
try:
conn.execute("INSERT INTO users VALUES ('" + name + "', " + str(age) + ")")
conn.commit()
except:
pass
```
Achte besonders auf: SQL-Injection, Fehlerbehandlung, Ressourcen-/Verbindungsmanagement und Testbarkeit.

View file

@ -0,0 +1,9 @@
Implementiere in TypeScript eine typsichere, wiederverwendbare Retry-Funktion `retry` mit exponentiellem Backoff und Jitter.
Anforderungen:
- Generisch über den Rückgabetyp der zu wiederholenden async-Funktion (`() => Promise<T>``Promise<T>`).
- Konfigurierbar: maximale Versuche, Basis-Delay, Backoff-Faktor, maximales Delay, optionales `shouldRetry(error)`-Prädikat.
- Nach dem letzten fehlgeschlagenen Versuch wird mit dem zuletzt aufgetretenen Fehler abgebrochen (kein stilles Verschlucken).
- Vitest-Tests inklusive Fake-Timers, die die Backoff-Logik und den Abbruch nach `maxAttempts` prüfen.
Begründe im Anschluss kurz die wichtigsten Designentscheidungen (u. a. warum Jitter, wie das Delay gedeckelt wird).

View file

@ -0,0 +1,16 @@
Gegeben ist eine ineffiziente Python-Funktion, die für eine Liste von Wörtern die Häufigkeit jedes Wortes zählt und dabei für jedes Wort erneut die gesamte Liste durchläuft:
```python
def count_words(words):
counts = {}
for w in words:
counts[w] = 0
for x in words:
if x == w:
counts[w] += 1
return counts
```
Schreibe eine effiziente Variante, erkläre die Verbesserung der Zeitkomplexität und zeige mit einem kleinen Benchmark (z. B. `timeit`) den Unterschied bei größeren Eingaben.
Behandle dabei sinnvolle Randfälle: leere Liste, Groß-/Kleinschreibung und anhängende Satzzeichen (was soll als „dasselbe Wort" gelten?). Triff dazu eine begründete Annahme.

View file

@ -0,0 +1,7 @@
Schreibe eine Kurzgeschichte von etwa 1200 Wörtern in personaler Erzählperspektive.
Hauptfigur: Marlene, 68, ehemalige Grundschullehrerin. Sieben Monate nach dem Tod ihres Mannes Georg betritt sie zum ersten Mal wieder seine Holzwerkstatt im Keller um sie aufzulösen.
Ton: nüchtern, zurückgenommen, mit unterschwelliger Trauer, ohne Pathos.
Zeige ihren inneren Zustand ausschließlich über Handlungen, Gegenstände und Wahrnehmungen, nicht über benannte Gefühle. Kein tröstliches Happy End; setze am Schluss ein konkretes, bedeutsames Bild statt einer Moral.

View file

@ -0,0 +1,7 @@
Schreibe eine humorvolle Dystopie von etwa 800 Wörtern.
Setting: Deutschland, nahe Zukunft. In jeder Wohnung ist ein staatlich vorgeschriebenes „Wohlfühl-Assistenzsystem" installiert, das das Leben der Bewohner optimiert höflich, fürsorglich und absolut unerbittlich.
Erzähle in der Ich-Perspektive eines Bewohners, der einen kleinen, verbotenen Akt der Selbstbestimmung plant (etwa: ungeplant und unangekündigt das Haus zu verlassen).
Der Humor soll trocken und fein-ironisch sein, das Setting darunter aber echt bedrohlich bleiben. Kein Slapstick, keine erklärenden Weltbau-Absätze lass die Regeln der Welt durch die Handlung sichtbar werden.

View file

@ -0,0 +1,7 @@
Schreibe einen literarischen, essayistischen Prosatext von etwa 900 Wörtern in der ersten Person.
Gegenstand: eine verlassene Autobahn-Raststätte, betrachtet an einem Werktagabend im November, kurz nach Einbruch der Dunkelheit.
Verbinde konkrete sinnliche Beobachtung mit stiller Reflexion über Übergänge, Anonymität und Zeit. Kein durchgehender Plot, aber ein spürbarer roter Faden und ein bewusst gesetzter Schluss.
Meide jede Postkarten-Melancholie und abgegriffene Bilder; die Beobachtungen sollen präzise und eigen sein.

View file

@ -0,0 +1,5 @@
Schreibe eine Szene von etwa 700 Wörtern, die zu mindestens zwei Dritteln aus Dialog besteht.
Zwei erwachsene Geschwister, Anfang 40, räumen am Abend nach der Beerdigung des Vaters dessen Wohnung aus. Zwischen ihnen steht ein alter, nie ausgesprochener Streit um das Erbe und um Nähe.
Der eigentliche Konflikt darf nie direkt benannt werden. Er soll ausschließlich im Subtext spürbar werden: in Pausen, Ausweichbewegungen, beiläufigen Sätzen, in dem, was verschwiegen wird. Erzählersprache nur sparsam als knappe Regieanweisung zwischen den Repliken.

View file

@ -0,0 +1,7 @@
Schreibe eine Rede zur Abiturfeier eines Gymnasiums, Dauer etwa 5 Minuten (ca. 700 Wörter).
Sprecher: ein Lehrer, der den Jahrgang über mehrere Jahre begleitet hat. Publikum: die Abiturientinnen und Abiturienten, ihre Eltern und das Kollegium.
Die Rede soll warm, aber unsentimental sein und die üblichen Abi-Klischees meiden (kein „Euch steht die Welt offen", keine aufgereihten Zitate berühmter Leute, kein „Jetzt beginnt der Ernst des Lebens").
Eine konkrete, kleine gemeinsame Erinnerung aus der Schulzeit als Leitbild ist ausdrücklich erwünscht.

View file

@ -0,0 +1,7 @@
Schreibe eine Rede von etwa 10 Minuten (ca. 1400 Wörter) für einen kommunalen Bürgerdialog.
Thema: der geplante Ausbau von Windkraft in einer ländlichen Region im Spannungsfeld zwischen Klimaschutz einerseits und Landschafts- sowie Anwohnerschutz andererseits.
Sprecherin: die parteilose Bürgermeisterin. Sie will nichts schönreden, sondern die echten Zielkonflikte offen benennen und das Publikum zu einer ehrlichen Abwägung einladen nicht zu einer vorgefertigten Meinung überreden.
Nimm die stärksten Einwände beider Seiten ausdrücklich vorweg und beantworte sie redlich. Erfinde keine konkreten Zahlen, Studien oder Zitate; halte Belege allgemein oder kennzeichne Beispiele als illustrativ.

View file

@ -0,0 +1,7 @@
Schreibe eine interne Rede von etwa 7 Minuten (ca. 1000 Wörter).
Anlass: Die Geschäftsführerin eines mittelständischen Unternehmens spricht zur versammelten Belegschaft nach einem schwierigen Geschäftsjahr, in dem eine Umstrukturierung und der Abbau einiger Stellen nötig wurden.
Ton: ehrlich, respektvoll, ohne Beschönigung und ohne hohle Motivationsrhetorik. Sie soll Verantwortung übernehmen, bestehende Unsicherheit nicht verschweigen und trotzdem eine glaubwürdige, tragfähige Perspektive geben.
Vermeide jede Spur von „Wir sind eine große Familie"- oder „Gemeinsam schaffen wir alles"-Rhetorik.

View file

@ -0,0 +1,7 @@
Schreibe eine kurze Gedenkrede von etwa 4 Minuten (ca. 550 Wörter).
Anlass: die Einweihung eines schlichten Denkmals für die zivilen Opfer eines Hochwassers in einer kleinen Stadt, ein Jahr nach der Katastrophe.
Ton: würdevoll, konkret, ohne Kitsch und ohne Betroffenheitsfloskeln. Erinnere an das Geschehene, ohne es auszuschlachten oder zu dramatisieren.
Finde ein Schlussbild, das trägt, ohne billigen Trost anzubieten. Keine erfundenen Namen realer Opfer und keine ausgedachten Detailzahlen.