Documentazione

Controllo di flusso

Condizioni, loop, filtri, approvazioni umane — per governare i percorsi di esecuzione.

Controllo di flusso

Oltre agli agent e agli operator, betool fornisce nodi di controllo per strutturare la logica di una pipeline.

Condizione

Un nodo condition instrada gli exchange verso più uscite in base a un predicato.

Configurazione:

  • Slot di input — ciò che viene valutato (exchange.intent, webhook.payload.type…)
  • Rami — per ogni valore (o condizione booleana), un'uscita con nome
  • Ramo predefinito — obbligatorio (fail-safe)

Uso tipico: instradamento in base all'intento rilevato da un agent classificatore, o in base a uno stato HTTP restituito da un operator.

Loop

Un nodo loop itera su una collezione. Configurazione:

  • Slot collezione — la lista su cui iterare
  • Variabile di iterazione — il nome locale per l'elemento corrente
  • Limite — numero massimo di iterazioni (guard di sicurezza)

A ogni iterazione, il sottografo interno viene eseguito sull'elemento corrente. Le uscite vengono aggregate in una lista.

Un loop illimitato è una bomba a orologeria. Imposta sempre il limite massimo. L'editor rifiuterà di pubblicare senza.

Filtro

Un nodo filter rimuove gli exchange che non soddisfano un predicato. Utile per eliminare il rumore prima di incorrere in costi LLM a valle.

Esempio: filtrare le email il cui campo from è in una blocklist, o i webhook dove type != "order.created".

Approvazione umana (conferma)

Un nodo confirmation mette in pausa la pipeline e attende che un umano approvi o rifiuti dall'interfaccia di amministrazione.

Configurazione:

  • Domanda — cosa viene chiesto al revisore (con placeholder di contesto)
  • Ramiapproved / rejected (e facoltativamente opzioni personalizzate)
  • Timeout — se non viene ricevuta alcuna risposta, instrada al ramo predefinito
  • Notifica — chi avvisare (email, Mattermost, Slack)

Casi d'uso tipici:

  • Confermare una chiamata in uscita di alto valore.
  • Validare un'email di cancellazione prima dell'invio.
  • Approvare una risposta sensibile prima della pubblicazione.

La cronologia conserva il nome del revisore e il timestamp — completamente tracciabile a fini di audit.

Buone pratiche

  • Collega sempre l'uscita predefinita. Un exchange che cade nel vuoto resta in processing e blocca la coda.
  • Mantieni le condizioni semplici. Una condizione con 12 rami è un segnale che ti servono due agent in cascata piuttosto che una logica condensata.
  • Limita i loop annidati. Un loop dentro un loop dentro un loop significa costi che esplodono. Preferisci trasformare la collezione a monte.