Référence de syntaxe YAML
Références de variables, expressions conditionnelles, préréglage d'agent, code_preamble - la référence complète et faisant autorité pour Braidrun YAML.
Le Web DTO de Braidrun effectue un aller-retour YAML au niveau des octets, mais utilise un style de dénomination de champ différent : camelCase vs snake_case. Cette page explique clairement le mappage, les variables, les conditions et les règles prédéfinies que vous devez connaître.
La vérification et l'aller-retour YAML utilisent tous deux l'interface d'analyse de la plateforme. /api/workflows/parse , pour éviter d'écrire un autre ensemble de règles du côté du navigateur.
Dénomination : camelCase ↔ Snake_case
Web JSON utilise camelCase ; l'exécution YAML utilise Snake_case :
| DTO Web | YAML |
|---|---|
groupChat | group_chat |
agentBased | agent_based |
stateMachine | state_machine |
repeatUntil | repeat_until |
iterateOver | iterate_over |
manualApproval | manual_approval |
onSuccess / onFailure | on_success / on_failure |
Préréglages et remplacements d'agent
Il est recommandé d'utiliser un préréglage pour déclarer l'agent et d'utiliser des remplacements pour couvrir tous les champs si nécessaire :
agents:
planner:
preset: universal
coder:
preset: coder
overrides:
max_iterations: 2000Référence variable
- Variables du flux de travail :
{{var:name}} - Sortie d'étape :
{{steps.step_name.output}}
variables:
topic: workflow
workflow:
- step: plan
agent: planner
input: "Plan for {{var:topic}}"
- step: implement
agent: coder
input: "Implement based on {{steps.plan.output}}"
depends_on: [plan]Expression conditionnelle (condition)
La forme de base est « opérande gauche opérateur opérande droite » ; un espace est obligatoire de part et d'autre de l'opérateur. Opérateurs pris en charge :
==/!=— Comparaison exacte de chaînes, sensible à la casse><>=<=— Comparaison numérique ; si l'un des côtés n'est pas un nombre, la condition est traitée comme falsecontains/contains_cs— Test d'inclusion, sensible à la cassecontains_ci— Test d'inclusion, insensible à la casse
Plusieurs comparaisons peuvent être combinées au niveau supérieur avec && (et) et || (ou) ; && a une priorité plus élevée et se combine en premier. Exemple :
condition: route == coding
condition: score >= 8
condition: status == done && score >= 8
# && binds tighter — reads as (a == 1 && b != done) || retry == true
condition: a == 1 && b != done || retry == trueN'écrivez pas :
condition: "{{var:route}} == coding" # don't — write the variable name directly
condition: (a == 1 || b == 2) && c == 3 # don't — parentheses are not supportedLe regroupement par parenthèses n'est pas pris en charge — pour une logique de regroupement plus complexe, utilisez classifier pour produire une variable de routage ou scinder en plusieurs étapes. Écrivez le nom de la variable tel quel, sans utiliser la syntaxe des variables de modèle dans condition. Une condition non analysable est traitée comme false, et l'étape est ignorée.
code_preamble — shared code preamble
Lorsque plusieurs étapes code doivent partager des import ou des fonctions utilitaires, utilisez code_preamble au niveau supérieur. Regroupé par langage de programmation, il est automatiquement concaténé à l'exécution en tête du script des étapes code du même langage :
code_preamble:
python:
ref: ./lib/shared_utils.pyOu utilisez le formulaire en ligne :
code_preamble:
python:
inline: |
import json, os
def log(msg):
print(f"[workflow] {msg}")Transition Action(on_success / on_failure)
Utilisez le formulaire d'objet d'action au lieu du tableau de chaînes :
on_success:
- next: publish
on_failure:
- notify: slack
message: implementation failed
stop: trueLorsqu'il est exporté en Web DTO, il correspond à :
{
"onSuccess": [{"next": "publish"}],
"onFailure": [
{
"notify": "slack",
"message": "implementation failed",
"stop": true
}
]
}Vérifier la liste des clauses
- Utilisation de référence variable
{{var:name}} - YAML exporté passe toujours
/api/workflows/parserelire - condition n'utilise pas de variables de modèle, et la combinaison && / || n'utilise pas de parenthèses
manualApproval/onFailure/repeatUntilUne fois le champ DTO exporté, il a été converti en Snake_case