🔀
概念 #Dify #ワークフロー #チャットフロー #LLMOps #会話設計 📚 Dify機能ガイド

ワークフロー 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 の生成をリアルタイムで表示できる。


主要な違い早見表

比較軸WorkflowChatflow
実行タイミング1回のトリガーで完結各会話ターンに実行
会話変数なしあり(ターン間で保持)
出力ノードEnd ノードAnswer ノード
ストリーミング限定的ネイティブ対応
用途自動化・バッチチャットボット・アシスタント
人間介入ノードありあり

実行エンジン内部(Graph Architecture)

WorkflowEngine

  ├── GraphValidator(ノード接続の検証)
  ├── VariablePool(変数の読み書きを管理)
  ├── WorkerPool(並列実行を管理)
  └── EdgeProcessor(ノード間の依存解決)

実行はキューベース・イベント駆動。
並列ノードはスレッドプールで同時処理される。

並列実行とイテレーション

並列実行(Workflow / Chatflow 共通):
  ┌──────────┐    ┌────────────────────────┐
  │ Node A   │───→│ Node B1 / B2 / B3 同時 │───→ Node C
  └──────────┘    └────────────────────────┘
  最大3階層のネスト並列をサポート

イテレーション(ループ):
  リスト入力 → [Node X] を各要素に対して繰り返す
  最大10並列で同時処理可能

実践ユースケース

出典: Dify公式ドキュメント https://docs.dify.ai