SystemTce/dify-skills

Références Dify - Syntaxe DSL, documentation API, SDK, commandes CLI

Qu'est-ce que dify-skills ?

Cette compétence fournit une référence complète pour la plateforme Dify, couvrant la syntaxe DSL, les API, les SDK et les commandes CLI. Elle est utile pour les développeurs qui construisent des workflows, intègrent des applications ou développent des plugins avec Dify. La compétence inclut des exemples concrets de code, des schémas de requêtes/réponses, des tableaux de types de nœuds et d'options de commandes. Elle prend en charge les versions Python et CLI de Dify, et propose des FAQ pour résoudre les problèmes courants. La documentation est structurée en sections claires avec des liens de navigation rapide, ce qui facilite la recherche d'informations spécifiques.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence Références Dify

Consultez les références de syntaxe, API, CLI, etc.

Navigation rapide


Référence Syntaxe DSL

Structure DSL d'un workflow

version: 0.0.1
graph:
  nodes:
    - id: node_id
      data:
        type: node_type
        # configuration du nœud
  edges:
    - source: source_node_id
      target: target_node_id

Types de nœuds

TypeDescriptionChamps obligatoires
startNœud de départvariables
llmNœud LLMmodel, prompt_template
agentNœud Agentagent_parameters
knowledge-retrievalRécupération de connaissancesdataset_ids, query_variable_selector
http-requestRequête HTTPurl, method, headers
codeExécution de codecode_type, code
toolNœud outilprovider_type, tool_name
if-elseBranchement conditionnelconditions
iterationItérationiterator_variable_name
loopBouclemax_loop_count
answerNœud de réponseanswer

Référence des variables

