Agentische Systeme entwerfen, die in Produktion nicht zusammenbrechen
Warum viele agentische Systeme in Produktion versagen — und wie Sie zuverlässige Agenten mit Zustandsautomaten, klaren Tool‑Verträgen, Retries und tiefer Observability entwerfen.

Von beeindruckenden Demos zu fragilen Produktionsagenten
Agentische Systeme sind Anwendungen, in denen ein LLM nicht nur eine Eingabe beantwortet, sondern entscheidet, was als Nächstes zu tun ist: welche Tools aufzurufen sind, welche Daten zu holen sind, welche Schritte auszuführen sind und wann es „fertig“ ist. Sie kombinieren ein Modell, eine Menge von Tools (APIs, Datenbanken, Services), eine Planungs/Execution‑Schleife und die Infrastruktur, die alles verbindet.
In einer Demo wirkt das magisch: ein Agent findet einen Plan, ruft ein paar Tools auf und liefert ein perfektes Ergebnis. Der Happy Path ist kurz, die Latenz niedrig und nichts fällt gleichzeitig aus.
Warum Demos funktionieren und Produktion kaputtgeht
Unter realer Last wird derselbe Agent auf Arten belastet, die die Demo nie gesehen hat:
- APIs laufen in Timeouts, liefern partielle Daten oder ändern ihre Verträge.
- Mehrere Anfragen konkurrieren um gemeinsame Ressourcen und korrumpieren Zustand.
- Lang laufende Konversationen blähen den Kontext auf und überschreiten Kontextlimits.
- Subtile Modellfehler kumulieren sich über viele Tool‑Aufrufe.
Das Ergebnis: flakiges Verhalten, schwer reproduzierbare Fehler, stille Datenkorruption und Nutzerflüsse, die gelegentlich hängenbleiben oder endlos drehen.
Der echte geschäftliche Einfluss
Flaky Agenten schaden nicht nur dem „Delight“. Sie:
- Lösen Incidents und On‑Call‑Pages aus.
- Produzieren falsche Antworten, die in nachgelagerte Systeme gelangen.
- Erodieren Nutzervertrauen: Menschen hören stillschweigend auf, dem Feature zu vertrauen.
- Treiben Cloud‑Kosten durch Retries und runaway loops in die Höhe.
Worauf dieser Leitfaden abzielt
Dieser Artikel handelt von Engineering‑Mustern, nicht von „besseren Prompts“. Wir betrachten Zustandsautomaten, explizite Tool‑Verträge, Retry‑ und Fehlerbehandlungsstrategien, Speicher‑ und Nebenläufigkeitskontrolle sowie Observability‑Muster, die agentische Systeme unter Last vorhersehbar machen — nicht nur auf der Bühne beeindruckend.
Warum die meisten Agentenarchitekturen bei Skalierung versagen
Die meisten Agentensysteme wirken in einem einzelnen Happy‑Path‑Demo in Ordnung. Sie fallen auseinander, wenn Traffic, Tools und Edge‑Cases zusammenkommen.
Fragiles Verhalten: Schleifen, Stillstände, Teilarbeit, stille Fehler
Naive Orchestrierung geht davon aus, dass das Modell in ein oder zwei Aufrufen „das Richtige“ tut. Unter realer Nutzung sehen Sie wiederkehrende Muster:
- Schleifen: Der Agent plant immer wieder neu oder ruft dasselbe Tool erneut auf, weil er nie Abschluss oder Fehler erkennt.
- Stillstände: Der Agent wartet auf ein Tool oder eine Teilaufgabe ohne Timeout und lässt Nutzer‑Sessions hängen.
- Teilarbeit: Der Agent beendet nur die Hälfte des Workflows (z. B. verfasst eine E‑Mail, sendet sie aber nie; erstellt einen Plan, führt die Schritte aber nicht aus).
- Stille Fehler: Tools schlagen fehl oder Schemata stimmen nicht, aber der Agent liefert selbstbewusst eine plausible Antwort mit fehlenden oder falschen Daten.
Ohne explizite Zustände und Endbedingungen sind diese Verhaltensweisen unvermeidlich.
Versteckte Nichtdeterministik und Tool‑Unzuverlässigkeit
LLM‑Sampling, Latenzvariabilität und Tool‑Timing erzeugen versteckte Nichtdeterministik. Dieselbe Eingabe kann unterschiedliche Zweige durchlaufen, verschiedene Tools aufrufen oder Tool‑Ergebnisse unterschiedlich interpretieren.
Bei Skalierung dominieren Tool‑Probleme:
- Timeouts und Flakiness in Upstream‑APIs und Datenbanken
- Schema‑Drift zwischen Tool‑Verträgen und dem, was Services tatsächlich zurückgeben
- Inkonsistente Fehlerformate, die der Agent nie gelernt hat zu behandeln
Jedes dieser Probleme verwandelt sich in willkürliche Schleifen, Retries oder falsche Endantworten.
Nebenläufigkeit verstärkt Edge‑Cases und Produkt‑Mismatch
Was bei 10 RPS selten kaputtgeht, bricht bei 1.000 RPS konstant zusammen. Nebenläufigkeit offenbart:
- Race‑Conditions auf gemeinsamem Zustand oder Caches
- Erschöpfte Ratenlimits, die zu kaskadierenden Tool‑Ausfällen führen
- Thundering Herds von Retries, ausgelöst durch eine einzige Dependency‑Störung
Produktteams erwarten oft deterministische Workflows, klare SLAs und Auditierbarkeit. Agenten, unbegrenzt gelassen, bieten probabilistisches, best‑effort‑Verhalten mit schwachen Garantien.
Wenn Architekturen diese Diskrepanz ignorieren — Agenten wie traditionelle Services statt wie stochastische Planer behandeln — verhalten sich Systeme genau dann unvorhersehbar, wenn Zuverlässigkeit am wichtigsten ist.
Designprinzipien für produktionsreife agentische Systeme
Produktionsbereite Agenten sind weniger „bessere Prompts“ und mehr diszipliniertes Systemdesign. Eine hilfreiche Denkweise: Betrachte sie als kleine, vorhersehbare Maschinen, die gelegentlich ein LLM aufrufen, nicht als mysteriöse LLM‑Blobs, die sporadisch deine Systeme berühren.
Was macht einen Agenten produktionsbereit?
Vier Eigenschaften sind besonders wichtig:
- Sicherheit: Der Agent muss Beschränkungen bei Datenzugriff, Seiteneffekten und Nutzerzusagen respektieren. Das bedeutet explizite Berechtigungen, Guardrails auf Tools und sorgfältige Handhabung nicht vertrauenswürdiger Ausgaben.
- Vorhersehbarkeit: Bei gleichen Eingaben und Zuständen sollte der Agent innerhalb eines engen, erwarteten Bandes agieren. Sie sollten erklären können, was er kann und was er nicht kann.
- Debuggability: Wenn etwas schiefgeht, können Sie den Pfad nachverfolgen: welcher Zustand, welche Entscheidung, welches Tool, welcher Modellaufruf. Keine versteckten Schleifen, keine undurchsichtigen „Gedanken“ ohne Struktur.
- Änderungsresistenz: Sie können Modelle, Tools oder Strategien upgraden, ohne das gesamte System umzuschreiben.
Diese Eigenschaften erhalten Sie nicht nur durch Prompts. Sie erhalten sie durch Struktur.
Bevorzugen Sie explizite Workflows gegenüber Freiform‑Schleifen
Das Standardmuster vieler Teams ist: „while not done: call the model, let it think, maybe call a tool, repeat“. Das ist leicht zu prototypisieren und schwer zu betreiben.
Ein sichereres Muster ist, den Agenten als expliziten Workflow zu repräsentieren:
- Definieren Sie eine endliche Menge an Zuständen (z. B.
COLLECTING_INPUT,PLANNING,EXECUTING_STEP,WAITING_ON_HUMAN,DONE). - Definieren Sie, welche Übergänge zwischen Zuständen erlaubt sind.
- Nutzen Sie das LLM vor allem für lokale Entscheidungen: die nächste State wählen, ein Tool auswählen oder Parameter füllen.
Das verwandelt den Agenten in einen Zustandsautomaten, bei dem jeder Schritt einsehbar, testbar und replaybar ist. Freiform‑Schleifen wirken flexibel, aber explizite Workflows machen Incidents debugbar und Verhalten auditierbar.
Zerlegen Sie den „God‑Agent“ in modulare Skills
Monolithische Agenten, die „alles“ machen, sind verlockend, erzeugen aber enge Kopplung zwischen unverbundenen Verantwortlichkeiten: Planung, Retrieval, Geschäftslogik, UI‑Orchestrierung usw.
Stattdessen komponieren Sie kleine, gut abgegrenzte Agenten oder Skills:
- Ein Planner, der Aufgaben zerlegt.
- Ein Executor, der konkrete Schritte ausführt.
- Spezialisten für jede Domäne (Billing, Support, Analytics usw.).
Jeder Skill kann seinen eigenen Zustandsautomaten, Tools und Sicherheitsregeln haben. Die Kompositionslogik wird damit zu einem höherstufigen Workflow, nicht zu einem ständig wachsenden Prompt innerhalb eines einzelnen Agenten.
Diese Modularität hält jeden Agenten einfach verständlich und erlaubt, eine Fähigkeit zu erweitern, ohne den Rest zu destabilisieren.
Trennen Sie Policy, Zustand und Tools
Ein nützliches mentales Modell ist die Aufteilung eines Agenten in drei Schichten:
-
Entscheidungs‑Policy (LLM‑Prompts + Modell)
Kapselt wie der Agent nächste Aktionen auswählt, interpretiert unter strikten Beschränkungen. Sie sollten Modell und Temperatur austauschen oder Prompts verfeinern können, ohne die Systemverdrahtung zu ändern. -
Zustandsmaschine / Workflow‑Engine
Besitzt wo Sie sich im Prozess befinden, welche Übergänge möglich sind und wie Fortschritt persistiert wird. Die Policy schlägt einen Schritt vor; die Zustandsmaschine validiert und wendet ihn an. -
Tooling‑Layer
Implementiert was tatsächlich in der Welt passieren kann: APIs, Datenbanken, Queues, externe Services. Tools bieten enge, wohltypisierte Verträge und erzwingen Autorisierung, Ratenbegrenzung und Input‑Validierung.
Durch diese Trennung vermeiden Sie, Geschäftslogik in Prompts oder Tool‑Beschreibungen zu verstecken. Das LLM wird so zu einer Entscheidungs‑Komponente innerhalb einer klaren, deterministischen Hülle — nicht zur Hülle selbst.
Design für Kleinheit und Klarheit
Die zuverlässigsten agentischen Systeme sind nicht die beeindruckendsten Demos — es sind die Systeme, deren Verhalten Sie auf einem Whiteboard erklären können.
Konkretes Vorgehen:
- Halten Sie jeden Agenten auf eine Aufgabe und eine Hauptmetrik fokussiert.
- Kodieren Sie Workflow und Zustandsübergänge explizit statt in Prosatext.
- Lassen Sie LLMs zwischen wohldefinierten Optionen wählen, nicht ganze Verfahren erfinden.
Diese Neigung zu kleinen, komponierbaren, gut strukturierten Agenten erlaubt es, den Funktionsumfang zu vergrößern, ohne dass das System unter der eigenen Komplexität zusammenbricht.
Modellierung von Agenten‑Workflows als explizite Zustandsautomaten
Die meisten Agentenimplementierungen beginnen als Schleife „denken, handeln, beobachten“ um einen LLM‑Aufruf. Das ist für Demos in Ordnung, wird aber schnell undurchsichtig und brüchig. Ein besserer Ansatz ist, den Agenten als expliziten Zustandsautomaten zu behandeln: eine endliche Menge von Zuständen mit wohldefinierten Übergängen, ausgelöst durch Ereignisse.
Darstellung von Agentenflüssen als Zustände und Übergänge
Anstatt das Modell implizit entscheiden zu lassen, was als Nächstes zu tun ist, definieren Sie ein kleines Zustandsdiagramm:
- PLAN – die Nutzeranfrage interpretieren, in Schritte zerlegen, Tools auswählen.
- CALL_TOOL – einen einzelnen Tool‑Aufruf (oder Batch) mit validierten Eingaben ausführen.
- VERIFY – Tool‑Ausgaben gegen einfache Invarianten oder zusätzliche Modellprüfungen prüfen.
- RECOVER – Fehler behandeln: retry, fallback oder eskalieren.
- DONE – eine finale Antwort zurückgeben und den Workflow schließen.
- FAILED – terminaler Fehler mit klarer Ursache und Kontext.
Übergänge zwischen diesen Zuständen werden durch typisierte Ereignisse wie UserRequestReceived, ToolCallSucceeded, ToolValidationFailed, TimeoutExceeded oder HumanOverride ausgelöst. Jedes Ereignis plus der aktuelle Zustand bestimmt den nächsten Zustand und die auszuführenden Aktionen.
Das macht Retries und Timeouts einfach: Sie hängen Richtlinien an einzelne Zustände (z. B. CALL_TOOL darf 3‑mal mit exponentiellem Backoff versucht werden, PLAN wird überhaupt nicht erneut versucht) statt Retry‑Logik im gesamten Code zu verstreuen.
Externalisierung von Zustand für Resilienz und Skalierung
Persistieren Sie den aktuellen Zustand und den minimalen Kontext in einem externen Store (Datenbank, Queue oder Workflow‑Engine). Der Agent wird dadurch zu einer reinen Funktion:
next_state, actions = transition(current_state, event, context)
Das ermöglicht:
- Resilienz – fällt ein Worker während eines Laufs aus, kann ein anderer vom letzten persistierten Zustand aus fortsetzen.
- Horizontale Skalierung – zustandslose Worker konsumieren Ereignisse, aktualisieren Zustand und emittieren Folgeereignisse.
- Replays und Kompensationen – Sie können einen Lauf rekonstruieren, ihn von jedem Zustand aus erneut antreiben oder Kompensationsaktionen fahren, wenn ein Flow zurückgerollt werden muss.
Vorteile für Nachvollziehbarkeit und Audits
Mit einem Zustandsautomaten ist jeder Schritt des Agentenverhaltens explizit: in welchem Zustand er war, welches Ereignis eintrat, welcher Übergang feuert und welche Seiteneffekte erzeugt wurden. Diese Klarheit beschleunigt Debugging, vereinfacht Incident‑Untersuchungen und schafft eine natürliche Audit‑Spur für Compliance‑Reviews. Sie können aus Logs und Zustandshistorie beweisen, dass bestimmte riskante Aktionen nur aus definierten Zuständen und unter bestimmten Bedingungen ausgeführt werden.
Zuverlässige Tool‑Verträge für Agenten entwerfen
Agenten verhalten sich viel vorhersehbarer, wenn Tools weniger wie „APIs versteckt in Prosatext“ aussehen und mehr wie gut gestaltete Interfaces mit expliziten Garantien.
Definieren Sie den Vertrag, nicht nur den Prompt
Jedes Tool sollte einen Vertrag enthalten, der abdeckt:
- Input‑Schema: erforderliche Felder, Typen, Enums, Constraints, Defaults.
- Output‑Schema: Erfolgs‑Payload, nullable Felder und was „kein Ergebnis“ bedeutet.
- Fehlermodell: typisierte Fehler (z. B.
InvalidInput,NotFound,RateLimited,TransientFailure) mit klarer Semantik. - SLAs: Latenzerwartungen, Verfügbarkeitsziele und Ratenlimits.
Stellen Sie diese Verträge dem Modell als strukturierte Dokumentation bereit, nicht als langen Fließtext. Der Agent‑Planner sollte wissen, welche Fehler retriable sind, welche Nutzerintervention erfordern und welche den Workflow stoppen.
Striktes JSON, strikte Validierung
Behandeln Sie Tool‑I/O wie jede andere Produktions‑API:
- Verwenden Sie strikte JSON‑Schemata (z. B. OpenAPI, JSON Schema) für Inputs und Outputs.
- Validieren Sie vor dem Aufruf (um Modellfehler zu fangen) und nach dem Aufruf (um Tool‑Regressionen zu erkennen).
- Reparieren Sie kleinere Probleme automatisch (z. B. Typ‑Coercion), aber loggen Sie sie zur späteren Nachjustierung.
Das vereinfacht Prompts: statt langer Anweisungen verlassen Sie sich auf schema‑gesteuerte Guidance. Klare Constraints reduzieren halluzinierte Argumente und unsinnige Tool‑Sequenzen.
Versionierung und Kompatibilität
Tools entwickeln sich; Agenten dürfen dadurch nicht bei jeder Änderung kaputtgehen.
- Versionieren Sie Tool‑Verträge (
v1,v1.1,v2) und pinnen Sie Agenten an eine Version. - Deprecate Felder schrittweise; halten Sie alte Felder vorübergehend lesbar.
- Fügen Sie Felder abwärtskompatibel hinzu; vermeiden Sie heimliche Semantikänderungen.
Die Planungslogik kann dann sicher Agents und Tools mit unterschiedlichen Reifegraden mischen.
Fehlerbehandlung und Degradierungsmodi
Entwerfen Sie Verträge mit Teil‑Fehlerfällen im Blick:
- Erlauben Sie partielle Ergebnisse mit per‑Item Fehlerdetails.
- Definieren Sie eine degradierte Antwort (z. B. gecachte, approximative oder veraltete Daten) statt eines harten Fehlers.
- Kennzeichnen Sie Felder als „Best‑Effort“ vs. „Must‑Have".
Der Agent kann dann adaptieren: den Workflow mit reduzierter Funktionalität fortsetzen, den Nutzer um Bestätigung bitten oder auf ein alternatives Tool wechseln.
Sicherheits‑ und Autorisierungsgrenzen
Tool‑Verträge sind ein natürlicher Ort, Sicherheitsgrenzen zu kodieren:
- Scope, was das Tool lesen oder ändern darf.
- Erfordern Sie explizite Parameter für sensible Aktionen (z. B.
confirm: true). - Unterscheiden Sie zwischen nutzer‑gescoped und system‑gescoped Operationen.
Kombinieren Sie das mit serverseitigen Prüfungen; verlassen Sie sich nie ausschließlich darauf, dass das Modell „sich benimmt“.
Warum gute Verträge Agenten vereinfachen
Wenn Tools klare, validierte, versionierte Verträge haben, werden Prompts kürzer, Orchestrierungslogik einfacher und Debugging deutlich leichter. Sie verschieben Komplexität aus brüchigen natürlichen‑Sprach‑Anweisungen in deterministische Schemata und Policies und reduzieren halluzinierte Tool‑Aufrufe sowie unerwartete Seiteneffekte.
Retries, Idempotenz und Muster zur Fehlerbehandlung
Zuverlässige agentische Systeme gehen davon aus, dass alles irgendwann ausfällt: Modelle, Tools, Netzwerke, sogar die eigene Koordinationsschicht. Ziel ist nicht, Ausfall zu vermeiden, sondern ihn günstig und sicher zu machen.
Idempotenz: Grundlage für sichere Retries
Idempotenz bedeutet: Die Wiederholung derselben Anfrage hat denselben äußerlich sichtbaren Effekt wie einmalige Ausführung. Das ist essenziell für LLM‑Agenten, die häufig Tool‑Aufrufe nach partiellen Fehlern oder uneindeutigen Antworten erneut senden.
Machen Sie Tools idempotent durch Design:
- Request‑IDs: Jeder Tool‑Aufruf enthält eine stabile
request_id. Das Tool speichert diese und liefert bei erneutem Auftreten dieselben Ergebnisse zurück. - Upserts statt Inserts: Verwenden Sie „create‑or‑update“‑Semantik, die durch einen natürlichen oder synthetischen Business‑Key adressiert wird, nicht durch Auto‑Increment‑IDs.
- Checksums und Versionierung: Hängen Sie Inhalts‑Hashes oder Versionsnummern an, damit das Tool Duplikate, veraltete Writes oder Konflikte erkennt.
Retry‑Strategien, die Kosten nicht explodieren lassen
Verwenden Sie strukturierte Retries für transiente Fehler (Timeouts, Ratenlimits, 5xx): exponentiellen Backoff, Jitter zur Vermeidung von Thundering Herden und strikte Max‑Versuche. Loggen Sie jeden Versuch mit Korrelations‑IDs, um Agentenverhalten nachzuvollziehen.
Bei permanenten Fehlern (4xx, Validierungsfehler, Geschäftsregelverletzungen) retryen Sie nicht. Surface‑en Sie einen strukturierten Fehler an die Agent‑Policy, damit diese neu plant, den Nutzer fragt oder ein anderes Tool wählt.
Circuit Breaker und Fallbacks
Implementieren Sie Circuit Breaker sowohl in Agent‑ als auch in Tool‑Layer: nach wiederholten Fehlern blockieren Sie temporär Aufrufe an dieses Tool und failen schnell. Kombinieren Sie das mit definierten Fallbacks: degraded modes, gecachte Daten oder alternative Tools.
Vermeiden Sie blinde Retries aus der Agent‑Schleife. Ohne idempotente Tools und klare Fehlerklassen vervielfachen Sie nur Seiteneffekte, Latenz und Kosten.
Verwaltung von Memory, Zustand und Datenkonsistenz für Agenten
Zuverlässige Agenten beginnen mit klarer Überlegung, was Zustand ist und wo er liegt.
Kurzzeit‑State vs. Langzeit‑Memory
Behandeln Sie einen Agenten wie einen Service, der eine Anfrage bearbeitet:
- Kurzzeit‑State: alles, was nötig ist, um die aktuelle Aufgabe oder Teilaufgabe zu beenden. Dazu gehören das aktive Ziel, der aktuelle Schritt, Tool‑Ausgaben, partielle Entscheidungen und Steuerungsvariablen (verbleibende Retries, gewählter Branch usw.). Er sollte eng gefasst und nach Abschluss des Workflows verwerfbar sein.
- Langzeit‑Memory: Informationen, die über Läufe und Sessions hinweg erhalten bleiben sollten: Nutzerprofile, Präferenzen, frühere Entscheidungen, Projektverlauf und gelernte Shortcuts.
Eine Vermischung führt zu Verwirrung und Bugs. Beispielsweise macht das Ablegen ephemerer Tool‑Ergebnisse in „Memory“, dass Agenten veralteten Kontext in zukünftigen Gesprächen wiederverwenden.
Wo Zustand speichern
Sie haben drei Hauptoptionen:
- Im Kontext (nur Prompt) – einfach, geringe Latenz, aber limitiert und nicht dauerhaft. Geeignet für Kurzzeit‑State innerhalb eines Runs.
- Externer Store – Datenbank, Cache oder Vektorstore. Verwenden Sie das für Langzeit‑Memory und jeden Zustand, der Neustarts überdauern oder über Worker koordinieren muss.
- Hybrid – das autoritative State extern halten; nur das Nötigste in den Kontext laden.
Eine gute Regel: Das LLM ist eine zustandslose Funktion über ein explizites State‑Objekt. Persistieren Sie dieses Objekt außerhalb des Modells und generieren Sie Prompts daraus.
Das Anti‑Pattern „Logs als Memory“ vermeiden
Ein häufiger Fehler ist, Konversationsprotokolle, Traces oder rohe Prompts als de‑facto Memory zu verwenden.
Probleme:
- Retrieval wird ad hoc und brüchig.
- Wichtige Fakten gehen in langem Text unter.
- Mehrere Läufe können sich widersprechen, ohne klares "Last Write Wins".
Stattdessen definieren Sie strukturierte Memory‑Schemas: user_profile, project, task_history usw. Leiten Sie Logs aus State ab, nicht umgekehrt.
Konsistenz bei geteilten Daten und Tools
Wenn mehrere Tools oder Agenten dieselben Entitäten updaten (z. B. ein CRM‑Eintrag oder der Status einer Aufgabe), brauchen Sie grundlegende Konsistenzkontrollen:
- Nutzen Sie Single Sources of Truth für Schlüsselentitäten (z. B. Bestellung, Ticket, Dokument).
- Bevorzugen Sie idempotente Tool‑Verträge: Tools sollten sichere Retries mit stabilen IDs und Upsert‑Semantik unterstützen.
- Wenden Sie optimistische Konsistenzkontrollen (Versionsnummern, Timestamps) an, wenn Agenten um dieselbe Entität konkurrieren.
Bei wertvollen Operationen halten Sie ein Decision Log getrennt vom Konversationslog: was geändert wurde, warum und basierend auf welchen Inputs.
Snapshots und wiederaufnehmbare Ausführung
Um Abstürze, Deploys und Ratenbegrenzungen zu überleben, sollten Workflows resumable sein:
- Nach jedem relevanten Schritt persistieren Sie einen State‑Snapshot: aktuellen Schritt, Eingaben, Tool‑Ergebnisse und ausstehende Aktionen.
- Machen Sie jeden Übergang in Ihrer Zustandsmaschine von diesem Snapshot aus replaybar.
- Bei Fehlern oder Neustarts laden Sie den letzten Snapshot und setzen fort statt neu zu starten.
Das ermöglicht auch Time‑Travel‑Debugging: Sie können genau den Zustand inspizieren und erneut abspielen, der zu einer falschen Entscheidung geführt hat.
Privacy, Retention und minimales Memory
Memory ist ebenso ein Risiko wie ein Vorteil. Für Produktionsagenten:
- Modellieren Sie explizit was nie gespeichert werden darf (z. B. Secrets, rohe Dokumente, sensible PII). Nutzen Sie Redaction oder Hashing, wo angemessen.
- Definieren Sie Retention‑Policies pro Memory‑Typ (Session‑Level, 30 Tage, Legal‑Hold usw.).
- Geben Sie Nutzern Kontrollen zum Einsehen und Löschen ihres Langzeit‑Memory.
- Vermeiden Sie das Speichern vollständiger Prompts oder Tool‑Inputs, wenn eine kleinere, strukturierte Zusammenfassung ausreicht.
Behandeln Sie Memory als Produktfläche: entworfen, versioniert und reguliert — nicht als wachsendes Textdump, das an den Agenten angehängt wird.
Nebenläufigkeit, Ratenlimits und Backpressure in Agentensystemen
Agenten wirken sequenziell auf dem Whiteboard, verhalten sich aber unter realer Last wie verteilte Systeme. Sobald viele gleichzeitige Nutzer, Tools und Hintergrundjobs vorhanden sind, jonglieren Sie mit Race‑Conditions, doppelter Arbeit und Reihenfolgeproblemen.
Nebenläufigkeitsgefahren in Agenten‑Workflows
Gängige Fehlermodi:
- Race Conditions: zwei Agentenläufe aktualisieren dasselbe Ticket, denselben Warenkorb oder dasselbe Dokument gleichzeitig und überschreiben sich gegenseitig.
- Doppelte Arbeit: retried Aufrufe oder falsch konfigurierte Worker bearbeiten dieselbe Aufgabe zweimal (z. B. doppelte Abbuchung).
- Out‑of‑Order‑Effekte: Tool‑Aufrufe beenden sich in unerwarteter Reihenfolge, sodass ein älteres Ergebnis einen neueren Zustand überschreibt.
Diese mitigiert man mit idempotenten Tool‑Verträgen, explizitem Workflow‑State und optimistischer/pessimistischer Sperrung auf Datenebene.
Queues vs. synchrone Flows
Synchroner Request–Response‑Flow ist einfach, aber fragil: jede Abhängigkeit muss erreichbar, innerhalb des Ratenlimits und schnell sein. Sobald Agenten viele Tools aufrufen oder parallelisieren, verlagern Sie lang laufende oder side‑effect‑reiche Schritte in eine Queue.
Queue‑basierte Orchestrierung ermöglicht:
- Kontrolle der Nebenläufigkeit über Worker‑Pools
- Zentralisierte Retries und Deduplikation
- Isolierung langsamer oder flaky Tools von der Nutzerwahrnehmung
Ratenlimits und Backpressure
Agenten treffen typischerweise drei Klassen von Limits:
- Modelle: Tokens pro Minute, Requests pro Minute, Kontextgröße
- Tools: interne Dienste mit QPS‑ oder CPU‑Beschränkungen
- Upstream‑APIs: Drittanbieterquoten und harte Caps
Sie brauchen eine explizite Ratenlimit‑Schicht mit per‑User, per‑Tenant und globalen Throttles. Nutzen Sie Token‑Buckets oder Leaky‑Buckets zur Durchsetzung und geben Sie klare Fehlertypen zurück (z. B. RATE_LIMIT_SOFT, RATE_LIMIT_HARD), damit Agenten elegant zurückschalten.
Backpressure schützt das System unter Last. Strategien umfassen:
- Unwichtigen Traffic zuerst verwerfen
- Features degradieren (kleinere Kontexte, weniger Tool‑Aufrufe)
- Niedrigprioritäre Queues pausieren, während kritische Flows weiterlaufen
Überwachen Sie Sättigungssignale: Queue‑Tiefe, Worker‑Auslastung, Modell/Tool‑Fehlerraten und Latenz‑Perzentile. Steigende Queues zusammen mit wachsender Latenz oder 429/503‑Fehlern sind Frühwarnzeichen, dass Agenten ihre Umgebung überlasten.
Observability: Tracing, Metriken und Logs für Agentenverhalten
Sie können einen Agenten nicht zuverlässig machen, wenn Sie nicht schnell zwei Fragen beantworten können: Was hat er getan? und Warum hat er das getan? Observability für agentische Systeme macht diese Antworten billig und präzise.
Was Sie sehen müssen
Gestalten Sie Observability so, dass eine einzelne Aufgabe einen Trace hat, der durchläuft:
- Jeden Agent‑Schritt und Zustandsübergang
- Jeden Tool‑Aufruf und jede Antwort
- Jede Modell‑Invocation und Prompt‑Variante
Hängen Sie in diesem Trace strukturierte Logs für Schlüssentscheidungen (Routingwahl, Planrevision, Guardrail‑Trigger) und Metriken für Volumen und Gesundheit an.
Ein nützlicher Trace enthält typischerweise:
- Task‑Metadaten: Tenant, Nutzer, Kanal, Priorität
- Agent‑State: aktueller Statusname, nächster Zustand, Retry‑Zähler
- Tool‑I/O: Inputs, Outputs, Latenz, Fehler, Circuit‑Breaker‑Status
- Modellaufrufe: Prompt‑Template‑ID, Modellname, Token‑Counts, Latenz
Logging und Redaction
Loggen Sie Prompts, Tool‑Inputs und Outputs in strukturierter Form, aber leiten Sie sie zuerst durch eine Redaction‑Schicht:
- Maskieren Sie PII und Secrets
- Kürzen Sie übergroße Payloads und hinterlegen Sie Hashes zur Korrelation
- Markieren Sie Felder mit Sensitivitätsstufen zur Steuerung von Retention und Zugriff
Halten Sie rohe Inhalte hinter Feature‑Flags in niedrigeren Umgebungen; Produktion sollte standardmäßig redigierte Views haben.
Metriken, die wirklich zählen
Mindestens sollten Sie verfolgen:
- Task‑Success / Failure‑Rate nach Agent und Anwendungsfall
- Average und P95 Schrittanzahl pro Task
- Latenz: end‑to‑end und pro Tool / Modell
- Kosten pro Task (Tokens, Tool‑Spend) und pro erfolgreichem Outcome
Wenn Incidents auftreten, erlauben gute Traces und Metriken, von „der Agent ist flaky“ zu einer präzisen Aussage zu kommen wie: „P95‑Tasks schlagen in ToolSelection nach 2 Retries fehl wegen neuem Schema im billing_service“, wodurch die Diagnose von Stunden auf Minuten schrumpft.
Test‑ und Evaluationsstrategien für agentische Systeme
Agenten zu testen bedeutet, sowohl die Tools zu prüfen, die sie aufrufen, als auch die Flows, die alles zusammenfügen. Behandeln Sie es wie verteilte Systeme‑Testing, nicht nur als Prompt‑Tuning.
Unit‑Tests: Tool‑Verträge, nicht Prompts
Beginnen Sie mit Unit‑Tests an der Tool‑Schnittstelle:
- Validieren Sie Schemata: Pflichtfelder, Enums, Bereiche und Invarianten.
- Prüfen Sie Idempotenz und Fehlersemantik (welche Fehler, welche Codes, Retrybarkeit).
- Stellen Sie sicher, dass Tools fehlerhafte Inputs robust behandeln und strukturierte Fehler liefern.
Diese Tests hängen nie vom LLM ab. Sie rufen das Tool direkt mit synthetischen Inputs auf und asserten das exakte Output‑ oder Fehler‑Verhalten.
Integrationstests: Flows und mehrstufiges Verhalten
Integrationstests üben den Agentenworkflow end‑to‑end: LLM + Tools + Orchestrierung.
Modellieren Sie diese als szenariobasierte Tests:
- Happy Paths für zentrale Nutzerreisen (Buchung, Rückerstattung, Eskalation usw.).
- Edge Cases: fehlende Daten, partielle Tool‑Ausfälle, Timeouts, Ratenlimits.
- Cross‑Tool‑Interaktionen: wenn Tool A die Ausgabe für Tool B liefert.
Diese Tests prüfen Zustandsübergänge und Tool‑Aufrufe, nicht jedes Token des LLM. Überprüfen Sie: welche Tools aufgerufen wurden, mit welchen Argumenten, in welcher Reihenfolge und welchen Endzustand/das Ergebnis der Agent erreicht hat.
Deterministische Fixtures für LLM und Tools
Um Tests wiederholbar zu halten, fixture‑n Sie sowohl LLM‑Antworten als auch Tool‑Outputs.
- Nehmen Sie LLM‑Antworten einmal auf (pro Prompt + Modell + Konfiguration) und speichern Sie sie als JSON‑Fixtures.
- Mocken Sie externe Systeme hinter Tools, damit Tests nicht gegen Live‑Services laufen.
- Nutzen Sie explizite Seeds und fixe Temperatur‑Configs in Tests.
Ein typisches Muster:
with mocked_llm(fixtures_dir="fixtures/llm"), mocked_tools():
result = run_agent_scenario(input_case)
assert result.state == "COMPLETED"
(Der Codeblock bleibt unverändert.)
Regressionssuiten für Prompts und Schemata
Jede Prompt‑ oder Schemaänderung sollte einen unverzichtbaren Regression‑Run auslösen:
- Pflegen Sie ein kuratiertes Korpus von Eingaben plus erwarteten Zuständen, Tool‑Traces oder Klassifikationen.
- Sperren Sie diese als Golden‑Files; Diffs zeigen Verhaltensänderungen.
- Genehmigen oder rollen Sie jede Drift in kritischen Flows explizit zurück.
Schema‑Evolution (Felder hinzufügen, Typen straffen) bekommt eigene Regression‑Cases, um Agenten oder Tools zu erwischen, die noch auf das alte Vertragsbild setzen.
Offline‑Evaluation vor Rollout
Schicken Sie nie ein neues Modell, eine Policy oder Routing‑Strategie direkt in den Produktivtraffic.
Stattdessen:
- Führen Sie Ihre Regressionskorpora offline gegen die neue Konfiguration aus.
- Führen Sie Replay‑Tests auf Stichproben historischer Interaktionen durch.
- Berechnen Sie automatische Metriken (Task‑Success, Tool‑Fehlerraten, Latenz, Kosten) und, falls nötig, menschliche Ratings auf einer Stichprobe.
Nur wenn offline Gates bestanden sind, sollte eine neue Variante in Produktion gehen — idealerweise hinter Feature‑Flags und mit schrittweiser Ausrollung.
Testdatenmanagement und Anonymisierung
Agenten‑Logs enthalten oft sensible Nutzerdaten. Testing muss das respektieren.
- Erstellen Sie Testdatensätze aus anonymisierten oder synthetischen Eingaben.
- Entfernen oder hashieren Sie Identifikatoren, freie Text‑PII und Secrets, bevor Sie Logs oder Fixtures speichern.
- Segmentieren Sie den Zugriff: Ingenieure sehen Verhaltens‑Traces, aber keine rohen Nutzer‑Secrets.
Kodifizieren Sie diese Regeln in Ihrer CI‑Pipeline, sodass kein Testartefakt ohne Anonymisierungschecks erzeugt oder gespeichert werden kann.
Betrieb, Monitoring und Weiterentwicklung von Agenten in Produktion
Agenten in Produktion zu betreiben ähnelt eher dem Betrieb eines verteilten Systems als dem Ausliefern eines statischen Modells. Sie brauchen Rollout‑Kontrollen, klare Zuverlässigkeitsziele und disziplinierte Change‑Management‑Prozesse.
Sichere Rollout‑Strategien
Führen Sie neue Agenten oder Verhaltensweisen schrittweise ein:
- Shadow Mode: Führen Sie den Agenten parallel zum bestehenden System, loggen Sie Entscheidungen, lassen Sie aber keine Auswirkungen an Nutzer. Vergleichen Sie Outputs offline.
- Canaries: Leiten Sie einen kleinen, klar definierten Traffic‑Anteil (z. B. 1–5 %) an die neue Agent‑Version. Beobachten Sie Fehlerraten, Latenz und Qualität, bevor Sie hochskalieren.
- A/B‑Tests: Vergleichen Sie für nutzerrelevante Flows neue vs. alte Agenten anhand von Business‑KPIs, nicht nur Modellmetriken.
Unterlegen Sie das mit Feature‑Flags und konfigurierbaren Policies: Routing‑Regeln, aktivierte Tools, Temperatur, Safety‑Einstellungen. Änderungen sollten per Konfiguration steuerbar und sofort umkehrbar sein.
SLOs und Incident‑Workflows
Definieren Sie SLOs, die sowohl Systemgesundheit als auch Nutzerwert widerspiegeln:
- Zuverlässigkeit: Erfolgsrate von Tasks, Tool‑Aufrufen und End‑to‑End‑Workflows.
- Latenz: p50/p95 für kritische Pfade.
- Qualität: Auto‑Eval‑Scores, Verteilungen menschlicher Ratings oder aufgabenspezifische Erfolgsmetriken.
Binden Sie diese an Alerts und behandeln Sie Incidents wie bei jedem Produktionsservice: klare Ownership, Runbooks zur Triage und Standard‑Mitigationsschritte (Rollback‑Flag, Traffic‑Drain, Safe‑Mode).
Kontinuierliche Verbesserung und Change‑Control
Nutzen Sie Logs, Traces und Gesprächstranskripte, um Prompts, Tools und Policies zu verfeinern. Behandeln Sie jede Änderung als versioniertes Artefakt mit Review, Freigabe und Rückrollmöglichkeit.
Vermeiden Sie stille Änderungen an Prompts oder Tools. Ohne Change‑Control können Sie Regressionen nicht auf spezifische Änderungen zurückführen; Incident‑Response wird so zu Ratespiel statt zu Ingenieursarbeit.
Eine Referenzarchitektur für zuverlässige agentische Systeme
Ein produktionsreifes Agentensystem profitiert von klarer Trennung der Verantwortlichkeiten. Ziel: den Agenten in Entscheidungen smart, in Infrastruktur aber dumb zu halten.
Kernkomponenten
1. Gateway / API‑Edge
Single Entry Point für Clients (Apps, Services, UIs). Verantwortlich für:
- Authentifizierung und Autorisierung (User, Service, Tenant)
- Ratenlimits und Quotas
- Request‑Shaping (Schemata, Größenbeschränkungen, Basis‑Validierung)
2. Orchestrator
Der Orchestrator ist der „Hirnstamm“, nicht das Gehirn. Er koordiniert:
- Planner: übersetzt Nutzerintention in einen Workflow oder Zustandsautomaten
- State Orchestrator: führt den Workflow aus, verfolgt Zustand, handhabt Retries und Timeouts
- Policy Engine: erzwingt Safety, Compliance, erlaubte Tools, PII‑Regeln und Kostenbudgets
Die LLM(s) stehen hinter dem Orchestrator, verwendet vom Planner und von spezifischen Tools, die Sprachverständnis benötigen.
3. Tooling‑ und Storage‑Layer
Geschäftslogik bleibt in bestehenden Microservices, Queues und Datensystemen. Tools sind dünne Wrapper um:
- Interne HTTP/gRPC‑Dienste
- Datenbanken, Vektorstores, Caches
- Externe APIs
Der Orchestrator ruft Tools über strikte Verträge auf, während Storage‑Systeme die Quellen der Wahrheit bleiben.
Integration, Controls und Telemetrie
Durchsetzen von Auth und Quotas am Gateway; Erzwingen von Safety, Datenzugriff und Policy im Orchestrator. Alle Aufrufe (LLM und Tools) emittieren strukturierte Telemetrie in eine Pipeline, die speist:
- Traces für schrittweises Verhalten
- Metriken für SLOs und Ratenlimits
- Audit‑Logs für Sicherheit und Compliance
- Kostenbuchhaltung nach Nutzer, Projekt und Tool
Eine einfache Architektur (Gateway → single Orchestrator → Tools) ist leichter zu betreiben; separate Planner, Policy Engines und Model Gateways erhöhen Flexibilität, auf Kosten von Koordination, Latenz und operativer Komplexität.
Alles zusammenfügen und nächste Schritte für Ihr Team
Sie haben nun die Kernbausteine für Agenten, die unter realer Last vorhersehbar arbeiten: explizite Zustandsautomaten, klare Tool‑Verträge, disziplinierte Retries und tiefe Observability. Der letzte Schritt ist, diese Ideen in eine wiederholbare Praxis für Ihr Team zu überführen.
Die Kernmuster in einem Bild
Denken Sie an jeden Agenten als einen zustandsbehafteten Workflow:
- Ein Zustandsautomat definiert legale Schritte (plan → gather → act → summarize usw.) und Übergänge.
- Tool‑Verträge definieren, was jede Aktion leisten kann, mit strikten Schemata, Timeouts und Fehlerflächen.
- Retries und Idempotenz schützen jede externe Interaktion, sodass Replays sicher sind und Seiteneffekte nicht doppelt auftreten.
- Observability (Traces, Metriken, Logs) macht jede Entscheidung und jeden Tool‑Aufruf erklärbar und debugbar.
Wenn diese Teile zusammenpassen, degradieren Systeme kontrolliert, anstatt unter Edge‑Cases zusammenzubrechen.
Eine leichte Checkliste zur Produktionsreife eines Agenten
Bevor Sie einen Prototypen an reale Nutzer ausliefern, prüfen Sie:
- Workflow: Zustände und Übergänge sind explizit; keine versteckten Schleifen, keine ungebundenen Tool‑Ketten.
- Verträge: Jedes Tool hat typisierte Inputs/Outputs, klare Fehlerfälle und Timeouts.
- Sicherheit: Guardrails für Inputs, Outputs und Aktionen (Ratenlimits, Allowlists, Quotas).
- Retries: Policies pro Tool sind definiert; Idempotenz‑Keys existieren für alle side‑effecting Calls.
- Zustand: Memory und persistenter Zustand sind scoped, versioniert und wiederherstellbar.
- Observability: Sie können für jede Nutzer‑Session in einem Trace beantworten: „Was ist passiert?“
- Testing: Sie haben szenariobasierte Tests sowie Regressionssuiten für Prompts, Tools und Policies.
Fehlt eines dieser Items, befinden Sie sich noch im Prototyp‑Modus.
Wie Teams Verantwortlichkeiten aufteilen können
Eine nachhaltige Struktur trennt meist:
- Produktteams: Verantwortlich für Agentenverhalten, Prompts, domänenspezifische Tools und Evaluationsdatensätze.
- Plattform/Infra‑Teams: Verantwortlich für das Zustandsmaschinen‑Framework, gemeinsame Tool‑SDKs, Logging & Tracing, Policy‑Enforcement und gemeinsame Evaluationsinfrastruktur.
So können Produktteams schnell iterieren, während Plattform‑Teams Zuverlässigkeit, Sicherheit und Kostenkontrolle durchsetzen.
Zukünftige Erweiterungen und sicheres Iterieren
Haben Sie die stabilen Grundlagen, können Sie erkunden:
- Learning‑basierte Policies: Nutzung geloggter Traces zur Verbesserung von Routing, Tool‑Auswahl und Fallback‑Strategien.
- Reinforcement Learning: Optimierung für langfristige Outcomes wie Task‑Completion oder Umsatz, nicht nur einzelne Antworten.
- Self‑Tuning‑Workflows: Automatische Anpassung von Temperaturen, Tools oder Sub‑Flows basierend auf beobachteter Performance.
Führen Sie Fortschritte inkrementell ein: neue Lernkomponenten hinter Feature‑Flags, mit Offline‑Evaluation und starken Guardrails.
Das übergreifende Motto bleibt: Für Ausfälle designen, Klarheit über Cleverness stellen und iterieren, wo Sie beobachten und sicher zurückrollen können. Unter diesen Zwängen hören agentische Systeme auf, beängstigende Prototypen zu sein, und werden Infrastruktur, auf die Ihre Organisation vertrauen kann.
FAQ
Was ist ein agentisches System und wie unterscheidet es sich von einer normalen LLM‑App?
Ein agentisches System ist eine Anwendung, in der ein LLM nicht nur eine einzelne Eingabe beantwortet, sondern entscheidet, was als Nächstes zu tun ist: welche Tools aufzurufen sind, welche Daten zu holen sind, welche Schritte in einem Workflow auszuführen sind und wann es fertig ist.
Im Gegensatz zu einer einfachen Chat-Kompletion kombiniert ein agentisches System:
- Eine Entscheidungs‑Policy (LLM + Prompts)
- Einen Workflow oder Zustandsautomaten, der den Fortschritt verfolgt
- Eine Menge von Tools (APIs, Datenbanken, Services)
- Infrastruktur für Retries, Persistenz des Zustands, Logging und Observability
In Produktion ist das LLM somit eine Entscheidungs‑Komponente innerhalb einer größeren, deterministischen Hülle — nicht das ganze System.
Warum versagen Agenten, die in Demos großartig aussehen, oft in der Produktion?
Demos laufen meist über einen einzigen Happy‑Path: ein Nutzer, ideale Tool‑Antworten, keine Timeouts, keine Schema‑Änderungen und kurze Konversationen. In der Produktion treten hingegen auf:
- Schwankende Tools: Timeouts, 5xx‑Fehler und veränderte Antwortformate
- Nebenläufigkeit: viele Nutzer, die um gemeinsame Ressourcen und Ratenlimits konkurrieren
- Lang laufende Sessions: aufgeblähtes Kontextfenster, Memory‑Verwirrung und Zustandsdrift
- Kumulative Modellfehler: kleine Irrtümer, die sich über mehrere Tool‑Aufrufe hinweg aufschaukeln
Ohne explizite Workflows, Verträge und Fehlerbehandlung entstehen Schleifen, Stillstände, unvollständige Arbeit und stille Fehler, die in Demo‑Umgebungen nicht sichtbar werden.
Wie mache ich einen Agenten vorhersehbar und leicht zu debuggen?
Lassen Sie das LLM innerhalb einer klaren Struktur arbeiten statt in einer frei fließenden Schleife:
- Modellieren Sie den Agenten als Zustandsautomaten mit einer endlichen Menge von Zuständen und erlaubten Übergängen.
- Nutzen Sie das LLM nur für lokale Entscheidungen (z. B. welches Tool als Nächstes aufzurufen ist, wie Parameter zu füllen sind), nicht dafür, beliebige Abläufe zu erfinden.
- Persistieren Sie den Zustand extern, sodass jeder Übergang wiederholbar und prüfbar ist.
- Halten Sie Agenten klein und fokussiert: ein Hauptauftrag, eine primäre Erfolgsmetrik.
So können Sie Verhalten Schritt für Schritt erklären, testen und debuggen, anstatt undurchsichtigen "Agenten‑Gedanken" nachzujagen.
Was bedeutet es, einen Agenten als Zustandsautomaten zu modellieren?
Statt while not done: call LLM modellieren Sie den Agenten als Workflow mit benannten Zuständen und typisierten Ereignissen.
Typische Zustände könnten sein:
PLAN– die Anfrage interpretieren und in Schritte zerlegenCALL_TOOL– ein bestimmtes Tool oder ein Batch von Tools aufrufenVERIFY– Ausgaben gegen einfache Invarianten oder sekundäre Modellprüfungen prüfenRECOVER– Fehler durch Retries, Fallbacks oder Eskalation behandelnDONE/FAILED– terminale Ergebnisse
Ereignisse (z. B. ToolCallSucceeded, TimeoutExceeded) plus der aktuelle Zustand bestimmen den nächsten Zustand. Dadurch werden Retries, Timeouts und Fehlerbehandlung explizit statt im Prompt oder verstreutem Glue‑Code versteckt.
Wie sollte ich Tool‑Verträge für meine Agenten gestalten?
Entwerfen Sie Tools wie echte Produktions‑APIs, nicht als prosaische Beschreibungen in Prompts. Jedes Tool sollte haben:
- Input‑Schema: Pflichtfelder, Typen, Einschränkungen und Defaults
- Output‑Schema: klare Struktur für Erfolg, Teilresultate und „kein Ergebnis“
- Typisierte Fehler: z. B.
InvalidInput,NotFound,RateLimited,TransientFailure - Betriebliche Erwartungen: Latenzziele und Ratenlimits
Validieren Sie Eingaben vor dem Aufruf und Ausgaben danach. Versionieren Sie Tool‑Verträge und pinnen Sie Agenten an Versionen, damit Schema‑Änderungen nicht stillschweigend Flows kaputtmachen.
Wie handhabe ich Fehler, Retries und Idempotenz in Agenten‑Workflows?
Gehen Sie davon aus, dass jede externe Aufrufkette irgendwann ausfällt, und designen Sie entsprechend.
Wesentliche Muster:
- Idempotenz: side‑effecting Tools akzeptieren eine stabile
request_idoder einen Business‑Key und liefern bei wiederholtem Aufruf dasselbe Ergebnis zurück. - Gezielte Retries: nur bei transienten Fehlern (Timeouts, 5xx, Ratenlimits) mit exponentiellem Backoff und strikter Max‑Anzahl. Loggen Sie jede Versuchskette mit Korrelations‑IDs.
- Circuit Breaker: blockieren Sie temporär Aufrufe an ein wiederholt fehlerhaftes Tool und wechseln Sie zu Fallbacks oder degradierten Modi.
- Strukturierte Fehleroberflächen: explizite Fehlertypen, damit der Agent entscheiden kann, ob er neu plant, retryt oder den Nutzer befragt.
So bleibt die Zuverlässigkeit hoch, ohne Endlosschleifen, doppelte Seiteneffekte oder unkontrollierte Kosten zu erzeugen.
Wie verwalte ich Memory und State richtig für Agenten?
Trennen Sie Kurzzeit‑State von Langzeit‑Memory und halten Sie das LLM stateless.
- Verwenden Sie Kurzzeit‑State für alles, was nötig ist, um den aktuellen Workflow abzuschließen: aktives Ziel, Schritte, Tool‑Ergebnisse und Retry‑Zähler.
- Speichern Sie Langzeit‑Memory (z. B. Nutzerprofile, Projektverlauf) extern in strukturierten Schemas, nicht als rohe Transkripte.
- Betrachten Sie das LLM als reine Funktion über ein explizites State‑Objekt: laden Sie relevanten State, erzeugen Sie den Prompt, rufen Sie das Modell auf und persistieren Sie den aktualisierten State.
Vermeiden Sie, Logs oder vollständige Konversationen als „Memory“ zu verwenden; leiten Sie stattdessen kompakte, strukturierte Datensätze mit klaren Aufbewahrungs‑ und Datenschutzregeln ab.
Wie gehe ich mit Nebenläufigkeit, Ratenlimits und Backpressure in Agentensystemen um?
Betrachten Sie Ihr Agentensystem unter Last als verteiltes System, auch wenn einzelne Flows sequenziell aussehen.
Um zuverlässig zu bleiben:
- Stellen Sie lang laufende oder side‑effect‑reiche Schritte in Queues, damit Sie Nebenläufigkeit mit Worker‑Pools kontrollieren können.
- Erzwingen Sie Ratenlimits für Modelle und Tools mit per‑User, per‑Tenant und globalen Quotas.
- Setzen Sie Backpressure ein: verwerfen Sie unwichtigen Traffic zuerst, degradieren Sie Features oder pausieren Sie Low‑Priority‑Queues, wenn die Auslastung steigt.
- Kombinieren Sie idempotente Tool‑Verträge mit optimistischer/pessimistischer Sperrung in der Datenebene, um doppelte Arbeit und Race‑Conditions zu vermeiden.
Beobachten Sie Queue‑Tiefen, Latenz‑Perzentile und 429/503‑Raten, um Überlast frühzeitig zu erkennen.
Welche Observability brauche ich, um Agenten sicher in Produktion zu betreiben?
Sie müssen für jede Aufgabe beantworten können: „Was hat der Agent getan?“ und „Warum hat er das getan?“. Praktisch bedeutet das:
- Traces: ein End‑to‑End‑Trace pro Aufgabe, der Zustandsübergänge, Tool‑Aufrufe und Modell‑Invocations abdeckt.
- Strukturierte Logs: wichtige Entscheidungen (Tool‑Auswahl, Planänderungen, Guardrail‑Auslöser) mit Korrelations‑IDs erfassen.
- Metriken: Erfolgsrate der Tasks, Fehlerquote pro Zustand, Latenz (gesamt und pro Tool/Modell) und Kosten pro erfolgreichem Ergebnis.
- Redaktion: PII und Secrets in Prompts, Tool‑Inputs und Outputs vor dem Logging maskieren; Retention nach Sensitivitätsstufen steuern.
Mit diesen Instrumenten verschiebt sich die Fehlersuche von „der Agent ist unzuverlässig“ hin zu einer punktgenauen Diagnose des betroffenen Zustands, Tools und der auslösenden Änderung.
Wie sollten Teams agentische Systeme sicher im Betrieb ausrollen und über die Zeit betreiben?
Behandeln Sie Agenten wie evolvierende Services und managen Sie sie mit der gleichen Disziplin wie andere Produktionssysteme.
Empfohlene Praktiken:
- Nutzen Sie Shadow‑Mode, Canaries und Feature‑Flags, um neue Agenten oder Modell‑Versionen schrittweise auszurollen.
- Definieren Sie SLOs für Zuverlässigkeit, Latenz und Qualität und verbinden Sie sie mit Alerts und Runbooks.
- Pflegen Sie Regression‑Suites und Offline‑Replays für jede Änderung an Prompts, Tools oder Policies.
- Trennen Sie Zuständigkeiten: Produkt‑Teams verantworten Verhalten und domänenspezifische Tools; Plattform‑Teams verantworten das Zustandsmaschinen‑Framework, gemeinsame SDKs, Observability und Policy‑Enforcement.
So können Sie Agenten kontinuierlich verbessern und gleichzeitig Ausfälle einhegen, diagnostizierbar und reversibel halten.