veilletech.fr
3 nov. Feed du jour
#04 OLLAMA Article

n8n sur Qwen 1.8B local : 192 essais, 0 JSON cassé

Le JSON était valide. Les réponses, non.

Un développeur a fait tourner six workflows n8n sur Qwen 1.8B quantifié (Q4_K_M) via Ollama sur CPU : 192 exécutions, aucune en JSON invalide, mais des erreurs de contenu fréquentes (score et catégorie contradictoires dans 13 cas sur 18, total de facture inventé, réponse inventée de la FAQ). Ce qui a tenu : laisser le code, pas le modèle, décider de l'action.

3 min de lectureintermédiairevidéo 1:14
Partager
Sommaire4 sections
  1. Ce qui se passe
  2. Ce qui casse, et ce qui tient
  3. Comment s'y prendre
  4. À retenir

Ce qui se passe

La plupart des billets sur l'IA en local montrent le cas qui marche. Ici, un développeur a pris six de ses workflows n8n et les a branchés sur un petit modèle, en comptant ce qui casse. Protocole : n8n 1.123.84 auto-hébergé, Qwen 1.8B quantifié en Q4_K_M, servi par Ollama sur CPU via son point d'accès compatible OpenAI (/v1), température 0,2, response_format: json_object, chaque cas joué 3 fois, une variante « gardée » (un nœud Code vérifie la sortie avant toute action) comparée à la variante brute. Total : 192 exécutions.

Ce qui casse, et ce qui tient

Le point rassurant d'abord : 0 réponse sur 192 en JSON invalide. Avec le mode JSON d'Ollama, le format n'est plus le risque. Les erreurs sont dans le contenu :

Workflow Ce qui a cassé
Qualification de leads score et catégorie contradictoires dans 13 cas sur 18 ; 7 sur 18 auraient alerté Slack (score ≥ 70) pour un lead qui n'était pas chaud
Extraction de factures mauvaise date 5/18, mauvais total 3/18, numéro de facture inventé 3/18
FAQ sur une question absente de la base, un « non, pas de formule annuelle » catégorique, 3 fois sur 3
Réponse aux avis (prompt seul) formules de robot dans 16 réponses sur 24
Tri d'e-mails durci injections de prompt : 0/18 réussies ; bonne catégorie sur les e-mails normaux seulement 12/18

Deux exemples parlent d'eux-mêmes. Le reçu d'un café daté « 02/11/2026 » est lu comme le 11 février 2026 à chaque essai, alors qu'il s'agit du 2 novembre : le modèle suppose l'ordre américain. Et sur un relevé AWS, le total extrait (62,93) n'apparaît nulle part dans le document, qui affiche Total $54.61 : le modèle a additionné lui-même et s'est trompé.

Le tri d'e-mails durci a tenu parce que le modèle ne choisit pas l'action : le code le fait. Le modèle a bien suivi l'attaque dans sa sortie brute à 3 reprises, sans conséquence.

Comment s'y prendre

  1. Ne pas laisser le modèle noter. Lui faire extraire des faits (budget, décisionnaire, délai en semaines, taille de l'entreprise) et calculer le score dans un nœud Code.
  2. Vérifier chaque valeur extraite contre le texte source. Ce contrôle a repéré le faux total AWS 3 fois sur 3.
  3. Ajouter des règles métier que la validation de type ne voit pas : locale des dates, fenêtre de ±60 jours autour d'aujourd'hui, refus des numéros de facture commençant par « Account ».
  4. Faire citer la ligne de la base de connaissances (kb_line, ou none) et escalader en code si elle manque.
  5. Traiter un booléen manquant comme « un humain doit regarder » : escalate: null ne doit jamais valoir envoi automatique.

Pour reprendre les workflows du dépôt arkintof/n8n-ai-agent-workflows, il suffit de changer deux valeurs du nœud Config : baseUrl: 'http://127.0.0.1:11434/v1' et le nom du modèle.

Source : DEV Community. Source en anglais.