# Variables système
{{#sys.query#}}           # Requête utilisateur
{{#sys.files#}}           # Fichiers téléchargés
{{#sys.conversation_id#}} # ID de conversation

# Sortie d'un nœud
{{#node_id.output_field#}}

# Accès aux tableaux
{{#items[0]#}}           # Premier élément du tableau
{{#items[-1]#}}          # Dernier élément du tableau

# Propriétés d'un objet
{{#object.field#}}       # Propriété d'un objet

Exemple complet

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

      - id: classify
        data:
          type: question-classifier
          instruction: "Classer la question de l'utilisateur"
          categories:
            - name: technical
              description: Questions techniques
            - name: general
              description: Questions générales

      - id: llm
        data:
          type: llm
          model:
            provider: openai
            name: gpt-4
          prompt_template:
            - role: system
              text: "Vous êtes un assistant"
            - 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

Référence API

Authentification

Toutes les requêtes API doivent inclure une clé API dans l'en-tête :

Authorization: Bearer VOTRE_CLÉ_API

Aperçu des endpoints

API des applications

EndpointMéthodeDescription
/v1/chat-messagesPOSTEnvoyer un message de chat
/v1/completionsPOSTComplétion de texte
/v1/parametersGETObtenir les paramètres de l'application
/v1/file-uploadPOSTTéléchargement de fichier

API des workflows

EndpointMéthodeDescription
/v1/workflows/runPOSTExécuter un workflow
/v1/workflows/runGETObtenir l'état d'exécution
/v1/workflows/tasksGETObtenir la liste des tâches

API des jeux de données

EndpointMéthodeDescription
/v1/datasetsGETLister les jeux de données
/v1/datasetsPOSTCréer un jeu de données
/v1/datasets/{id}/documentsGETLister les documents
/v1/datasets/{id}/retrievePOSTRécupérer des connaissances

Format des requêtes/réponses

Requête de message de chat

{
  "query": "Requête utilisateur",
  "user": "user_123",
  "conversation_id": "ID de conversation optionnel",
  "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
  }
}

Réponse de message de chat

{
  "message_id": "msg_xxx",
  "conversation_id": "conv_xxx",
  "answer": "Contenu de la réponse IA",
  "metadata": {
    "usage": {
      "prompt_tokens": 100,
      "completion_tokens": 50,
      "total_tokens": 150
    },
    "retrieval_resources": [
      {
        "position": 1,
        "document_id": "doc_xxx",
        "content": "Contenu du document pertinent..."
      }
    ]
  }
}

Réponse d'erreur

{
  "code": "invalid_api_key",
  "message": "Clé API invalide",
  "status_code": 401
}

Codes d'erreur courants :

Code d'erreurCode HTTPDescription
invalid_api_key401Clé API invalide
invalid_parameter400Paramètre invalide
quota_exceeded403Quota dépassé
rate_limit_exceeded429Limite de débit atteinte
internal_server_error500Erreur interne du serveur

Référence SDK

SDK Python

Installation

pip install dify-client

Utilisation de base

from dify_client import DifyClient

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

# Envoyer un message de chat
response = client.chat.messages.create(
    query="Bonjour",
    user="user_123"
)
print(response.answer)

Réponse en streaming

from dify_client import DifyClient

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

# Chat en streaming
for event in client.chat.messages.stream(
    query="Raconte une histoire",
    user="user_123"
):
    if event.event == "message":
        print(event.data.answer, end="")

Exécution d'un workflow

# Exécuter un workflow
response = client.workflows.run(
    inputs={"query": "Test"},
    user="user_123",
    response_mode="blocking"
)
print(response.data.output)

Référence des classes SDK

DifyClient

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

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

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

    @property
    def datasets(self) -> DatasetClient:
        """Client de jeux de données"""
        pass

ChatClient

class ChatClient:
    def create(self, query: str, user: str, **kwargs) -> ChatMessage:
        """Envoie un message de chat (bloquant)"""
        pass

    def stream(self, query: str, user: str, **kwargs) -> Iterator[ChatEvent]:
        """Envoie un message de chat (streaming)"""
        pass

Référence CLI

Installation

pip install dify-cli

Aperçu des commandes

Commandes de plugin

# Initialiser un plugin
dify plugin init [options]

# Exécuter un plugin
dify plugin run [options]

# Empaqueter un plugin
dify plugin package [options]

# Publier un plugin
dify plugin publish [options]

# Lister les plugins installés
dify plugin list

Commandes de workflow

# Exporter un workflow
dify workflow export <workflow_id> [options]

# Importer un workflow
dify workflow import <fichier> [options]

# Valider un workflow
dify workflow validate <fichier>

# Exécuter un workflow
dify workflow run <workflow_id> --inputs '{}'

Commandes d'application

# Lister les applications
dify app list

# Obtenir les informations d'une application
dify app info <app_id>

# Déployer une application
dify app deploy <app_id>

Commandes de variables d'environnement

# Lister les variables d'environnement
dify env list

# Définir une variable d'environnement
dify env set <clé> <valeur>

# Obtenir une variable d'environnement
dify env get <clé>

# Supprimer une variable d'environnement
dify env delete <clé>

Options

OptionAbréviationDescriptionValeur par défaut
--api-key-kClé APIVariable d'environnement DIFY_API_KEY
--base-url-bURL de basehttps://api.dify.ai/v1
--output-oFormat de sortiejson
--quiet-qMode silencieuxfalse
--debug-dMode débogagefalse

Exemples d'utilisation

# Définir la clé API
export DIFY_API_KEY="app-xxx"

# Initialiser un projet de plugin
dify plugin init mon-plugin --template tool

# Exécuter un plugin
dify plugin run --port 5000

# Exporter un workflow
dify workflow export wf_xxx -o workflow.yaml

# Importer un workflow
dify workflow import workflow.yaml

Questions fréquentes

API

Q : Comment obtenir une clé API ? R : Dans la console Dify -> Paramètres -> API.

Q : Quelle est la limite de débit ? R : 60 requêtes/minute par défaut, possibilité de demander une augmentation.

Q : Comment gérer les réponses en streaming ? R : Utilisez response_mode=streaming et parsez les événements SSE.

Workflows

Q : Comment référencer des variables ? R : Utilisez la syntaxe {{#node_id.field#}}.

Q : Quels types de nœuds sont supportés ? R : Voir le tableau des types de nœuds.

Q : Comment gérer les boucles ? R : Utilisez les nœuds iteration ou loop.

Plugins

Q : Comment développer un plugin personnalisé ? R : Consultez la compétence 02-plugin.

Q : Comment un plugin obtient-il des identifiants ? R : Utilisez self.runtime_credentials.


Compétences associées


Ressources associées


Version : v1.0.0 | Dernière mise à jour : 2026-03-05

Individual skills in this repo

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

Skills associés