第6章 条件分岐

第5章までで、基本形「ユーザー入力 → LLM → 出力」と、資料を根拠に答えさせる知識検索を組めるようになりました。この章では、入力の内容によって処理を変えたいときに基本形へ追加する、条件分岐のノードを説明します。第3章3-4で示した 「ユーザー入力 → 分岐 → 各処理 → 変数集約器 → 出力」 の形を、自分で作れるようになることが目標です。

分岐に使うノードは、IF/ELSEノードと質問分類器の2つです。条件の性質でどちらを使うかを決めます(使い分けは6-3)。分岐のあと、実行のたびに動くのはどれか1つの経路だけで、分かれた経路の結果は変数集約器で1つにまとめてから出力ノードへつなぎます(6-4)。

ユーザー入力から分岐し、2つの経路の処理を経て変数集約器で合流し、出力へつながる流れ 図6-1 条件分岐の基本の形。分岐のあと動くのは1つの経路だけで、結果は変数集約器で1つにまとめる

6-1. IF/ELSEノード(明確な条件で分ける)

IF/ELSEノードは、誰が判定しても同じ結果になる明確な条件で処理を分けるノードです。次のような場合に使います。

条件の設定は、「どの変数を」「どう比べて」「当てはまったらどの経路へ進めるか」 の3点で考えます。比べ方には「含む」「で始まる」「で終わる」「一致する」「空である」「より大きい」「より小さい」などがあり、判定に使う変数の型に応じて選びます(添付ファイルの有無の判定など、使える条件は変数の型や環境により異なります)。数値の範囲は、「より大きい」と「より小さい」の2つの条件をAND(すべて満たす)で組み合わせて表せます。複数の条件は、AND(すべて満たす)またはOR(どれか1つ満たす)で組み合わせられます。

経路は、IF(条件に当てはまったとき)のほかに、ELIF(さらに別の条件を追加したとき)と**ELSE(どの条件にも当てはまらなかったとき)**があります。条件は上から順に確かめられ、最初に当てはまった経路へ進みます。どの条件にも当てはまらない入力は必ずELSEの経路へ進むため、ELSEの経路にも処理をつないでおくことを忘れないでください。設定項目の詳細は第10章10-3を参照してください。

6-2. 質問分類器(意味・意図で分ける)

質問分類器は、入力された文章があらかじめ決めた分類(クラス)のどれに当たるかをAIが判定し、分類ごとの経路に振り分けるノードです。文字の一致では書き表せない、問い合わせの意味や意図による振り分けに使います。次のような場合に使います。

IF/ELSEノードとの一番の違いは、言い回しが違っても振り分けられることです。「料金はいくらですか」「お金はかかりますか」「無料ですか」は、どれも同じ言葉を含みませんが、質問分類器なら同じ「料金に関する問い合わせ」の経路へ振り分けられます。

設定では、分類ごとにタイトル(画面上の表示)と説明(AIが判定の手がかりにする文章)を書きます。この説明の書き方が振り分けの正確さを決めるため、分類同士の境目があいまいなときは「〜に関するもの全般」「〜は含まない」のように範囲をはっきり書きます。また、どの分類にも当てはまらない入力の受け皿として、「その他」のような分類を1つ用意しておくと安全です。設定項目の詳細は第10章10-3を参照してください。

6-3. IF/ELSEと質問分類器の使い分け

2つのノードの違いを整理します。

比べる点 IF/ELSEノード 質問分類器
判定のしかた 決めた条件のとおりに機械的に判定する AIが文章の意味を読んで判定する
向いている場合 文字の有無・値の一致・空かどうか・数値の範囲など、条件をはっきり書ける分岐 問い合わせの内容・意図による振り分けなど、条件を言葉の一致では書けない分岐
結果の確実さ 同じ入力なら必ず同じ経路に進む AIの判断のため、まれに意図と違う分類になることがある

迷ったときは、「この分岐の条件を、誰が読んでも同じ判定になる文で書けるか」 で決めてください。書けるならIF/ELSEノード、書けない(意味を読まないと判定できない)なら質問分類器です。質問分類器を使う場合は、公開前のテスト実行で、想定する言い回しをいくつか入力して、意図した経路へ振り分けられるかを確かめてください。

6-4. 分岐の合流:変数集約器

分岐した経路それぞれで処理(LLMノードなど)を行うと、経路の数だけ結果の変数ができます。変数集約器(公式ドキュメントの表記は「変数集約器」。第3章3-1)は、これらを1つの変数にまとめるノードです。

分岐のあと、実行のたびに動くのはどれか1つの経路だけです(第3章3-4)。そのため、変数集約器にまとめた変数のうち、実行のたびに値が入っているのは1つだけで、その値がそのまま変数集約器の出力になります。まとめずに経路ごとに出力ノードを用意することもできますが、合流させると後ろの処理を1系統で済ませられます。つなぎ方は次のとおりです。

  1. 各経路の処理(LLMノードなど)の後ろに、変数集約器を1つ追加し、すべての経路をつなぎます。
  2. 変数集約器の設定欄で、各経路からまとめたい変数(各LLMノードの text など)を追加します。まとめる変数は同じデータ型である必要があります。
  3. 変数集約器の後ろに出力ノードをつなぎ、変数集約器の出力変数を、最終結果として返す変数に割り当てます。

