Le service IA est le cœur du traitement intelligent de Mindlet. Son rôle principal est de transformer n’importe quel type de contenu (texte, PDF, images, audio, vidéos YouTube, sites web) en cartes d’apprentissage personnalisées et efficaces.
LangGraph est un framework Python développé par LangChain pour créer des workflows IA orchestrés sous forme de graphes. Contrairement à une simple chaîne linéaire de prompts, LangGraph permet :
Des branchements conditionnels : le flux de traitement s’adapte dynamiquement au contenu
Des boucles de feedback : un agent peut critiquer et améliorer itérativement son travail
Une gestion d’état explicite : chaque étape reçoit et modifie un état typé (TypedDict)
Une visualisation native : les graphes sont exportables en Mermaid pour la documentation
# Exemple simplifié : un graphe LangGraph se construit comme un DAG
workflow =StateGraph(MyState) # On définit l'état qui traverse le graphe
workflow.add_node("etape1", fonction_1) # Chaque node est une fonction Python
workflow.add_node("etape2", fonction_2)
workflow.add_edge("etape1","etape2") # Les edges connectent les nodes
graph = workflow.compile() # Le graphe compilé est invocable
Le système est organisé autour de 3 graphes LangGraph qui collaborent pour transformer du contenu brut en cartes d’apprentissage. Comprendre leurs responsabilités est essentiel pour appréhender l’architecture :
1. Embedding Graph
Le transformateur de contenu. Ce graphe prend une ressource unique (un PDF, une image, un audio…) et la convertit en “chunks” vectorisés. Il détecte automatiquement le type d’input et route vers le pipeline de traitement approprié.
2. Batch Embedding Graph
L’orchestrateur de masse. Quand un utilisateur importe plusieurs ressources à la fois, ce graphe les traite en parallèle via asyncio puis agrège les résultats. Il utilise le graphe d’embedding individuel en interne.
3. Card Generator Graph
Le créateur pédagogique. C’est un graphe “agentic” sophistiqué composé de 5 agents (Planner, Generator, Critic, Refiner, Finalizer) qui collaborent pour produire des cartes d’apprentissage de haute qualité à partir des chunks vectorisés.
flowchart LR
A["📄 Ressource brute"] --> B["🔄 Embedding Graph"]
B --> C["📊 Chunks vectorisés"]
C --> D["🎴 Card Generator"]
D --> E["✅ Cartes d'apprentissage"]
F["📚 Plusieurs ressources"] --> G["📦 Batch Embedding Graph"]
G --> B
style A fill:#1565c0,stroke:#1976d2
style B fill:#e65100,stroke:#f57c00
style C fill:#7b1fa2,stroke:#9c27b0
style D fill:#2e7d32,stroke:#388e3c
style E fill:#388e3c,stroke:#4caf50
style F fill:#1565c0,stroke:#1976d2
style G fill:#e65100,stroke:#f57c00