Dokumentation

Flusssteuerung

Filter, Routing, Schleifen, Parallelität — um Ausführungspfade zu steuern.

Über Agents und Operatoren hinaus bietet betool Steuerungsknoten, um die Logik einer Pipeline zu strukturieren.

Filter

Ein filter-Knoten ist ein deterministisches Tor: Die Ausführung läuft zu den nachgelagerten Knoten weiter, wenn seine Bedingungen erfüllt sind; andernfalls endet der Zweig hier.

Konfiguration:

  • Bedingungen — jeweils in der Form {Feld, Operator, Wert}. Das Feld ist ein Selektor im Fluss (exchange.intent, webhook.payload.type …); der Wert ist eine Zeichenkette und unterstützt Templates.
  • Kombinator — AND (Standard) oder OR zwischen den Bedingungen.
  • Operatoren — equals / not_equals, contains / not_contains, starts_with, ends_with, regex, is_empty / is_not_empty, numerische Vergleiche gt / gte / lt / lte, Zugehörigkeit zu einer Liste in / not_in (durch Kommas getrennte Werte). Ein unbekannter Operator wird beim Speichern abgelehnt.

Typische Verwendung: Rauschen vor den nachgelagerten LLM-Kosten aussortieren — E-Mails ignorieren, deren from auf einer Sperrliste steht, oder Webhooks, deren type != "order.created".

Router

Ein router-Knoten schickt die Ausführung zu einer seiner benannten Routen. Die Entscheidung trifft ein LLM anhand eines Routing-Prompts und des Kontexts, den Sie zusammenstellen — um nach Absicht, Kategorie oder Tonfall zu routen.

Konfiguration:

  • Prompt — die Klassifizierungsanweisung.
  • Routen — für jeden Routennamen der auszuführende Teilgraph. Jede deklarierte Route muss verdrahtet sein, sonst wird die Veröffentlichung abgelehnt.
  • Modell — die Möglichkeit, dem Routing ein leichtes LLM zuzuweisen (Tiering), um Kosten und Latenz im Griff zu behalten.

Für ein streng deterministisches Routing (exakter Feldwert, HTTP-Status) setzen Sie besser parallel angeordnete filter-Knoten ein: Das Prädikat ist dann mechanisch, nicht interpretiert.

Schleife (foreach)

Ein foreach-Knoten iteriert über eine Sammlung. Konfiguration:

  • items — der Selektor der zu durchlaufenden Liste.
  • as — der lokale Name des aktuellen Elements.
  • max — Obergrenze der Iterationen (Standard 10): Darüber hinaus wird die Liste abgeschnitten und das Ereignis protokolliert.
  • collect — (optional) der Schlüssel, in dem die Ergebnisse jeder Iteration gesammelt werden.
  • max_per_minute — (optional) maximale Taktung, um die Iterationen zu staffeln, wenn der Schleifenrumpf eine API mit Durchsatzbegrenzung aufruft. 0 (Standard) = keine Begrenzung.

Bei jedem Durchlauf wird der interne Teilgraph auf dem aktuellen Element ausgeführt.

Die Obergrenze max ist Ihre Kostenbremse: Eine unerwartete Liste mit 10 000 Elementen löst niemals 10 000 Ausführungen aus.

Parallel

Ein parallel-Knoten führt mehrere Teilgraphen nebenläufig aus und wartet, bis alle abgeschlossen sind, bevor es weitergeht. Nützlich, um mehrere unabhängige Quellen abzufragen (eine CRM-Suche + ein Kalenderabruf), ohne die Latenzen zu addieren.

Bewährte Praktiken

  • Filtern Sie früh. Jeder exchange, der einen Agent durchläuft, kostet Tokens; ein vorgelagerter filter kostet nichts.
  • Halten Sie das Routing lesbar. Ein Router mit 12 Routen ist ein Zeichen, dass zwei Klassifizierungsstufen nötig sind statt verdichteter Logik.
  • Begrenzen Sie verschachtelte Schleifen. Eine Schleife in einer Schleife vervielfacht die Kosten. Transformieren Sie die Sammlung lieber vorgelagert.