Ollama et n8n : intégration complète
DOG&DEV · 26/01/2025
Ollama et n8n : intégration complète
Ollama permet d'exécuter des LLMs localement, et n8n peut les intégrer dans vos workflows d'automation. Cette combinaison offre une IA privée et automatisée. Ce guide explique l'intégration complète.
Prérequis
- Ollama installé et fonctionnel
- n8n installé (version 1.0+)
- Modèle LLM téléchargé dans Ollama (Llama, Mistral, etc.)
- Connaissances de base en workflows n8n
Installation
Étape 1 : Installer Ollama
Linux :
curl -fsSL https://ollama.com/install.sh | sh
Docker :
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
Étape 2 : Télécharger un modèle
# Modèles populaires
ollama pull llama2
ollama pull mistral
ollama pull phi
Étape 3 : Vérifier Ollama
# Tester Ollama
ollama run llama2 "Bonjour, comment ça va ?"
Vérifier l'API :
curl http://localhost:11434/api/generate -d '{
"model": "llama2",
"prompt": "Test"
}'
Configuration n8n
Méthode 1 : HTTP Request (Recommandé)
Créer un workflow avec un nœud HTTP Request :
Configuration :
- Method : POST
- URL :
http://localhost:11434/api/generate - Body : JSON
Body JSON :
{
"model": "llama2",
"prompt": "{{ $json.prompt }}",
"stream": false
}
Exemple complet :
- Nœud Trigger : Webhook ou Schedule
- Nœud HTTP Request :
- URL :
http://localhost:11434/api/generate - Method : POST
- Body :
{ "model": "mistral", "prompt": "Résume ce texte : {{ $json.text }}", "stream": false }
- URL :
- Nœud Set : extraire la réponse
{{ $json.response }}
Méthode 2 : Code Node (JavaScript)
Utiliser un nœud Code pour plus de contrôle :
const response = await $http.request({
method: 'POST',
url: 'http://localhost:11434/api/generate',
body: {
model: 'mistral',
prompt: $input.item.json.text,
stream: false
},
headers: {
'Content-Type': 'application/json'
}
});
return {
json: {
original: $input.item.json.text,
summary: response.response
}
};
Cas d'usage pratiques
1. Résumé automatique d'emails
Workflow :
- Trigger : Email (nouvel email reçu)
- Extract : extraire le contenu de l'email
- HTTP Request (Ollama) : résumer l'email
- Send Email : envoyer le résumé
Prompt Ollama :
Résume cet email en 3-4 phrases :
{{ $json.emailContent }}
2. Génération de contenu
Workflow :
- Trigger : Webhook (nouvel article à créer)
- HTTP Request (Ollama) : générer le contenu
- Format : formater le contenu
- Save : sauvegarder dans votre CMS
Prompt Ollama :
Écris un article de 500 mots sur : {{ $json.topic }}
3. Classification de tickets
Workflow :
- Trigger : Nouveau ticket créé
- HTTP Request (Ollama) : classifier le ticket
- Switch : router selon la classification
- Assign : assigner au bon département
Prompt Ollama :
Classifie ce ticket de support en une catégorie (technique, facturation, vente) :
{{ $json.ticketDescription }}
4. Traduction automatique
Workflow :
- Trigger : Nouveau contenu à traduire
- HTTP Request (Ollama) : traduire
- Save : sauvegarder la traduction
Prompt Ollama :
Traduis ce texte en anglais :
{{ $json.frenchText }}
Configuration avancée
Utiliser plusieurs modèles
Workflow conditionnel :
- Switch : selon le type de tâche
- HTTP Request 1 : utiliser
mistralpour les résumés - HTTP Request 2 : utiliser
llama2pour la génération
Streaming (réponses en temps réel)
Configuration HTTP Request :
{
"model": "mistral",
"prompt": "{{ $json.prompt }}",
"stream": true
}
Note : Le streaming nécessite un traitement spécial dans n8n (Code Node).
Paramètres avancés Ollama
Options disponibles :
{
"model": "mistral",
"prompt": "{{ $json.prompt }}",
"stream": false,
"options": {
"temperature": 0.7,
"top_p": 0.9,
"top_k": 40,
"num_predict": 100
}
}
Paramètres :
- temperature : créativité (0-1, plus haut = plus créatif)
- top_p : diversité des réponses
- num_predict : nombre maximum de tokens
Optimisation
Performance
Pour de meilleures performances :
- Utiliser GPU : Ollama détecte automatiquement
- Modèles quantifiés : utiliser des modèles plus légers (Q4)
- Cache : n8n peut mettre en cache les réponses similaires
Coûts
Avantages Ollama :
- Pas de coûts par requête : exécution locale
- Pas de limites : utilisation illimitée
- Confidentialité : données ne quittent pas votre serveur
Sécurité
Accès local uniquement
Par défaut, Ollama écoute sur localhost:11434.
Pour accès réseau (attention sécurité) :
# Variable d'environnement
OLLAMA_HOST=0.0.0.0:11434 ollama serve
Recommandation : utiliser un reverse proxy avec authentification si accès réseau nécessaire.
Firewall
Limiter l'accès :
# Autoriser uniquement depuis n8n
ufw allow from [IP_N8N] to any port 11434
Dépannage
| Problème | Cause possible | Solution |
|---|---|---|
| "Connection refused" | Ollama non démarré | Démarrer Ollama (ollama serve) |
| Réponse vide | Modèle non téléchargé | Télécharger le modèle (ollama pull model) |
| Timeout | Modèle trop lent, prompt trop long | Utiliser modèle plus petit ; réduire le prompt |
| Erreur HTTP | URL incorrecte | Vérifier l'URL (localhost:11434) |
Exemples de workflows complets
Workflow : Assistant IA pour support
Structure :
- Webhook : recevoir une question
- HTTP Request (Ollama) : générer une réponse
- Format : formater la réponse
- Webhook Response : retourner la réponse
Prompt :
Tu es un assistant de support technique. Réponds à cette question de manière claire et concise :
{{ $json.question }}
Workflow : Génération de contenu SEO
Structure :
- Schedule : déclencher quotidiennement
- HTTP Request (API) : récupérer les sujets tendances
- HTTP Request (Ollama) : générer le contenu
- Format : optimiser pour SEO
- HTTP Request (CMS) : publier l'article
Bonnes pratiques
- Prompts clairs : être spécifique dans les prompts
- Gestion d'erreurs : ajouter des nœuds de gestion d'erreur
- Limites : définir des limites de tokens pour éviter les réponses trop longues
- Cache : mettre en cache les réponses fréquentes
- Monitoring : surveiller les performances Ollama
Ressources
- open-source-llms - Guide LLMs open source
- n8n-2-0-available - n8n 2.0 et nouvelles fonctionnalités
- debian-n8n - Installation n8n
Cet article s'inscrit dans notre série de guides IA et automation. Pour une installation sur-mesure, contact.