mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-15 20:56:52 +01:00
66 lines
2.3 KiB
Python
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)
|