IF/ELSE ノード(条件分岐)の使い方(簡易サンプル)
最終更新日: 2025-11-21
このドキュメントは、Dify Chatflow における IF/ELSE ノード を最小構成で試せるサンプルとしてまとめた手順書です。
「入力を分類 → 変数に保存 → IF/ELSEで分岐 → ブランチごとに回答」という一連の流れを確認できます。
1. 目的(なぜ使うのか)
- 会話から抽出したカテゴリ(例:
topic=Knowledge Base/Tool/Other)に応じて、後続処理を切り替える。 - ルールをUIで可視化でき、分岐条件の変更が容易。
- 失敗時や未知の入力を Else(フォールバック)で安全に受け止められる。
2. 最小構成フロー(ノード数:5)
Start
└→ N.analyze(LLM:入力をカテゴリ分類してJSON出力)
└→ V.store(変数代入:topic を会話変数に保存)
└→ IF.route(IF/ELSE:topic に応じて 3 分岐)
├→ A.kb(Answer:Knowledge Base向け応答)
├→ A.tool(Answer:Tool向け応答)
└→ A.other(Answer:Other向け応答)
ここでは 他のノードは最小限 に留め、RAGやHTTPは入れません。
3. 用語とルール
-
IF/ELSE ノード:条件(
==,!=,contains,emptyなど)を使って複数の出口へ分岐します。 -
AND / OR:複数条件の組み合わせが可能です(例:
topic == "Knowledge Base"ANDsys.filesが空)。 - 比較の基本:分類値は 固定表記(例:"Knowledge Base" / "Tool" / "Other")に統一し、表記ゆれを無くす。
4. 手順
4.1 会話変数を定義(右サイドバー)
-
topic(String、既定値:空)を作成 → 保存
4.2 N.analyze(LLM)で分類値を作る
System 例:
入力を解析し、次のJSONだけを出力してください(前後に何も付けない)。
{
"topic": "Knowledge Base" | "Tool" | "Other"
}
User 例:
ユーザー入力:
{#sys.query#}
4.3 V.store(変数代入)で保存
- 変数
topic← 変数挿入(>)からN.analyze.output.topicを指定 → 保存
4.4 IF.route(IF/ELSE)で分岐
- 分岐1:条件
topic == "Knowledge Base"→ 出口:A.kb - 分岐2:条件
topic == "Tool"→ 出口:A.tool - Else:上記に当てはまらない → 出口:A.other
4.5 各ブランチの Answer を設定
-
A.kb(例)
## ナレッジベース向けのご案内 ご質問は「{#sys.query#}」ですね。まずは関連ドキュメントの見出し候補を提示します。 さらに詳しい情報があれば追記してください。 -
A.tool(例)
## 外部ツールに照会します 内容:「{#sys.query#}」 実行に必要な情報を教えてください(例:型式、数量、希望日)。 -
A.other(例)
## 一般的なご相談への回答 「{#sys.query#}」に関して、まずは要点を整理します。追加情報があればお知らせください。
5. 動作確認チェックリスト
-
右サイドで
topic(String)を作成・保存した -
N.analyze → V.store → IF.route → Answerの順で 配線 した -
IF.route の分岐条件が
"Knowledge Base"/"Tool"/ Else で設定されている - 3種類の入力で、それぞれ A.kb / A.tool / A.other へ流れる
-
Answer の本文に
{#sys.query#}が正しく表示される
6. よくあるエラーと対処
| 症状 | 原因 | 対処 |
|---|---|---|
| 分岐に入らない |
topic の表記ゆれ(KB/kb など) |
N.analyze を固定表記("Knowledge Base" 等)で返す |
| Else に落ち続ける | V.store で topic が空のまま |
V.store の値に N.analyze.output.topic を指定したか確認 |
| 条件が複雑で混乱する | AND/ORの優先順序 | 条件を分ける or 1条件1分岐に整理 |
| 変数が選べない | 会話変数を未作成/未保存 | 右サイドで topic を作成→保存→画面更新 |
7. サンプル入力(3本)
- 「マニュアルのトラブルシュート手順を知りたいです。」 → Knowledge Base 想定
- 「型式NX1P2-1040の在庫を確認してほしい。」 → Tool 想定
- 「今日のおすすめの進め方を短く教えて。」 → Other 想定
以上