Conditionalノード
Conditionalノードは、実行時の条件評価に基づいて出力ブランチのうち1本を選び、そのターゲットを活性化し、他のブランチターゲットはskippedとしてマークします。
ワークフローの進路がランタイムデータに依存するとき(分類結果・成功/失敗フラグ・ユーザ選択など)に使います。すべてのブランチを並行実行したい固定分岐では、素直に直列エッジを引く方がよいです。
| フィールド | 説明 |
|---|---|
condition_type | 条件評価方法。jqは入力データに対してjq式を評価し、その文字列出力をラベルとして採用。regexは名前付きlabelキャプチャを持つパターンマッチ。llmはLLMに入力をブランチラベルのいずれかに分類させる。 |
condition_expression | condition_typeに従って解釈される式またはプロンプト。 |
branches | ラベル→ターゲットノードIDのマップ。評価で得たラベルに対応するターゲットが活性化。 |
default_branch(任意) | branchesに無いラベルが返ったときのフォールバックターゲット。 |
jq—.category、.status == "ok" | if . then "ok" else "err" endなど。出力は文字列に強制変換してラベルに使います。regex—status:\s*(?<label>\w+)。名前付きキャプチャlabelが使われます。llm— 分類プロンプト。LLMにブランチラベルのどれかを出力させます。
- cascadeがConditionalに到達すると、
completedとして挿入され、入力データに対して条件が評価されます。 - 得られたラベルを
branchesで引いてターゲットノードIDを決定。なければdefault_branchを使用。 - 選ばれなかった全ての出力エッジのターゲットは
skippedとして挿入(下流のJoinが確定したことを認識できるように)。 - 選ばれたターゲットはレジストリ経由で活性化(ネストされたfan-out/conditionalでも種別固有の起動ロジックが走る)。
- Conditionalの
output_dataは_chosen_branchと_target_nodeで更新され、監査可能に。
branchesにもdefault_branchにも一致しないと警告ログを出してその場でグラフが停滞します。LLM出力などが完全に予測可能でない場合は必ずdefault_branchを設定してください。
バリデーションルール
Section titled “バリデーションルール”condition_typeは必須。branches(非空)またはdefault_branchのいずれかが必要。branchesが参照するターゲットはすべて実在するノード。branchesの各ラベルに対して、ターゲットへの出力エッジが存在する。- 出力エッジの
condition_labelが設定されている場合、それはbranchesのラベルのいずれかと一致する必要があります。 default_branchを設定する場合、実在するノードを参照すること。
flowchart LR Classify["Skill: classify-ticket"] --> C{{"Conditional"}} C -->|bug| Bug["Skill: bug-triage"] C -->|feature| Feat["Skill: feature-intake"] C -->|other| Other["Skill: fallback"]condition_type: llm で「bug / feature / other に分類」するプロンプトを与えれば、LLMの出力がブランチを選びます。default_branch: other を設定すると、想定外のLLM出力にも耐えられます。