alihmaou commited on
Commit
8c62b2c
·
verified ·
1 Parent(s): 7b7c5ec

Upload doc.py

Browse files
Files changed (1) hide show
  1. doc.py +78 -0
doc.py ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ def getDoc():
4
+ return """# DrawItToMe : transformer du texte en diagrammes Mermaid
5
+
6
+ ## Présentation
7
+
8
+ **DrawItToMe** est une application web qui convertit des descriptions textuelles en diagrammes Mermaid, grâce à une combinaison de technologies open-source et de modèles de langage performants. L’application propose une interface simple pour générer automatiquement des visualisations compréhensibles à partir de texte libre.
9
+
10
+ ---
11
+
12
+ ## Architecture générale
13
+
14
+ L’application repose sur quatre composants principaux :
15
+
16
+ [![Aperçu du pipeline](https://kroki.io/mermaid/svg/eNpNjkFOwzAURPecYi5QkGBfKYmhCiTQkohN1IWVfForjR1-vgsLX6jn6MWwzIZZjvTezIH1fESrbhCTdaUV4k_dE7yYk1m0kGdsWA_G7bFarcOjFb5eCEI_QgF517I2QhNZgfL9qPK7p5Prx7qt9kmaJ2zLbpoFi7DvxUdDQNFl2zK63Reqqsbumywe7vM_qkjU-_UyO7sQnpu31zj2T1i4gVATT9oMAapriM8m_o4tkx08XtiN5jbeTpBKUDnpA6H52ARkvxuPUUw=)](https://kroki.io/mermaid/svg/eNpNjkFOwzAURPecYi5QkGBfKYmhCiTQkohN1IWVfForjR1-vgsLX6jn6MWwzIZZjvTezIH1fESrbhCTdaUV4k_dE7yYk1m0kGdsWA_G7bFarcOjFb5eCEI_QgF517I2QhNZgfL9qPK7p5Prx7qt9kmaJ2zLbpoFi7DvxUdDQNFl2zK63Reqqsbumywe7vM_qkjU-_UyO7sQnpu31zj2T1i4gVATT9oMAapriM8m_o4tkx08XtiN5jbeTpBKUDnpA6H52ARkvxuPUUw=)
17
+
18
+ 1. **Interface utilisateur (Gradio)**
19
+ Une interface légère développée en Python avec Gradio, structurée autour de champs de saisie textuelle, d'onglets, et de retours visuels immédiats.
20
+
21
+ 2. **Orchestration (DuckDB + FlockMTL)**
22
+ L’application utilise DuckDB enrichi de l’extension FlockMTL pour :
23
+ - la gestion sécurisée des secrets d’API,
24
+ - la structuration et le versionnage des prompts envoyés au modèle,
25
+ - le traitement des retours JSON.
26
+
27
+ 3. **Modèle de génération (Qwen 32B via Groq)**
28
+ Le texte est envoyé à un modèle LLM déployé sur l’infrastructure Groq. Ce modèle retourne un code Mermaid structuré, ainsi que le type de diagramme le plus adapté.
29
+
30
+ 4. **Rendu graphique (Kroki.io)**
31
+ Le code Mermaid est encodé et compressé dans une URL, puis envoyé à Kroki.io pour générer une image SVG, affichée directement dans l’application.
32
+
33
+ ---
34
+
35
+ ## Défis techniques
36
+
37
+ ### 1. Fiabilité des réponses JSON
38
+
39
+ Les LLM génèrent parfois des structures JSON incorrectes.
40
+ **Solution** : Utilisation de FlockMTL pour forcer un format strict, avec validation automatique des champs `mermaid_code` et `mermaid_diag_type`.
41
+
42
+ ### 2. Rendu sans backend
43
+
44
+ L’objectif était d’éviter une API de rendu côté serveur.
45
+ **Solution** : Encodage du code Mermaid dans l’URL, compressé avec zlib, puis envoyé à Kroki en lecture seule. Cela élimine le besoin d'une infrastructure dédiée.
46
+
47
+ ### 3. Choix du modèle LLM
48
+
49
+ Plusieurs modèles ont été testés.
50
+ **Conclusion** : Qwen 32B offre un bon compromis entre performance, latence et consommation. Il est capable de générer des structures Mermaid syntaxiquement valides avec un coût modéré.
51
+
52
+ ---
53
+
54
+ ## Sécurité
55
+
56
+ - Les clés API ne sont jamais persistées, uniquement stockées temporairement en mémoire.
57
+ - Aucune donnée utilisateur n’est enregistrée.
58
+ - Kroki.io est utilisé comme service de rendu externe, limitant les risques liés au traitement local.
59
+
60
+ ---
61
+
62
+ ## Perspectives
63
+
64
+ L’architecture de DrawItToMe permet d’envisager des évolutions :
65
+ - Support d’autres formats de diagrammes (PlantUML, GraphViz),
66
+ - Édition visuelle du code Mermaid,
67
+ - Collaboration en temps réel,
68
+ - Thématisation des diagrammes.
69
+
70
+ ---
71
+
72
+ ## Conclusion
73
+
74
+ DrawItToMe démontre qu’il est possible de bâtir une application utile et modulaire en s’appuyant sur des composants open-source spécialisés. La combinaison DuckDB + FlockMTL + Groq + Kroki permet de transformer du texte libre en visualisation structurée de manière fiable, sans compromis sur l’ergonomie ou la robustesse.
75
+
76
+ ---
77
+
78
+ """