Fehlerfluss
Kurz gesagt: Fehlerflüsse fangen Fehler überall in Ihrem Bot (Knoten, Agenten usw.) ab und bieten einen kontrollierten Wiederherstellungspfad. Maximal einer pro Bot. Wenn ausgelöst, wird das Gespräch in den Fehlerfluss gesperrt — Benutzer können nicht entkommen und Übergänge sind blockiert. Halten Sie sie einfach und verwenden Sie den Slot
_error_flow_reason, um auf Fehlerdetails zuzugreifen.
Ein Fehlerfluss ist eine spezielle Art von Fluss, der dazu dient, unerwartete Fehler zu behandeln, die während Bot-Gesprächen auftreten. Wenn eine Komponente Ihres Bots auf einen Fehler stößt, wird der Fehlerfluss automatisch ausgelöst, sodass Sie einen geordneten Abschaltpfad bereitstellen können, anstatt Benutzer mit einem unterbrochenen Gespräch zurückzulassen.
Warum Fehlerflüsse verwenden?
Fehlerflüsse geben Ihnen die Kontrolle darüber, was passiert, wenn in Ihrem Bot etwas schiefgeht. Anstatt das Gespräch abstürzen zu lassen, können Sie:
- Benutzerfreundliche Fehlermeldungen anzeigen
- Sich entschuldigen und erklären, was passiert ist
- Alternative Aktionen oder Workarounds anbieten
- Über Live-Chat an einen menschlichen Agenten eskalieren
- Die Fehlerdetails zur Fehlerbehebung protokollieren
Erstellen eines Fehlerflusses
Um einen Fehlerfluss zu erstellen:
- Navigieren Sie zum Abschnitt Inhalt und klicken Sie auf Erstellen, um einen neuen Fluss zu starten.
- Geben Sie Ihrem Fluss einen beschreibenden Namen (z. B. "Fehlerfluss" oder "Fehlerbehebung") und eine kurze Beschreibung.
- Aktivieren Sie das Kontrollkästchen Fehlerfluss.
Hinweis: Wenn Sie die Option Fehlerfluss aktivieren, werden mehrere Einstellungen automatisch konfiguriert:
- Der Fluss wird zu einem Nur-Unterfluss (er wird nicht vom Orchestrator ausgewählt)
- Standardfluss kann nicht aktiviert werden (ein Fluss kann nicht sowohl Standard- als auch Fehlerfluss sein)
Bearbeiten eines vorhandenen Flusses, um ein Fehlerfluss zu sein
Sie können auch einen vorhandenen Fluss in einen Fehlerfluss umwandeln:
- Öffnen Sie den Fluss, den Sie konvertieren möchten.
- Klicken Sie auf das Bearbeiten-Symbol, um die Flusseinstellungen zu öffnen.
- Aktivieren Sie das Kontrollkästchen Fehlerfluss.
- Speichern Sie Ihre Änderungen.
Wichtig: Sie können höchstens einen Fehlerfluss pro Bot haben. Wenn Sie den Fehlerfluss in einem anderen Fluss aktivieren, wird der vorherige Fehlerfluss automatisch wieder in einen regulären Unterfluss umgewandelt.
Wann wird der Fehlerfluss ausgelöst?
Der Fehlerfluss wird automatisch ausgelöst, wenn ein beliebiger Knoten oder eine Komponente in Ihrem Bot auf einen Fehler stößt. Dies umfasst:
Story-Knoten
- LLM-Antwortknoten - Fehler bei der Generierung von Antworten
- Aktionsknoten - Laufzeitfehler in Ihren benutzerdefinierten Python-Skripten
- Verzweigungsknoten - Fehler bei der Bewertung von Bedingungen oder Regeln
- Formular-Knoten - Fehler bei der Formularvalidierung oder Datenerfassung
- RAG-Knoten - Probleme beim Abrufen oder Verarbeiten von Wissen
- Flussübergangsknoten - Fehler während Flussübergängen
- Jeder andere Knotentyp - Jeder unerwartete Fehler während der Ausführung
Bot-Komponenten
- Orchestrator-Agent - Fehler bei der Auswahl eines geeigneten Flusses
- Guard-Agent - Sicherheits- oder Validierungsfehler
- Vorverarbeitungs-Agent - Fehler während der Eingabevorverarbeitung
- Nachverarbeitungs-Agent - Fehler während der Antwortnachverarbeitung
Allgemeine Fehler
- Ratenbegrenzung - Wenn Ratenlimits überschritten werden
- Jede Komponente, die ein Flow Aborted Event auslöst
Wenn in einem Teil der Gesprächspipeline ein Fehler auftritt, wandelt das System den Fehler automatisch in ein FlowExecutionErrorEvent um und aktiviert Ihren Fehlerfluss.
Verhalten des Fehlerflusses
Gesprächssperre
Wenn der Fehlerfluss ausgelöst wird, wird das Gespräch in den Fehlerfluss gesperrt. Das bedeutet:
- Benutzer können den Fehlerfluss nicht durch Eingabe von Nachrichten verlassen
- Der Orchestrator wird nicht zu anderen Flüssen umleiten
- Flussübergangsknoten funktionieren nicht und lösen einen Fehler aus
- Benutzerdefinierte Aktionen können keinen Übergang zu einem anderen Fluss erzwingen
- Die einzigen Übergänge, die funktionieren, sind in die Bot-Auflegen- und Benutzer-Auflegen-Flüsse
Dies stellt sicher, dass Ihre Fehlerbehandlungslogik alle zusätzlichen Benutzereingaben behandelt, da das Gespräch möglicherweise in einem fehlerhaften Zustand ist.
Blockierte Übergänge
Während der Fehlerfluss aktiv ist, sind die folgenden Übergangsmechanismen blockiert und lösen einen Laufzeitfehler aus:
- Flussübergangsknoten - Kann nicht zu einem anderen Fluss wechseln
- Erzwungene Übergänge - Benutzerdefinierte Aktionen können keine Flussänderungen erzwingen
- Orchestrator-Ereignisse - Orchestrator kann den aktiven Fehlerfluss nicht überschreiben
Warnung: Wenn Sie versuchen, einen Flussübergangsknoten zu verwenden oder einen Übergang über eine benutzerdefinierte Aktion zu erzwingen, während der Fehlerfluss aktiv ist, wird das System einen
RuntimeErrormit einer Nachricht wie:
"Attempted to transition to flow 'FlowName' while the error flow 'YourErrorFlow' is locked."
Fehlerinformationen
Das System speichert automatisch Informationen über den Fehler in einem speziellen Slot namens _error_flow_reason. Dieser Slot ist nur innerhalb des Fehlerflusses zugänglich. Sie können diesen Slot verwenden, um:
- Die Fehlerdetails den Benutzern anzuzeigen
- Den Fehler zur Fehlerbehebung zu protokollieren
- Entscheidungen basierend auf dem Fehlertyp zu treffen
Beispiel: In einem LLM-Antwortknoten könnten Sie schreiben:
Es tut mir leid, aber ich habe einen Fehler festgestellt: {{_error_flow_reason}}
Lassen Sie mich Ihnen helfen, wieder auf den richtigen Weg zu kommen.
Deaktivierte Funktionen innerhalb von Fehlerflüssen
Um zu verhindern, dass der Fehlerfluss selbst abstürzt, werden bestimmte Funktionen automatisch deaktiviert:
- Vorverarbeitungs-Agent - Wird während der Ausführung des Fehlerflusses übersprungen
- Nachverarbeitungs-Agent - Wird während der Ausführung des Fehlerflusses übersprungen
Dies hilft sicherzustellen, dass Ihre Fehlerbehandlung so stabil wie möglich ist.
Was passiert, wenn der Fehlerfluss selbst fehlschlägt?
Wenn innerhalb des Fehlerflusses selbst ein Fehler auftritt, wird das System ein FlowAbortedEvent (kein FlowExecutionErrorEvent) auslösen. Dies verhindert eine Endlosschleife von Fehlerflüssen, die sich selbst auslösen.
In diesem Fall wird das Gespräch abgebrochen und der Benutzer muss neu starten.
Best Practice: Halten Sie Ihre Fehlerflüsse einfach und robust. Vermeiden Sie komplexe Logik oder externe Abhängigkeiten, die möglicherweise fehlschlagen könnten.
Technische Übersicht
Hier ist eine Übersicht darüber, wie Fehlerflüsse hinter den Kulissen funktionieren:
-
Fehlererkennung: Wenn eine Komponente ein
FlowAbortedEventauslöst, überprüft das System, ob ein Fehlerfluss konfiguriert ist. -
Ereigniskonvertierung: Wenn ein Fehlerfluss existiert und der Bot sich nicht bereits im Fehlerfluss befindet, wird das
FlowAbortedEventin einFlowExecutionErrorEventumgewandelt. -
Aktivierung des Fehlerflusses: Der Fehlerfluss wird aktiviert und ersetzt jeden aktuell laufenden Fluss.
-
Speicherung des Fehlergrundes: Der Fehlergrund aus der Ereignisnutzlast wird im Slot
_error_flow_reasongespeichert. -
Gesprächssperre: Das Gespräch wird gesperrt, um das Entkommen aus dem Fehlerfluss zu verhindern.
-
Agenten-Deaktivierung: Vorverarbeitungs- und Nachverarbeitungsagenten werden deaktiviert, um weitere Fehler zu verhindern.
-
Flussausführung: Der Fehlerfluss wird bis zum Abschluss ausgeführt, sodass Sie den Fehler elegant behandeln können.
Wichtige Einschränkungen
Beachten Sie diese Einschränkungen, wenn Sie mit Fehlerflüssen arbeiten:
| Einschränkung | Beschreibung |
|---|---|
| Einer pro Bot | Sie können höchstens einen Fehlerfluss pro Bot haben |
| Muss ein Unterfluss sein | Fehlerflüsse sind immer Unterflüsse und können nicht vom Orchestrator ausgewählt werden |
| Nicht parallelisierbar | Fehlerflüsse laufen immer sequentiell |
| Kann nicht Standard sein | Ein Fluss kann nicht sowohl ein Fehlerfluss als auch ein Standardfluss sein |
| Keine Übergänge nach außen | Während aktiv, können Sie nicht zu anderen Flüssen wechseln (außer den Auflegen-Flüssen) |
| Keine verschachtelten Fehler | Fehler innerhalb des Fehlerflusses lösen FlowAbortedEvent aus |
Best Practices
1. Halten Sie es einfach
Gestalten Sie Ihren Fehlerfluss so einfach wie möglich. Vermeiden Sie komplexe Logik, externe API-Aufrufe oder alles, was fehlschlagen könnte. Das Ziel ist Zuverlässigkeit.
Gutes Beispiel:
- LLM-Antwort: "Es tut mir leid, ich habe ein technisches Problem festgestellt. Bitte versuchen Sie es erneut oder kontaktieren Sie den Support."
- Bieten Sie Optionen zum Neustart oder zur Kontaktaufnahme mit einem Agenten an
Vermeiden:
- Mehrere komplexe RAG-Abfragen
- Verkettete API-Aufrufe
- Komplizierte Verzweigungslogik
2. Verwenden Sie den Fehlergrund-Slot
Nutzen Sie den Slot _error_flow_reason, um Kontext darüber zu geben, was schiefgelaufen ist. Sie können ihn in Ihren Antworten referenzieren oder für die Protokollierung verwenden.
3. Bieten Sie klare nächste Schritte an
Geben Sie den Benutzern immer einen klaren Weg nach vorne:
- Bieten Sie an, das Gespräch neu zu starten
- Geben Sie Kontaktinformationen für den Support an
- Schlagen Sie alternative Möglichkeiten vor, ihr Ziel zu erreichen
- Übertragen Sie an einen menschlichen Agenten, wenn verfügbar
- Bieten Sie an, ein Support-Ticket zu erstellen
4. Testen Sie Ihren Fehlerfluss
Lösen Sie absichtlich Fehler aus, um Ihren Fehlerfluss zu testen:
- Erstellen Sie eine benutzerdefinierte Aktion, die eine Ausnahme auslöst
- Testen Sie mit ungültigen Daten
- Überprüfen Sie, ob die Fehlermeldungen benutzerfreundlich sind
5. Protokollieren Sie zur Fehlerbehebung
Verwenden Sie Aktionsknoten, um Fehlerdetails für die spätere Analyse zu protokollieren. Dies hilft Ihnen, Ihren Bot im Laufe der Zeit zu verbessern.
Beispiel:
# In einer benutzerdefinierten Aktion
slot_value = tracker.get_slot("_error_flow_reason")
logger.error(f"Fehlerfluss ausgelöst: {slot_value}")