llm_ticket3/llm_classes/mistral_medium.py
2025-04-07 14:30:24 +02:00

66 lines
2.3 KiB
Python

from .base_llm import BaseLLM
import requests
import os
class MistralMedium(BaseLLM):
"""
Classe pour interagir avec le modèle Mistral Medium
"""
def __init__(self):
super().__init__("mistral-medium")
self.configurer(temperature=0.3, top_p=0.9) # Paramètres par défaut
def urlBase(self) -> str:
return "https://api.mistral.ai/v1/"
def cleAPI(self) -> str:
return "2iGzTzE9csRQ9IoASoUjplHwEjA200Vh" # Clé API d'exemple, à remplacer par la vraie clé
def urlFonction(self) -> str:
return "chat/completions"
def _preparer_contenu(self, question: str) -> dict:
"""
Prépare le contenu de la requête pour l'API Mistral
"""
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:
"""
Traite la réponse de l'API Mistral
"""
try:
data = reponse.json()
return data["choices"][0]["message"]["content"]
except Exception as e:
return f"Erreur lors du traitement de la réponse: {str(e)}\nRéponse brute: {reponse.text}"
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)