Dify auto-hébergé : créer des apps IA sur votre LLM local
Dify est une plateforme open source qui permet de construire des applications IA — chatbots, workflows, agents, assistants RAG — sans écrire une ligne de code, dans une interface visuelle. Auto-hébergée et branchée sur Ollama, elle vous donne une couche « no-code » complète par-dessus vos modèles locaux : vos prompts, vos documents et vos données ne quittent jamais votre machine. Ce guide couvre le déploiement en Docker Compose, la connexion à un LLM local, et la construction d'un premier assistant RAG fonctionnel.
#Pourquoi Dify plutôt qu'une interface de chat
Open WebUI ou LM Studio suffisent pour discuter avec un modèle. Dify vise un cran au-dessus : construire des applications réutilisables. Vous définissez un prompt système, vous y branchez une base de connaissances, vous exposez le tout via une API ou un widget de chat intégrable, et vous versionnez vos itérations. C'est l'équivalent local et open source d'un OpenAI Assistants ou d'un Coze.
L'intérêt du couple Dify + Ollama est double. D'abord la confidentialité : contrairement à Dify branché sur GPT-4 ou Claude, ici les documents indexés et les conversations restent sur votre infrastructure. Ensuite le coût : aucun jeton facturé, vous pouvez itérer sur des centaines de prompts sans surveiller une note d'API.
- Chatbot
- Un assistant conversationnel avec prompt système, variables d'entrée et mémoire de conversation.
- Agent
- Un assistant capable d'appeler des outils (recherche web, calcul, API) en boucle jusqu'à résoudre la tâche.
- Workflow
- Un enchaînement visuel de nœuds (LLM, condition, extraction, HTTP) pour des traitements déterministes.
- Knowledge / RAG
- L'indexation de vos documents pour que les apps répondent en s'appuyant dessus, avec citations des sources.
#Prérequis
Dify est une application multi-conteneurs (API, worker, frontend, base PostgreSQL, Redis, base vectorielle). Elle se déploie via Docker Compose. Côté modèle, on suppose qu'Ollama tourne déjà et écoute sur son port par défaut.
- Docker + Docker Compose
- Docker Engine récent avec le plugin Compose (commande docker compose). Sur Windows/macOS, Docker Desktop suffit.
- Ollama fonctionnel
- Le daemon Ollama installé et joignable sur http://localhost:11434. Testez avec ollama list avant de commencer.
- Un modèle de chat
- Par exemple qwen2.5:7b ou llama3.1:8b. En Q4_K_M, un 7B tient dans ~5 Go de VRAM (RTX 3060 12 Go largement suffisante).
- Un modèle d'embeddings
- Indispensable pour le RAG : nomic-embed-text est le choix par défaut, léger et efficace.
- Ressources
- Prévoyez ~8 Go de RAM pour la stack Dify elle-même, en plus de la VRAM/RAM consommée par vos modèles Ollama.
#Installer Dify en Docker Compose
Dify fournit un dépôt officiel avec un dossier docker prêt à l'emploi. On clone, on copie le fichier d'environnement d'exemple, et on lance la stack.
- 01Cloner le dépôtRécupérez la dernière version stable du projet depuis GitHub, puis placez-vous dans le dossier docker qui contient le fichier docker-compose.yaml.
- 02Créer le fichier .envCopiez .env.example en .env. Les valeurs par défaut suffisent pour un usage local ; c'est là que vous ajusterez les ports ou les secrets plus tard.
- 03Démarrer la stackLancez docker compose up -d. Le premier démarrage télécharge les images et initialise la base PostgreSQL ; comptez quelques minutes.
- 04Créer le compte adminOuvrez http://localhost/install dans le navigateur et renseignez l'e-mail et le mot de passe du premier administrateur. C'est ce compte qui gérera l'espace de travail.
#Brancher Ollama comme fournisseur de modèles
Dify ne connaît vos modèles locaux que si vous déclarez Ollama comme fournisseur. Cela se fait dans les réglages du modèle, pas dans un fichier de config. Le point de vigilance principal est l'URL : depuis un conteneur Docker, localhost désigne le conteneur lui-même, pas votre machine hôte où tourne Ollama.
- 01Ouvrir les réglages fournisseursCliquez sur votre avatar en haut à droite → Paramètres → Fournisseurs de modèles. Cherchez Ollama dans la liste et sélectionnez-le.
- 02Renseigner l'URL du serveurDans le champ Base URL, saisissez l'adresse joignable depuis le conteneur (voir le callout ci-dessous). Le nom du modèle doit correspondre exactement à ce que renvoie ollama list, par exemple qwen2.5:7b.
- 03Ajouter le modèle de chatType de modèle : LLM. Renseignez la taille de contexte (par ex. 8192 ou plus selon le modèle) et validez. Dify teste la connexion à l'enregistrement.
- 04Ajouter le modèle d'embeddingsRépétez l'opération avec nomic-embed-text en choisissant le type Text Embedding. Sans lui, vous ne pourrez pas construire de base de connaissances.
- 05Définir les modèles par défautToujours dans les réglages, fixez qwen2.5:7b comme modèle système par défaut et nomic-embed-text comme modèle d'embeddings par défaut.
#Construire un premier assistant RAG sans coder
Le RAG (Retrieval-Augmented Generation) permet au modèle de répondre à partir de vos documents plutôt que de ses seules connaissances d'entraînement. Dans Dify, cela passe par une base de connaissances (Knowledge) que l'on rattache ensuite à une application.
- 01Créer une base de connaissancesOnglet Knowledge → Créer. Importez vos fichiers (PDF, Markdown, TXT, DOCX). Dify les découpe automatiquement en chunks.
- 02Régler le découpage et l'indexationChoisissez le mode d'indexation « haute qualité » qui utilise votre modèle d'embeddings nomic-embed-text. Ajustez la taille des chunks si vos documents sont très structurés (tableaux, code).
- 03Créer l'application de chatOnglet Studio → Créer une app → Chatbot. Donnez-lui un nom et une description.
- 04Rédiger le prompt systèmeDans l'éditeur, décrivez le rôle de l'assistant : « Tu réponds uniquement à partir des documents fournis. Si l'information n'y figure pas, dis-le. » C'est ce qui limite les hallucinations.
- 05Rattacher la base de connaissancesDans le panneau Contexte de l'app, ajoutez la base créée à l'étape 1. Activez la citation des sources pour que les réponses affichent les extraits utilisés.
- 06Tester puis publierUtilisez le panneau de débogage à droite pour poser des questions. Quand le comportement vous convient, cliquez sur Publier pour obtenir une URL de chat et une clé d'API.
#Workflows et agents : jusqu'où va le no-code
Au-delà du simple chatbot, Dify propose deux modes plus avancés. Le mode Workflow expose un canevas visuel où l'on relie des nœuds : entrée utilisateur, appel LLM, condition (if/else), extraction de paramètres, requête HTTP, itération sur une liste. On construit ainsi des pipelines déterministes — par exemple : recevoir un e-mail, le classer, extraire les entités, puis rédiger une réponse type.
Le mode Agent, lui, laisse le modèle décider quels outils appeler et dans quel ordre, en boucle, jusqu'à aboutir. C'est plus puissant mais plus fragile : la qualité dépend fortement de la capacité du modèle à raisonner et à respecter le format d'appel d'outils. Les petits modèles locaux (7B) s'en sortent mal ; visez au minimum un modèle qui gère bien le tool-use, type Qwen2.5 14B+ si votre VRAM le permet.
- Ce que le no-code fait bien
- Prototyper vite un chatbot RAG, enchaîner quelques étapes LLM, exposer une API sans backend à écrire, itérer sur des prompts en équipe.
- Là où ça coince en local
- Les agents multi-outils exigeants demandent un modèle capable de tool-use fiable, donc de la VRAM. Un 7B suffit pour du RAG, rarement pour un agent complexe.
- Quand passer au code
- Logique métier fine, intégrations sur mesure, contrôle total du pipeline de récupération : une bibliothèque comme LangChain reprend la main là où le canevas visuel montre ses limites.
#Dépannage
- « Connection refused » à l'ajout du modèle
- Dify n'atteint pas Ollama. Le problème est presque toujours l'URL : remplacez localhost par host.docker.internal (Docker Desktop) ou l'IP de la passerelle Docker (Linux), et vérifiez qu'Ollama écoute bien sur 0.0.0.0.
- Le modèle n'apparaît pas
- Le nom renseigné ne correspond pas à ollama list. Copiez le nom exact, tag inclus (qwen2.5:7b et non qwen2.5).
- Erreur lors de l'indexation des documents
- Le modèle d'embeddings n'est pas configuré ou pas téléchargé. Faites ollama pull nomic-embed-text et sélectionnez-le comme modèle d'embeddings par défaut.
- Réponses très lentes
- Le modèle de chat déborde probablement sur le CPU. Passez à une quantification plus légère (Q4_K_M) ou à un modèle plus petit, et vérifiez que le GPU est bien sollicité côté Ollama.
- Le port 80 est déjà pris
- Un autre service occupe le port. Changez EXPOSE_NGINX_PORT dans le .env (par ex. 8080) puis relancez docker compose up -d.
- Réponses hors sujet malgré le RAG
- Vérifiez que la base de connaissances est bien rattachée à l'app et que le prompt système contraint le modèle à s'appuyer sur le contexte. Ajustez aussi la taille des chunks.
#Pour aller plus loin
Dify ne vaut que par la solidité du modèle et de l'infrastructure qui le portent. Ces guides consolident les briques sur lesquelles il s'appuie.
- Installer Ollama
- Le daemon qui sert votre modèle de chat et vos embeddings sur le port 11434 — la fondation de toute la stack Dify locale.
- RAG en local avec ChromaDB et Ollama
- Pour comprendre ce que Dify automatise sous le capot et reprendre la main en Python quand le no-code montre ses limites.
- n8n + Ollama : automatiser en local
- Une autre approche no-code, orientée automatisation de tâches, complémentaire des workflows Dify.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.