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
| Type | Description | Champs obligatoires |
|---|---|---|
start | Nœud de départ | variables |
llm | Nœud LLM | model, prompt_template |
agent | Nœud Agent | agent_parameters |
knowledge-retrieval | Récupération de connaissances | dataset_ids, query_variable_selector |
http-request | Requête HTTP | url, method, headers |
code | Exécution de code | code_type, code |
tool | Nœud outil | provider_type, tool_name |
if-else | Branchement conditionnel | conditions |
iteration | Itération | iterator_variable_name |
loop | Boucle | max_loop_count |
answer | Nœud de réponse | answer |
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
| Endpoint | Méthode | Description |
|---|---|---|
/v1/chat-messages | POST | Envoyer un message de chat |
/v1/completions | POST | Complétion de texte |
/v1/parameters | GET | Obtenir les paramètres de l'application |
/v1/file-upload | POST | Téléchargement de fichier |
API des workflows
| Endpoint | Méthode | Description |
|---|---|---|
/v1/workflows/run | POST | Exécuter un workflow |
/v1/workflows/run | GET | Obtenir l'état d'exécution |
/v1/workflows/tasks | GET | Obtenir la liste des tâches |
API des jeux de données
| Endpoint | Méthode | Description |
|---|---|---|
/v1/datasets | GET | Lister les jeux de données |
/v1/datasets | POST | Créer un jeu de données |
/v1/datasets/{id}/documents | GET | Lister les documents |
/v1/datasets/{id}/retrieve | POST | Ré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'erreur | Code HTTP | Description |
|---|---|---|
invalid_api_key | 401 | Clé API invalide |
invalid_parameter | 400 | Paramètre invalide |
quota_exceeded | 403 | Quota dépassé |
rate_limit_exceeded | 429 | Limite de débit atteinte |
internal_server_error | 500 | Erreur 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
| Option | Abréviation | Description | Valeur par défaut |
|---|---|---|---|
--api-key | -k | Clé API | Variable d'environnement DIFY_API_KEY |
--base-url | -b | URL de base | https://api.dify.ai/v1 |
--output | -o | Format de sortie | json |
--quiet | -q | Mode silencieux | false |
--debug | -d | Mode débogage | false |
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
- 01-workflow - Conception de workflows
- 02-plugin - Développement de plugins
- 05-integration - Extension d'intégration
Ressources associées
Version : v1.0.0 | Dernière mise à jour : 2026-03-05