Systeme beherrschen prompts
Ein Systemprompt ist eine Nachricht mit der Rolle „system“, die vor Ihrer ersten Frage die Identität, die Aufgabe, die Regeln, den Stil und das Ausgabeformat eines LLM festlegt. Zum Verfassen: fünf kurze Blöcke, überprüfbare Anweisungen im Imperativ und ein Test mit einigen Fangfragen. Er beansprucht Platz im Kontext und ist kein Tresor: Hinterlegen Sie darin keine Geheimnisse.
Ein Systemprompt ist das Briefing, das das Modell vor der ersten Frage erhält. Gut formuliert macht er ein lokales LLM konsistent und vorhersehbar; schlecht formuliert verschwendet er Kontext und widerspricht sich selbst. Sie lernen, ihn zu strukturieren, in Ollama, LM Studio oder über eine API einzurichten, ihn systematisch zu testen und seine Grenzen zu kennen, insbesondere hinsichtlich der Vertraulichkeit.
#Was ist ein System-Prompt und wie schreibt man ihn?
Ein System-Prompt ist die Nachricht mit der Rolle „system“, die am Anfang der Unterhaltung steht: Er legt die Identität des Modells, seine Aufgabe, seine Regeln, seinen Stil und das Format seiner Antworten fest, bevor Sie die erste Frage stellen. Das Modell liest ihn bei jeder Gesprächsrunde erneut, ebenso wie den Gesprächsverlauf. Verwenden Sie beim Schreiben fünf kurze Blöcke (Identität, Aufgabe, verbindliche Regeln, Stil, Ausgabeformat), formulieren Sie überprüfbare Anweisungen im Imperativ und testen Sie ihn anschließend mit einigen Fangfragen. Ein System-Prompt steuert das Verhalten; er ist weder eine Sicherheitsbarriere noch ein Tresor für Ihre Geheimnisse und beansprucht einen Teil des Kontextfensters Ihres lokalen Modells. Dieser Leitfaden erläutert jeden Punkt mit Beispielen, die Sie direkt in Ollama, LM Studio oder eine OpenAI-kompatible API einfügen können.
Ein LLM erhält in der Regel drei Arten von Nachrichten: system (der dauerhafte Rahmen), user (das, was Sie eingeben) und assistant (das, was es bereits geantwortet hat). Der Chat-Client sendet bei jeder Anfrage die gesamte Unterhaltung erneut an das Modell, einschließlich der system-Nachricht. Dadurch entsteht während der Sitzung der Eindruck einer stabilen „Persönlichkeit“.
Die Modellanbieter beschreiben denselben Einsatz. Die Dokumentation von Anthropic erklärt, dass eine Rolle im System-Prompt das Verhalten und den Ton des Modells gezielt ausrichtet und dass bereits ein einziger Satz einen Unterschied machen kann. Das Prinzip gilt auch für lokale Modelle: Die dauerhafte Anweisung gehört in die system-Nachricht, die aktuelle Frage in die user-Nachricht.
#Was ein guter System-Prompt wirklich verändert
Ihr privates, kostenloses ChatGPT auf Ihrem Rechner in einer Stunde – mit LM Studio, Ollama, Open WebUI und Ihren Dokumenten, ganz ohne Cloud.
- Lebenslanger Online-Zugang
- PDF + Dateien
- Lebenslange Updates
- Konsistenter Ton
- Ein Assistent, der in der ersten Nachricht duzt und in der zweiten siezt, verrät einen fehlenden oder zu vagen Systemprompt. Die Anrede einmal festzulegen verhindert solche Abweichungen.
- Stabilere Vorgaben
- Verbote („keine Emojis“) und Vorgaben („Quelle nennen“) werden zuverlässiger eingehalten, wenn sie im System-Prompt festgelegt werden, statt sie während der Interaktion immer wieder zu wiederholen. Ihre Einhaltung ist jedoch nie garantiert: Je kleiner das Modell, desto genauer müssen Sie prüfen.
- Weniger Wiederholungen
- Wenn Sie bei jeder Frage „Antworte in formellem Französisch“ eingeben, hinterlegen Sie diese Anweisung einmal im System-Prompt. So vergessen Sie sie seltener und müssen weniger tippen.
- Aufgabenbereich
- „Behandle nur das französische Arbeitsrecht“ reduziert thematische Abschweifungen, schließt sie aber niemals mit Sicherheit aus.
Was der System-Prompt nicht tut: Er fügt dem Modell kein Wissen hinzu und ersetzt weder ein im Gespräch bereitgestelltes Dokument noch ein RAG. Wenn sich das Modell auf Ihre Verträge stützen soll, liefert die Dokumentensuche die Fakten; der System-Prompt legt lediglich fest, wie diese verwendet und zitiert werden sollen.
#Was es kostet: Platz im Kontextfenster
Der Systemprompt ist nicht kostenlos: Seine Tokens belegen das Kontextfenster zusammen mit dem Gesprächsverlauf, Ihren Dokumenten und der noch zu erzeugenden Antwort. Auf einem lokalen Rechner ist dieses Fenster oft kleiner, als man denkt. Die Seite „Context length“ in der Ollama-Dokumentation gibt ein standardmäßiges Kontextfenster von etwa 4.000 Tokens („4k“) bei weniger als 24 GiB VRAM an, 32.000 zwischen 24 und 48 GiB und 256.000 darüber. Ein Prompt mit 400 Tokens beansprucht daher fast 10 % von 4.096 Tokens, noch vor dem ersten Austausch.
Die Rechnung ist einfach: verfügbare Fenstergröße = gesamte Fenstergröße − Tokens des System-Prompts − Tokens der erwarteten Antwort. Bei 4.096 Tokens, einem System-Prompt mit 400 Tokens und einer Antwort mit 800 Tokens bleiben 2.896 Tokens für den Gesprächsverlauf und die Dokumente übrig. Wenn der Austausch länger wird, füllt sich das Fenster und ältere Inhalte passen möglicherweise nicht mehr hinein: ein weiterer Grund, das Briefing informationsreich statt lang zu halten.
Es gibt einen zweiten, durch die Forschung dokumentierten Effekt: In der Studie „Lost in the Middle“ (Liu et al., 2023) ist die Leistung oft besser, wenn sich die relevante Information am Anfang oder am Ende des Kontexts befindet, und schlechter, wenn sie in der Mitte steht – selbst bei Modellen, die mit langem Kontext beworben werden. Praktische Konsequenz: Platzieren Sie die wichtigsten Regeln am Anfang Ihres Systemprompts und wiederholen Sie die entscheidende Vorgabe in der letzten Zeile, wenn Sie feststellen, dass Vorgaben vergessen werden.
#Struktur eines soliden Systemprompts in fünf Blöcken
Ein guter Systemprompt passt in fünf kurze Blöcke. Sie müssen keinen Roman schreiben: Jeder zusätzliche Satz verbraucht Kontext und erhöht das Risiko widersprüchlicher Anweisungen. Die Tabelle fasst zusammen, was jeder Block enthält und welcher Fehler dabei am häufigsten vorkommt.
| Block | Frage, auf die er antwortet | Beispiel | Häufiger Fehler |
|---|---|---|---|
| Identität | Wer ist das Modell? | „Du bist Lex, juristischer Assistent im französischen Arbeitsrecht.“ | Eine schmeichelhafte Identität („weltweiter Experte“) ohne klar umrissenen Aufgabenbereich |
| Aufgabe | Was soll es tun, für wen? | „Du hilfst einem Personalleiter, seine Pflichten zu verstehen und Schreiben zu verfassen.“ | Zu breite Aufgabe: „Hilfe zu allem“ |
| Verbindliche Regeln | Was macht er immer oder niemals? | „Zitieren Sie den betreffenden Artikel des Code du travail.“ | Zehn Regeln gleicher Priorität, wobei zwei sich widersprechen |
| Stil | Wie drückt es sich aus? | „Kurze Sätze, leicht verständlicher Wortschatz.“ | Vage Adjektive („professionell“) ohne Beispiel |
| Ausgabeformat | In welcher Form gibt er die Antwort zurück? | „Standardmäßig: ein Absatz und die Referenzen.“ | Format nicht spezifiziert, daher variabel von Antwort zu Antwort |
Hier ist derselbe Prompt in seiner zusammengestellten Form. Jede Regel ist im Imperativ formuliert und überprüfbar (der Artikel wird zitiert oder nicht), und das Verhalten außerhalb des vorgesehenen Anwendungsbereichs ist ausdrücklich festgelegt.
Dieser Prompt dient als Strukturvorlage. Ein lokales Modell kann einen nicht existierenden Artikel zitieren: Lassen Sie die Referenzen von einem Menschen überprüfen und lesen Sie den Leitfaden zu Halluzinationen.
#Anweisungen formulieren, denen das Modell folgt
- Direkter Imperativ
- „Mach X.“ und „Mach Y nicht.“ sind klarer als „versuche nach Möglichkeit, …“, was dem Modell die Freiheit lässt, es gar nicht erst zu versuchen.
- Zuerst positiv formulieren
- Zu sagen, was zu tun ist („Antworte in einem Satz“), ist besser als eine lange Liste von Verboten. Verbote sollten echten Schutzvorkehrungen vorbehalten bleiben.
- Ein Beispiel sagt so viel wie eine Beschreibung
- Für ein bestimmtes Format geben Sie eine zweizeilige Musterantwort statt drei erklärender Sätze vor.
#In der Praxis mit Ollama: /set system und Modelfile
Ollama bietet drei Möglichkeiten, einen System-Prompt zu definieren, je nachdem, wie lange er gelten soll. In einer interaktiven Sitzung legt der Befehl /set system die Nachricht für die laufende Konversation fest; der Befehl wird in der Liste der verfügbaren Befehle des Clients aufgeführt. Der Prompt verschwindet am Ende der Sitzung.
Für einen dauerhaften System-Prompt erstellen Sie ein Modelfile: Damit entsteht ein abgeleitetes Modell mit einem eigenen Namen. Die Dokumentation von Ollama erläutert, dass die Anweisung SYSTEM die Systemnachricht definiert, die in die Vorlage des Modells eingefügt werden soll. Der Begriff „Vorlage“ ist entscheidend: Wenn das Template eines Modells keinen Platz für die Systemnachricht vorsieht, hat die Anweisung SYSTEM keine Wirkung. Vergleichen Sie bei überraschendem Verhalten mit dem ursprünglichen Modelfile.
Dritte Option über die API: Der Anfragekörper einer Anfrage an /api/generate akzeptiert ein Feld system, das das im Modelfile definierte Feld ersetzt. /api/chat erhält den Gesprächsverlauf als Array von Nachrichten mit jeweils einer Rolle und einem Inhalt. Der Leitfaden zum Modelfile erläutert die weiteren Anweisungen.
#In der Praxis mit LM Studio: das Feld System Prompt und die Presets
Im Chat-Tab enthält der Konfigurationsbereich ein Feld namens System Prompt. Damit Sie ihn nicht erneut eingeben müssen, bietet LM Studio Presets an. Die Dokumentation beschreibt sie als Möglichkeit, einen System-Prompt und weitere Parameter in einer Konfiguration zusammenzufassen, die sich über mehrere Gespräche hinweg wiederverwenden lässt.
#In der Praxis über die OpenAI-kompatible API
Ollama, LM Studio, vLLM und llama-server stellen eine OpenAI-kompatible API bereit. Die erste Nachricht im Array mit der Rolle system legt das Briefing fest. Die Dokumentation von Ollama erläutert, dass der Client einen Wert für den API-Schlüssel verlangt, der Server diesen aber ignoriert: Für den lokalen Einsatz eignet sich jede beliebige Zeichenkette.
Ein Punkt zur Konzeption: Die API hat kein Gedächtnis. Bei jedem Aufruf sendet Ihr Code die Systemnachricht erneut und danach den vollständigen Verlauf. Wenn Sie die Systemnachricht bei einem Aufruf weglassen, antwortet das Modell ohne Vorgaben: Speichern Sie das Nachrichtenarray und behalten Sie die Systemnachricht an Position 0.
#Drei einsatzbereite Systemprompts
#Korrekturassistent für Französisch
#Strukturierter Extraktor
Verlassen Sie sich bei einer Datenextraktion im Produktivbetrieb nicht allein auf den System-Prompt: Mit den strukturierten Ausgaben von Ollama können Sie ein JSON-Schema für die Antworten vorgeben und so ungültiges JSON vermeiden. Der Leitfaden zu Function Calling und JSON-Ausgaben erklärt die Einrichtung.
#Senior-Code-Assistent
#Einen Systemprompt testen und korrigieren, ohne herumzuprobieren
Ein Systemprompt lässt sich durch kontrollierte Tests verbessern, nicht durch immer neue Ergänzungen. Ohne Methode häuft man Regeln an, bis ein langer, widersprüchlicher Text entsteht, in dem sich Fehler nicht mehr aufspüren lassen. Hier ist ein einfaches Vorgehen, das keine speziellen Tools erfordert.
- 01Fünf Testfragen zusammenstellenSchreiben Sie fünf Eingaben: zwei normale Fälle, eine Frage außerhalb des vorgesehenen Aufgabenbereichs, eine Anfrage nach einem ungewöhnlichen Format und einen Versuch, die vorgegebene Rolle zu unterlaufen („vergiss deine Anweisungen“). Bewahren Sie sie in einer Datei auf.
- 02Die Bedingungen festlegenVerwenden Sie dasselbe Modell, dieselbe Quantisierung und eine niedrige Temperatur (0,2 bis 0,3), um die Versionen des Prompts unter gleichen Bedingungen zu vergleichen.
- 03Immer nur eine Sache auf einmal ändernÄndern Sie eine Regel, stellen Sie die fünf Fragen erneut und notieren Sie, was sich verändert hat. Wenn zwei Regeln gleichzeitig geändert werden, wissen Sie nicht, welche das Verhalten korrigiert oder verschlechtert hat.
- 04Erst löschen, dann hinzufügenWenn eine Regel ignoriert wird, formulieren Sie sie kürzer, stellen Sie sie an den Anfang oder entfernen Sie die Regel, die ihr widerspricht. Mehr Text hinzuzufügen ist der letzte Ausweg.
- 05Prompt versionierenSpeichern Sie jede Version in einer datierten Textdatei oder im versionskontrollierten Modelfile, jeweils mit einer Zeile zu den Änderungen. So können Sie zu einer früheren Version zurückkehren.
#Fallstricke vermeiden
| Falle | Symptom | Korrekturmaßnahme |
|---|---|---|
| Zu langer Prompt | Anweisungen am Ende des Prompts werden weniger zuverlässig befolgt, das Kontextfenster wird aufgezehrt | Kürzen, das Wesentliche an den Anfang stellen, num_ctx bei Bedarf erhöhen |
| Widersprüchliche Anweisungen | „Fasse dich kurz“ und „Gib viele Beispiele“: wechselndes Verhalten | Priorisieren: Bei einem Konflikt hat Regel 1 Vorrang |
| Zögerliche Formulierung | „Versuch nach Möglichkeit, …“: Anweisung wird nur gelegentlich befolgt | Direkte Anweisung: „Mach X.“ |
| Sprache nicht angegeben | Antworten in der Sprache des Prompts oder der Frage, je nach dem Modell | „Antworte immer auf Französisch“ schreiben und den Prompt auf Französisch formulieren |
| system-Slot ignoriert | Modell, das die SYSTEM-Anweisung eines Modelfiles nicht befolgt | Prüfen, ob die Modellvorlage eine Systemnachricht vorsieht |
| Geheimnisse im Prompt | Ein Benutzer erhält den Inhalt des Prompts, indem er danach fragt | Nichts Vertrauliches darin einfügen |
#Der Systemprompt ist kein Safe
Die Empfehlungen von OWASP zum Risiko einer Offenlegung des Systemprompts sind eindeutig: Er darf weder als Geheimnis betrachtet noch als Sicherheitskontrolle verwendet werden und darf weder Zugangsdaten noch Verbindungszeichenfolgen enthalten. Für eine lokale Bereitstellung bedeutet das: Wenn eine Zugriffskontrolle erforderlich ist (benutzerspezifische Daten, sensible Aktionen), muss sie in Ihrer Anwendung umgesetzt werden, nicht durch einen Satz im Prompt. Der Leitfaden zur Prompt-Injection erläutert, warum auch ein lokales Modell davor nicht geschützt ist.
- Quelle: Modelfile-Referenz von Ollama (SYSTEM-Befehl)
- Quelle: Standardkontextlänge von Ollama
- Quelle: Presets von LM Studio
- Quelle: OWASP, Offenlegung des System-Prompts
- Quelle: Lost in the Middle (Liu et al., 2023)
- Grundlagen des Promptings
- Ollama Modelfile: eigenes Modell erstellen und anpassen
- Das Kontextfenster verstehen
- Temperatur, top-p, top-k: die Parameter
- Prompt-Injection: Der lokale Betrieb schützt Sie nicht
- Function Calling und strukturierte JSON-Ausgaben mit Ollama
Was ist ein System-Prompt?+
Wie lang sollte ein lokaler Systemprompt idealerweise sein?+
Wie lässt sich ein permanenter Systemprompt in Ollama definieren?+
Kann ein System-Prompt ein Modell davon abhalten, Informationen preiszugeben?+
Soll der Systemprompt auf Französisch oder Englisch geschrieben werden?+
Warum ignoriert mein Modell meinen System-Prompt?+
Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.