Communitygithub.com

SystemTce/dify-skills

Umfassender Leitfaden zum Dify-Workflow-Design – Knotentypen, Entwurfsmuster, Vorlagen und Best Practices

Was ist dify-skills?

Diese Fähigkeit bietet eine vollständige Referenz für das Design von Dify-Workflows, einschließlich aller Kernknotentypen (Start, LLM, Agent, Knowledge Retrieval, Code, HTTP Request, Tool, If-Else, Iteration, Answer) mit detaillierten YAML-Konfigurationsbeispielen. Sie beschreibt gängige Entwurfsmuster wie sequentielle Pipelines, bedingte Verzweigungen, iterative Verarbeitung, RAG (Knowledge Retrieval) und Multi-Source-Aggregation mit entsprechenden Strukturdiagrammen. Darüber hinaus werden vorgefertigte Workflow-Vorlagen für einfache Q&A, RAG-Assistenten, Agent-Tool-Aufrufe und mehrstufige Prozesse sowie Best Practices für modulares Design, Variablenbenennung, Fehlerbehandlung, Leistungsoptimierung und Wartbarkeit bereitgestellt. Die Fähigkeit unterstützt die Workflow-Typen Standard Workflow, Advanced Chat und Agent und erläutert das ausführungsspezifische Modell mit Warteschlangen- und Ereignissteuerung, Parallelverarbeitung und Streaming-Antworten.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Dify-Workflow-Design SKILL

Beherrsche das Kernwissen und die Best Practices für das Design von Dify-Workflows

Schnellnavigation


Workflow-Überblick

Dify-Workflow ist ein visuelles System zur Orchestrierung von KI-Anwendungen, das durch die Kombination von Knoten und Kanten komplexe Geschäftslogik realisiert.

Kernkonzepte

  • Knoten (Node): Die grundlegende Ausführungseinheit eines Workflows; jeder Knoten führt eine bestimmte Funktion aus.
  • Kante (Edge): Verbindet Knoten und definiert den Datenfluss und die Ausführungsreihenfolge.
  • Variable (Variable): Überträgt Daten zwischen Knoten.
  • DSL (Domain Specific Language): Workflow-Definitionssprache im YAML-Format.

Workflow-Typen

  1. Workflow: Standard-Workflow, geeignet für komplexe mehrstufige Verarbeitungen.
  2. Advanced Chat: Erweiterte Chat-Anwendung mit Workflow-Orchestrierung.
  3. Agent: Intelligenter Agent mit autonomer Entscheidungsfindung und Tool-Aufruf.

Ausführungsmodell

  • Queue-gesteuert: Knotenplanung basierend auf der Ready Queue.
  • Ereignisgesteuert: Knotenausführung erzeugt Ereignisströme.
  • Parallele Ausführung: Unterstützt 2–8 parallele Arbeitsthreads.
  • Streaming-Antwort: Unterstützt Echtzeit-Streaming-Ausgabe.

Kernknotentypen

1. Start-Knoten

Funktion: Einstiegspunkt des Workflows, definiert Eingabevariablen.

Konfigurationsbeispiel:

- data:
    desc: ''
    selected: false
    title: Start
    type: start
    variables:
    - label: Benutzereingabe
      max_length: 1000
      required: true
      type: text-input
      variable: user_input
  id: start
  type: custom

Ausführliche Dokumentation: nodes/start.md


2. LLM-Knoten

Funktion: Ruft ein großes Sprachmodell zur Inferenz und Generierung auf.

Konfigurationsbeispiel:

- data:
    type: llm
    model:
      provider: openai
      name: gpt-4
      completion_params:
        temperature: 0.7
        max_tokens: 2000
    prompt_template:
    - id: system
      role: system
      text: "Du bist ein professioneller Assistent"
    - id: user
      role: user
      text: "{{#sys.query#}}"
    context:
      enabled: true
      variable_selector: ["knowledge", "result"]
  id: llm

