Ü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) oderORzwischen den Bedingungen. - Operatoren —
equals/not_equals,contains/not_contains,starts_with,ends_with,regex,is_empty/is_not_empty, numerische Vergleichegt/gte/lt/lte, Zugehörigkeit zu einer Listein/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
filterkostet 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.