条件分岐ノードの設定

dify-docs-configure-if-else-node

条件分岐ノードは、条件に基づいてワークフローを2つのパス(IF/ELSE)に分岐させるためのノードです。AIによる曖昧な判断を行う「質問分類器」とは異なり、変数の値に基づいた明確なルール(条件式)によって厳密に制御を行います。

使用シーン

  • 実行結果の判定: 検索結果が空でなかったか、APIリクエストが成功したか。
  • 入力値の検証: ユーザーの入力内容に特定のキーワードが含まれているか。
  • フラグ制御: 前段の処理で設定された特定の変数値に基づく処理の切り替え。

設定手順

  1. ノードの追加: フローキャンバス上で「IF/ELSE」ノードを追加し、分岐させたい位置に配置します。
  1. 変数の選択: 条件判定に使用する変数(例: 前のノードの出力結果、ユーザー入力変数など)を選択します。
  1. 演算子の選択: 変数の型に応じた比較演算子(等しい、含む、空である 等)を選びます。
  1. 値の入力: 比較対象となる固定値、または別の変数を設定します。

利用可能な条件(演算子)

変数のデータ型に応じて、以下の演算子が利用可能です。

テキスト型 (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 のような複雑な構成も可能です。

ベストプラクティス

  1. シンプルな条件設計: 自然言語のニュアンスによる分岐が必要な場合は、IF/ELSEではなく「質問分類器」の使用を検討してください。
  1. エラーハンドリング(ELSE): 「ELSE」ルートは、条件に合致しなかったすべてのケースを受け取ります。予期せぬ入力やエラー時のフォールバックとして機能するように構成することを推奨します。
  1. デバッグ: プレビュー実行機能を使い、変数が空の場合や想定外の値が入った場合に、意図したルートに進むかテストを行ってください。
 
お役に立ちましたか?
😞
😐
🤩

最終更新日 February 20, 2026