CommunityCodierung & Entwicklunggithub.com

SystemTce/dify-skills

Dify Referenzmaterial – DSL-Syntax, API-Dokumentation, SDK-Referenz, CLI-Befehle

Was ist dify-skills?

Diese Fähigkeit bietet einen umfassenden und zentralen Nachschlagepunkt für Entwickler, die mit der Dify-Plattform arbeiten. Sie deckt alle wesentlichen Referenzinformationen ab, einschließlich der DSL-Syntax (YAML-Definitionen für Arbeitsabläufe, Knotentypen und Variablenreferenzen), detaillierten API-Referenzen (Authentifizierung, Endpunkte für Chat, Workflows und Datensätze, sowie Beispiele für Anfragen/Antworten), SDK-Referenzen (Installation und Nutzung des Python-SDKs mit Codebeispielen) und CLI-Referenzen (alle wichtigen Befehle für Plugins, Workflows, Apps und Umgebungsvariablen). Sie unterstützt die Entwicklung und Integration von Dify-Komponenten, indem sie die wichtigsten Konfigurationen, Endpunkte und Code-Snippets an einem Ort zusammenfasst. Es ist ideal für Entwickler, die schnell die Syntax von DSL-Arbeitsabläufen nachschlagen oder API-Aufrufe und SDK-Integrationen testen möchten. Die Referenz ist plattformunabhängig und kann in jeder Entwicklungsumgebung, die mit Dify interagiert, verwendet werden.

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

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

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

Dokumentation

Dify Referenz SKILL

Nachschlagen von Syntax, API-, CLI- und anderen Referenzinformationen

Schnellnavigation


DSL-Syntax-Referenz

Workflow-DSL-Struktur

version: 0.0.1
graph:
  nodes:
    - id: node_id
      data:
        type: node_type
        # Knotenkonfiguration
  edges:
    - source: source_node_id
      target: target_node_id

Knotentypen

TypBeschreibungErforderliche Felder
startStartknotenvariables
llmLLM-Knotenmodel, prompt_template
agentAgent-Knotenagent_parameters
knowledge-retrievalWissensabrufdataset_ids, query_variable_selector
http-requestHTTP-Anfrageurl, method, headers
codeCodeausführungcode_type, code
toolWerkzeugknotenprovider_type, tool_name
if-elseBedingungsverzweigungconditions
iterationIterationiterator_variable_name
loopSchleifemax_loop_count
answerAntwortknotenanswer

Variablenreferenzen

