Aller au contenu
← Tous les articles
Article

ComfyUI-UML : des diagrammes sous forme de nœuds et d’images

Écouter en version balado

Des diagrammes sous forme de nœuds ComfyUI · 2:21 · voix synthétiques, script rédigé avec l’IA

Transcription

Sylvie : Une capture d'écran de diagramme, c'est une impasse. Impossible de corriger une faute, de la comparer à la version de la semaine dernière ou de la régénérer.

Thierry : Oui, on finit par tout redessiner.

Sylvie : C'est le point de départ de ComfyUI-UML, un projet qu'Antoine a décrit. ComfyUI sert surtout à générer des images, mais n'importe quel résultat intermédiaire peut sortir d'un nœud. Ici, du texte de diagramme entre, et une image, un fichier et un lien partageable en sortent.

Thierry : Donc la source du diagramme reste dans le workflow.

Sylvie : Exactement. Une source Mermaid ou PlantUML se relit, se compare et se régénère, et elle voyage avec le reste du workflow au lieu de devenir une image sans explication. Le README annonce vingt-huit types de diagrammes via Kroki, avec les formats validés selon le type.

Thierry : Il faut un modèle d'IA pour écrire les diagrammes ?

Sylvie : Non, c'est facultatif. Mais si un modèle en écrit un, le nœud fait le ménage. Il gère plusieurs formes de réponse, extrait les blocs de code et privilégie celui qui correspond au type choisi. Pratique quand le modèle ajoute des explications autour du Mermaid.

Thierry : Il valide aussi la syntaxe ?

Sylvie : Non, et Antoine le dit clairement. Extraire un bloc, ce n'est pas le valider. Le moteur de rendu doit encore accepter le diagramme.

Thierry : Et pour ramener l'image dans ComfyUI ?

Sylvie : Une image matricielle passe par Pillow, elle est convertie en RGB, ramenée entre zéro et un, puis emballée dans un tenseur. Le SVG, c'est plus délicat. Le code tente une conversion avec CairoSVG, et sans succès il renvoie un minuscule tenseur de remplacement tout en gardant le fichier. Le fichier sauvegardé et l'aperçu peuvent donc différer.

Thierry : Pour essayer, on fait quoi ?

Sylvie : On installe avec la commande comfy node, on redémarre ComfyUI et on ouvre l'exemple à un seul diagramme. Le nœud de diagramme vers un aperçu. Le visualiseur s'ajoute quand le rendu fonctionne.

Thierry : Un point de confidentialité ?

Sylvie : Le backend web envoie la source au service Kroki choisi. Pour une architecture sensible ou du travail hors ligne, des chemins locaux avec Mermaid et Graphviz sont documentés. L'article complet a le schéma et les liens vers le code.

Workflow de diagramme ComfyUI-UML tiré du README
Table des matières

ComfyUI devient intéressant au-delà de la génération d’images lorsqu’un résultat intermédiaire peut circuler entre des nœuds. ComfyUI-UML applique ce principe aux diagrammes : du texte entre, puis une image, un fichier et un lien peuvent en sortir.

1. Garder le code dans le workflow

Une capture se modifie mal. Une source Mermaid ou PlantUML se relit, se compare et se régénère. Le nœud conserve cette source dans le workflow plutôt que de ne laisser qu’une image sans explication.

Le README annonce 28 types de diagrammes Kroki, avec une validation des formats selon le type. Cela ne signifie pas que tous les moteurs acceptent tous les formats.

flowchart TD
  T["Texte ou sortie LLM facultative"] --> N["Normaliser la source"]
  N --> U["Nœud UMLDiagram"]
  U --> K["Rendu web Kroki"]
  U --> L["Mermaid / Graphviz locaux facultatifs"]
  K --> O["Image, fichier et URL"]
  L --> O
  O --> P["PreviewImage ou Diagram Viewer URL"]

Ce schéma décrit les rôles des nœuds. Un LLM n’est pas nécessaire.

2. Nettoyer la réponse d’un modèle

nodes/uml_diagram.py[1] normalise plusieurs formes de réponse et extrait les blocs de code. Si le type est connu, il privilégie un bloc correspondant. C’est utile lorsqu’un modèle ajoute des explications autour de Mermaid.

Extraire un bloc ne valide toutefois pas sa syntaxe. Le moteur de rendu doit encore accepter le diagramme.

3. Passer des octets à une image ComfyUI

Pour une image matricielle, le code utilise Pillow, convertit en RGB, ramène les valeurs entre zéro et un, puis construit un tenseur [1, H, W, 3].

Le SVG suit un autre chemin. Le code tente une conversion CairoSVG pour l’aperçu. Sans conversion réussie, une sortie non matricielle peut conserver son fichier tout en renvoyant un petit tenseur de remplacement. Le fichier sauvegardé et l’aperçu ne sont donc pas la même chose.

4. Commencer simplement

comfy node install comfyui-uml

Après un redémarrage, commencer par uml_single_diagram_only.json : UMLDiagram → PreviewImage. Ajouter le visualiseur lorsque le rendu fonctionne. Le dépôt fournit aussi des exemples Mermaid, PlantUML et Ollama.

Le backend web transmet la source au service Kroki choisi. Pour travailler hors ligne ou sur une architecture sensible, les chemins Mermaid et Graphviz locaux sont documentés. Mermaid local exige ses dépendances JavaScript, et l’aperçu SVG peut nécessiter CairoSVG.

5. Sources

Références

  1. antoinebou12. (). nodes/uml_diagram.py. [Source file or documentation] github.com.
  2. antoinebou12. (). ComfyUI-UML. [Software repository] github.com.
  3. antoinebou12. (). Exemples de workflows. [Source file or documentation] github.com.

Les références utilisent la date de publication de cet article.