Anti-Pattern Giant System Prompt: riesiger System-Prompt

Wenn System-Prompts zu groß werden und schwer zu warten sind.
Auf dieser Seite
  1. Idee in 30 Sekunden
  2. Beispiel für das Anti-Pattern
  3. Warum es entsteht und was schiefläuft
  4. Richtiger Ansatz
  5. Schnelltest
  6. Worin es sich von anderen Anti-Patterns unterscheidet
  7. Overengineering Agents vs Giant System Prompt
  8. Too Many Tools vs Giant System Prompt
  9. Agents Without Guardrails vs Giant System Prompt
  10. Selbstcheck: Habt ihr dieses Anti-Pattern?
  11. FAQ
  12. Was als Nächstes

Idee in 30 Sekunden

Giant System Prompt ist ein Anti-Pattern, bei dem fast die gesamte Agentenlogik in einen großen system prompt gepackt wird.

Dadurch beginnen Instruktionen zu kollidieren, Prioritäten werden unklar, und das Modellverhalten wird instabil. Das erhöht latency, cost und das Risiko von Regressionen nach kleinen Änderungen.

Einfache Regel: system prompt sollte kurz und stabil bleiben; variable Logik gehört in Route-Blöcke, Policy-Layer und Output-Validierung im Code. System prompt sollte Rolle und Basisregeln setzen, aber nicht die komplette Business-Logik des Systems enthalten.


Beispiel für das Anti-Pattern

Das Team baut einen Support-Agenten und ergänzt neue Regeln fortlaufend in einem system prompt.

Mit der Zeit wird dieser Prompt zu einem riesigen Instruktionsblock für alle Szenarien zugleich.

PYTHON
SYSTEM_PROMPT = """
You are support agent.
- Always be brief.
- Always provide detailed step-by-step explanation.
- Never call tools unless user asks.
- For payment issues always call get_payment_status.
- Reply only in strict JSON.
- Prefer natural text if JSON looks unnatural.
... hundreds of lines ...
"""

response = agent.run(
    system_prompt=SYSTEM_PROMPT,
    user_message=user_message,
)

In diesem Setup sieht das Modell zu viele Instruktionen mit konkurrierenden Prioritäten:

PYTHON
always_be_brief + give_step_by_step_explanation
json_only + prefer_natural_text
never_call_tools + always_call_payment_tool

Für diesen Fall ist ein kurzer Base-Prompt plus separate route-specific Blöcke besser:

PYTHON
system_prompt = BASE_PROMPT + ROUTE_PROMPTS[route]

In diesem Fall erzeugt ein giant prompt:

  • Konflikte zwischen Regeln
  • schwierige Wartung nach Änderungen
  • instabiles Antwortformat und instabilen Ton

Warum es entsteht und was schiefläuft

Dieses Anti-Pattern entsteht oft, wenn ein Team "alles schnell per Prompt lösen" will, ohne klare Grenze zwischen Instruktionen, Policy und runtime-Logik.

Typische Ursachen:

  • jeder neue Incident wird mit einer weiteren Zeile im system prompt "gefixt"
  • fehlende Modularität: ein Prompt für alle Routen
  • Policy-Regeln leben im Prompt-Text statt im Code
  • keine klaren Owner und keine Versionierung von Prompt-Blöcken

Daraus folgen Probleme:

  • Instruktionskonflikte - im Prompt stehen gleichzeitig widersprüchliche Regeln
  • instabiles Verhalten - dieselbe Anfrage liefert unterschiedlichen Stil und unterschiedliches Format
  • höhere latency und cost - langer Prompt erhöht Tokens pro Run
  • fragile Änderungen - kleine Anpassungen können andere Szenarien brechen
  • schwieriges Debugging - schwer nachzuvollziehen, welche Regel tatsächlich gegriffen hat

Typische Production-Signale, dass der system prompt bereits zu groß ist:

  • eine Regeländerung verursacht Regression in anderer Route
  • cost per request steigt wegen langem, unverändertem Prompt
  • Team kann Priorität zwischen zwei widersprüchlichen Instruktionen nicht schnell erklären
  • nach kleiner Prompt-Änderung sinkt success rate in Teilen der Cases

Tool-Wahl, Format-Wahl und Stil-Wahl sind Teil der LLM inference. Wenn im Prompt zu viele heterogene Instruktionen stehen, steigt die Zahl möglicher Interpretationen, und das Modell wählt häufiger eine Regel, die formal passt, aber für diese Route nicht optimal ist.

Wenn dieses Setup wächst, ist ohne trace und Ausführungsvisualisierung schwer nachvollziehbar, welcher Prompt-Block in einem konkreten Run genutzt wurde und welche Regel das Modellverhalten beeinflusst hat.

Richtiger Ansatz

Startet mit einem kurzen stabilen system prompt, der Rolle und Basisregeln definiert. Variable Logik verschiebt ihr in Route-Blöcke, Policy-Gates und Output-Prüfungen im Code.

Praktischer Rahmen:

  • haltet einen kleinen BASE_PROMPT für gemeinsame Regeln
  • ergänzt ROUTE_PROMPTS nur für konkrete Aufgabentypen
  • implementiert Policy und Grenzen im Code, nicht in einem riesigen Text
  • validiert Output und messt Änderungseffekte (zum Beispiel bessere success rate ohne starken Anstieg von latency und cost per request)

Zum Beispiel sollte Antwortformat via Schema-Validierung geprüft werden, bevor das Ergebnis zurückgegeben wird.

PYTHON
BASE_PROMPT = """
You are a support agent.
Follow safety and output rules.
"""  # stable instructions shared across all routes