# Systemvariablen
{{#sys.query#}}           # Benutzerabfrage
{{#sys.files#}}           # Hochgeladene Dateien
{{#sys.conversation_id#}} # Konversations-ID

# Knotenausgabe
{{#node_id.output_field#}}

# Array-Zugriff
{{#items[0]#}}           # Erstes Element des Arrays
{{#items[-1]#}}          # Letztes Element des Arrays

# Objektattribute
{{#object.field#}}       # Objektattribut

Vollständiges Beispiel

workflow:
  graph:
    nodes:
      - id: start
        data:
          type: start
          variables:
            - name: query
              type: text
              required: true

      - id: classify
        data:
          type: question-classifier
          instruction: "Klassifiziere die Benutzerfrage"
          categories:
            - name: technical
              description: Technische Fragen
            - name: general
              description: Allgemeine Fragen

      - id: llm
        data:
          type: llm
          model:
            provider: openai
            name: gpt-4
          prompt_template:
            - role: system
              text: "Du bist ein Assistent"
            - role: user
              text: "{{#start.query#}}"
          context:
            enabled: false

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

    edges:
      - source: start
        target: classify
      - source: classify
        target: llm
        source_handle: general
      - source: llm
        target: answer

API-Referenz

Authentifizierung

Alle API-Anfragen müssen den API-Key im Header mitführen:

Authorization: Bearer YOUR_API_KEY

Endpunktübersicht

App-API

EndpunktMethodeBeschreibung
/v1/chat-messagesPOSTChat-Nachricht senden
/v1/completionsPOSTTextvervollständigung
/v1/parametersGETApp-Parameter abrufen
/v1/file-uploadPOSTDatei hochladen

Workflow-API

EndpunktMethodeBeschreibung
/v1/workflows/runPOSTWorkflow ausführen
/v1/workflows/runGETAusführungsstatus abrufen
/v1/workflows/tasksGETAufgabenliste abrufen

Datensatz-API

EndpunktMethodeBeschreibung
/v1/datasetsGETDatensätze auflisten
/v1/datasetsPOSTDatensatz erstellen
/v1/datasets/{id}/documentsGETDokumente auflisten
/v1/datasets/{id}/retrievePOSTWissen abrufen

Anfrage/Antwort-Format

Chat-Nachrichtenanfrage

{
  "query": "Benutzerabfrage",
  "user": "user_123",
  "conversation_id": "optionale Konversations-ID",
  "response_mode": "blocking | streaming",
  "files": [
    {
      "type": "image",
      "transfer_method": "remote_url",
      "url": "https://example.com/image.jpg"
    }
  ],
  "retrieval_model": {
    "query": "{{#sys.query#}}",
    "top_k": 3
  }
}

Chat-Nachrichtenantwort

{
  "message_id": "msg_xxx",
  "conversation_id": "conv_xxx",
  "answer": "KI-Antwortinhalt",
  "metadata": {
    "usage": {
      "prompt_tokens": 100,
      "completion_tokens": 50,
      "total_tokens": 150
    },
    "retrieval_resources": [
      {
        "position": 1,
        "document_id": "doc_xxx",
        "content": "Relevanter Dokumenteninhalt..."
      }
    ]
  }
}

Fehlerantworten

{
  "code": "invalid_api_key",
  "message": "Ungültiger API-Key",
  "status_code": 401
}

Häufige Fehlercodes:

FehlercodeHTTP-StatuscodeBeschreibung
invalid_api_key401API-Key ungültig
invalid_parameter400Parameterfehler
quota_exceeded403Kontingent überschritten
rate_limit_exceeded429Ratenlimit überschritten
internal_server_error500Serverfehler

SDK-Referenz

Python SDK

Installation

pip install dify-client

Grundlegende Verwendung

from dify_client import DifyClient

# Client initialisieren
client = DifyClient(
    api_key="app-xxx",
    base_url="https://api.dify.ai/v1"
)

# Chat-Nachricht senden
response = client.chat.messages.create(
    query="Hallo",
    user="user_123"
)
print(response.answer)

Streaming-Antwort

from dify_client import DifyClient

client = DifyClient(api_key="app-xxx")

# Streaming-Chat
for event in client.chat.messages.stream(
    query="Erzähl eine Geschichte",
    user="user_123"
):
    if event.event == "message":
        print(event.data.answer, end="")

Workflow-Ausführung

# Workflow ausführen
response = client.workflows.run(
    inputs={"query": "Test"},
    user="user_123",
    response_mode="blocking"
)
print(response.data.output)

SDK-Klassenreferenz

DifyClient

class DifyClient:
    def __init__(self, api_key: str, base_url: str = "https://api.dify.ai/v1"):
        """Client initialisieren"""
        pass

    @property
    def chat(self) -> ChatClient:
        """Chat-Client"""
        pass

    @property
    def workflows(self) -> WorkflowClient:
        """Workflow-Client"""
        pass

    @property
    def datasets(self) -> DatasetClient:
        """Datensatz-Client"""
        pass

ChatClient

class ChatClient:
    def create(self, query: str, user: str, **kwargs) -> ChatMessage:
        """Chat-Nachricht senden (blockierend)"""
        pass

    def stream(self, query: str, user: str, **kwargs) -> Iterator[ChatEvent]:
        """Chat-Nachricht senden (Streaming)"""
        pass

CLI-Referenz

Installation

pip install dify-cli

Befehlsübersicht

Plugin-Befehle

# Plugin initialisieren
dify plugin init [options]

# Plugin ausführen
dify plugin run [options]

# Plugin paketieren
dify plugin package [options]

# Plugin veröffentlichen
dify plugin publish [options]

# Installierte Plugins auflisten
dify plugin list

Workflow-Befehle

# Workflow exportieren
dify workflow export <workflow_id> [options]

# Workflow importieren
dify workflow import <file> [options]

# Workflow validieren
dify workflow validate <file>

# Workflow ausführen
dify workflow run <workflow_id> --inputs '{}'

App-Befehle

# Apps auflisten
dify app list

# App-Informationen abrufen
dify app info <app_id>

# App bereitstellen
dify app deploy <app_id>

Umgebungsvariablen-Befehle

# Umgebungsvariablen auflisten
dify env list

# Umgebungsvariable setzen
dify env set <key> <value>

# Umgebungsvariable abrufen
dify env get <key>

# Umgebungsvariable löschen
dify env delete <key>

Optionen

OptionKurzformBeschreibungStandardwert
--api-key-kAPI-KeyUmgebungsvariable DIFY_API_KEY
--base-url-bBasis-URLhttps://api.dify.ai/v1
--output-oAusgabeformatjson
--quiet-qStiller Modusfalse
--debug-dDebug-Modusfalse

Verwendungsbeispiele

# API-Key setzen
export DIFY_API_KEY="app-xxx"

# Plugin-Projekt initialisieren
dify plugin init my-plugin --template tool

# Plugin ausführen
dify plugin run --port 5000

# Workflow exportieren
dify workflow export wf_xxx -o workflow.yaml

# Workflow importieren
dify workflow import workflow.yaml

Häufig gestellte Fragen

API-bezogen

F: Wie erhalte ich einen API-Key? A: Erstelle ihn in der Dify-Konsole unter Einstellungen -> API.

F: Wie hoch ist das Ratenlimit? A: Standardmäßig 60 Anfragen/Minute, eine Erhöhung kann beantragt werden.

F: Wie verarbeite ich Streaming-Antworten? A: Verwende response_mode=streaming und parse SSE-Ereignisse.

Workflow-bezogen

F: Wie referenziere ich Variablen? A: Verwende die Syntax {{#node_id.field#}}.

F: Welche Knotentypen werden unterstützt? A: Siehe die Tabelle der Knotentypen.

F: Wie handhabe ich Schleifen? A: Verwende die Knoten iteration oder loop.

Plugin-bezogen

F: Wie entwickle ich ein benutzerdefiniertes Plugin? A: Siehe das 02-plugin SKILL.

F: Wie erhält ein Plugin Anmeldeinformationen? A: Verwende self.runtime_credentials.


Verwandte SKILLs


Verwandte Ressourcen


Versionsinformationen: v1.0.0 | Letzte Aktualisierung: 2026-03-05

Individual skills in this repo

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

Verwandte Skills