NĆuds d'action
NĆuds non-LLM programmatiques pour des opĂ©rations de flux de travail dĂ©terministes. Les nĆuds d'action complĂštent les LLM agents en gĂ©rant la transformation de donnĂ©es, les API intĂ©grations, le flux de contrĂŽle et la logique d'automatisation.
Aperçu
Les nĆuds d'action sont visuellement distincts des LLM nĆuds d'agent â ils utilisent des couleurs et des icĂŽnes uniques pour faciliter la lecture des flux de travail. Chaque type de nĆud gĂšre une catĂ©gorie d'opĂ©ration spĂ©cifique, des HTTP requĂȘtes aux requĂȘtes de base de donnĂ©es en passant par le branchement conditionnel.
Tous les nĆuds d'action partagent un ensemble de propriĂ©tĂ©s standard pour la gestion des erreurs, le traçage, le contrĂŽle d'exĂ©cution et le mappage d'E/S. Ils prennent en charge l'{{variable}} interpolation dans les champs de chaĂźne et reçoivent automatiquement les sorties des nĆuds prĂ©dĂ©cesseurs.

NĆuds disponibles
| NĆud | IcĂŽne | Couleur | Description |
|---|---|---|---|
| DĂ©clencheur | đŻ | Indigo | Point d'entrĂ©e du workflow (manuel, webhook, planification, Ă©vĂ©nement) |
| HTTP | đ | Bleu | Effectue des requĂȘtes HTTP vers des APIs externes |
| DĂ©finir | đ | Violet | DĂ©finir et manipuler les variables d'Ă©tat du workflow |
| Transformer | âïž | Rose | Transformer les donnĂ©es Ă l'aide d'expressions ou d'opĂ©rations intĂ©grĂ©es |
| Commutateur | đ | Ambre | Branchement conditionnel basĂ© sur des conditions |
| Boucle | đ | Ămeraude | ItĂ©rer sur des tableaux ou rĂ©pĂ©ter des opĂ©rations |
| Fusionner | đ | Cyan | Combiner plusieurs branches en un seul flux |
| Attendre | â±ïž | Gray | Mettre en pause le flux de travail pour une durĂ©e ou une condition |
| Code | đ» | Red | ExĂ©cuter JavaScript personnalisĂ© dans un environnement d'exĂ©cution sandboxĂ© |
| Base de donnĂ©es | đïž | Teal | OpĂ©rations de base de donnĂ©es (PostgreSQL, MySQL, SQLite, MongoDB, Redis) |
| đ§ | Rose | Envoyer des e-mails via SMTP ou surveiller via IMAP | |
| Notification | đ | Orange | Envoyer vers Slack, Discord, Teams, ou des webhooks |
| RSS | đĄ | Lime | Surveiller les flux RSS/Atom pour de nouvelles entrĂ©es |
| Fichier | đ | Sky | OpĂ©rations de fichier sur le stockage local ou cloud (S3, GCS, Azure) |
Propriétés standard
Chaque nĆud d'action hĂ©rite de ces propriĂ©tĂ©s partagĂ©es :
Identité
| Propriété | Type | RÎle |
|---|---|---|
id | string | Identifiant unique |
name | string | Nom d'affichage |
description | string? | Description optionnelle de l'info-bulle |
Gestion des erreurs
| Mode | Comportement |
|---|---|
stop | ArrĂȘter le workflow en cas d'erreur (par dĂ©faut) |
continue | Enregistrer l'erreur et passer au nĆud suivant |
retry | Réessayer avec un nombre configurable (1-10) et un délai (ms) |
fallback | Utiliser une valeur de repli en cas d'erreur |
Traçage
| Propriété | Type | RÎle |
|---|---|---|
enabled | boolean | Activer les traces d'exécution détaillées |
logLevel | none | error | info | debug | Niveau de verbosité des logs |
ContrÎle d'exécution
| Propriété | Type | RÎle |
|---|---|---|
timeout | number | Délai d'attente en ms (par défaut : 30000) |
condition | string? | Ignorer le nĆud si l'expression est Ă©valuĂ©e Ă faux |
Mappage Entrée/Sortie
| Propriété | Type | RÎle |
|---|---|---|
inputMapping | Record<string, string>? | Mappe les champs d'Ă©tat aux entrĂ©es du nĆud |
outputKey | string | ClĂ© oĂč le rĂ©sultat est stockĂ© dans l'Ă©tat du workflow |
RĂ©fĂ©rence des NĆuds
NĆud DĂ©clencheur đŻ
Point d'entrĂ©e du workflow. Chaque workflow commence par un nĆud dĂ©clencheur. Consultez le Guide des DĂ©clencheurs dĂ©diĂ© pour plus de dĂ©tails.
| Type de déclencheur | Description |
|---|---|
| Manuel | Initiée par l'utilisateur via une entrée de chat |
| Webhook | HTTP endpoint (POST/GET) avec authentification optionnelle |
| Planification | Synchronisation basée sur Cron avec prise en charge des fuseaux horaires |
| ĂvĂ©nement | ĂvĂ©nements de systĂšme externe avec filtrage JSONPath |
HTTP Node đ
Effectue HTTP des requĂȘtes vers des APIs externes avec une gestion complĂšte de l'authentification, des en-tĂȘtes, du corps et de la rĂ©ponse.
Configuration :
| Propriété | Type | RÎle |
|---|---|---|
method | GET, POST, PUT, PATCH, DELETE | Méthode HTTP |
url | string | URL avec interpolation {{variable}} |
auth | objet | Authentification (aucune, bearer, basic, api_key) |
headers | Record<string, string> | En-tĂȘtes de requĂȘte |
body | objet | Corps (aucun, json, formulaire, brut) |
response | objet | Gestion de la réponse (json, texte, binaire) avec extraction JSONPath optionnelle |
rateLimit | objet ? | Limitation de dĂ©bit (requĂȘtes par fenĂȘtre) |
Exemple :
{
"type": "http",
"name": "Fetch User Data",
"method": "GET",
"url": "https://api.example.com/users/{{userId}}",
"auth": {
"type": "bearer",
"bearer": { "token": "{{API_TOKEN}}" }
},
"headers": { "Accept": "application/json" },
"body": { "type": "none" },
"response": { "type": "json", "jsonPath": "$.data" },
"errorHandling": { "mode": "retry", "retryCount": 3, "retryDelay": 1000 },
"mapping": { "outputKey": "userData" }
}
NĆud Set đ
Définit et manipule les variables d'état du workflow. Prend en charge les valeurs littérales, les expressions et les secrets.
Configuration :
| Propriété | Type | RÎle |
|---|---|---|
mode | set, merge, delete | Opération sur les variables |
variables | Variable[] | Liste des variables à définir |
envVars | object? | Charger depuis le fichier .env avec un filtre de préfixe optionnel |
Types de variables : string, number, boolean, json, expression
Les variables marquées isSecret: true sont masquées dans les journaux et l'interface utilisateur.
NĆud de transformation âïž
Transforme les données à l'aide d'expressions ou d'opérations intégrées.
Types de transformations :
| Type de valeur | RĂŽle |
|---|---|
jsonpath | Expression JSONPath |
jmespath | Expression JMESPath |
template | ModĂšle de chaĂźne avec interpolation |
javascript | JavaScript expression |
Opérations intégrées : pick, omit, rename, flatten, sort, unique
Cibles de conversion de type : string, number, boolean, array, object
NĆud Switch đ
Branchement conditionnel avec plusieurs ports de sortie. Chaque condition correspond Ă un port de sortie distinct sur le nĆud.

