# オーケストレートノード

チャットフローおよびワークフローアプリケーションは、ビジュアルなドラッグアンドドロップ機能を通じてノードのオーケストレーションをサポートしており、シリアルおよびパラレルの2つのオーケストレーションデザインパターンがあります。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-11ce0cc0cc900aa8d6a43bba9b89d56f074d6f89%2Forchestrate-node.jpeg?alt=media)

## シリアルノードのデザインパターン

このパターンでは、ノードはあらかじめ定義された順序で順次実行されます。各ノードは、前のノードがタスクを完了し、出力を生成した後にのみ操作を開始します。これにより、タスクが論理的な順序で実行されることが保証されます。

シリアルパターンを実装した「小説生成」ワークフローアプリケーションを考えてみましょう。ユーザーが小説のスタイル、リズム、キャラクターを入力した後、LLMが順番に小説の概要、プロット、エンディングを完成させます。各ノードは前のノードの出力に基づいて動作し、小説のスタイルに一貫性をもたらします。

### シリアル構造の作り方

1. 2つのノードの間にある「+」アイコンをクリックして新しいシリアルノードを挿入します。
2. ノードを順次リンクします。
3. すべてのパスを「終了」ノード（ワークフロー）/「直接回答」ノード（チャットフロー）に収束させて、ワークフローを最終承認します。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-fda8bd6213fffe2d18dbe7e9de8ee4ef765f9ff8%2Forchestrate-node-serial-design.png?alt=media)

### シリアル構造のアプリのログをチェックする

シリアル構造のアプリは、ログが順次ノードの操作を表示します。会話ボックスの右上にある "View Logs - Tracing" を順にクリックすると、各ノードの入力、出力、トークン消費、実行時間を含む完全なワークフロープロセスが表示されます。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-d2f4e27205204f081490c01a6195707d498dc37a%2Fviewing-serial-structure-app-logs.png?alt=media)

## パラレルノードのデザインパターン

このアーキテクチャパターンは、複数のノードを並行して実行することを可能にします。前のノードは、パラレル構造内の複数のノードを同時にトリガーできます。これらのパラレルノードは独立して動作し、タスクを同時に実行することで、全体のワークフロー効率を大幅に向上させます。

パラレルアーキテクチャを実装した翻訳ワークフローアプリケーションを考えてみましょう。ユーザーがソーステキストを入力してワークフローをトリガーすると、パラレル構造内のすべてのノードが前のノードから同時に命令を受け取ります。これにより、複数の言語への同時翻訳が可能となり、全体の処理時間が大幅に短縮されます。

### パラレルノードのデザインパターン

次の4つの方法は、ノードの追加やビジュアル操作を通じてパラレル構造を作成する方法を示しています：

**方法1**\
ノードの上にカーソルを合わせると「+」ボタンが表示されます。クリックすると、複数のノードが追加され、自動的にパラレル構造が形成されます。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-376e7d2372784a358ffeb2f41d184979c469813a%2Forchestrate-node-parallel-design-method-1.png?alt=media)

**方法2**\
ノードから接続を延長するには、ノードの「+」ボタンをドラッグしてパラレル構造を作成します。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-91d674541fea5e821a3e24bafbd08660bdd7a214%2Forchestrate-node-parallel-design-method-2.png?alt=media)

**方法3**\
キャンバス上に複数のノードがある場合は、ビジュアルにドラッグしてリンクし、パラレル構造を形成します。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-bf3f41dbd9f62c0d1ee1c5cd6715e0ed0a6a02fd%2Forchestrate-node-parallel-design-method-3.png?alt=media)

**方法4**\
キャンバスベースの方法に加えて、ノードの右側パネルの「Next Step」セクションからノードを追加することで、パラレル構造を生成することもできます。このアプローチにより、自動的にパラレル構成が作成されます。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-238463185226f4237185d7444e6d020c2bce9e2e%2Forchestrate-node-parallel-design-method-4.png?alt=media)

**注意:**

* 任意のノードがパラレル構造の下流ノードとして機能します。
* ワークフローアプリケーションには、単一かつ一意な「end」ノードが必要です。
* チャットフローアプリケーションでは複数の「answer」ノードがサポートされます。これらのアプリケーションの各パラレル構造は、適切なコンテンツの出力を確保するために「answer」ノードで終了する必要があります。
* すべてのパラレル構造は同時に実行されます。パラレル構造内のノードは、タスクを完了した後に結果を出力し、出力には順序関係がありません。パラレル構造が単純であればあるほど、結果の出力が速くなります。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-0ceb0311c9f69671bc1a5f0256dc32808b94e3ad%2Forchestrate-node-chatflow-multi-answer.png?alt=media)

### パラレル構造の作り方

以下の4つのパターンは、一般的なパラレル構造デザインを示しています：

#### 1. 通常のパラレル

通常のパラレルは、「開始 | パラレルノード | 終了」の3階層関係を指します。この構造は直感的で、ユーザー入力後に複数のタスクを同時に実行できます。

パラレルブランチの上限は10です。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-6208ef2403ee301e15029ef431fa6d8d313c98f8%2Forchestrate-node-simple-parallel.png?alt=media)

#### 2. ネストされたパラレル

ネストされたパラレルは、「開始 | 複数のパラレル構造 | 終了」の多階層関係を指します。これは、外部APIを要求する必要があるノード内で同時に複数のタスクを処理し、結果を下流ノードに渡す必要があるような、より複雑なワークフローに適しています。

ワークフローは、最大3層までのネスト関係をサポートします。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-a9557953334e337d3f60e9f175ab3a8a2ecb6203%2Forchestrate-node-nested-parallel.png?alt=media)

#### 3. 条件分岐 + パラレル

パラレル構造は条件分岐と組み合わせて使用することもできます。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-0e8c67bd6442c35f9eb890a42c515e7869be2dcc%2Forchestrate-node-conditional-branch-parallel.png?alt=media)

#### 4. イテレーション + パラレル

このパターンは、イテレーションとパラレル構造を組み合わせたものです。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-531f38bb22515877aefb95767c18d2f2e66aba5c%2Forchestrate-node-iteration-parallel.png?alt=media)

### パラレル構造のアプリのログをチェックする

パラレル構造をもつアプリケーションは、ツリーのような形式でログを生成します。折りたたみ可能なパラレルノード グループにより、個々のノード ログを簡単に表示できます。

![](https://3244742310-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBl3K6n12AeCkG3icHwfh%2Fuploads%2Fgit-blob-d0d6c50fc22c486c96d541bd4cb2257e6ddc0931%2Forchestrate-node-parallel-logs.png?alt=media)
