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:
parent
d41a65d58e
commit
f193acf032
16 changed files with 366 additions and 0 deletions
43
example_user_prompts/README.md
Normal file
43
example_user_prompts/README.md
Normal 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. 6000–10000), 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`.
|
||||
9
example_user_prompts/coding_01_jsonl_validator.md
Normal file
9
example_user_prompts/coding_01_jsonl_validator.md
Normal 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.
|
||||
20
example_user_prompts/coding_02_refactor.md
Normal file
20
example_user_prompts/coding_02_refactor.md
Normal 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.
|
||||
9
example_user_prompts/coding_03_ts_retry.md
Normal file
9
example_user_prompts/coding_03_ts_retry.md
Normal 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).
|
||||
16
example_user_prompts/coding_04_performance.md
Normal file
16
example_user_prompts/coding_04_performance.md
Normal 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.
|
||||
7
example_user_prompts/prosa_01_werkstatt.md
Normal file
7
example_user_prompts/prosa_01_werkstatt.md
Normal 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.
|
||||
7
example_user_prompts/prosa_02_dystopie.md
Normal file
7
example_user_prompts/prosa_02_dystopie.md
Normal 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.
|
||||
7
example_user_prompts/prosa_03_essay.md
Normal file
7
example_user_prompts/prosa_03_essay.md
Normal 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.
|
||||
5
example_user_prompts/prosa_04_dialog.md
Normal file
5
example_user_prompts/prosa_04_dialog.md
Normal 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.
|
||||
7
example_user_prompts/reden_01_abifeier.md
Normal file
7
example_user_prompts/reden_01_abifeier.md
Normal 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.
|
||||
7
example_user_prompts/reden_02_windkraft.md
Normal file
7
example_user_prompts/reden_02_windkraft.md
Normal 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.
|
||||
7
example_user_prompts/reden_03_umstrukturierung.md
Normal file
7
example_user_prompts/reden_03_umstrukturierung.md
Normal 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.
|
||||
7
example_user_prompts/reden_04_gedenken.md
Normal file
7
example_user_prompts/reden_04_gedenken.md
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue