Application web intelligente de data visualisation propulsee par un systeme multi-agents LLM
Projet developpe dans le cadre du module Data Visualization du Master 2 BDIA (Big Data & Intelligence Artificielle) a l'Universite Paris Dauphine - PSL.
L'application permet de generer automatiquement des visualisations de donnees pertinentes a partir d'une problematique textuelle et d'un dataset CSV, en utilisant un systeme multi-agents base sur Claude (Anthropic).
https://dataviz-llm-app-production.up.railway.app
dataviz-llm-app/
├── dataviz_backend/
│ ├── agents/
│ │ ├── data_analyst.py # Agent 1 : Analyse des donnees
│ │ ├── viz_strategist.py # Agent 2 : Proposition de visualisations
│ │ └── code_generator.py # Agent 3 : Generation du code matplotlib
│ ├── main.py # API FastAPI + serveur frontend
│ ├── orchestrator.py # Coordination des 3 agents
│ └── models.py # Modeles Pydantic
├── dataviz_front/
│ ├── index.html # Interface utilisateur (HTML + JS inline)
│ └── style.css # Styles CSS
├── tests/
│ ├── test_api.py # Tests des endpoints API
│ └── test_agents.py # Tests des agents
├── pyproject.toml # Configuration projet (uv)
├── requirements.txt # Dependances Python
├── Dockerfile # Configuration Docker
├── Procfile # Configuration Railway
└── README.md
L'application utilise 3 agents LLM specialises, orchestres sequentiellement :
-
Data Analyst Agent : Analyse le dataset CSV et comprend la problematique de l'utilisateur. Retourne un resume structure (insights, colonnes pertinentes, approche recommandee).
-
Viz Strategist Agent : Propose exactement 3 visualisations differentes (types de graphiques distincts), chacune justifiee par rapport a la problematique et conforme aux bonnes pratiques de data visualization.
-
Code Generator Agent : Genere du code Python (matplotlib/seaborn) via le LLM, l'execute cote serveur, et retourne l'image en base64. Inclut un mecanisme de retry (3 tentatives) et un fallback deterministe.
- Python 3.11+
- uv (gestionnaire de paquets)
- Cle API Anthropic (Claude)
# Cloner le repository
git clone https://github.com/keita223/dataviz-llm-app.git
cd dataviz-llm-app
# Installer les dependances avec uv
uv sync
# Ou avec pip
pip install -r requirements.txt
# Configurer la cle API
cp .env.example .env
# Editer .env et ajouter : ANTHROPIC_API_KEY=sk-ant-...
# Activer l'environnement virtuel
source .venv/bin/activate # Linux/Mac
.venv\Scripts\Activate.ps1 # Windowspython -m uvicorn dataviz_backend.main:app --reloadL'application est accessible sur http://127.0.0.1:8000
Documentation API interactive : http://127.0.0.1:8000/docs
- Upload de fichiers CSV avec drag & drop
- Analyse automatique des donnees via LLM (Claude Haiku)
- Proposition de 3 visualisations pertinentes avec types differents
- Generation automatique du graphique matplotlib/seaborn
- Affichage du code Python genere (transparence)
- Export / telechargement en PNG
- Respect des bonnes pratiques de data visualization (lisibilite, data-ink ratio, absence de chartjunk)
# Installer les dependances de test
pip install pytest pytest-asyncio httpx
# Lancer les tests
pytest tests/ -v- Backend : FastAPI, Python 3.11+
- LLM : Claude Haiku (Anthropic API)
- Visualisation : matplotlib, seaborn
- Frontend : HTML/CSS/JS vanilla (servi par FastAPI)
- Deploiement : Railway (Docker)
- Gestionnaire de paquets : uv
Reviewer : Hadrien Mariaccia - Enseignant
MIT License - voir le fichier LICENSE
Projet realise dans le cadre du cours de Data Visualization - Master 2 BDIA Universite Paris Dauphine - PSL