Startseite / Artikel

Überwachung von LLMs in der Produktion: Metriken, Qualität, Kosten, Sicherheit

Überwachung von LLMs in der Produktion: SLIs für Latenz, Fehler, Tokens, Grundlage und Sicherheit sowie Überwachungsalarmanzeigen, die einen leisen Qualitätsverfall frühzeitig erkennen.

Verlag: REACTAPP.TOP11 Min. Lesezeit2425 Wörter

Quellen: LLM Monitoring in Production: Metrics, Quality, Cost, and Safety

Dieser Leitfaden zeigt den Weg von Rohstoffen bis zu einem funktionsfähigen System für die Überwachung von LLMs in der Produktion – mit Schwerpunkt auf Metriken, Qualität, Kosten und Sicherheit. Es werden handlungsorientierte Schritte, explizite Überprüfungen sowie Code vorgestellt, den man ohne Rätseln über die Absicht direkt in ein Repository einfügen kann. Zur Übersicht sollten vor der Änderung des Codes die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Betreiber sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Dokumentieren Sie sowohl den normalen Ablauf als auch den Notfallweg gemeinsam. Wiederholungsversuche, menschliche Überprüfungen sowie die Handhabung fehlerhafter Nachrichten gehören zum Produkt selbst und nicht zu späteren Optimierungen.

Eine LLM-Anwendung ist nicht nur ein Modellaufruf

Für eine Anwendung mit großem Sprachmodell geht es nicht nur um den Aufruf eines Modells – definieren Sie vor dem Ändern des Codes die Eingaben, den Verantwortlichen für den Schritt sowie die Abbruchkriterien. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Ziehen Sie kleine, testbare Einheiten vor großen Skripten. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Pipeline-System. Erfassen Sie Latenz, Fehlerrate, Tokenkosten, Grundlagenfestigkeit sowie Sicherheitsprüfungen als erstklassige SLIs.

Begonnen wird mit der normalen Produktionsüberwachung

Zunächst sollte bei der normalen Produktionsüberwachung vor dem Ändern des Codes die Eingabedaten, der Verantwortliche für den jeweiligen Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Betrachten Sie diese Phase als Vertrag zwischen den Eingabedaten und den validierten Ausgabedaten. Benennen Sie die Ergebnisdokumente, definieren Sie Erfolgskontrollen und lehnen Sie stille, unvollständige Abschlüsse ab. Verfolgen Sie Latenzzeiten, Fehlerraten, Tokenkosten, Grundlagenfestigkeit sowie Sicherheitsprüfungen als erstklassige SLIs.

Der wirklich wichtige Überwachungsstack

Für den wirklich wichtigen Monitoring-Stack sollten die Eingaben, der Verantwortliche für den jeweiligen Schritt sowie die Abbruchkriterien bereits vor dem Code-Ändern definiert werden. Die Betreiber sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Erhalten Sie neben den funktionalen Ergebnissen auch Aufzeichnungen der Laufzeiten sowie der Kosten für Tokens oder Abfragen. Eine frühzeitige Sichtbarkeit der Kosten verhindert überraschende Rechnungen, wenn der Ablauf von einer Demo-Umgebung in eine gemeinsam genutzte Umgebung wechselt. Verfolgen Sie Latenzzeiten, Fehlerraten, Tokenkosten, Zuverlässigkeit sowie Sicherheitsvorfälle als erstklassige SLIs. Für den wirklich wichtigen Monitoring-Stack sollten die Eingaben, der Verantwortliche für den jeweiligen Schritt sowie die Abbruchkriterien bereits vor dem Code-Ändern definiert werden. Die Betreiber sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch den Notfall- bzw. Wiederherstellungsablauf gemeinsam. Wiederholversuche, menschliche Überprüfungen sowie die Handhabung von Fehlern gehören zum Produkt selbst und nicht zu späteren Optimierungen.

Kosten pro Anfrage sind oft die falsche Kennzahl

Für den Fall, dass Kosten pro Anfrage oft die falsche Kennzahl sind, sollten vor dem Ändern des Codes die Eingabedaten, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Bevorzugen Sie kleine, testbare Einheiten vor umfangreichen Skripten. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Ablaufverfahren. Legen Sie Alarme bei Veränderungen in der Verteilung fest – nicht nur bei schwerwiegenden Fehlern. Eine leise abnehmende Qualität ist der kostspieligste Fehlermodus.

Erstellen Sie genügend Kontext, um einen Fehler nachzuvollziehen

Für ausreichend Kontext, um einen Fehler nachzustellen, sollten vor der Codeänderung die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Betrachten Sie diese Phase als Vertrag zwischen den Eingaben und den validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgskontrollen und lehnen Sie stille, teilweise abgeschlossene Vorgänge ab. Geben Sie bei Veränderungen in der Verteilung Alarm, nicht nur bei schwerwiegenden Fehlern. Eine leise Verschlechterung der Qualität ist die kostspieligste Fehlerart.

