Communitygithub.com

SystemTce/dify-skills

Dify 工作流設計完整指南 – 節點類型、設計模式、範本與最佳實務

dify-skills 是什麼?

此技能提供 Dify 工作流設計的完整知識,涵蓋從基礎概念到進階設計模式的各個面向。它詳細介紹了 10 種核心節點類型(包括 Start、LLM、Agent、知識檢索、Code、HTTP 請求、工具、條件分支、迭代及 Answer 節點),並對每一種節點給出 YAML 配置示例與關鍵參數說明。此外,技能還收錄了多種常見設計模式(如順序管道、條件分支、迭代處理、RAG 及多源聚合模式)與可直接使用的工作流範本,幫助開發者快速搭建 AI 應用。最後,技能包含變數系統的完整參考(系統變數、節點變數、會話變數、環境變數與迭代變數)以及模組化設計、變數命名規範、錯誤處理與性能優化等最佳實踐,適合需要在 Claude Code、Cursor 或 Codex 等平台中高效設計與維護 Dify 工作流的開發者。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/SystemTce/dify-skills/tree/main/01-workflow

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

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 → [分支A / 分支B] → Answer

範例:patterns/conditional.md


3. 迭代處理模式

適用場景:批次處理陣列資料

結構:

Start → Code → Iteration → LLM → Answer

範例:patterns/iterative.md


4. 知識檢索模式(RAG)

適用場景:基於知識庫的問答

結構:

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

範例:patterns/rag.md


5. 多源聚合模式

適用場景:整合多個資料來源的資訊

結構:

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

範例:patterns/aggregation.md


工作流範本

簡單問答

檔案:templates/simple-qa.yml

描述:最基礎的問答工作流

節點: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.

相關技能