# 条件分岐ノードの設定

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

## 使用シーン

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

## 設定手順

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

## 利用可能な条件（演算子）

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

### テキスト型 (String)

| 演算子                         | 説明                  |
| --------------------------- | ------------------- |
| **含む (contains)**           | 指定した文字列が含まれている場合    |
| **含まない (does not contain)** | 指定した文字列が含まれていない場合   |
| **で始まる (start with)**       | 指定した文字列で始まっている場合    |
| **で終わる (end with)**         | 指定した文字列で終わっている場合    |
| **等しい (is)**                | 文字列が完全に一致する場合       |
| **等しくない (is not)**          | 文字列が一致しない場合         |
| **空である (is empty)**         | 値が空（null または空文字）の場合 |
| **空でない (is not empty)**     | 値が存在する場合            |

### 数値型 (Number)

| 演算子   | 説明    |
| ----- | ----- |
| **=** | 等しい   |
| **≠** | 等しくない |
| **>** | より大きい |
| **<** | より小さい |
| **≥** | 以上    |
| **≤** | 以下    |

## 設定例：ナレッジ検索結果による分岐

ナレッジベース（Knowledge Retrieval）からの検索結果があるかどうかで回答方法を変える設定です。

```jsx
条件: knowledge_retrieval.result (検索結果リスト) が「空でない (is not empty)」

[IFルート] (結果がある場合)
└─ LLMノード: 「以下のコンテキストに基づいて回答してください...」

[ELSEルート] (結果がない場合)
└─ 回答ノード: 「申し訳ありません、関連する情報が見つかりませんでした。」
```

## フロー構成例

```
[開始] → [ナレッジ検索] → [IF/ELSE] ─┬─ IF(結果あり) → [LLM] → [回答]
                               　　└─ ELSE → [回答(情報なし)]
```

## 複数条件の組み合わせ（AND / OR）

複数の条件を組み合わせて、より複雑なロジックを組むことができます。

* **AND条件**: 追加した**すべての条件**を満たす場合に「IF」へ進みます。

```jsx
条件1 AND 条件2 AND 条件3
```

* **OR条件**: 追加した条件の**いずれか1つ**でも満たす場合に「IF」へ進みます。

```jsx
条件1 OR 条件2 OR 条件3
```

{% hint style="info" %}
条件グループをネストさせることで、(A AND B) OR C のような複雑な構成も可能です。
{% endhint %}

## ベストプラクティス

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalhumans.jp/dify-guide/chatflow/dify-docs-configure-if-else-node.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
