第3章 主要ノードと基本ワークフローの全体像
2本のチュートリアルで、2つのアプリを作りました。「簡単なAIチャットアプリ」は「スタート(ユーザー入力)→ LLM → 回答」、「やさしい日本語ワークフロー」は「ユーザー入力 → LLM → 出力」の形でした。どちらも、「入力 → 必要な処理 → LLM → 出力」 という同じ基本構造でできています。Difyで作るワークフローは、この基本構造に、目的に応じたノードを追加した組み合わせです。
この章では、多くのアプリで使う主要な7つのノードの役割と、ノード同士のつながり方(3つの型)を説明します。各ノードの設定方法はここでは説明しません。設定の手順は第4章以降で、1つずつ説明します。
3-1. 主要な7つのノード
主要な7つのノードは次のとおりです。
| ノード | 役割 | 詳しい説明 |
|---|---|---|
| ユーザー入力ノード | ワークフローに必要な情報を受け取る | 第4章 |
| LLMノード | 入力や前段の処理結果をもとに、AIが文章生成や分析を行う | 第4章 |
| 出力ノード | ワークフローの最終結果を利用者へ返す | 第4章 |
| 知識検索ノード | 登録した資料から質問に関連する情報を検索する | 第5章 |
| IF/ELSEノード | 値や文字列などの明確な条件によって処理を分ける | 第6章 |
| 質問分類器 | 問い合わせの内容や意図をAIに分類させて処理を分ける | 第6章 |
| 変数集約器 | 分岐した複数の処理結果を一つにまとめる | 第6章 |
図3-1 ノードの主な種類(ユーザー入力・LLM・条件判定・出力など)と、キャンバスへの配置(序章の図の再掲)
表記について、次の3点を先に押さえてください。
- ユーザー入力ノード:本書では、処理の始まりになるノードを「ユーザー入力ノード」と表記します。このノードはアプリを作った時点で最初から置かれており、追加も削除もできません(ノードを追加する一覧には出てきません)。開始のしかたには、利用者やAPI呼び出しが動かす「ユーザー入力」のほかに、決まった時刻や外部からの合図で自動で動かす「トリガー」もあります(序章0-2)。本章では、ユーザー入力で始まる形を例に説明します。
- 出力ノード:本書では、画面上の名称に合わせて「出力ノード」と表記します。出力ノードは、ワークフローの最終結果を定義するノードです。なお、チャットフローでは出力ノードの代わりに「回答」ノードを使います。チュートリアル「簡単なAIチャットアプリ作成」の最後にあった「回答」がそれです。
- 知識検索ノード・変数集約器:いずれもDifyの画面に表示される名前です。本書では、ノードであることを示したいときに「知識検索ノード」のように「ノード」を付けて表記しますが、画面に出る名前は「知識検索」「変数集約器」です。
ノードの間のデータの受け渡しは、変数(ノードの間で値を受け渡すための入れ物。序章の用語集)で行います。チュートリアルで入力欄の変数 notice を指示文に差し込んだのが、この受け渡しの例です。以降の3つの型でも、「どの変数が次のノードへ渡るか」に注目して読んでください。
この後の3-2・3-3・3-4で、基本の型・ナレッジを利用する型・条件によって処理を分ける型の3つを順に見ていきます。それぞれの節に、実際の編集画面を載せています。3つを見比べると、どの型も基本形(ユーザー入力 → LLM → 出力)にノードを足した形であることが分かります。
3-2. 基本的なワークフロー:ユーザー入力 → LLM → 出力
ユーザー入力 → LLM → 出力
チュートリアル「やさしい日本語ワークフロー作成」で組んだ形そのものです。すべてのワークフローの基本形で、次のように変数が受け渡されます。
- ユーザー入力ノードで定義した入力欄(変数)が、LLMノードの指示文に差し込まれます。
- LLMノードが生成した文章(変数
text)を、出力ノードが最終結果として利用者へ返します。
図3-1 基本形。ユーザー入力 → LLM → 出力の3ノードだけで組める
要約・文案作成・言い換えなど、「入力された文章をAIに処理させて結果を返す」アプリは、この3ノードだけで作れます。まずこの基本形を思い浮かべ、足りない働きがあるときにだけ、次の3-3・3-4のノードを追加します。
3-3. ナレッジを利用するワークフロー:ユーザー入力 → 知識検索 → LLM → 出力
ユーザー入力 → 知識検索 → LLM → 出力
登録した資料を根拠に答えさせたいときに、基本形のユーザー入力とLLMの間へ、知識検索ノードを追加した形です。庁内FAQのように、要綱・規程類など「本市の資料に書いてあること」を答えさせるアプリで使います。
- 知識検索ノードが、ナレッジ(資料をためて検索できる保管庫。序章0-3)から質問に関連する断片を探し、検索結果を変数
resultとして出力します。 - LLMノードのコンテキスト(回答の根拠を与える欄)にこの
resultをつなぐと、LLMは検索で拾った断片をもとに答えます。これが、登録した資料を根拠に探して答える仕組み(RAG)です。
図3-2 基本形のユーザー入力とLLMの間に知識検索ノードを追加した形
知識検索は、すべてのワークフローに必要な機能ではありません。一般的な言い換えや要約だけなら基本形で足ります。「本市の資料に基づいて答えてほしい」という目的があるときに追加してください。知識検索ノードの設定と、ナレッジへの資料の登録は、いずれも第5章で説明します。
3-4. 条件によって処理を分けるワークフロー:ユーザー入力 → 分岐 → 各処理 → 変数集約器 → 出力
ユーザー入力 → IF/ELSEまたは質問分類器 → 各処理 → 変数集約器 → 出力
入力の内容によって処理を変えたいときに、基本形へ分岐と合流のノードを追加した形です。分岐に使うノードは2つあり、条件の性質で使い分けます。
| ノード | 分け方 |
|---|---|
| IF/ELSEノード | 値や文字列などの明確な条件で分ける(例:文字数が上限を超えたら別の処理へ) |
| 質問分類器 | 問い合わせの内容や意図をAIに分類させて分ける(例:「手続きの質問」と「制度の質問」に振り分ける) |
分岐のあと、実行のたびに動くのは、どれか1つの経路だけです。分かれた経路それぞれで処理(LLMノードなど)を行い、変数集約器でその結果を1つの変数にまとめてから、出力ノードへつなぎます。まとめずに経路ごとに出力を用意することもできますが、変数集約器で合流させると、後ろの処理が1系統で済みます。
図3-3 質問分類器で2経路に分け、変数集約器で1つにまとめてから出力へ返す形
条件分岐も、すべてのワークフローに必要な機能ではありません。「入力によって答え方や処理を変えたい」という目的があるときに追加してください。IF/ELSEノード・質問分類器・変数集約器の設定は第6章で説明します。
3-5. 発展的なノード
主要な7つのほかにも、ノードがあります。チュートリアルで応答の末尾に一文を付けた「テンプレート」のほか、「ツール」「コード実行」「HTTPリクエスト」「パラメータ抽出」「イテレーション」などです。これらは、基本の3つの型を組んだうえで、さらに必要になったときに使う発展的なノードです。全20種の一覧と各ノードの説明は第10章、外部サービスと連携するツール・プラグインは第11章で紹介します。
まとめ:ワークフローを設計するときの6つの問い
作りたいアプリが決まったら、次の6つの問いを自分の業務に当てはめて考えると、必要なノードと形が決まります。
- どのような入力が必要か(→ ユーザー入力ノードで受け取る欄を決める)
- LLMに何を処理させるか(→ LLMノードの指示文で決める)
- 独自資料を参照させる必要があるか(→ あれば知識検索ノードを追加する。3-3)
- 条件分岐が必要か(→ あればIF/ELSEノードまたは質問分類器と、合流の変数集約器を追加する。3-4)
- どの変数を次のノードへ渡すか(→ ノードの間の受け渡しを確かめる)
- 最終的に何を出力するか(→ 出力ノードで返す変数を決める)
どのワークフローも、基本構造は「入力 → 必要な処理 → LLM → 出力」です。この章の3つの型を出発点にすれば、第4章以降の設定の説明を、「自分のアプリのどこに使うか」を思い浮かべながら読めます。
次に進む
次は、第4章「基本ノードの設定」で、基本形を作る3つのノード(ユーザー入力・LLM・出力)の設定を説明します。ノードを画面上で配置・接続する操作を先に知りたい方は、第7章「ノードの配置と接続」を参照してください。
出典一覧
本章の記述の根拠です(いずれも確認日:2026-09-02)。
| 内容 | 出典 |
|---|---|
| ユーザー入力ノード(利用者やAPI呼び出しが動かす・入力欄が変数になり後ろのノードから参照できる) | https://docs.dify.ai/en/cloud/use-dify/nodes/user-input.md |
| 開始のしかたの2つのモード(ユーザー入力/トリガー) | https://docs.dify.ai/en/cloud/use-dify/nodes/start.md |
LLMノード(文章・画像・文書の処理。コンテキストに知識検索の結果をつなぐ・出力変数 text) |
https://docs.dify.ai/en/cloud/use-dify/nodes/llm.md |
知識検索ノード(質問に関連する情報の検索・出力変数 result・LLMのコンテキストへ接続) |
https://docs.dify.ai/en/cloud/use-dify/nodes/knowledge-retrieval.md |
| IF/ELSEノード(値・文字列などの条件で流れを分ける) | https://docs.dify.ai/en/cloud/use-dify/nodes/ifelse.md |
| 質問分類器(入力の内容・意図をAIが分類して経路に振り分ける) | https://docs.dify.ai/en/cloud/use-dify/nodes/question-classifier.md |
| 変数集約器(分岐した経路の結果を1つの変数にまとめる・実行のたびに動くのは1経路のみ) | https://docs.dify.ai/en/cloud/use-dify/nodes/variable-aggregator.md |
| 出力ノード(ワークフローの最終結果を返す・ワークフロー専用で、チャットフローでは回答ノードを使う) | https://docs.dify.ai/en/cloud/use-dify/nodes/output.md |