trace_id
request_id
session_id
timestamp

application_version
prompt_template_id
prompt_template_version
retrieval_pipeline_version
tool_schema_version

requested_model
returned_model
generation_parameters
input_tokens
output_tokens

time_to_first_output
total_generation_time
total_request_time

retrieval_query
retrieval_filters
retrieved_document_ids
retrieved_document_versions
retrieval_scores
reranker_scores

tool_name
tool_status
tool_duration
tool_retry_count
tool_side_effect_id

input_guardrail_result
output_guardrail_result
policy_reason

quality_scores
human_review_status
user_feedback
task_outcome

Machen Sie aus der Beobachtbarkeit keinen Datenschutzfehler

Um zu verhindern, dass Auswertbarkeit zu einem Datenschutzleck wird, sollten vor dem Ändern des Codes die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Betreiber sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Erhalten Sie neben den funktionalen Ergebnissen auch Aufzeichnungen der Laufzeiten sowie der Kosten für Token oder Abfragen. Frühzeitige Sichtbarkeit der Kosten verhindert überraschende Rechnungen, wenn sich der Ablauf von einer Demo-Umgebung in eine gemeinsam genutzte Umgebung verschiebt. Stellen Sie Alarme bei Veränderungen in der Verteilung ein – nicht nur bei schwerwiegenden Fehlern. Eine leise abnehmende Qualität ist der kostspieligste Fehlermodus. Um zu verhindern, dass Auswertbarkeit zu einem Datenschutzleck wird, sollten vor dem Ändern des Codes die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Betreiber sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch den Wiederherstellungsprozess gemeinsam. Wiederholversuche, menschliche Überprüfungen sowie die Handhabung von Fehlern gehören zum Produkt selbst und nicht zu späteren Optimierungen.

Qualität lässt sich nicht auf eine universelle Bewertung reduzieren

Weil Qualität nicht auf eine universelle Bewertung reduziert werden kann, sollten Eingabedaten, Verantwortliche für die jeweiligen Schritte sowie Ausstiegskriterien vor dem Ändern des Codes definiert werden. Die Mitarbeiter sollten in der Lage sein, den Schritt anhand eines bekannten Checkpoints erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Man sollte kleine, testbare Einheiten vor umfangreichen Skripten bevorzugen. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Ablaufverfahren. Einbeziehen Sie Beispieldaten in das Bewertungsset, damit unerwartete Probleme im Produktivbetrieb zu Offline-Tests werden.

Nutzen Sie LLM-Bewerter, aber verehren Sie sie nicht

Für die Nutzung von LLM-Bewertungskriterien – aber verehrt sie nicht – sollten Eingaben, der Verantwortliche für den jeweiligen Schritt sowie die Abbruchkriterien vor dem Ändern des Codes definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Betrachten Sie diese Phase als Vertrag zwischen den Eingaben und den validierten Ausgaben. Benennen Sie die Ergebnisdokumente, definieren Sie Erfolgskontrollen und lehnen Sie stille, unvollständige Abschlüsse ab. Fügen Sie Beispieldaten zu einem Bewertungssatz hinzu, damit unerwartete Probleme in der Produktion zu Offline-Tests werden.

Aufnahme und Erstellung müssen getrennt überwacht werden

Für die Retrieval- und Generierungsfunktionen muss getrennt überwacht werden; definieren Sie die Eingaben, den Verantwortlichen für den jeweiligen Schritt sowie die Abbruchkriterien, bevor Sie Code ändern. Die Bediener sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf verborgene Zustände schließen zu müssen. Erfassen Sie die Laufzeiten sowie die Kosten für Token oder Abfragen zusammen mit den funktionalen Ergebnissen. Eine frühzeitige Sichtbarkeit der Kosten verhindert überraschende Rechnungen, wenn der Prozess von Demonstrationsumgebungen in gemeinsam genutzte Umgebungen wechselt. Messen Sie die Trefferquote anhand eines festgelegten Fragekatalogs, bevor Sie die Anfragenanweisungen anpassen – häufige Änderungen der Anweisungen beheben selten ein schwaches Retrieval-System. Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch die Notfallbehandlung gemeinsam. Wiederholte Versuche, menschliche Überprüfungen sowie die Handhabung fehlerhafter Nachrichten gehören zum Produkt.

Keine spätere Polierung.

Agentenüberwachung ist Aktionenüberwachung

