Stack technique
Voici un aperçu des technologies employées.
Langage du projet
- Python
Langage unique du projet.
Framework et bibliothèques principales
Traitement de données
- Polars
Pour le chargement et la manipulation de données tabulaires.
- SQLAlchemy
Pour la gestion de la base de données SQLite.
- SQLite
Pour stocker les résultats d’extraction et les métadonnées.
Web scraping et traitement HTML
- Inscriptis
Une bibliothèque Python de conversion HTML vers texte, avec un client en ligne de commande et un service Web.
- Requests
Bibliothèque HTTP pour récupérer le contenu des pages web.
- html2text
Conversion du HTML en Markdown pour faciliter le traitement par les modèles de langage.
Intelligence artificielle
- OpenAI API
Interface standardisée pour communiquer avec les modèles de langage.
- Mistral AI
Proposé en tant qu’alternative aux interfaces compatibles OpenAI. Utilise la librairie mistralai native.
- Embeddings
Les embeddings sont utilisés pour filtrer le contenu Markdown de manière sémantique. L’application peut fonctionner avec un modèle local via
fast-embed, ou avec un modèle distant via une API (compatible OpenAI ou Mistral). Pour un guide détaillé sur le choix du modèle le plus adapté, consultez la page Choix des embeddings.
Configuration et environnement
- python-dotenv
Gestion des variables d’environnement via fichiers
.envpour une configuration flexible.
Validation et typage des données.
Parallélisme et performance
- ThreadPoolExecutor
Traitement parallèle des URLs pour accélérer la récupération du contenu web.
Logging et monitoring
- Logging standard Python
Système de journalisation centralisé avec rotation automatique des fichiers.
- Gestion d’erreurs centralisée
Capture et traitement uniforme des exceptions avec contexte détaillé.
- CodeCarbon
Mesure les émissions de CO2 des appels aux modèles de langage pour un suivi de l’impact environnemental.
Communication
- SMTP (smtplib)
Envoi automatique des rapports par email avec support SSL/TLS.
- Jinja2
Moteur de templates pour la génération de rapports HTML personnalisés.
Déploiement
- Docker
Conteneurisation pour un déploiement simplifié et reproductible.
- GitHub Actions
CI/CD pour le déploiement Docker et de la documentation.
Génération automatique de documentation technique à partir du code.
Formats de données
- CSV
Format d’entrée pour les listes d’établissements et données de référence.
- JSON
Format intermédiaire pour les horaires extraits par les LLMs.
- OSM (OpenStreetMap)
Format de sortie standardisé pour les horaires d’ouverture.
- HTML
Format de rapport final avec visualisations interactives.