1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dify IF/ELSEノードのサンプル(No.3)

1
Last updated at Posted at 2025-11-22

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" AND sys.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本)

  1. 「マニュアルのトラブルシュート手順を知りたいです。」 → Knowledge Base 想定
  2. 「型式NX1P2-1040の在庫を確認してほしい。」 → Tool 想定
  3. 「今日のおすすめの進め方を短く教えて。」 → Other 想定

以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?