Wichtige Parameter:

  • model: Modellkonfiguration (Anbieter, Name, Parameter)
  • prompt_template: Prompt-Vorlage (unterstützt System- und Benutzernachrichten)
  • context: Kontextkonfiguration (aktiviert Ergebnisse der Wissensabfrage)
  • memory: Konfiguration des Gesprächsgedächtnisses
  • vision: Konfiguration der visuellen Fähigkeiten (unterstützt Bildeingabe)

Ausführliche Dokumentation: nodes/llm.md


3. Agent-Knoten

Funktion: Intelligenter Agent, der basierend auf Benutzeranfragen autonom Tools aufruft.

Konfigurationsbeispiel:

- data:
    type: agent
    agent_parameters:
      instruction:
        type: constant
        value: "Rufe basierend auf den Benutzeranforderungen geeignete Tools auf, um die Aufgabe abzuschließen"
      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

Unterstützte Strategien:

  • function_calling: Funktionsaufruf (empfohlen)
  • react: ReAct-Reasoning-Modus

Ausführliche Dokumentation: nodes/agent.md


4. Knowledge-Retrieval-Knoten

Funktion: Ruft relevante Informationen aus der Wissensdatenbank ab (RAG).

Konfigurationsbeispiel:

- 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

Abrufmodi:

  • single: Einmalige Abfrage
  • multiple: Mehrfache Abfrage

Ausführliche Dokumentation: nodes/knowledge-retrieval.md


5. Code-Knoten

Funktion: Führt Python- oder JavaScript-Code aus.

Konfigurationsbeispiel:

- data:
    type: code
    code_language: python3
    code: |
      def main(input_text: str) -> dict:
          # Verarbeitungslogik
          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

Unterstützte Sprachen:

  • Python 3
  • JavaScript (Node.js)

Ausführliche Dokumentation: nodes/code.md


6. HTTP-Request-Knoten

Funktion: Ruft externe HTTP-APIs auf.

Konfigurationsbeispiel:

- 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

Unterstützte Methoden:

  • GET, POST, PUT, DELETE, PATCH

Ausführliche Dokumentation: nodes/http-request.md


7. Tool-Knoten

Funktion: Ruft integrierte oder benutzerdefinierte Tools auf.

Konfigurationsbeispiel:

- 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

Tool-Typen:

  • builtin: Integrierte Tools
  • api: API-Tools
  • workflow: Workflow-Tools

Ausführliche Dokumentation: nodes/tool.md


8. If-Else-Knoten

Funktion: Bedingte Verzweigungssteuerung.

Konfigurationsbeispiel:

- data:
    type: if-else
    conditions:
    - variable_selector: ["llm", "text"]
      comparison_operator: contains
      value: "Schlüsselwort"
    logical_operator: and
  id: condition

Unterstützte Operatoren:

  • contains, not contains
  • is, is not
  • empty, not empty
  • >, <, >=, <=, =, !=

Ausführliche Dokumentation: nodes/if-else.md


9. Iterations-Knoten

Funktion: Iterative Verarbeitung von Array-Daten.

Konfigurationsbeispiel:

- data:
    type: iteration
    iterator_selector: ["start", "items"]
    output_selector: ["iteration_inner", "output"]
    parallel_nums: 3
    error_handle_mode: continue
  id: iteration

Fehlerbehandlungsmodi:

  • continue: Ausführung fortsetzen
  • stop: Iteration beenden

Ausführliche Dokumentation: nodes/iteration.md


10. Answer-Knoten

Funktion: Gibt das Workflow-Ergebnis aus.

Konfigurationsbeispiel:

- data:
    type: answer
    answer: "{{#llm.text#}}"
  id: answer

Ausführliche Dokumentation: nodes/answer.md


Entwurfsmuster

1. Sequentielles Pipeline-Muster

Anwendungsbereich: Einfache lineare Verarbeitungsabläufe.

Struktur:

Start → LLM → Answer

Beispiel: patterns/sequential.md


2. Bedingtes Verzweigungsmuster

Anwendungsbereich: Führt je nach Bedingung unterschiedliche Verarbeitungslogiken aus.

Struktur:

Start → LLM → If-Else → [ZweigA / ZweigB] → Answer

Beispiel: patterns/conditional.md