6-5. 例:問い合わせを2種類に振り分けるワークフロー

小さな例を1本、通して組みます。職員からの問い合わせを、質問分類器で「施設の利用に関する質問」と「それ以外」に振り分け、前者は第5章で作った手引きのナレッジを根拠に答え、後者は担当窓口へ問い合わせるよう案内する、というワークフローです。

前提:ワークフローを新規作成し、ユーザー入力ノードに質問の入力欄(変数名 question・型は段落)を作ってあること(第4章4-1)。第5章5-2のナレッジ(会議室利用の手引き)を作ってあること。

手順1:質問分類器を追加して分類を定義する

  1. ユーザー入力ノードの後ろに質問分類器を追加します(ノードの追加操作は第5章の手順6と同じです)。
  2. 入力変数に、ユーザー入力ノードの変数 question を指定します。
  3. 判定に使うAIモデルを選びます。
  4. 分類を2つ定義します。1つ目はタイトル「施設の利用に関する質問」、説明に「会議室などの施設の予約・利用時間・備品に関する質問全般」と書きます。2つ目はタイトル「それ以外」、説明に「施設の利用に関するもの以外のすべての質問」と書きます。

完了した状態:質問分類器に変数 question とAIモデルが設定され、2つの分類が定義されている。

質問分類器の設定欄で、入力変数と2つの分類が設定された状態

手順2:分類ごとの経路に処理をつなぐ

  1. 「施設の利用に関する質問」の経路に、知識検索ノードとLLMノードをつなぎます。設定は第5章の手順7・8と同じです(検索クエリに question、LLMノードのコンテキストに知識検索の result を割り当て、SYSTEM欄に資料だけを根拠に答えさせる指示文を書く)。
  2. 「それ以外」の経路には、LLMノードを1つつなぎます。SYSTEM欄には、たとえば「あなたは庁内の問い合わせ窓口の担当です。この質問には直接答えず、質問の内容を確認したうえで、担当の窓口へ問い合わせるよう丁寧に案内してください。」のように、施設の質問とは別の指示文を書きます。

完了した状態:2つの経路それぞれに処理がつながり、経路ごとに別の指示文のLLMノードが置かれている。

手順3:変数集約器で合流させて出力する

  1. 2つの経路のLLMノードの後ろに変数集約器を追加し、両方の経路をつなぎます。
  2. 変数集約器の設定欄で、2つのLLMノードの text を、まとめる変数として追加します。
  3. 変数集約器の後ろに出力ノードをつなぎ、変数集約器の出力変数を、最終結果として返す変数に割り当てます(第4章4-3)。

完了した状態:「ユーザー入力 → 質問分類器 → 各処理 → 変数集約器 → 出力」がつながっている。

完成したワークフロー全体。質問分類器で2経路に分かれ、変数集約器で合流している状態

手順4:テスト実行で振り分けを確かめる

テスト実行で、次の2つを確かめます。

言い回しを変えた質問(例:「会議室の機材は借りられますか」)でも試し、意図した経路へ振り分けられるかを確かめてください。

まとめ

次に進む

次は、第7章「ノードの配置と接続」で、ここまでの章で使ってきたノードの追加・接続・削除など、キャンバス上の操作をまとめて説明します。

出典一覧

本章の記述の根拠です(いずれも確認日:2026-09-02)。

内容 出典
IF/ELSEノード(IF/ELIF/ELSEの経路・条件は順に確かめる・比べ方=含む/含まない/で始まる/で終わる/一致する/一致しない/空である/空でない/より大きい/より小さい/等しい/等しくない・AND/ORの組み合わせ) https://docs.dify.ai/en/cloud/use-dify/nodes/ifelse.md
質問分類器(入力変数・モデル選択・分類ごとのタイトルと説明・説明が判定の手がかりになり境目は範囲をはっきり書く・補足の指示欄) https://docs.dify.ai/en/cloud/use-dify/nodes/question-classifier.md
変数集約器(実行されるのは1経路のみ・値が入っている変数が出力になる・まとめる変数は同じデータ型・IF/ELSE/質問分類器の合流に使い後ろの処理を1系統にする・グループ機能) https://docs.dify.ai/en/cloud/use-dify/nodes/variable-aggregator.md

※本章の画面手順は、上記の公式ドキュメントの記述のみを根拠としています(本章の執筆にあたっての実機確認は行っていません)。比べ方の選択肢の文言・欄の名称・画面の構成は、環境・バージョンにより異なることがあります(序章「本書の確認環境」参照)。6-1・6-2の自治体業務の例、6-3の使い分けの決め方、6-5の分類の説明文と指示文の例は、公式ドキュメントの仕様ではなく本書の書き方の提案です。