Weil Agentenüberwachung Aktionenüberwachung ist, müssen Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien vor dem Codeändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Bevorzugen Sie kleine, testbare Einheiten vor umfangreichen Skripten. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Pipeline-System. Halten Sie den Graphenzustand flach und typisiert. Verschachtelte Datenblöcke verbergen, welcher Knoten welches Feld geschrieben hat, und führen zu Unterbrechungen beim Wiederaufnehmen der Ausführung.

Nutzerfeedback ist nützlich, aber störend

Für Nutzerfeedback ist es nützlich, aber auch störend – definieren Sie daher die Eingaben, den Verantwortlichen für den Schritt sowie die Abbruchkriterien, bevor Sie Code ändern. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Betrachten Sie diese Phase als Vertrag zwischen den Eingaben und den validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgskontrollen und lehnen Sie stille, teilweise abgeschlossene Vorgänge ab. Verfolgen Sie Latenzzeit, Fehlerquote, Tokenkosten, Grundlage der Ergebnisse sowie Sicherheitsprüfungen als erstklassige SLIs.

Überwachen Sie einzelne Abschnitte, nicht nur globale Durchschnittswerte

Für Monitor-Slices – und nicht nur für globale Durchschnitte – sollten die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien vor dem Codeändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Erhalten Sie Zeiten sowie Kosten für Token oder Abfragen zusammen mit den funktionalen Ergebnissen auf. Eine frühzeitige Sichtbarkeit der Kosten verhindert überraschende Rechnungen, wenn sich der Ablauf von einer Demo-Umgebung in eine gemeinsam genutzte Umgebung verschiebt. Trennen Sie die Chunking-Strategie von der Abrufstrategie. Ein Änderung in einer sollte nicht dazu führen, dass die andere neu geschrieben werden muss, wenn sich die Qualitätsmetriken ändern. Für Monitor-Slices – und nicht nur für globale Durchschnitte – sollten die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien vor dem Codeändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Dokumentieren Sie gemeinsam den erfolgreichen Ablauf sowie den Notfallweg. Wiederholte Versuche, menschliche Überprüfungen und die Handhabung von Fehlern gehören zum Produkt und nicht zu späteren Ergänzungen.

…lish.

Warnungen sollten zu Entscheidungen führen

Für Warnungen, die zu Entscheidungen führen sollen, müssen vor dem Ändern des Codes die Eingabedaten, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Vorzuziehen sind kleine, testbare Einheiten statt umfangreicher Skripte. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Ablaufverfahren. Es sollten Warnungen bei Veränderungen in der Verteilung ausgelöst werden – nicht nur bei schwerwiegenden Fehlern. Eine leise abnehmende Qualität ist der kostspieligste Fehlermodus.

Definieren Sie Service-Level-Ziele für LLM-Dienste

Zur Festlegung der Serviceziele für den Define LLM-Dienst sollten vor dem Ändern des Codes die Eingaben, der Verantwortliche für den jeweiligen Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Betrachten Sie diese Phase als Vertrag zwischen den Eingaben und den validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgskontrollen und lehnen Sie stille, teilweise abgeschlossene Vorgänge ab. Geben Sie Alarm bei Veränderungen in der Verteilung – nicht nur bei schwerwiegenden Fehlern. Eine leise Verschlechterung der Qualität ist die kostspieligste Fehlerart.

Bauen Sie Überwachung und Bewertung als einheitlichen Feedbackkreis auf

Zur Überwachung und Bewertung des Builds als einheitlichen Feedbackzyklus sollten vor der Codeänderung die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf verborgene Zustände schließen zu müssen. Erhalten Sie neben den funktionalen Ergebnissen auch Aufzeichnungen der Laufzeiten sowie der Kosten für Token oder Abfragen. Eine frühzeitige Sichtbarkeit der Kosten verhindert überraschende Rechnungen, wenn der Prozess von einer Demo-Umgebung in eine gemeinsam genutzte Umgebung wechselt. Stellen Sie Alarme bei Veränderungen in der Verteilung ein – nicht nur bei schwerwiegenden Fehlern. Eine leise ablaufende Qualitätsverschlechterung ist der kostspieligste Fehlermodus. Zur Überwachung und Bewertung des Builds als einheitlichen Feedbackzyklus sollten vor der Codeänderung die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf verborgene Zustände schließen zu müssen. Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch den Wiederherstellungsprozess gemeinsam. Wiederholversuche, menschliche Kontrollen sowie die Handhabung von Fehlern gehören zum Produkt und nicht zu späteren Ergänzungen.

Ein praktischer Rollout-Plan

Für einen praktischen Rollout-Plan sollten vor der Änderung des Codes die Eingabedaten, der Verantwortliche für den jeweiligen Schritt sowie die Abbruchkriterien definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Es ist besser, kleine, testbare Einheiten statt umfangreicher Skripte zu verwenden. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Ablaufverfahren. Führen Sie Beispieldaten in einen Bewertungssatz ein, damit unerwartete Probleme im Produktivbetrieb zu Offline-Tests werden.

