Communitygithub.com

SystemTce/dify-skills

Dify ワークフローデザイン完全ガイド - ノードタイプ、デザインパターン、テンプレート、ベストプラクティス

dify-skills とは?

このスキルは、Dify ワークフローデザインに関する包括的なガイドを提供します。開発者は、ワークフローのコアコンセプト、ノードタイプ、デザインパターン、テンプレート、ベストプラクティスを学ぶことができ、複雑なAIアプリケーションを効率的に構築できるようになります。具体的には、Start、LLM、Agent、Knowledge Retrieval、Code、HTTP Request、Tool、If-Else、Iteration、Answerなどの主要ノードの設定方法や、順次パイプライン、条件分岐、反復処理、知識検索(RAG)、マルチソース集約といった実用的なデザインパターンを解説します。このスキルは、Difyのワークフローエディタ(Workflow、Advanced Chat、Agent)で使用でき、YAMLベースのDSLを用いた詳細な設定例を豊富に含んでいます。また、変数システム(システム変数、ノード変数、会話変数、環境変数、反復変数)や、モジュール設計、エラーハンドリング、パフォーマンス最適化などのベストプラクティスについても網羅しています。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/SystemTce/dify-skills/tree/main/01-workflow

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Dify ワークフローデザイン SKILL

Dify ワークフローデザインの核心知識とベストプラクティスを習得

クイックナビゲーション


ワークフロー概要

Dify ワークフローは、ノードとエッジの組み合わせにより複雑なビジネスロジックを実現する、ビジュアルな AI アプリケーションオーケストレーションシステムです。

コアコンセプト

  • ノード (Node): ワークフローの基本実行単位で、各ノードは特定の機能を実行します
  • エッジ (Edge): ノードを接続し、データフローと実行順序を定義します
  • 変数 (Variable): ノード間でデータを渡します
  • DSL (Domain Specific Language): YAML 形式のワークフロー定義言語

ワークフロータイプ

  1. Workflow: 標準ワークフロー。複雑なマルチステップ処理に適しています
  2. Advanced Chat: 高度な対話アプリケーション。ワークフローオーケストレーションをサポートします
  3. 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 contains
  • is, is not
  • empty, 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

例: patterns/sequential.md


2. 条件分岐パターン

適用シーン: 条件に応じて異なる処理ロジックを実行

構造:

Start → LLM → If-Else → [BranchA / BranchB] → Answer

例: patterns/conditional.md


3. 反復処理パターン

適用シーン: 配列データの一括処理

構造:

Start → Code → Iteration → LLM → Answer

例: patterns/iterative.md


4. 知識検索パターン (RAG)

適用シーン: ナレッジベースに基づく Q&A

構造:

Start → Knowledge Retrieval → LLM (with context) → Answer

例: patterns/rag.md


5. マルチソース集約パターン

適用シーン: 複数のデータソースからの情報統合

構造:

Start → [Tool1, Tool2, HTTP] → Variable Aggregator → LLM → Answer

例: patterns/aggregation.md


ワークフローテンプレート

シンプル 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


バージョン: v1.0.0 最終更新: 2026-03-04 戻る: 総合 SKILL

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

関連スキル