Contrôle de flux
Au-delà des agents et opérateurs, betool fournit des nœuds de contrôle pour structurer la logique d'un pipeline.
Condition
Un nœud condition route les exchanges sur plusieurs sorties selon un prédicat.
Configuration :
- Slot d'entrée — ce qu'on évalue (
exchange.intent,webhook.payload.type…) - Branches — pour chaque valeur (ou condition booléenne), une sortie nommée
- Branche par défaut — obligatoire (fail-safe)
Utilisation typique : router selon l'intention détectée par un agent classifier, ou selon un statut HTTP retourné par un opérateur.
Boucle
Un nœud loop itère sur une collection. Configuration :
- Slot collection — la liste sur laquelle itérer
- Variable d'itération — le nom local de l'élément courant
- Limite — nombre maximal d'itérations (sécurité)
À chaque tour, le sous-graphe interne s'exécute sur l'élément courant. Les sorties sont agrégées en liste.
Une boucle non bornée est une bombe à retardement. Toujours fixer la limite max. L'éditeur refuse de publier sinon.
Filtre
Un nœud filter élimine les exchanges qui ne satisfont pas un prédicat. Utile pour ignorer le bruit avant les coûts LLM downstream.
Exemple : filtrer les emails dont le from est dans la blacklist, ou les webhooks dont type != "order.created".
Validation humaine (confirmation)
Un nœud confirmation met en pause le pipeline et attend qu'un humain valide ou refuse depuis l'admin.
Configuration :
- Question — ce qu'on demande au valideur (avec placeholders contexte)
- Branches —
approved/rejected(et éventuellement des options custom) - Timeout — si pas de réponse, route par défaut
- Notification — qui prévenir (email, Mattermost, Slack)
Cas d'usage typiques :
- Confirmer un appel sortant à un montant élevé.
- Valider un email de rétractation avant envoi.
- Approuver une réponse sensible avant publication.
L'historique conserve le nom du valideur et l'horodatage — c'est traçable pour audit.
Bonnes pratiques
- Branchez toujours la sortie par défaut. Un exchange qui tombe dans le vide reste en
processinget bloque la file. - Gardez les conditions simples. Une condition à 12 branches est un signe que vous avez besoin de deux agents en cascade plutôt qu'une logique condensée.
- Limitez les boucles imbriquées. Une boucle dans une boucle dans une boucle = un coût qui explose. Préférez transformer la collection en amont.