🔀
ワークフロー vs チャットフロー
Difyの2大実行モデル——単発完結のWorkflowと会話継続のChatflowの設計思想・使い分けを解説。
2つの実行モデル
Dify のアプリは**Workflow(単発完結型)かChatflow(会話継続型)**のどちらかをベースにする。
Workflow:
START ──→ [Node A] ──→ [Node B] ──→ [Node C] ──→ END
(1回呼ばれたら最後まで実行して終わる)
Chatflow:
Turn 1: START ──→ [Node A] ──→ [LLM] ──→ ANSWER
Turn 2: START ──→ [Node B] ──→ [LLM] ──→ ANSWER ← 会話変数で文脈を引き継ぐ
Turn 3: START ──→ [Node C] ──→ [LLM] ──→ ANSWER
Workflow の特徴
設計思想
決定論的・予測可能な実行を目指す。AIの出力をフローの一部として組み込みつつ、処理の構造はコードのように明示的に定義する。
典型的なユースケース:
- テキスト翻訳パイプライン
- PDFから構造化データを抽出
- コンテンツの一括生成
- 社内ドキュメントのインデックス更新
- 分類・ルーティング処理
実行モデル
入力(ユーザー/API/トリガー)
│
▼
Start ノード(入力変数を受け取る)
│
├── 直列処理:[A] → [B] → [C]
│
└── 並列処理:[A] → [B1][B2][B3] → [C](同時実行)
│
▼
End ノード(出力変数を返す)
出力形式
- テキスト / JSON / ファイル
- バッチ実行対応(複数タスクを並列処理)
Chatflow の特徴
設計思想
会話の文脈を保ちながら複雑な処理を実行する。単純な LLM チャットでは対応できない、ルーティング・検索・複合処理を会話UIに組み込む。
典型的なユースケース:
- RAGを使ったカスタマーサポート
- 複数ステップを伴うデータ収集ボット
- 意図分類 → 専門LLMへのルーティング
- 文書要約 + Q&A チャット
実行モデル
各ターンで新しいフロー実行が始まる
┌────────────────────────────────┐
│ 会話変数(永続) │
│ user_name, topic, history... │
└────────────────────────────────┘
│ 読み書き
Turn 1: [Start] → [分類ノード] → [LLM] → [Answer]
Turn 2: [Start] → [RAG検索] → [LLM] → [Answer]
Turn 3: [Start] → [分類ノード] → [LLM] → [Answer]
Answer ノード
Chatflow 専用。Workflow の End ノードに相当するが、ストリーミング出力に対応しており、LLM の生成をリアルタイムで表示できる。
主要な違い早見表
| 比較軸 | Workflow | Chatflow |
|---|---|---|
| 実行タイミング | 1回のトリガーで完結 | 各会話ターンに実行 |
| 会話変数 | なし | あり(ターン間で保持) |
| 出力ノード | End ノード | Answer ノード |
| ストリーミング | 限定的 | ネイティブ対応 |
| 用途 | 自動化・バッチ | チャットボット・アシスタント |
| 人間介入ノード | あり | あり |
実行エンジン内部(Graph Architecture)
WorkflowEngine
│
├── GraphValidator(ノード接続の検証)
├── VariablePool(変数の読み書きを管理)
├── WorkerPool(並列実行を管理)
└── EdgeProcessor(ノード間の依存解決)
実行はキューベース・イベント駆動。
並列ノードはスレッドプールで同時処理される。
並列実行とイテレーション
並列実行(Workflow / Chatflow 共通):
┌──────────┐ ┌────────────────────────┐
│ Node A │───→│ Node B1 / B2 / B3 同時 │───→ Node C
└──────────┘ └────────────────────────┘
最大3階層のネスト並列をサポート
イテレーション(ループ):
リスト入力 → [Node X] を各要素に対して繰り返す
最大10並列で同時処理可能
実践ユースケース
- コンテンツ一括生成 — Workflow でのバッチ処理例
- カスタマーサポートボット — Chatflow での会話設計例
- 1. 🧩Dify概要・アプリ種別・アーキテクチャ
- 2. 🔀ワークフロー vs チャットフロー
- 3. ⚙️ノード一覧と制御フロー(並列・イテレーション)
- 4. 📚ナレッジベース・RAGパイプライン
- 5. 🤖モデルプロバイダー統合(OpenAI・Anthropic・OSS)
- 6. 🤖エージェント機能(自律推論・ReAct)
- 7. 🔧ツール・プラグインエコシステム
- 8. 📊変数システムとデータフロー
- 9. 🚀API・公開・デプロイオプション
- 10. 🔍可観測性・デバッグ・評価(LangSmith等)
出典: Dify公式ドキュメント https://docs.dify.ai