Compétence de conception de workflows Dify
Maîtrisez les connaissances essentielles et les meilleures pratiques de conception de workflows Dify
Navigation rapide
- Aperçu du workflow
- Types de nœuds principaux
- Modèles de conception
- Templates de workflow
- Système de variables
- Bonnes pratiques
Aperçu du workflow
Dify Workflow est un système d'orchestration d'applications IA visuelles qui implémente une logique métier complexe via une combinaison de nœuds et d'arêtes.
Concepts essentiels
- Nœud (Node) : Unité d'exécution de base du workflow, chaque nœud exécute une fonction spécifique
- Arête (Edge) : Connecte les nœuds, définit le flux de données et l'ordre d'exécution
- Variable (Variable) : Transmet des données entre les nœuds
- DSL (Domain Specific Language) : Langage de définition de workflow au format YAML
Types de workflow
- Workflow : Workflow standard, adapté aux traitements multi-étapes complexes
- Advanced Chat : Application de dialogue avancée, prise en charge de l'orchestration de workflow
- Agent : Agent intelligent, prise de décision autonome et appel d'outils
Modèle d'exécution
- Piloté par file d'attente (Queue-driven) : Ordonnancement des nœuds basé sur la Ready Queue
- Piloté par événements (Event-driven) : L'exécution des nœuds génère un flux d'événements
- Exécution parallèle (Parallel execution) : Prend en charge 2 à 8 threads de travail en parallèle
- Réponse en flux (Streaming response) : Prise en charge de la sortie en flux en temps réel
Types de nœuds principaux
1. Nœud Start
Fonction : Point d'entrée du workflow, définit les variables d'entrée
Exemple de configuration :
- data:
desc: ''
selected: false
title: Début
type: start
variables:
- label: Saisie utilisateur
max_length: 1000
required: true
type: text-input
variable: user_input
id: start
type: custom
Documentation détaillée : nodes/start.md
2. Nœud LLM
Fonction : Appelle un grand modèle de langage pour le raisonnement et la génération
Exemple de configuration :
- data:
type: llm
model:
provider: openai
name: gpt-4
completion_params:
temperature: 0.7
max_tokens: 2000
prompt_template:
- id: system
role: system
text: "Vous êtes un assistant professionnel"
- id: user
role: user
text: "{{#sys.query#}}"
context:
enabled: true
variable_selector: ["knowledge", "result"]
id: llm
Paramètres clés :
model: Configuration du modèle (fournisseur, nom, paramètres)prompt_template: Modèle de prompt (prend en charge les messages système et utilisateur)context: Configuration du contexte (active les résultats de recherche dans la base de connaissances)memory: Configuration de la mémoire de conversationvision: Configuration des capacités visuelles (prend en charge l'entrée d'images)
Documentation détaillée : nodes/llm.md
3. Nœud Agent
Fonction : Agent intelligent, appelle des outils de manière autonome selon les besoins de l'utilisateur
Exemple de configuration :
- data:
type: agent
agent_parameters:
instruction:
type: constant
value: "Selon les besoins de l'utilisateur, appelez l'outil approprié pour accomplir la tâche"
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
Stratégies prises en charge :
function_calling: Appel de fonction (recommandé)react: Mode de raisonnement ReAct
Documentation détaillée : nodes/agent.md
4. Nœud Knowledge Retrieval
Fonction : Récupère des informations pertinentes à partir d'une base de connaissances (RAG)
Exemple de configuration :
- 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
Modes de récupération :
single: Récupération uniquemultiple: Récupération multiple
Documentation détaillée : nodes/knowledge-retrieval.md
5. Nœud Code
Fonction : Exécute du code Python ou JavaScript
Exemple de configuration :
- data:
type: code
code_language: python3
code: |
def main(input_text: str) -> dict:
# Logique de traitement
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
Langages pris en charge :
- Python 3
- JavaScript (Node.js)
Documentation détaillée : nodes/code.md
6. Nœud HTTP Request
Fonction : Appelle une API HTTP externe
Exemple de configuration :
- 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
Méthodes prises en charge :
- GET, POST, PUT, DELETE, PATCH
Documentation détaillée : nodes/http-request.md
7. Nœud Tool
Fonction : Appelle des outils intégrés ou personnalisés
Exemple de configuration :
- 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: "fr"
id: tool
Types d'outils :
builtin: Outil intégréapi: Outil APIworkflow: Outil de workflow
Documentation détaillée : nodes/tool.md
8. Nœud If-Else
Fonction : Contrôle de branchement conditionnel
Exemple de configuration :
- data:
type: if-else
conditions:
- variable_selector: ["llm", "text"]
comparison_operator: contains
value: "Mot-clé"
logical_operator: and
id: condition
Opérateurs pris en charge :
contains,not containsis,is notempty,not empty>,<,>=,<=,=,!=
Documentation détaillée : nodes/if-else.md
9. Nœud Iteration
Fonction : Traite de manière itérative des données de type tableau
Exemple de configuration :
- data:
type: iteration
iterator_selector: ["start", "items"]
output_selector: ["iteration_inner", "output"]
parallel_nums: 3
error_handle_mode: continue
id: iteration
Modes de gestion des erreurs :
continue: Poursuivre l'exécutionstop: Arrêter l'itération
Documentation détaillée : nodes/iteration.md
10. Nœud Answer
Fonction : Affiche le résultat du workflow
Exemple de configuration :
- data:
type: answer
answer: "{{#llm.text#}}"
id: answer
Documentation détaillée : nodes/answer.md
Modèles de conception
1. Modèle de pipeline séquentiel
Cas d'usage : Processus de traitement linéaire simple
Structure :
Début → LLM → Réponse
Exemple : patterns/sequential.md
2. Modèle de branchement conditionnel
Cas d'usage : Exécute différentes logiques de traitement selon des conditions
Structure :
Début → LLM → Si → [Branche A / Branche B] → Réponse
Exemple : patterns/conditional.md
3. Modèle de traitement itératif
Cas d'usage : Traitement par lots de données de type tableau
Structure :
Début → Code → Itération → LLM → Réponse
Exemple : patterns/iterative.md
4. Modèle de récupération de connaissances (RAG)
Cas d'usage : Questions-réponses basées sur une base de connaissances
Structure :
Début → Récupération de connaissances → LLM (avec contexte) → Réponse
Exemple : patterns/rag.md
5. Modèle d'agrégation multi-source
Cas d'usage : Intègre des informations provenant de plusieurs sources de données
Structure :
Début → [Outil1, Outil2, HTTP] → Agrégateur de variables → LLM → Réponse
Exemple : patterns/aggregation.md
Templates de workflow
Questions-réponses simples
Fichier : templates/simple-qa.yml
Description : Workflow de questions-réponses le plus basique
Nœuds : Début → LLM → Réponse
Assistant RAG
Fichier : templates/rag-assistant.yml
Description : Assistant intelligent basé sur une base de connaissances
Nœuds : Début → Récupération de connaissances → LLM → Réponse
Appel d'outils Agent
Fichier : templates/agent-tools.yml
Description : Agent intelligent appelant des outils de manière autonome
Nœuds : Début → Agent → Réponse
Traitement multi-étapes
Fichier : templates/multi-step.yml
Description : Processus de traitement complexe en plusieurs étapes
Nœuds : Début → Code → HTTP → LLM → Si → Réponse
Système de variables
Variables système
{{#sys.query#}} # Requête utilisateur
{{#sys.files#}} # Fichiers téléchargés
{{#sys.conversation_id#}} # ID de conversation
{{#sys.user_id#}} # ID utilisateur
Variables de nœud
{{#ID_du_nœud.champ_de_sortie#}} # Référence à la sortie d'un nœud
{{#llm.text#}} # Sortie texte du LLM
{{#knowledge.result#}} # Résultat de la récupération de connaissances
{{#code.output#}} # Sortie du nœud de code
Variables de session
{{#conversation.nom_variable#}} # Variable au niveau de la session
Variables d'environnement
{{#env.API_KEY#}} # Variable d'environnement
{{#env.DATABASE_URL#}} # Connexion à la base de données
Variables d'itération
{{#item#}} # Élément d'itération actuel
{{#index#}} # Index actuel
Bonnes pratiques
1. Conception modulaire
- Divisez les processus complexes en plusieurs nœuds indépendants
- Utilisez des variables pour transmettre les données, évitez le codage en dur
- Utilisez judicieusement les nœuds de branchement conditionnel et d'itération
2. Conventions de nommage des variables
- Utilisez des noms de variables significatifs
- Suivez une convention de nommage uniforme
- Ajoutez des informations de description si nécessaire
3. Gestion des erreurs
- Ajoutez une logique de gestion des erreurs dans les nœuds critiques
- Utilisez des branchements conditionnels pour gérer les cas exceptionnels
- Fournissez des messages d'erreur conviviaux
4. Optimisation des performances
- Évitez les appels de nœuds inutiles
- Utilisez judicieusement les mécanismes de cache
- Limitez le nombre d'itérations dans les boucles
- Utilisez des branches parallèles pour améliorer les performances
5. Maintenabilité
- Ajoutez des descriptions et des commentaires aux nœuds
- Utilisez des noms de nœuds clairs
- Gardez la structure du workflow simple
- Révisez et optimisez régulièrement
Contenu détaillé : best-practices.md
Prochaines étapes
- Approfondissez les types de nœuds détaillés
- Explorez les modèles de conception
- Commencez rapidement avec les templates de workflow
- Lisez les bonnes pratiques pour améliorer vos compétences
Compétences associées
- 02-plugin SKILL - Développement d'outils et de plugins personnalisés
- 03-performance SKILL - Optimisation des performances des workflows
- 06-reference SKILL - Référence de la syntaxe DSL
Version : v1.0.0 Dernière mise à jour : 2026-03-04 Retour : SKILL principal