Der eigentliche Zweck der Überwachung von LLMs

Zur tatsächlichen Überwachung von LLMs sollten vor dem Ändern des Codes die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Betreiber sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Betrachten Sie diese Phase als Vertrag zwischen den Eingaben und den validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgskontrollen und lehnen Sie stille, unvollständige Abschlüsse ab. Fügen Sie Beispieldaten zu einem Bewertungssatz hinzu, damit unerwartete Probleme in der Produktion zu Offline-Tests werden.

Operative Checkliste

Für die operative Checkliste sollten vor dem Ändern des Codes die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien definiert werden. Die Betreiber sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen.

Halten Sie die Konfiguration außerhalb des Anwendungscode. Umgebungsdateien, Geheimdatenspeicher und Feature-Flags sollten an einem Ort gespeichert sein, den die Betreiber überprüfen können, ohne den gesamten Codeverlauf durchlesen zu müssen.

Warnen Sie bei Veränderungen in der Verteilung – nicht nur bei schwerwiegenden Fehlern. Ein stiller Qualitätsverfall ist die kostspieligste Fehlerart.

Schreiben Sie ein kurzes Handbuch: Wie man Schlüssel rotiert, wie man die Warteschlange leert und wie man den letzten Eingang rückgängig macht.

Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch den Wiederherstellungsprozess gemeinsam. Wiederholversuche, menschliche Kontrollen sowie die Handhabung von Fehlern gehören zum Produkt selbst und nicht zu späteren Optimierungen.

Warnen Sie bei Veränderungen in der Verteilung – nicht nur bei schwerwiegenden Fehlern. Ein stiller Qualitätsverfall ist die kostspieligste Fehlerart.

Vor der Einführung des Systems sollten Sie Versionen einfrieren, ein „goldenes Transkript“ für den kritischen Ablauf erstellen und die Schritte zur Rückgängigmachung überprüfen. In gemeinsam genutzten Umgebungen sind Geschwindigkeitsbeschränkungen, Überprüfungen der Nutzerrechte sowie ein klarer Verantwortliche für die Schlüsselrotation erforderlich. Wählen Sie langweilige Zuverlässigkeit statt cleverer, einmaliger Demonstrationen.

Zur Festigkeitsmaßnahme Nummer 0 sollten die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien vor dem Codeändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf verborgene Zustände schließen zu müssen. Betrachten Sie diese Phase als Vertrag zwischen den Eingaben und den validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgskontrollen und lehnen Sie stille, unvollständige Abschlüsse ab.

Zur Festigkeitsmaßnahme Nummer 1 sollten die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien vor dem Codeändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf verborgene Zustände schließen zu müssen. Bewahren Sie die Konfiguration außerhalb des Anwendungscode auf. Umgebungsdateien, Geheimdatenspeicher und Feature-Flags sollten an einem Ort gespeichert sein, den die Operator überprüfen können, ohne den gesamten Ablauf durchlesen zu müssen.

Zur Stärkung der Sicherheit – Hinweis 2: Definieren Sie die Eingaben, den Verantwortlichen für den Schritt sowie die Abbruchkriterien, bevor Sie Code ändern. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Ziehen Sie kleine, testbare Einheiten vor großen Skripten. Wenn ein Schritt fehlschlägt, sollte der Fehler auf eine einzige Verantwortung verweisen und nicht auf ein verworrenes Ablaufverfahren.

Zur Stärkung der Sicherheit – Hinweis 3: Definieren Sie die Eingaben, den Verantwortlichen für den Schritt sowie die Abbruchkriterien, bevor Sie Code ändern. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Erhalten Sie neben den funktionalen Ergebnissen auch Aufzeichnungen der Ausführungsdauer sowie der Kosten für Tokens oder Abfragen. Eine frühzeitige Sichtbarkeit der Kosten verhindert überraschende Rechnungen, wenn der Ablauf von Demonstrationsumgebungen in gemeinsam genutzte Umgebungen wechselt.

Zur Festigungshinweis 4 sollten die Eingaben, der Verantwortliche für den Schritt sowie die Abbruchkriterien vor dem Codeändern definiert werden. Die Operator sollten in der Lage sein, den Schritt von einem bekannten Checkpoint aus erneut auszuführen, ohne auf versteckte Zustände schließen zu müssen. Dokumentieren Sie sowohl den erfolgreichen Ablauf als auch den Notfallweg gemeinsam. Wiederholungsversuche, menschliche Überprüfungen sowie die Handhabung von Fehlern gehören zum Produkt selbst und nicht zu späteren Optimierungen.