ROUTE_PROMPTS = {
    "payment": "Use payment policy. Return strict JSON.",
    "refund": "Use refund policy. Ask clarifying question if needed.",
}

def run_support_agent(user_message: str):
    route = classify_intent(user_message)  # simple classifier or rules
    system_prompt = BASE_PROMPT + "\n\n" + ROUTE_PROMPTS[route]

    response = agent.run(
        system_prompt=system_prompt,
        user_message=user_message,
    )

    if not validate_output(response):  # schema / required fields / safety checks
        return stop("invalid_output")

    return response

In diesem Setup werden Regeln transparenter: eine konkrete Route ist leichter aktualisierbar, und Nachbarszenarien brechen seltener.

Schnelltest

Wenn diese Fragen mit "ja" beantwortet werden, habt ihr ein giant-system-prompt Risiko:

  • Versucht ein system prompt fast alle Szenarien gleichzeitig abzudecken?
  • Führt eine kleine Prompt-Änderung oft zu Nebenregressionen in anderen Fällen?
  • Ist schwer festzustellen, welche Regel bei Konflikt höhere Priorität hat?

Worin es sich von anderen Anti-Patterns unterscheidet

Overengineering Agents vs Giant System Prompt

Overengineering AgentsGiant System Prompt
Hauptproblem: unnötige Architekturschichten und Komponenten ohne messbaren Nutzen.Hauptproblem: ein großer system prompt sammelt widersprüchliche Instruktionen.
Wann es entsteht: wenn für einfache Cases vorsorglich zusätzliche Orchestrierungs-Layer ergänzt werden.Wann es entsteht: wenn neue Regeln und Ausnahmen ständig in denselben Prompt geschrieben werden.

Too Many Tools vs Giant System Prompt

Too Many ToolsGiant System Prompt
Hauptproblem: Agent sieht zu viele Tools und wählt Aktionen instabil.Hauptproblem: im system prompt stehen zu viele Instruktionen und sie kollidieren.
Wann es entsteht: wenn in einer Route ein übergroßes Tool-Set ohne klare Allowlist entsteht.Wann es entsteht: wenn ein Prompt für alle Routen und Szenarien wiederverwendet wird.

Agents Without Guardrails vs Giant System Prompt

Agents Without GuardrailsGiant System Prompt
Hauptproblem: Agent arbeitet ohne Policy-Grenzen und System-Constraints.Hauptproblem: Policy-Logik und runtime-Regeln werden in Prompt-Text gepresst.
Wann es entsteht: wenn Allowlist, deny-by-default, Budget- und Safety-Constraints im Code fehlen.Wann es entsteht: wenn kritische Grenzen nur als Textinstruktionen ohne harte Checks existieren.

Selbstcheck: Habt ihr dieses Anti-Pattern?

Schnellcheck für das Anti-Pattern Giant System Prompt.
Markiert die Punkte für euer System und prüft den Status unten.

Prüft euer System:

Fortschritt: 0/8

⚠ Es gibt Anzeichen für dieses Anti-Pattern

Verschieben Sie einfache Schritte in einen workflow und behalten Sie den Agenten nur für komplexe Entscheidungen.

FAQ

Q: Ist ein langer system prompt immer schlecht?
A: Nein. Das Problem ist nicht Länge allein, sondern Monolithik und Konflikte. Wenn ein Prompt wächst, aber modular bleibt und klare Prioritäten hat, sind Risiken deutlich kleiner.

Q: Wann sollte eine Regel aus Prompt in Code verschoben werden?
A: Wenn die Regel kritisch für Sicherheit, Kosten oder Formatstabilität ist. Solche Grenzen sollten als explizite runtime-Prüfungen umgesetzt werden, nicht nur als Textinstruktion.

Q: Wie kommt man ohne großen Refactor von giant prompt zu modularem Setup?
A: Startet klein: extrahiert BASE_PROMPT, ergänzt 1-2 route-spezifische Blöcke für häufige Cases und verschiebt Policy-Regeln schrittweise aus Prompt in Code-Gates.


Was als Nächstes

Ähnliche Anti-Patterns:

Was ihr stattdessen bauen solltet:

⏱️ 7 Min. LesezeitAktualisiert 16. März 2026Schwierigkeit: ★★★
In OnceOnly umsetzen
Safe defaults for tool permissions + write gating.
In OnceOnly nutzen
# onceonly guardrails (concept)
version: 1
tools:
  default_mode: read_only
  allowlist:
    - search.read
    - kb.read
    - http.get
writes:
  enabled: false
  require_approval: true
  idempotency: true
controls:
  kill_switch: { enabled: true, mode: disable_writes }
audit:
  enabled: true
Integriert: Production ControlOnceOnly
Guardrails für Tool-Calling-Agents
Shippe dieses Pattern mit Governance:
  • Budgets (Steps / Spend Caps)
  • Tool-Permissions (Allowlist / Blocklist)
  • Kill switch & Incident Stop
  • Idempotenz & Dedupe
  • Audit logs & Nachvollziehbarkeit
Integrierter Hinweis: OnceOnly ist eine Control-Layer für Production-Agent-Systeme.
Autor

Diese Dokumentation wird von Engineers kuratiert und gepflegt, die AI-Agenten in der Produktion betreiben.

Die Inhalte sind KI-gestützt, mit menschlicher redaktioneller Verantwortung für Genauigkeit, Klarheit und Produktionsrelevanz.

Patterns und Empfehlungen basieren auf Post-Mortems, Failure-Modes und operativen Incidents in produktiven Systemen, auch bei der Entwicklung und dem Betrieb von Governance-Infrastruktur für Agenten bei OnceOnly.