#!/usr/bin/env python3
"""
Module pour simuler un LLM lors des tests.
"""

from typing import Callable

class LLMMock:
    """
    Classe simulant un modèle LLM pour les tests.
    """
    
    def __init__(self, response_generator: Callable[[str], str]):
        """
        Initialise le modèle simulé avec un générateur de réponses.
        
        Args:
            response_generator: Fonction qui génère une réponse à partir d'un prompt
        """
        self.response_generator = response_generator
        self.prompt_system = ""
        self.modele = "LLMMock"
        self.version = "1.0"
        self.dureeTraitement = "0s"
    
    def interroger(self, prompt: str) -> str:
        """
        Simule l'interrogation d'un modèle LLM.
        
        Args:
            prompt: Prompt à envoyer au modèle
            
        Returns:
            Réponse simulée
        """
        return self.response_generator(prompt)
    
    def interroger_avec_image(self, image_path: str, prompt: str) -> str:
        """
        Simule l'interrogation d'un modèle LLM avec une image.
        
        Args:
            image_path: Chemin vers l'image
            prompt: Prompt à envoyer au modèle
            
        Returns:
            Réponse simulée
        """
        return self.response_generator(f"[IMAGE: {image_path}]\n{prompt}")
    
    def configurer(self, **kwargs):
        """
        Simule la configuration du modèle.
        
        Args:
            **kwargs: Paramètres de configuration
        """
        for key, value in kwargs.items():
            setattr(self, key, value)
        return self 