from .base_llm import BaseLLM
import requests
import os

class MistralLarge(BaseLLM):

    def __init__(self):
        super().__init__("mistral-large-latest")
        self.configurer(temperature=0.2, top_p=1)

    def urlBase(self) -> str:
        return "https://api.mistral.ai/v1/"

    def cleAPI(self) -> str:
        return "2iGzTzE9csRQ9IoASoUjplHwEjA200Vh"

    def urlFonction(self) -> str:
        return "chat/completions"

    def _preparer_contenu(self, question: str) -> dict:
        return {
            "model": self.modele,
            "messages": [
                {"role": "system", "content": self.prompt_system},
                {"role": "user", "content": question}
            ],
            **self.params
        }

    def _traiter_reponse(self, reponse: requests.Response) -> str:
        data = reponse.json()
        return data["choices"][0]["message"]["content"]
        
    def interroger_avec_image(self, image_path: str, question: str) -> str:
        """
        Ce modèle ne supporte pas directement l'analyse d'images, cette méthode est fournie
        pour la compatibilité avec l'interface BaseLLM mais utilise uniquement le texte.
        
        Args:
            image_path: Chemin vers l'image à analyser (ignoré par ce modèle)
            question: Question ou instructions pour l'analyse
            
        Returns:
            Réponse du modèle à la question, en indiquant que l'analyse d'image n'est pas supportée
        """
        image_name = os.path.basename(image_path)
        prompt = f"""[Note: Ce modèle n'a pas accès à l'image demandée: {image_name}]

Question concernant l'image: 
{question}

Veuillez noter que je ne peux pas traiter directement les images. Voici une réponse basée uniquement sur le texte de la question."""
        
        return self.interroger(prompt)
