Dify ワークフローデザイン SKILL
Dify ワークフローデザインの核心知識とベストプラクティスを習得
クイックナビゲーション
ワークフロー概要
Dify ワークフローは、ノードとエッジの組み合わせにより複雑なビジネスロジックを実現する、ビジュアルな AI アプリケーションオーケストレーションシステムです。
コアコンセプト
- ノード (Node): ワークフローの基本実行単位で、各ノードは特定の機能を実行します
- エッジ (Edge): ノードを接続し、データフローと実行順序を定義します
- 変数 (Variable): ノード間でデータを渡します
- DSL (Domain Specific Language): YAML 形式のワークフロー定義言語
ワークフロータイプ
- Workflow: 標準ワークフロー。複雑なマルチステップ処理に適しています
- Advanced Chat: 高度な対話アプリケーション。ワークフローオーケストレーションをサポートします
- Agent: インテリジェントエージェント。自律的な意思決定とツール呼び出しを行います
実行モデル
- キュー駆動: Ready Queue に基づくノードスケジューリング
- イベント駆動: ノード実行によりイベントストリームが生成されます
- 並列実行: 2~8 個のワーカースレッドによる並列処理をサポート
- ストリーミング応答: リアルタイムのストリーミング出力をサポート
コアノードタイプ
1. Start ノード
機能: ワークフローのエントリポイント。入力変数を定義します
設定例:
- data:
desc: ''
selected: false
title: 開始
type: start
variables:
- label: ユーザー入力
max_length: 1000
required: true
type: text-input
variable: user_input
id: start
type: custom
詳細ドキュメント: nodes/start.md
2. LLM ノード
機能: 大規模言語モデルを呼び出し、推論と生成を行います
設定例:
- data:
type: llm
model:
provider: openai
name: gpt-4
completion_params:
temperature: 0.7
max_tokens: 2000
prompt_template:
- id: system
role: system
text: "あなたはプロフェッショナルなアシスタントです"
- id: user
role: user
text: "{{#sys.query#}}"
context:
enabled: true
variable_selector: ["knowledge", "result"]
id: llm
主要パラメータ:
model: モデル設定(プロバイダー、名前、パラメータ)prompt_template: プロンプトテンプレート(システムメッセージとユーザーメッセージをサポート)context: コンテキスト設定(ナレッジベース検索結果を有効化)memory: 会話メモリ設定vision: ビジョン機能設定(画像入力をサポート)
詳細ドキュメント: nodes/llm.md
3. Agent ノード
機能: インテリジェントエージェント。ユーザーの要求に応じてツールを自律的に呼び出します
設定例:
- data:
type: agent
agent_parameters:
instruction:
type: constant
value: "ユーザーの要求に応じて、適切なツールを呼び出してタスクを完了します"
model:
type: constant
value:
provider: openai
model: gpt-4
completion_params:
temperature: 0.7
query:
type: constant
value: "{{#sys.query#}}"
tools:
type: constant
value:
- enabled: true
provider_name: time
tool_name: current_time
type: builtin
- enabled: true
provider_name: duckduckgo
tool_name: ddgo_search
type: builtin
agent_strategy_name: function_calling
id: agent
サポートされる戦略:
function_calling: 関数呼び出し(推奨)react: ReAct 推論モード
詳細ドキュメント: nodes/agent.md
4. Knowledge Retrieval ノード
機能: ナレッジベースから関連情報を検索します(RAG)
設定例:
- data:
type: knowledge-retrieval
dataset_ids:
- "dataset-uuid-1"
- "dataset-uuid-2"
query_variable_selector: ["start", "sys.query"]
retrieval_mode: single
single_retrieval_config:
model:
provider: openai
name: text-embedding-3-small
top_k: 3
score_threshold: 0.7
reranking_model:
provider: cohere
model: rerank-english-v2.0
id: knowledge
検索モード:
single: 単一検索multiple: 複数回検索
詳細ドキュメント: nodes/knowledge-retrieval.md
5. Code ノード
機能: Python または JavaScript コードを実行します
設定例:
- data:
type: code
code_language: python3
code: |
def main(input_text: str) -> dict:
# 処理ロジック
result = input_text.upper()
return {
"output": result,
"length": len(result)
}
variables:
- variable: input_text
value_selector: ["start", "user_input"]
outputs:
output:
type: string
length:
type: number
id: code
サポートされる言語:
- Python 3
- JavaScript (Node.js)
詳細ドキュメント: nodes/code.md
6. HTTP Request ノード
機能: 外部 HTTP API を呼び出します
設定例:
- data:
type: http-request
method: POST
url: "https://api.example.com/endpoint"
headers:
Content-Type: application/json
Authorization: "Bearer {{#env.API_KEY#}}"
body:
type: json
data:
query: "{{#sys.query#}}"
options:
temperature: 0.7
timeout: 30
id: http
サポートされるメソッド:
- GET, POST, PUT, DELETE, PATCH
詳細ドキュメント: nodes/http-request.md
7. Tool ノード
機能: 組み込みツールまたはカスタムツールを呼び出します
設定例:
- data:
type: tool
provider_id: google_translate
provider_type: builtin
provider_name: google_translate
tool_name: translate
tool_parameters:
content:
type: mixed
value: "{{#sys.query#}}"
dest:
type: mixed
value: "zh-CN"
id: tool
ツールタイプ:
builtin: 組み込みツールapi: API ツールworkflow: ワークフローツール
詳細ドキュメント: nodes/tool.md
8. If-Else ノード
機能: 条件分岐制御
設定例:
- data:
type: if-else
conditions:
- variable_selector: ["llm", "text"]
comparison_operator: contains
value: "キーワード"
logical_operator: and
id: condition
サポートされる演算子:
contains,not containsis,is notempty,not empty>,<,>=,<=,=,!=
詳細ドキュメント: nodes/if-else.md
9. Iteration ノード
機能: 配列データを反復処理します
設定例:
- data:
type: iteration
iterator_selector: ["start", "items"]
output_selector: ["iteration_inner", "output"]
parallel_nums: 3
error_handle_mode: continue
id: iteration
エラーハンドリングモード:
continue: 実行を継続stop: 反復を停止
詳細ドキュメント: nodes/iteration.md
10. Answer ノード
機能: ワークフローの結果を出力します
設定例:
- data:
type: answer
answer: "{{#llm.text#}}"
id: answer
詳細ドキュメント: nodes/answer.md
デザインパターン
1. 順次パイプラインパターン
適用シーン: シンプルな線形処理フロー
構造:
Start → LLM → Answer
2. 条件分岐パターン
適用シーン: 条件に応じて異なる処理ロジックを実行
構造:
Start → LLM → If-Else → [BranchA / BranchB] → Answer
3. 反復処理パターン
適用シーン: 配列データの一括処理
構造:
Start → Code → Iteration → LLM → Answer
4. 知識検索パターン (RAG)
適用シーン: ナレッジベースに基づく Q&A
構造:
Start → Knowledge Retrieval → LLM (with context) → Answer
5. マルチソース集約パターン
適用シーン: 複数のデータソースからの情報統合
構造:
Start → [Tool1, Tool2, HTTP] → Variable Aggregator → LLM → Answer
ワークフローテンプレート
シンプル Q&A
ファイル: templates/simple-qa.yml
説明: 最も基本的な Q&A ワークフロー
ノード: Start → LLM → Answer
RAG アシスタント
ファイル: templates/rag-assistant.yml
説明: ナレッジベースに基づくインテリジェントアシスタント
ノード: Start → Knowledge Retrieval → LLM → Answer
Agent ツール呼び出し
ファイル: templates/agent-tools.yml
説明: インテリジェントエージェントがツールを自律的に呼び出す
ノード: Start → Agent → Answer
マルチステップ処理
ファイル: templates/multi-step.yml
説明: 複雑なマルチステップ処理フロー
ノード: Start → Code → HTTP → LLM → If-Else → Answer
変数システム
システム変数
{{#sys.query#}} # ユーザークエリ
{{#sys.files#}} # アップロードされたファイル
{{#sys.conversation_id#}} # 会話 ID
{{#sys.user_id#}} # ユーザー ID
ノード変数
{{#ノードID.出力フィールド#}} # ノード出力を参照
{{#llm.text#}} # LLM テキスト出力
{{#knowledge.result#}} # 知識検索結果
{{#code.output#}} # コードノード出力
会話変数
{{#conversation.変数名#}} # 会話レベルの変数
環境変数
{{#env.API_KEY#}} # 環境変数
{{#env.DATABASE_URL#}} # データベース接続
反復変数
{{#item#}} # 現在の反復項目
{{#index#}} # 現在のインデックス
ベストプラクティス
1. モジュラーデザイン
- 複雑なフローを複数の独立したノードに分割する
- 変数を使用してデータを渡し、ハードコーディングを避ける
- 条件分岐ノードと反復ノードを適切に使用する
2. 変数命名規則
- 意味のある変数名を使用する
- 統一された命名規則に従う
- 必要な説明情報を追加する
3. エラーハンドリング
- 重要なノードにエラーハンドリングロジックを追加する
- 条件分岐を使用して異常な状況に対処する
- ユーザーフレンドリーなエラーメッセージを提供する
4. パフォーマンス最適化
- 不要なノード呼び出しを避ける
- キャッシュメカニズムを適切に使用する
- ループの反復回数を制御する
- 並列分岐を使用してパフォーマンスを向上させる
5. 保守性
- ノードの説明とコメントを追加する
- 明確なノード命名を使用する
- ワークフロー構造をシンプルに保つ
- 定期的にレビューと最適化を行う
詳細内容: best-practices.md
次のステップ
- ノードタイプ解説 を詳しく学ぶ
- デザインパターン を探索する
- ワークフローテンプレート を使ってすぐに始める
- ベストプラクティス を読んでスキルを向上させる
関連 SKILL
- 02-plugin SKILL - カスタムツールとプラグインの開発
- 03-performance SKILL - ワークフローパフォーマンスの最適化
- 06-reference SKILL - DSL 構文リファレンス
バージョン: v1.0.0 最終更新: 2026-03-04 戻る: 総合 SKILL