ComfyUI Extension: FMJ-LLM

Authored by bulldog68

Created

Updated

2 stars

Advanced nodes for interaction with Olama (text, vision, image editing), with dynamic management of prompts via CSV.

Custom Nodes (0)

    README

    📩 Package : ComfyUI_FMJ_LLM

    Auteur : FMJ
    Description : NƓuds avancĂ©s pour l’interaction avec Ollama (texte, vision, Ă©dition d’image), avec gestion dynamique des prompts via CSV.

    <img width="1163" height="1209" alt="Capture d’écran du 2025-11-10 13-50-10" src="https://github.com/user-attachments/assets/91e2b3b6-f1b8-42bb-829c-d06b63daa545" />

    🧠 ComfyUI FMJ LLM — IntĂ©gration Ollama native dans ComfyUI

    GĂ©nĂ©rez, amĂ©liorez, analysez et dĂ©crivez vos prompts avec l’IA locale — directement dans ComfyUI.

    Ce pack de nƓuds personnalisĂ©s permet d’intĂ©grer Ollama (modĂšles comme llama3, qwen3, moondream, llava, etc.) directement dans vos workflows ComfyUI, sans dĂ©pendance externe ni service cloud. Tout reste 100 % local.


    🌟 FonctionnalitĂ©s principales

    đŸ”č 1. GĂ©nĂ©ration de prompts textuels avancĂ©s (🩙FMJ Ollama Prompt Generator)

    GĂ©nĂ©rez des rĂ©ponses avancĂ©es Ă  partir de n’importe quel modĂšle Ollama (notamment Qwen3, Llama 3.2, Mistral, etc.) en combinant un texte d’entrĂ©e avec un prompt systĂšme personnalisĂ© chargĂ© depuis un fichier CSV ou saisi manuellement. IdĂ©al pour automatiser des tĂąches comme la réécriture, le rĂ©sumĂ©, la traduction, l’analyse de texte, ou toute interaction structurĂ©e avec un LLM.

    ✅ Compatible avec tous les modùles chat-based via l’endpoint /api/chat d’Ollama
    ✅ OptimisĂ© pour Qwen3 (y compris les modĂšles thinking models)
    ✅ Supporte les prompts systùme dynamiques via CSV
    ✅ IntĂ©gration transparente dans ComfyUI


    đŸ“„ EntrĂ©es

    | Nom | Type | Description | |-----|------|-------------| | text (obligatoire) | STRING | Le texte Ă  traiter par le modĂšle (ex: un paragraphe Ă  rĂ©sumer, une phrase Ă  corriger, une question Ă  rĂ©pondre). Doit ĂȘtre connectĂ© depuis un nƓud en amont. | | prompt_style | LIST | SĂ©lectionnez un style de prompt prĂ©dĂ©fini depuis vos fichiers CSV (dossier csv/). Chaque style correspond Ă  une instruction systĂšme spĂ©cifique (ex: "rĂ©sumĂ©", "correction", "crĂ©ation de scĂ©nario"). | | model_name | STRING | Nom du modĂšle Ollama Ă  utiliser. Ex: qwen3:2b, llama3.2, mistral, phi3, etc. Doit ĂȘtre prĂ©sent localement (ollama list). | | ollama_url | STRING | URL de l’API Ollama. Par dĂ©faut : http://localhost:11434. Modifiez si Ollama tourne sur une autre machine ou un port personnalisĂ©. | | max_tokens | INT | Nombre maximum de tokens Ă  gĂ©nĂ©rer. Valeur typique : 256 Ă  2048. Pour Qwen3, des valeurs Ă©levĂ©es (jusqu’à 16384) sont possibles. | | temperature | FLOAT | ContrĂŽle la crĂ©ativitĂ© de la rĂ©ponse. 0.0 = dĂ©terministe, 0.7 = Ă©quilibrĂ©, 1.0+ = trĂšs crĂ©atif. | | seed | INT | Graine alĂ©atoire pour la reproductibilitĂ©. 0 = alĂ©atoire Ă  chaque appel. | | keep_alive | INT | DurĂ©e (en minutes) pendant laquelle le modĂšle reste en mĂ©moire aprĂšs utilisation. -1 = toujours chargĂ©, 0 = dĂ©charger immĂ©diatement. | | request_timeout | INT | (Nouveau) DĂ©lai maximal d’attente (en secondes) avant d’abandonner la requĂȘte. Crucial pour Qwen3 (mode raisonnement lent). Valeur recommandĂ©e : 300 (5 min). | | override_prompt (facultatif) | STRING | Remplace entiĂšrement le prompt systĂšme sĂ©lectionnĂ©. Si ce champ n’est pas vide, il ignore prompt_style. Utile pour des instructions ponctuelles. | | disable_thinking (facultatif) | BOOLEAN | (Nouveau) Si activĂ© (ON), dĂ©sactive la trace de raisonnement intermĂ©diaire de Qwen3 (think: false). RecommandĂ© pour obtenir une rĂ©ponse directe sans balises <think>...<think>. |


    đŸ“€ Sorties

    | Nom | Type | Description | |-----|------|-------------| | response | STRING | La rĂ©ponse gĂ©nĂ©rĂ©e par le modĂšle, prĂȘte Ă  ĂȘtre utilisĂ©e dans d’autres nƓuds (ex: sauvegarde, affichage, traitement ultĂ©rieur). | | debug_info | STRING | Informations de dĂ©bogage : statut, modĂšle utilisĂ©, timeout, style de prompt. Utile pour diagnostiquer les erreurs (ex: rĂ©ponse vide, modĂšle non trouvĂ©, timeout). |


    📁 Configuration : Fichiers CSV

    Le nƓud charge automatiquement tous les fichiers .csv dans le sous-dossier csv/ situĂ© au mĂȘme niveau que ce script.

    Chaque fichier CSV doit avoir exactement deux colonnes :

    • prompt_style : nom unique du style (affichĂ© dans le menu dĂ©roulant)
    • system_prompt : instruction systĂšme complĂšte envoyĂ©e au LLM

    Exemple de fichier : csv/writing_prompts.csv

    prompt_style,system_prompt
    qwen_edit,Tu es un éditeur expert. Corrige, améliore et reformule le texte suivant pour plus de clarté, de fluidité et de professionnalisme. Ne rajoute rien.
    qwen_summary,Résume le texte suivant en 2-3 phrases maximum, en français, en conservant les idées essentielles.
    creative_story,Écris une courte histoire crĂ©ative (50 mots) basĂ©e sur le thĂšme suivant :
    

    💡 Ajoutez autant de fichiers CSV que vous voulez (seo.csv, code.csv, etc.). Le nƓud les fusionne automatiquement.


    ⚠ Remarques importantes

    • Qwen3 est lent : Augmentez request_timeout si vous obtenez des erreurs de timeout.
    • Pas de rĂ©ponse ? VĂ©rifiez :
      1. Que le modÚle est bien installé (ollama list)
      2. Que le CSV contient bien le prompt_style sélectionné
      3. Que disable_thinking est activé (ON) pour éviter les sorties vides dues au parsing de <think>
    • Le nƓud utilise /api/chat, pas /api/generate → il ne fonctionne pas avec des modĂšles non-chat (ex: anciens modĂšles GGUF sans template de chat).

    đŸ§Ș Exemple d’utilisation dans ComfyUI

    1. Connectez un nƓud Text à text.
    2. Sélectionnez qwen_edit dans prompt_style.
    3. Laissez model_name = qwen3:2b.
    4. Activez disable_thinking = ON.
    5. Réglez request_timeout = 300.
    6. La sortie response contiendra le texte édité par Qwen3.


    đŸ”č 2. Analyse d’image par IA vision (đŸ‘ïž FMJ Llm Ollama Vision)

    Analysez des images avec des modĂšles multimodaux d’Ollama (Qwen3-VL, Llava, BakLLaVA, etc.) en combinant une image d’entrĂ©e avec une instruction systĂšme personnalisĂ©e chargĂ©e depuis un fichier CSV ou saisie manuellement. GĂ©nĂ©rez des descriptions dĂ©taillĂ©es, du texte alternatif, des analyses artistiques, ou toute autre interprĂ©tation visuelle pilotĂ©e par LLM.

    ✅ Compatible avec tous les modùles multimodaux via /api/chat
    ✅ OptimisĂ© pour Qwen3-VL (y compris son mode raisonnement)
    ✅ Supporte les instructions systùme dynamiques via CSV
    ✅ IntĂ©gration transparente dans ComfyUI


    đŸ“„ EntrĂ©es

    | Nom | Type | Description | |-----|------|-------------| | image (obligatoire) | IMAGE | L’image Ă  analyser, provenant d’un nƓud d’image en amont (ex: Load Image, KSampler, etc.). | | description_type | LIST | SĂ©lectionnez un type d’analyse prĂ©dĂ©fini depuis vos fichiers CSV (dossier csvv/). Chaque type correspond Ă  une instruction systĂšme spĂ©cifique (ex: "description dĂ©taillĂ©e", "texte alternatif"). | | model_name | STRING | Nom du modĂšle multimodal Ollama. Ex: qwen3-vl:2b, llava, bakllava, etc. Doit ĂȘtre installĂ© localement (ollama list). | | ollama_url | STRING | URL de l’API Ollama. Par dĂ©faut : http://localhost:11434. Modifiez en cas d’hĂ©bergement distant. | | max_tokens | INT | Nombre maximum de tokens Ă  gĂ©nĂ©rer. Valeur typique : 256–1024. Qwen3-VL supporte jusqu’à 16384. | | temperature | FLOAT | ContrĂŽle la crĂ©ativitĂ©. 0.0 = dĂ©terministe, 0.7 = Ă©quilibrĂ©. | | seed | INT | Graine alĂ©atoire pour la reproductibilitĂ©. 0 = alĂ©atoire. | | keep_alive | INT | DurĂ©e (en minutes) de mise en cache du modĂšle. -1 = toujours en mĂ©moire, 0 = dĂ©charger aprĂšs usage. | | request_timeout | INT | (Nouveau) DĂ©lai maximal d’attente (en secondes). TrĂšs important pour Qwen3-VL (peut ĂȘtre lent). Valeur recommandĂ©e : 300 (5 min). | | override_prompt (facultatif) | STRING | Remplace l’instruction systĂšme sĂ©lectionnĂ©e. Si non vide, ignore description_type. | | disable_thinking (facultatif) | BOOLEAN | (Nouveau) Si ON, dĂ©sactive la trace de raisonnement de Qwen3-VL (think: false). Fortement recommandĂ© pour obtenir une rĂ©ponse directe sans balises \<think>. |


    đŸ“€ Sorties

    | Nom | Type | Description | |-----|------|-------------| | description | STRING | Le texte gĂ©nĂ©rĂ© par le modĂšle Ă  partir de l’image et de l’instruction. PrĂȘt pour affichage, sauvegarde ou traitement ultĂ©rieur. | | debug_info | STRING | Informations de diagnostic : statut, modĂšle utilisĂ©, type d’analyse, timeout. Utile en cas d’erreur ou de rĂ©ponse vide. |


    📁 Configuration : Fichiers CSV

    Le nƓud charge automatiquement tous les fichiers .csv du sous-dossier csvv/ situĂ© au mĂȘme niveau que ce script.

    Chaque fichier doit contenir exactement deux colonnes :

    • description_type : nom du type d’analyse (affichĂ© dans le menu dĂ©roulant)
    • system_prompt : instruction systĂšme complĂšte pour guider l’analyse visuelle

    Exemple : csvv/vision_prompts.csv

    description_type,system_prompt
    detailed_vision,Donne une description détaillée, objective et complÚte de l'image. Mentionne les objets, les couleurs, les actions, le contexte et l'humeur.
    alt_text,GénÚre un texte alternatif concis (max 120 caractÚres) pour l'accessibilité web.
    art_analysis,Analyse cette Ɠuvre comme un critique d'art : style, composition, Ă©motion, Ă©poque possible.
    product_caption,Écris une lĂ©gende marketing engageante pour ce produit (max 20 mots).
    

    💡 Vous pouvez crĂ©er plusieurs fichiers (accessibility.csv, art.csv, etc.). Le nƓud les fusionne automatiquement.


    ⚠ Remarques importantes

    • Qwen3-VL est lent : Augmentez request_timeout si vous obtenez des erreurs de timeout.
    • Pas de description ? VĂ©rifiez :
      1. Que le modÚle est bien installé (ollama list)
      2. Que le fichier CSV contient le description_type sélectionné
      3. Que disable_thinking est activĂ© (ON) — c’est essentiel pour Ă©viter les rĂ©ponses vides dues au mode reasoning.
    • Ce nƓud utilise /api/chat, pas /api/generate → il ne fonctionne pas avec des modĂšles non-chat ou non-multimodaux.

    đŸ§Ș Exemple d’utilisation dans ComfyUI

    1. Connectez une image Ă  image.
    2. Sélectionnez alt_text dans description_type.
    3. Utilisez model_name = qwen3-vl:2b.
    4. Activez disable_thinking = ON.
    5. Réglez request_timeout = 300.
    6. La sortie description contiendra un texte alternatif prĂȘt pour le web.


    đŸ”č 3. Gestion centralisĂ©e d’Ollama (⚙ FMJ Llm Config)

    • SĂ©lectionnez l’URL d’Ollama (par dĂ©faut : http://localhost:11434)
    • Liste dynamique des modĂšles installĂ©s → choisissez celui Ă  utiliser
    • Branchez la sortie vers les autres nƓuds → configuration unifiĂ©e et modulaire

    đŸ”č 4. Nettoyage mĂ©moire Ă  la demande (đŸ§č FMJ Unload All LLM)

    • DĂ©charge tous les modĂšles d’Ollama de la mĂ©moire → libĂšre la RAM/VRAM
    • IdĂ©al avant un long workflow ou pour changer de modĂšle lourd
    • Aucun risque de rechargement automatique

    📩 CompatibilitĂ©

    • ✅ Ollama ≄ v0.13 (testĂ© sur Linux, Windows)

    💡 Tout tourne en local. Vos images, vos prompts, vos donnĂ©es restent sur votre machine. 💡 **Installer Ollama avant le node. https://ollama.com/