Configuration :
| Propriété | Type | RÎle |
|---|---|---|
evaluationMode | first_match | all_match | ArrĂȘter Ă la premiĂšre correspondance ou tout Ă©valuer |
conditions | SwitchCondition[] | Liste de conditions avec des ports de sortie |
defaultBranch | string? | Port de sortie lorsqu'aucune condition ne correspond |
Opérateurs de condition : eq, neq, gt, lt, gte, lte, contains, startsWith, endsWith, matches, in, empty, exists
Exemple :
{
"type": "switch",
"evaluationMode": "first_match",
"conditions": [
{ "id": "ok", "name": "Success", "field": "status", "operator": "eq", "value": "success", "outputPort": "success" },
{ "id": "err", "name": "Error", "field": "status", "operator": "eq", "value": "error", "outputPort": "error" }
],
"defaultBranch": "unknown"
}
NĆud de boucle đ
ItÚre sur des tableaux, se répÚte un nombre fixe de fois, ou boucle tant qu'une condition est remplie.
Types de boucles :
| Type de valeur | RĂŽle |
|---|---|
forEach | Itérer sur un tableau à partir de l'état |
while | Boucler tant que la condition est vraie |
times | Répéter N fois |
Exécution parallÚle : Activer parallel.enabled avec les options batchSize et delayBetween pour une itération concurrente.
Agrégation des résultats : Lorsque results.collect est vrai, les résultats de l'itération sont collectés dans un tableau sous results.aggregationKey.
NĆud de fusion đ
Combine plusieurs branches parallÚles en un seul flux. PossÚde plusieurs ports d'entrée.
Modes de fusion :
| Mode | Comportement |
|---|---|
wait_all | Attend toutes les branches entrantes |
wait_any | Continue lorsque la premiÚre branche est terminée |
wait_n | Continuer aprÚs N embranchements terminés |
Combiner les stratégies : array, object, first, last
Délai d'attente optionnel avec continue ou error comportement.
NĆud d'attente â±ïž
Met en pause l'exécution du workflow.
Types d'attente :
| Type de valeur | RĂŽle |
|---|---|
fixed | Attendre une durée fixe (ms, s, m, h) |
until | Attendre jusqu'à un horodatage spécifique |
webhook | Attendre un webhook entrant |
condition | Vérifier une condition à intervalles réguliers |
Code Node đ»
Exécute du code personnalisé JavaScript dans un environnement d'exécution isolé boa_engine. L'état du graphe est injecté en tant qu'objet global input.
Configuration :
| Propriété | Type | RÎle |
|---|---|---|
language | javascript, typescript | Langage du code |
code | string | Code à exécuter |
sandbox | objet | Limites de sécurité (réseau, systÚme de fichiers, mémoire, temps) |
ParamÚtres par défaut du bac à sable :
| Limite | Défaut |
|---|---|
| AccÚs réseau | faux |
| AccĂšs au systĂšme de fichiers | faux |
| Limite de mémoire | 128 MB |
| Limite de temps | 5000 ms |
NĆud de base de donnĂ©es đïž
Effectue des opĂ©rations de base de donnĂ©es avec un pool de connexions et des requĂȘtes paramĂ©trĂ©es.
Bases de données prises en charge :
| Base de données | Pilote | Fonctionnalités |
|---|---|---|
| PostgreSQL | sqlx (postgres) | Pool asynchrone, requĂȘtes paramĂ©trĂ©es, ligne-Ă -JSON |
| MySQL | sqlx (mysql) | Pool asynchrone, requĂȘtes paramĂ©trĂ©es, ligne-Ă -JSON |
| SQLite | sqlx (sqlite) | Pool asynchrone, requĂȘtes paramĂ©trĂ©es, ligne vers JSON |
| MongoDB | mongodb | BSON natif, rechercher/insérer/mettre à jour/supprimer |
| Redis | redis | GET, SET, DEL, HGET, HSET, LPUSH, LRANGE |
Les chaßnes de connexion sont traitées comme des secrets et masquées dans les journaux.
NĆud Email đ§
Envoyez des e-mails via SMTP ou surveillez les e-mails entrants via IMAP.
Mode d'envoi (SMTP) :
- Prise en charge TLS/SSL
- Authentification
- Destinataires Ă/CC/BCC
- Corps HTML ou texte brut
- Interpolation
{{variable}}dans l'objet et le corps - PiÚces jointes à partir de l'état
Mode de surveillance (IMAP) :
- Sélection de dossier (par défaut : INBOX)
- Filtres : expéditeur, objet, plage de dates, non lus uniquement
- Marquer comme lu aprĂšs traitement
NĆud de Notification đ
Envoie des notifications aux plateformes de messagerie.
Canaux : Slack, Discord, Microsoft Teams, webhook personnalisé
Formats de message : texte brut, markdown, blocs spécifiques à la plateforme (Block Kit, Embeds, Adaptive Cards)
NĆud RSS đĄ
Surveille les flux RSS/Atom pour les nouvelles entrées.
- Intervalle d'interrogation configurable
- Filtres par mot-clé, auteur, catégorie et date
- Suivi des éléments vus pour éviter les doublons
- Contenu complet ou résumé uniquement (optionnel)
NĆud de Fichier đ
Opérations de fichier sur le stockage local ou cloud.
Opérations : lire, écrire, supprimer, lister
Fournisseurs cloud : Amazon S3, Google Cloud Storage, Azure Blob Storage
Formats de fichier : JSON, CSV, XML, texte, binaire (avec options d'analyse CSV pour le dĂ©limiteur, les en-tĂȘtes, les guillemets)
Interpolation de Variables
Tous les champs de chaĂźne dans les nĆuds d'action supportent la syntaxe {{variable}} pour les valeurs dynamiques :
https://api.example.com/users/{{userId}}
Bearer {{API_TOKEN}}
Hello {{user.name}}, your order {{orderId}} is ready.
Les variables sont résolues à partir de l'état du workflow au moment de l'exécution. La notation par points (user.name) accÚde aux valeurs imbriquées.
NĆuds Multi-Ports
Deux types de nĆuds ont des nombres de ports dynamiques :
- Switch â un port de sortie par condition, plus un port par dĂ©faut optionnel
- Merge â plusieurs ports d'entrĂ©e, un par branche entrante
Ces ports sont reprĂ©sentĂ©s visuellement sur le nĆud et se connectent Ă diffĂ©rents nĆuds en aval/amont.
Génération de Code
Les nĆuds d'action compilent en code Rust de production aux cĂŽtĂ©s des LLM agents. Les dĂ©pendances sont auto-dĂ©tectĂ©es et ajoutĂ©es au Cargo.toml gĂ©nĂ©rĂ©.
| NĆud | Crate | Ce qu'il gĂ©nĂšre |
|---|---|---|
| HTTP | reqwest | RequĂȘtes HTTP asynchrones avec authentification, en-tĂȘtes, corps, extraction JSONPath |
| Base de donnĂ©es | sqlx / mongodb / redis | Pools de connexions, requĂȘtes paramĂ©trĂ©es, commandes Redis |
| Courriel | lettre / imap | SMTP envoi avec TLS; surveillance IMAP avec filtres de recherche |
| Code | boa_engine | Exécution embarquée de JavaScript avec l'état du graphe comme objet input |
| Définir | natif | Affectation de variable (littéral, expression, secret) |
| Transformer | natif | Mapper, filtrer, trier, réduire, aplatir, grouper, sélectionner, fusionner, modÚle |
| Fusion | natif | Combinaison de branches (waitAll, waitAny, append) |
Tout le code généré utilise adk-graph FunctionNode closures avec GraphError::NodeExecutionFailed pour la gestion des erreurs.
Exemple de code généré (HTTP node) :
let http_node = FunctionNode::new("fetch_data", |ctx| async move {
let client = reqwest::Client::new();
let resp = client.get("https://api.example.com/data")
.bearer_auth(&ctx.get("API_TOKEN").unwrap_or_default())
.send().await
.map_err(|e| GraphError::NodeExecutionFailed {
node: "fetch_data".into(),
message: e.to_string(),
})?;
let body: serde_json::Value = resp.json().await?;
Ok(NodeOutput::new().with_update("apiData", body))
});
Exemple de code généré (Code node) :
let code_node = FunctionNode::new("process", |ctx| async move {
let mut js_ctx = boa_engine::Context::default();
// Graph state injected as global `input` object
// User code executed in thread-isolated sandbox
Ok(NodeOutput::new().with_update("result", output))
});
PrĂ©cĂ©dent : â Studio | Suivant : Triggers â