# 条件分岐

### 定義

if/else 条件に基づいてチャットフローとワークフローを2つの分岐に分けることができます。

\###　ノードの機能

条件分岐の動作メカニズムには、次の6つのパスが含まれます：

* IFの条件：変数を選び、条件と満たすべき値を設定します；
* IFの条件が `True` と判断された場合、IFパスを実行します；
* IFの条件が `False` と判断された場合、ELSEパスを実行します；
* ELIFの条件が `True` と判断された場合, ELIFパスを実行します;
* ELIFの条件が `False` と判断された場合, 次のELIFパスを判断します、もしくは最後のELIFパスを実行します;

**条件の種類**

次の条件タイプの設定をサポートします：

* 含む（Contains）
* 含まない（Not contains）
* ..から始まる（Start with）
* ..から終わる（End with）
* である（Is）
* ではない（Is not）
* 空である（Is empty）
* 空ではない（Is not empty）

***

### シナリオ

<figure><img src="https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-1fdabaa29726cb2f622254ca023a6a801f4b1825%2Fjp-ifelse.png?alt=media" alt=""><figcaption></figcaption></figure>

**テキスト要約ワークフロー**を例に、各条件を説明します。

* IFの条件：開始ノードの`summarystyle`変数を選び、条件を **含む** として `技術` を設定します；
* IFの条件が `True` と判断された場合、IFパスを実行し、技術関連の知識をナレッジ検索ノードを通じて問い合わせ、その後大規模言語モデル（LLM）ノードを介して応答します。（上図の下半部分に示されるように）；
* IFの条件が `False` と判断され、さらにELIF条件が加えられた場合、`summarystyle` 変数の入力に `技術` は含まれず、ELIFの条件に `科学` が含まれている場合は、ELIFの条件が `True` であるかどうかを確認し、該当する手順を実行します。
* ELIFの条件が `False` で、かつ入力変数に `技術` や `科学` が含まれていない場合は、次のELIFの条件の評価を続けるか、もしくはELSEパスを実行します。
* IFの条件が `False` と判断された場合、つまり`summarystyle`変数の入力が **含まない** として `技術` を設定し、ELSEパスを実行し、LLM2ノードで返信します（上図の下半部分に示されるように）；

**複数条件の判断**

複雑な条件判断が必要な場合、複数条件を設定し、条件間に **AND** または **OR** を設定することができます。これは条件間に**交集**または**并集**を取ることを意味します。

<figure><img src="https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-811a3e7fa87ad07fc3a252391c80923e28e25a1a%2Fjp-ifelse-setting.png?alt=media" alt="" width="369"><figcaption><p>複数条件の判断</p></figcaption></figure>