3. Iteratives Verarbeitungsmuster

Anwendungsbereich: Batch-Verarbeitung von Array-Daten.

Struktur:

Start → Code → Iteration → LLM → Answer

Beispiel: patterns/iterative.md


4. Wissensabrufmuster (RAG)

Anwendungsbereich: Frage-Antwort basierend auf der Wissensdatenbank.

Struktur:

Start → Knowledge Retrieval → LLM (mit Kontext) → Answer

Beispiel: patterns/rag.md


5. Multi-Source-Aggregationsmuster

Anwendungsbereich: Integration von Informationen aus mehreren Datenquellen.

Struktur:

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

Beispiel: patterns/aggregation.md


Workflow-Vorlagen

Einfaches Frage-Antwort

Datei: templates/simple-qa.yml

Beschreibung: Der einfachste Frage-Antwort-Workflow.

Knoten: Start → LLM → Answer


RAG-Assistent

Datei: templates/rag-assistant.yml

Beschreibung: Intelligenter Assistent basierend auf der Wissensdatenbank.

Knoten: Start → Knowledge Retrieval → LLM → Answer


Agent-Tool-Aufruf

Datei: templates/agent-tools.yml

Beschreibung: Autonomer Tool-Aufruf durch den intelligenten Agenten.

Knoten: Start → Agent → Answer


Mehrstufige Verarbeitung

Datei: templates/multi-step.yml

Beschreibung: Komplexer mehrstufiger Verarbeitungsablauf.

Knoten: Start → Code → HTTP → LLM → If-Else → Answer


Variablensystem

Systemvariablen

{{#sys.query#}}              # Benutzeranfrage
{{#sys.files#}}              # Hochgeladene Dateien
{{#sys.conversation_id#}}    # Konversations-ID
{{#sys.user_id#}}            # Benutzer-ID

Knotenvariablen

{{#KnotenID.Ausgabefeld#}}   # Verweis auf Knotenausgabe
{{#llm.text#}}               # LLM-Textausgabe
{{#knowledge.result#}}       # Ergebnis der Wissensabfrage
{{#code.output#}}            # Ausgabe des Code-Knotens

Konversationsvariablen

{{#conversation.Variablenname#}}  # Konversationsspezifische Variable

Umgebungsvariablen

{{#env.API_KEY#}}            # Umgebungsvariable
{{#env.DATABASE_URL#}}       # Datenbankverbindung

Iterationsvariablen

{{#item#}}                   # Aktuelles Iterationselement
{{#index#}}                  # Aktueller Index

Best Practices

1. Modulares Design

  • Zerlege komplexe Abläufe in mehrere unabhängige Knoten.
  • Verwende Variablen zur Datenübergabe, vermeide Hartcodierung.
  • Setze bedingte Verzweigungen und Iterationsknoten sinnvoll ein.

2. Variablenbenennung

  • Verwende aussagekräftige Variablennamen.
  • Folge einheitlichen Benennungskonventionen.
  • Füge bei Bedarf Beschreibungen hinzu.

3. Fehlerbehandlung

  • Füge an kritischen Knoten Fehlerbehandlungslogik hinzu.
  • Verwende bedingte Verzweigungen zur Behandlung von Ausnahmefällen.
  • Gib benutzerfreundliche Fehlermeldungen aus.

4. Leistungsoptimierung

  • Vermeide unnötige Knotenaufrufe.
  • Nutze Caching-Mechanismen sinnvoll.
  • Begrenze die Anzahl der Iterationen.
  • Verwende parallele Zweige zur Leistungssteigerung.

5. Wartbarkeit

  • Füge Knotenbeschreibungen und Kommentare hinzu.
  • Verwende klare Knotennamen.
  • Halte die Workflow-Struktur einfach und übersichtlich.
  • Überprüfe und optimiere regelmäßig.

Ausführliche Details: best-practices.md


Nächste Schritte


Verwandte SKILLS


Version: v1.0.0 Letzte Aktualisierung: 2026-03-04 Zurück: Gesamt-SKILL

Individual skills in this repo

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

Verwandte Skills