条件分岐ノードの設定
dify-docs-configure-if-else-node
条件分岐ノードは、条件に基づいてワークフローを2つのパス(IF/ELSE)に分岐させるためのノードです。AIによる曖昧な判断を行う「質問分類器」とは異なり、変数の値に基づいた明確なルール(条件式)によって厳密に制御を行います。
使用シーン
- 実行結果の判定: 検索結果が空でなかったか、APIリクエストが成功したか。
- 入力値の検証: ユーザーの入力内容に特定のキーワードが含まれているか。
- フラグ制御: 前段の処理で設定された特定の変数値に基づく処理の切り替え。
設定手順
- ノードの追加: フローキャンバス上で「IF/ELSE」ノードを追加し、分岐させたい位置に配置します。
- 変数の選択: 条件判定に使用する変数(例: 前のノードの出力結果、ユーザー入力変数など)を選択します。
- 演算子の選択: 変数の型に応じた比較演算子(等しい、含む、空である 等)を選びます。
- 値の入力: 比較対象となる固定値、または別の変数を設定します。
利用可能な条件(演算子)
変数のデータ型に応じて、以下の演算子が利用可能です。
テキスト型 (String)
演算子 | 説明 |
含む (contains) | 指定した文字列が含まれている場合 |
含まない (does not contain) | 指定した文字列が含まれていない場合 |
で始まる (start with) | 指定した文字列で始まっている場合 |
で終わる (end with) | 指定した文字列で終わっている場合 |
等しい (is) | 文字列が完全に一致する場合 |
等しくない (is not) | 文字列が一致しない場合 |
空である (is empty) | 値が空(null または空文字)の場合 |
空でない (is not empty) | 値が存在する場合 |
数値型 (Number)
演算子 | 説明 |
= | 等しい |
≠ | 等しくない |
> | より大きい |
< | より小さい |
≥ | 以上 |
≤ | 以下 |
設定例:ナレッジ検索結果による分岐
ナレッジベース(Knowledge Retrieval)からの検索結果があるかどうかで回答方法を変える設定です。
条件: knowledge_retrieval.result (検索結果リスト) が「空でない (is not empty)」
[IFルート] (結果がある場合)
└─ LLMノード: 「以下のコンテキストに基づいて回答してください...」
[ELSEルート] (結果がない場合)
└─ 回答ノード: 「申し訳ありません、関連する情報が見つかりませんでした。」フロー構成例
[開始] → [ナレッジ検索] → [IF/ELSE] ─┬─ IF(結果あり) → [LLM] → [回答]
└─ ELSE → [回答(情報なし)]複数条件の組み合わせ(AND / OR)
複数の条件を組み合わせて、より複雑なロジックを組むことができます。
- AND条件: 追加したすべての条件を満たす場合に「IF」へ進みます。
条件1 AND 条件2 AND 条件3- OR条件: 追加した条件のいずれか1つでも満たす場合に「IF」へ進みます。
条件1 OR 条件2 OR 条件3条件グループをネストさせることで、(A AND B) OR C のような複雑な構成も可能です。
ベストプラクティス
- シンプルな条件設計: 自然言語のニュアンスによる分岐が必要な場合は、IF/ELSEではなく「質問分類器」の使用を検討してください。
- エラーハンドリング(ELSE): 「ELSE」ルートは、条件に合致しなかったすべてのケースを受け取ります。予期せぬ入力やエラー時のフォールバックとして機能するように構成することを推奨します。
- デバッグ: プレビュー実行機能を使い、変数が空の場合や想定外の値が入った場合に、意図したルートに進むかテストを行ってください。
お役に立ちましたか?
😞
😐
🤩
最終更新日 February 20, 2026