LLM Processor

Le LLMProcessor est le cœur de l’extraction de données intelligentes. Il prend le Markdown filtré, le soumet à un Modèle de Langage (LLM) pour en extraire des horaires structurés, puis enrichit et transforme ces données.

Fonctionnalités

  • Extraction par LLM : Construit un prompt détaillé incluant le Markdown filtré et un schéma JSON, puis l’envoie à un LLM (OpenAI ou Mistral) pour obtenir des horaires au format JSON structuré.

  • Enrichissement des DonnéesPost-traite la réponse JSON du LLM pour :
    • Nettoyer les horaires spécifiques correspondant à des dates passées.

    • Enrichir les horaires des mairies et bibliothèques avec les jours fériés français à venir.

  • Conversion au Format OSM : Utilise l’utilitaire JsonToOsmConverter pour transformer la réponse JSON finale en une chaîne de caractères au format standard opening_hours.

  • Mise à Jour de la Base de Données : Sauvegarde le prompt, le JSON final, la chaîne OSM et les émissions de CO2 estimées dans la base de données via le DatabaseProcessor.

Usage

Ce processeur s’exécute après le filtrage du Markdown. Il constitue l’étape la plus coûteuse en temps et en ressources. Le résultat de son traitement (le JSON et l’OSM) est ensuite utilisé par le ComparisonProcessor.

Modules

Processeur pour les extractions LLM.

class src.smart_watch.processing.llm_processor.LLMProcessor(config: ConfigManager, logger)[source]

Bases : object

Processeur pour les extractions LLM.

__init__(config: ConfigManager, logger)[source]
_init_llm_client()[source]

Initialise le client LLM selon la configuration.

_load_schema()[source]

Charge le schéma JSON pour les structured outputs.

_convert_to_osm(llm_result: str, identifiant: str) str[source]

Convertit le résultat LLM au format OSM.

_process_special_days(llm_result: str, lieu) str[source]

Nettoie les jours spéciaux passés du JSON LLM et l’enrichit avec les jours fériés pour les types de lieux spécifiques.

_process_single_llm(resultat, lieu) Dict[str, Any][source]

Traite une extraction LLM individuelle.

process_llm_extractions(db_processor: DatabaseProcessor, execution_id: int)[source]

Traite toutes les extractions LLM pour une exécution donnée.

Paramètres:
  • db_processor (DatabaseProcessor) – Processeur de base de données

  • execution_id (int) – ID de l’exécution