Documentation

Opérateurs déterministes

Nœuds d'action qui ne passent pas par un LLM — HTTP, DB, transformations, calculs.

Opérateurs

Un opérateur est un nœud qui exécute une action déterministe : pas de LLM, pas d'aléatoire. Pour chaque entrée donnée, la sortie est prévisible.

Pourquoi les utiliser

Toute logique qui peut être écrite explicitement doit l'être. Un LLM qui « calcule un total » ou « formate une date » est un anti-pattern : il est plus lent, plus cher, et peut se tromper.

Règle pratique : si vous savez écrire la fonction en 5 lignes de Python, c'est un opérateur — pas un agent.

Types disponibles

operator HTTP

Effectue un appel HTTP (REST, GraphQL). Configuration :

  • URL (avec placeholders depuis le contexte)
  • Méthode, headers, body
  • Authentification (Bearer, Basic, OAuth via compte enregistré)
  • Mapping de la réponse vers des slots

operator DB

Exécute une requête sur une base de données enregistrée dans Administration → Bases de données. Supporte Postgres, MySQL, MongoDB, et la base interne betool pour les tables user-defined.

file_transform

Transforme un fichier. Transformers livrés :

  • Lecture (PDF avec OCR, DOCX, XLSX, CSV)
  • Découpe (par page, par chunk de tokens)
  • Conversion (HTML → texte, Markdown ↔ HTML)
  • Extraction de structure (JSON depuis un schéma)

compute

Calculs et agrégations sur les slots du contexte :

  • Filtre / map / reduce sur des listes
  • Stats colonne par colonne (count, total, pct)
  • Projections de schéma
  • Conditions logiques composées

payload_mapper

Composition d'un payload de sortie depuis des slots du contexte. Utile pour préparer le body d'un opérateur HTTP downstream.

Authentification & secrets

Les opérateurs qui parlent à un système externe (HTTP, DB) référencent un compte enregistré dans l'organisation. Les credentials ne sont jamais visibles dans le pipeline lui-même — juste un nom de compte.

Conséquence : changer un mot de passe ne nécessite pas de rééditer chaque pipeline.

Idempotence

Tout opérateur qui produit un effet de bord (POST HTTP, INSERT DB, envoi d'email) doit être pensé idempotent côté cible. Pratique recommandée :

  • Inclure un idempotency_key dans le payload (typiquement exchange_id).
  • Vérifier côté cible si la clé a déjà été traitée.

betool ne réessaie pas automatiquement un opérateur qui a échoué : c'est à votre pipeline d'orchestrer la stratégie de retry (boucle + condition).