mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-13 15:46:52 +01:00
24041034llamaupdate1.1
This commit is contained in:
parent
ea881dd9b4
commit
a93584754e
@ -1,4 +0,0 @@
|
||||
Émetteur,Type,Date,Contenu,Éléments visuels
|
||||
Client,Question,Inconnu,Contenu insuffisant pour l'analyse,Aucun
|
||||
Client,Image 1,Inconnu,Configuration du serveur Tomcat (Apache Tomcat / 9.0.31),"Capture d'écran de la page de configuration du serveur Tomcat, y compris les informations ""statut du serveur"", ""OS"" et ""JVM"""
|
||||
Client,Image 2,Inconnu,Rapport du système de logiciel de laboratoire ou LIMS,"Rapport généré par les logiciels de laboratoire ou le système LIMS, y compris les numéros d'échantillons, les dates, les types de matériaux et les noms de test"
|
||||
|
@ -21,15 +21,17 @@ from llm_classes.llama_vision import LlamaVision
|
||||
|
||||
logger = logging.getLogger("AgentFactoryLlamaVision")
|
||||
|
||||
# Configuration constante pour le nom du modèle (évite les incohérences)
|
||||
DEFAULT_MODEL_NAME = "llama3-vision-90b-instruct"
|
||||
|
||||
class AgentFactoryLlamaVision:
|
||||
"""
|
||||
Factory pour les agents LLM dédié exclusivement à Llama_vision.
|
||||
Assure la cohérence d'utilisation du modèle pour tous les agents.
|
||||
"""
|
||||
|
||||
DEFAULT_MODEL_NAME = "llama3.2-vision:90b-instruct-q8_0"
|
||||
|
||||
def __init__(self, model_name: str = DEFAULT_MODEL_NAME):
|
||||
self.model_name = model_name
|
||||
|
||||
@staticmethod
|
||||
def create_llm(model_name: Optional[str] = None) -> LlamaVision:
|
||||
"""
|
||||
@ -42,7 +44,7 @@ class AgentFactoryLlamaVision:
|
||||
Returns:
|
||||
Instance configurée de LlamaVision
|
||||
"""
|
||||
actual_model = model_name if model_name else DEFAULT_MODEL_NAME
|
||||
actual_model = model_name if model_name else AgentFactoryLlamaVision.DEFAULT_MODEL_NAME
|
||||
logger.info(f"Initialisation du modèle llama_vision (modèle: {actual_model})")
|
||||
|
||||
# Assurer que le nom du modèle est normalisé pour éviter les doublons dans les noms de fichiers
|
||||
@ -136,7 +138,7 @@ class AgentFactoryLlamaVision:
|
||||
Dictionnaire contenant tous les agents créés
|
||||
"""
|
||||
# Utiliser un modèle explicite pour tous les agents
|
||||
logger.info(f"Création de tous les agents avec instances LLM indépendantes (modèle: {model_name or DEFAULT_MODEL_NAME})")
|
||||
logger.info(f"Création de tous les agents avec instances LLM indépendantes (modèle: {model_name or AgentFactoryLlamaVision.DEFAULT_MODEL_NAME})")
|
||||
|
||||
# Créer une instance partagée du modèle LLM pour maintenir la cohérence
|
||||
llm = AgentFactoryLlamaVision.create_llm(model_name)
|
||||
|
||||
@ -240,82 +240,66 @@ Structure your analysis clearly with headers and bullet points.
|
||||
|
||||
def executer(self, image_path: str, contexte: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
|
||||
"""
|
||||
Analyse une image dans le contexte d'un ticket de support.
|
||||
|
||||
Args:
|
||||
image_path: Chemin vers l'image à analyser
|
||||
contexte: Contexte d'analyse du ticket (optionnel)
|
||||
|
||||
Returns:
|
||||
Dictionnaire contenant les résultats d'analyse
|
||||
Exécute l'analyse d'une image en utilisant les capacités du LLM.
|
||||
"""
|
||||
image_name = os.path.basename(image_path)
|
||||
print(f" AgentImageAnalyser: Analyse de {image_name}")
|
||||
|
||||
if not image_path or not os.path.exists(image_path):
|
||||
return self._error_response(f"Image introuvable: {image_path}")
|
||||
|
||||
# Si pas de contexte, utiliser un objet vide
|
||||
if contexte is None:
|
||||
contexte = {}
|
||||
|
||||
# Extraire le ticket_id pour la sauvegarde
|
||||
ticket_id = self._extraire_ticket_id(image_path, contexte)
|
||||
|
||||
|
||||
nom_image = os.path.basename(image_path)
|
||||
logger.info(f"Début de l'analyse de l'image {nom_image}")
|
||||
|
||||
try:
|
||||
# Générer le prompt avec le contexte et les résultats OCR
|
||||
if not self._verifier_image(image_path):
|
||||
return self._erreur(f"Image invalide ou inaccessible: {image_path}", path=image_path)
|
||||
|
||||
ticket_id = self._extraire_ticket_id(image_path, contexte)
|
||||
prompt = self._construire_prompt(image_path, contexte)
|
||||
|
||||
# Interroger le modèle avec l'image
|
||||
if hasattr(self.llm, "interroger_avec_image"):
|
||||
response_en = self.llm.interroger_avec_image(image_path, prompt, english_only=True)
|
||||
|
||||
if not self.llm.peut_analyser_images():
|
||||
return self._erreur("Le modèle ne supporte pas l'analyse d'images", path=image_path)
|
||||
|
||||
reponse = self.llm.interroger_avec_image(image_path, prompt)
|
||||
if self._verifier_reponse_invalide(reponse):
|
||||
return self._erreur(f"Réponse invalide du modèle pour {image_path}", path=image_path)
|
||||
|
||||
# Vérifier si une traduction est nécessaire
|
||||
if not self.llm.mode_anglais_uniquement:
|
||||
reponse_en = reponse
|
||||
reponse_fr = self.llm.traduire(reponse)
|
||||
else:
|
||||
return self._error_response("Le modèle ne supporte pas l'analyse d'images", ticket_id)
|
||||
|
||||
# Traduire les résultats en français pour la compatibilité
|
||||
response_fr = en_to_fr(response_en)
|
||||
|
||||
# Nettoyer le nom du modèle pour éviter les doublons
|
||||
model_name = getattr(self.llm, "modele", "unknown")
|
||||
if model_name.startswith("image_"):
|
||||
model_name = model_name[6:] # Supprimer le préfixe redondant
|
||||
|
||||
# Formater la réponse avec métadonnées
|
||||
result = {
|
||||
"analyse": response_fr,
|
||||
"analyse_en": response_en,
|
||||
reponse_en = reponse
|
||||
reponse_fr = None
|
||||
|
||||
# Utiliser le nom normalisé du modèle s'il existe
|
||||
model_name = getattr(self.llm, "pipeline_normalized_name", None)
|
||||
if model_name is None:
|
||||
model_name = getattr(self.llm, "modele", "llama3-vision-90b-instruct")
|
||||
|
||||
resultat = {
|
||||
"timestamp": self._get_timestamp(),
|
||||
"image": nom_image,
|
||||
"ticket_id": ticket_id,
|
||||
"analyse": {
|
||||
"en": reponse_en,
|
||||
"fr": reponse_fr if reponse_fr else reponse_en
|
||||
},
|
||||
"metadata": {
|
||||
"image_path": image_path,
|
||||
"image_name": image_name,
|
||||
"ticket_id": ticket_id,
|
||||
"timestamp": self._get_timestamp(),
|
||||
"ocr_used": "ocr_text" in contexte or "ocr_info" in contexte,
|
||||
"model_info": {
|
||||
"model": model_name,
|
||||
**self.params
|
||||
"name": model_name,
|
||||
"type": "vision",
|
||||
"parameters": self.llm.params
|
||||
},
|
||||
"source_agent": self.nom
|
||||
"image_path": image_path,
|
||||
"success": True
|
||||
}
|
||||
}
|
||||
|
||||
# Sauvegarder les résultats
|
||||
if ticket_id and ticket_id != "UNKNOWN":
|
||||
sauvegarder_donnees(ticket_id, "analyse_image",
|
||||
{"image_path": image_path, "analysis": result},
|
||||
is_resultat=True)
|
||||
|
||||
# Ajouter à l'historique
|
||||
self.ajouter_historique(
|
||||
"analyse_image",
|
||||
{"image_path": image_path, "prompt": prompt},
|
||||
result
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
|
||||
logger.info(f"Analyse de {nom_image} terminée avec succès")
|
||||
return resultat
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Erreur lors de l'analyse de l'image {image_name}: {str(e)}")
|
||||
return self._error_response(f"Erreur: {str(e)}", ticket_id)
|
||||
logger.error(f"Erreur lors de l'analyse de {image_path}: {str(e)}")
|
||||
return self._erreur(f"Erreur lors de l'analyse: {str(e)}", path=image_path)
|
||||
|
||||
def _corriger_termes_courants(self, texte: str) -> str:
|
||||
"""
|
||||
@ -408,4 +392,40 @@ Structure your analysis clearly with headers and bullet points.
|
||||
"ticket_id": ticket_id,
|
||||
"source_agent": self.nom
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
def _verifier_reponse_invalide(self, response: str) -> bool:
|
||||
"""
|
||||
Vérifie si la réponse du modèle est invalide ou inappropriée
|
||||
|
||||
Args:
|
||||
response: Réponse du modèle à analyser
|
||||
|
||||
Returns:
|
||||
True si la réponse est invalide, False sinon
|
||||
"""
|
||||
response_lower = response.lower()
|
||||
|
||||
# Vérifier les marqueurs d'échec courants
|
||||
invalid_markers = [
|
||||
"i cannot", "unable to", "i'm unable", "i am unable",
|
||||
"i don't see", "i do not see", "i can't see", "cannot see",
|
||||
"sorry, i cannot", "i apologize", "not able to"
|
||||
]
|
||||
|
||||
# Si la réponse est vide ou trop courte
|
||||
if not response or len(response.strip()) < 20:
|
||||
return True
|
||||
|
||||
# Si la réponse contient des marqueurs d'échec
|
||||
for marker in invalid_markers:
|
||||
if marker in response_lower:
|
||||
# Vérifier qu'il s'agit bien d'un échec global et non d'une réponse légitime
|
||||
# qui inclut ces termes dans un contexte différent
|
||||
context_words = ["but i can", "however", "nevertheless", "although", "can describe"]
|
||||
has_context = any(context in response_lower for context in context_words)
|
||||
|
||||
if not has_context and marker in response_lower[:100]:
|
||||
return True
|
||||
|
||||
return False
|
||||
@ -141,6 +141,11 @@ IMPORTANT: All responses should be in English. Translation to French will be han
|
||||
Returns:
|
||||
Dictionnaire contenant les résultats d'analyse
|
||||
"""
|
||||
# Récupérer et normaliser le nom du modèle dès le début
|
||||
model_name = getattr(self.llm, "modele", "llama3-vision-90b-instruct")
|
||||
if model_name:
|
||||
model_name = model_name.replace(".", "-").replace(":", "-").replace("_", "-")
|
||||
|
||||
# Récupérer le ticket_id correctement, avec vérification
|
||||
ticket_id = ticket_data.get("ticket_id", "")
|
||||
if not ticket_id or ticket_id == "UNKNOWN":
|
||||
@ -173,13 +178,34 @@ IMPORTANT: All responses should be in English. Translation to French will be han
|
||||
"metadata": {
|
||||
"timestamp": self._get_timestamp(),
|
||||
"source_agent": self.nom,
|
||||
"ticket_id": ticket_id
|
||||
"ticket_id": ticket_id,
|
||||
"model_info": {
|
||||
"model": model_name,
|
||||
**self.params
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try:
|
||||
# Traduire le contenu en anglais pour le LLM si nécessaire
|
||||
ticket_content_en = fr_to_en(ticket_content)
|
||||
# S'assurer que le contenu est en anglais pour l'analyser avec LlamaVision
|
||||
ticket_content_original = ticket_content
|
||||
is_translated = False
|
||||
|
||||
# Vérifier d'abord si content_en existe dans les données du ticket
|
||||
if "content_en" in ticket_data:
|
||||
logger.info(f"Utilisation du contenu déjà traduit pour le ticket {ticket_id}")
|
||||
ticket_content_en = ticket_data["content_en"]
|
||||
is_translated = True
|
||||
# Si le contenu est déjà marqué comme étant en anglais
|
||||
elif ticket_data.get("is_english", False):
|
||||
logger.info(f"Le contenu est déjà en anglais pour le ticket {ticket_id}")
|
||||
ticket_content_en = ticket_content
|
||||
else:
|
||||
# Traduire le contenu en anglais pour l'analyse
|
||||
logger.info(f"Traduction du contenu du ticket {ticket_id} en anglais")
|
||||
ticket_content_en = fr_to_en(ticket_content)
|
||||
is_translated = True
|
||||
logger.info(f"Traduction terminée, {len(ticket_content_en)} caractères")
|
||||
|
||||
# Générer le prompt d'analyse
|
||||
prompt = self._generer_prompt({"ticket_id": ticket_id, "content": ticket_content_en})
|
||||
@ -201,7 +227,7 @@ IMPORTANT: All responses should be in English. Translation to French will be han
|
||||
|
||||
# Formater la réponse
|
||||
result = {
|
||||
"prompt": ticket_content,
|
||||
"prompt": ticket_content_original,
|
||||
"prompt_en": ticket_content_en,
|
||||
"response": response_fr,
|
||||
"response_en": response_en,
|
||||
@ -211,11 +237,12 @@ IMPORTANT: All responses should be in English. Translation to French will be han
|
||||
"source_agent": self.nom,
|
||||
"ticket_id": ticket_id,
|
||||
"model_info": {
|
||||
"model": getattr(self.llm, "modele", str(type(self.llm))),
|
||||
"model": model_name,
|
||||
**self.params
|
||||
},
|
||||
"language": "en-fr",
|
||||
"translation_markers": True
|
||||
"translation_markers": True,
|
||||
"is_translated": is_translated
|
||||
}
|
||||
}
|
||||
|
||||
@ -279,6 +306,10 @@ IMPORTANT: All responses should be in English. Translation to French will be han
|
||||
"timestamp": self._get_timestamp(),
|
||||
"source_agent": self.nom,
|
||||
"ticket_id": ticket_id,
|
||||
"model_info": {
|
||||
"model": model_name,
|
||||
**self.params
|
||||
},
|
||||
"error": True
|
||||
}
|
||||
}
|
||||
|
||||
114
main_llama.py
114
main_llama.py
@ -5,11 +5,12 @@ import sys
|
||||
import argparse
|
||||
import logging
|
||||
import json
|
||||
from typing import Dict, Any
|
||||
import traceback
|
||||
|
||||
from agent_factory_llama import AgentFactoryLlamaVision, DEFAULT_MODEL_NAME
|
||||
from agent_factory_llama import AgentFactoryLlamaVision
|
||||
from orchestrator_llama import OrchestratorLlamaVision
|
||||
from agents.utils.report_csv_exporter import traiter_rapports_ticket
|
||||
from llm_classes.llama_vision import LlamaVision
|
||||
|
||||
# Configuration du logging
|
||||
logging.basicConfig(level=logging.INFO,
|
||||
@ -28,8 +29,8 @@ def parse_arguments():
|
||||
parser.add_argument("--output_dir", default="output", help="Répertoire de sortie (par défaut: output)")
|
||||
|
||||
# Paramètre pour définir le modèle LlamaVision à utiliser
|
||||
parser.add_argument("--model", default=DEFAULT_MODEL_NAME,
|
||||
help=f"Modèle LlamaVision à utiliser (par défaut: {DEFAULT_MODEL_NAME})")
|
||||
parser.add_argument("--model", default=AgentFactoryLlamaVision.DEFAULT_MODEL_NAME,
|
||||
help=f"Modèle LlamaVision à utiliser (par défaut: {AgentFactoryLlamaVision.DEFAULT_MODEL_NAME})")
|
||||
|
||||
# Options de configuration
|
||||
parser.add_argument("--no-dedup", action="store_true", help="Désactiver le préfiltrage des doublons d'images")
|
||||
@ -50,74 +51,103 @@ def parse_arguments():
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
def main():
|
||||
"""Fonction principale pour l'analyse des tickets de support avec LlamaVision."""
|
||||
def main(ticket_id=None):
|
||||
"""
|
||||
Fonction principale pour l'analyse d'un ticket avec le modèle LlamaVision
|
||||
"""
|
||||
args = parse_arguments()
|
||||
|
||||
# Utiliser l'argument passé en ligne de commande s'il existe
|
||||
if args.ticket_id:
|
||||
ticket_id = args.ticket_id
|
||||
|
||||
# Vérifier que le ticket_id est fourni
|
||||
if not ticket_id:
|
||||
print(f"Erreur: ID de ticket requis. Utilisation: python {os.path.basename(__file__)} TICKET_ID")
|
||||
sys.exit(1)
|
||||
|
||||
# Configuration du niveau de log
|
||||
if args.debug:
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
logger.debug("Mode debug activé")
|
||||
|
||||
# Configuration de l'orchestrateur
|
||||
config = {
|
||||
"dedup_enabled": not args.no_dedup,
|
||||
"dedup_threshold": args.seuil,
|
||||
"save_results": args.save_results,
|
||||
"debug_mode": args.debug,
|
||||
"reports_dir": args.reports_dir,
|
||||
"ocr_enabled": not args.no_ocr,
|
||||
"english_only": not args.no_english,
|
||||
"model_name": args.model # Ajouter explicitement le nom du modèle à la configuration
|
||||
}
|
||||
|
||||
logger.info(f"Configuration: {json.dumps(config, indent=2)}")
|
||||
|
||||
# Modèle LlamaVision
|
||||
try:
|
||||
# Initialisation des agents avec le modèle LlamaVision spécifié
|
||||
logger.info(f"Utilisation du modèle LlamaVision: {args.model}")
|
||||
agents = AgentFactoryLlamaVision.create_all_agents(model_name=args.model)
|
||||
model_name = args.model
|
||||
# Initialiser le modèle LlamaVision
|
||||
logger.info(f"Initialisation du modèle LlamaVision: {model_name}")
|
||||
modele_llama = LlamaVision(model_name)
|
||||
modele_llama.configurer(temperature=0.2, top_p=0.9, max_tokens=4000)
|
||||
|
||||
# Initialiser les agents avec LlamaVision
|
||||
logger.info("Création des agents avec LlamaVision")
|
||||
factory = AgentFactoryLlamaVision()
|
||||
agents = factory.create_all_agents(model_name=model_name)
|
||||
|
||||
# Récupérer les agents individuels
|
||||
ticket_agent = agents.get("ticket_analyser")
|
||||
image_sorter = agents.get("image_sorter")
|
||||
image_analyser = agents.get("image_analyser")
|
||||
report_generator = agents.get("report_generator")
|
||||
|
||||
# Configuration de l'orchestrateur
|
||||
config = {
|
||||
"dedup_enabled": not args.no_dedup,
|
||||
"dedup_threshold": args.seuil,
|
||||
"save_results": args.save_results,
|
||||
"debug_mode": args.debug,
|
||||
"reports_dir": args.reports_dir,
|
||||
"ocr_enabled": not args.no_ocr,
|
||||
"english_only": True, # S'assurer que le contenu est traduit en anglais
|
||||
"model_name": model_name # Utiliser le même nom de modèle partout
|
||||
}
|
||||
|
||||
logger.info(f"Configuration: {json.dumps(config, indent=2)}")
|
||||
|
||||
# Application des skips
|
||||
if args.skip_ticket_analysis:
|
||||
logger.info("Étape d'analyse du ticket désactivée")
|
||||
agents["ticket_analyser"] = None
|
||||
ticket_agent = None
|
||||
if args.skip_image_sorting:
|
||||
logger.info("Étape de tri d'images désactivée")
|
||||
agents["image_sorter"] = None
|
||||
image_sorter = None
|
||||
if args.skip_image_analysis:
|
||||
logger.info("Étape d'analyse d'images désactivée")
|
||||
agents["image_analyser"] = None
|
||||
image_analyser = None
|
||||
if args.skip_report:
|
||||
logger.info("Étape de génération de rapport désactivée")
|
||||
agents["report_generator"] = None
|
||||
report_generator = None
|
||||
|
||||
# Orchestrateur LlamaVision
|
||||
# Créer l'orchestrateur
|
||||
logger.info(f"Création de l'orchestrateur pour le ticket {ticket_id}")
|
||||
orchestrator = OrchestratorLlamaVision(
|
||||
output_dir=args.output_dir,
|
||||
ticket_agent=agents.get("ticket_analyser"),
|
||||
image_sorter=agents.get("image_sorter"),
|
||||
image_analyser=agents.get("image_analyser"),
|
||||
report_generator=agents.get("report_generator"),
|
||||
ticket_agent=ticket_agent,
|
||||
image_sorter=image_sorter,
|
||||
image_analyser=image_analyser,
|
||||
report_generator=report_generator,
|
||||
config=config
|
||||
)
|
||||
|
||||
logger.info(f"Lancement de l'analyse du ticket {args.ticket_id}")
|
||||
orchestrator.executer(args.ticket_id)
|
||||
logger.info(f"Analyse du ticket {args.ticket_id} terminée avec succès")
|
||||
# Exécuter l'analyse
|
||||
logger.info(f"Démarrage de l'analyse du ticket {ticket_id}")
|
||||
orchestrator.executer(ticket_id)
|
||||
logger.info(f"Analyse du ticket {ticket_id} terminée")
|
||||
|
||||
# Génération des fichiers CSV si un rapport a été généré
|
||||
if agents.get("report_generator") and not args.skip_report:
|
||||
if report_generator and not args.skip_report:
|
||||
try:
|
||||
logger.info(f"Génération des fichiers CSV pour le ticket {args.ticket_id}")
|
||||
traiter_rapports_ticket(args.ticket_id)
|
||||
logger.info(f"Génération des fichiers CSV pour le ticket {ticket_id}")
|
||||
traiter_rapports_ticket(ticket_id)
|
||||
logger.info("Fichiers CSV générés avec succès")
|
||||
except Exception as e:
|
||||
logger.error(f"Erreur lors de la génération des fichiers CSV: {e}", exc_info=True)
|
||||
|
||||
logger.error(f"Erreur lors de la génération des fichiers CSV: {e}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Erreur lors de l'exécution : {e}", exc_info=True)
|
||||
return 1
|
||||
logger.error(f"Erreur: {e}")
|
||||
if args.debug:
|
||||
traceback.print_exc()
|
||||
sys.exit(1)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
@ -89,11 +89,14 @@ class OrchestratorLlamaVision:
|
||||
|
||||
# Récupérer le nom du modèle pour le logging
|
||||
model_name = self.config.get("model_name", "llama3-vision-90b-instruct")
|
||||
# Normaliser pour éviter les problèmes dans les noms de fichiers
|
||||
model_name = model_name.replace(".", "-").replace(":", "-").replace("_", "-")
|
||||
logger.info(f"Utilisation du modèle: {model_name}")
|
||||
|
||||
json_path = self.ticket_loader.trouver_ticket(extraction_path, ticket_id)
|
||||
ticket_data = self._charger_ticket(json_path)
|
||||
if not ticket_data:
|
||||
logger.error(f"Impossible de charger les données du ticket {ticket_id}")
|
||||
return
|
||||
|
||||
# Ajouter le chemin du fichier JSON au ticket_data pour faciliter l'extraction du ticket_id
|
||||
@ -101,10 +104,24 @@ class OrchestratorLlamaVision:
|
||||
ticket_data["file_path"] = json_path
|
||||
|
||||
# Traduire le contenu du ticket en anglais avant l'analyse
|
||||
if self.config.get("english_only") and ticket_data.get("content"):
|
||||
# et stocker la version originale
|
||||
if self.config.get("english_only", True) and ticket_data.get("content"):
|
||||
logger.info(f"Traduction du contenu du ticket {ticket_id} en anglais")
|
||||
ticket_data["content_original"] = ticket_data["content"]
|
||||
ticket_data["content"] = fr_to_en(ticket_data["content"])
|
||||
|
||||
# Vérifier si le contenu est déjà en anglais (détection simple)
|
||||
english_indicators = ["the ", "is ", "are ", "what ", "when ", "how ", "why "]
|
||||
if any(indicator in ticket_data["content"].lower() for indicator in english_indicators):
|
||||
logger.info("Le contenu semble déjà être en anglais, pas de traduction nécessaire")
|
||||
ticket_data["is_english"] = True
|
||||
ticket_data["content_en"] = ticket_data["content"]
|
||||
else:
|
||||
# Traduire en anglais
|
||||
ticket_data["content_en"] = fr_to_en(ticket_data["content"])
|
||||
ticket_data["is_english"] = False
|
||||
# Pour LlamaVision, nous utilisons la version anglaise comme contenu principal
|
||||
ticket_data["content"] = ticket_data["content_en"]
|
||||
|
||||
logger.info(f"Traduction terminée: {len(ticket_data['content'])} caractères")
|
||||
|
||||
# Étape 1: Analyser le ticket (si l'agent est disponible)
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
[
|
||||
{
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image.png",
|
||||
"analysis": {
|
||||
"analyse": "** Analyse d'image **\n\nL'image fournie semble être une capture d'écran d'une page Web affichant la page d'accueil d'Apache Tomcat par défaut. La page indique que Tomcat a été configuré avec succès.\n\n** Description détaillée **\n\n* Le haut de la page affiche le texte \"Apache Tomcat X +\" avec un logo.\n* En dessous du logo, il y a un message indiquant que la configuration a réussi: \"Cela fonctionne! Si vous voyez cette page via un navigateur Web, cela signifie que vous configurez Tomcat avec succès. Félicitations!\"\n* La page fournit des informations sur l'emplacement de la page d'accueil par défaut du système de fichiers local: \"/var/lib/tomcat7/webapps/root/index.html\".\n* Il existe également des informations sur les chemins d'installation pour Catalina_Home et Catalina_Base.\n* La page suggère d'installer des packages supplémentaires, notamment Tomcat7-Docs, Tomcat7-Example et Tomcat7-Admin, avec des descriptions de ce que chaque package fournit.\n* Une note au bas de la page mentionne les restrictions de sécurité pour l'utilisation du Manager WebApp et Host-Manager WebApp.\n\n** Messages d'erreur, informations techniques ou éléments d'interface **\n\n* Aucun message d'erreur n'est visible sur cette page.\n* Les informations techniques suivantes sont présentes:\n\t+ Apache Tomcat Version: Pas explicitement indiqué, mais la page fait référence à \"Tomcat 7\" à plusieurs endroits.\n\t+ Chemins d'installation:\n\t\t- Catalina_Home: / usr / tomcat7\n\t\t- Catalina_base: / var / lib / tomcat7\n* Les éléments d'interface incluent des liens pour installer des packages supplémentaires et une documentation d'accès.\n\n** Relation avec le contexte du ticket de support **\n\nLe contexte du ticket d'assistance est \"le contenu des billets insuffisant pour l'analyse\". Cette image semble être une page de configuration réussie, qui pourrait indiquer que le problème rapporté dans le billet n'est pas lié à la configuration initiale de TomCat. Cependant, sans plus d'informations sur le billet, il est difficile de dire comment cette image se rapporte au problème spécifique.\n\n** Numéros de version, indicateurs d'état ou dates **\n\n* Version Apache Tomcat: 7 (déduit du texte)\n* Aucun indicateur ou datte d'état n'est visible sur cette page.\n\n** Détails techniques extraits **\n\n* Catalina_Home: / usr / tomcat7\n* Catalina_base: / var / lib / tomcat7\n* Emplacement de la page d'accueil par défaut: /var/lib/tomcat7/webapps/root/index.html\n* Packages suggérés à installer:\n\t+ Tomcat7-docs\n\t+ Tomcat7-Exemple\n\t+ Tomcat7-admin",
|
||||
"analyse_en": "**Image Analysis**\n\nThe provided image appears to be a screenshot of a web page displaying the default Apache Tomcat home page. The page indicates that Tomcat has been set up successfully.\n\n**Detailed Description**\n\n* The top of the page displays the text \"Apache Tomcat x +\" with a logo.\n* Below the logo, there is a message indicating that the setup was successful: \"It works! If you are seeing this page via a web browser, it means you've setup tomcat successfully. Congratulations!\"\n* The page provides information about the location of the default home page on the local filesystem: \"/var/lib/tomcat7/webapps/root/index.html\".\n* There is also information about the installation paths for catalina_home and catalina_base.\n* The page suggests installing additional packages, including Tomcat7-Docs, Tomcat7-Example, and Tomcat7-Admin, with descriptions of what each package provides.\n* A note at the bottom of the page mentions security restrictions for using the Manager Webapp and Host-Manager Webapp.\n\n**Error Messages, Technical Information, or Interface Elements**\n\n* No error messages are visible on this page.\n* The following technical information is present:\n\t+ Apache Tomcat version: Not explicitly stated, but the page refers to \"Tomcat 7\" in several places.\n\t+ Installation paths:\n\t\t- catalina_home: /usr/tomcat7\n\t\t- catalina_base: /var/lib/tomcat7\n* Interface elements include links to install additional packages and access documentation.\n\n**Relation to Support Ticket Context**\n\nThe support ticket context is \"Ticket content insufficient for analysis\". This image appears to be a successful setup page, which might indicate that the issue reported in the ticket is not related to the initial Tomcat setup. However, without more information about the ticket, it's difficult to say how this image relates to the specific problem.\n\n**Version Numbers, Status Indicators, or Dates**\n\n* Apache Tomcat version: 7 (inferred from the text)\n* No status indicators or dates are visible on this page.\n\n**Extracted Technical Details**\n\n* catalina_home: /usr/tomcat7\n* catalina_base: /var/lib/tomcat7\n* Default home page location: /var/lib/tomcat7/webapps/root/index.html\n* Suggested packages to install:\n\t+ Tomcat7-Docs\n\t+ Tomcat7-Example\n\t+ Tomcat7-Admin",
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image.png",
|
||||
"image_name": "image.png",
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_100412",
|
||||
"ocr_used": true,
|
||||
"model_info": {
|
||||
"model": "llama3.2-vision:90b-instruct-q8_0",
|
||||
"temperature": 0.2,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 3000
|
||||
},
|
||||
"source_agent": "AgentImageAnalyser"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145435.png",
|
||||
"analysis": {
|
||||
"analyse": "** Analyse d'image **\n\nL'image fournie semble être une capture d'écran d'un document ou d'un rapport généré par un système de gestion des informations de laboratoire (LIMS) ou un logiciel de contrôle de la qualité. L'image contient diverses sections avec des informations techniques liées aux tests concrets.\n\n** Description détaillée de l'image **\n\n* La section supérieure affiche le nom de l'entreprise \"Giraudbrg-Lobicom / Brg-Lab\" et un titre de page \"Progratssai\".\n* Ci-dessous, il existe un tableau avec des colonnes pour différents types de tests, y compris \"CD Concrete CD Foumasew Tubo\", qui semble être lié aux tests de béton.\n* La section suivante contient des informations sur l'échantillon testé:\n\t+ Numéro d'échantillon: 25-0007\n\t+ Date de réception: 02/04/2025\n\t+ Preparator: Victor Bollé\n\t+ Date de préparation: 04/04/2025\n\t+ Type de matériau: sable (0/20)\n\t+ Fournisseur: Carriere Adceg\n* La section inférieure semble être un pied de page avec certaines informations techniques et liens:\n\t+ Un lien vers \"11 e 'z2k1.brg-lab.com\"\n\t+ Un texte cryptique qui pourrait être lié au logiciel ou au système utilisé pour générer le rapport\n\n** Messages d'erreur, informations techniques et éléments d'interface **\n\n* Il n'y a pas de messages d'erreur visibles dans l'image.\n* Les informations techniques présentes comprennent:\n\t+ Nombres d'échantillons et dates\n\t+ Types de matériaux et fournisseurs\n\t+ Noms de test (par exemple, \"CD Concrete CD Foumasew Tubo\")\n* Les éléments d'interface incluent des tables, des colonnes et des liens.\n\n** Relation avec le contexte du ticket de support **\n\nÉtant donné que le contenu du ticket de support est insuffisant pour l'analyse, il est difficile d'établir une connexion directe entre l'image et le billet. Cependant, sur la base des informations techniques présentes dans l'image, il est possible que le billet d'assistance soit lié à:\n\n* Problèmes avec le logiciel de laboratoire ou le système LIMS\n* Problèmes de saisie de données ou de suivi des échantillons\n* Préoccupations concernant les résultats des tests ou la qualité des matériaux\n\n** Numéros de version, indicateurs d'état et dates **\n\n* Aucun numéro de version n'est visible dans l'image.\n* Il n'y a pas d'indicateurs d'état clairs (par exemple, \"passer\" ou \"échouer\") présents.\n* Les dates suivantes sont mentionnées:\n\t+ 02/04/2025 (date de réception)\n\t+ 04/04/2025 (date de préparation)\n\n** Détails techniques extraits **\n\n* Numéro d'échantillon: 25-0007\n* Type de matériau: sable (0/20)\n* Fournisseur: Carriere Adceg\n* Noms de test: CD Concrete CD Foumasew Tubo\n\nCes détails techniques pourraient être pertinents pour le billet d'assistance, mais sans plus de contexte, il est difficile de déterminer leur signification.",
|
||||
"analyse_en": "**Image Analysis**\n\nThe provided image appears to be a screenshot of a document or report generated by a laboratory information management system (LIMS) or a quality control software. The image contains various sections with technical information related to concrete testing.\n\n**Detailed Description of the Image**\n\n* The top section displays the company name \"GIRAUDBRG-LOBICOM/BRG-LAB\" and a page title \"PROGRATSSAI\".\n* Below that, there is a table with columns for different types of tests, including \"CD concrete CD Foumasew Tubo\", which seems to be related to concrete testing.\n* The next section contains information about the sample being tested:\n\t+ Sample number: 25-0007\n\t+ Reception date: 02/04/2025\n\t+ Preparator: Victor BOLLÉ\n\t+ Preparation date: 04/04/2025\n\t+ Material type: Sand (0/20)\n\t+ Supplier: CARRIERE ADCEG\n* The bottom section appears to be a footer with some technical information and links:\n\t+ A link to \"11 e 'z2k1.brg-lab.com\"\n\t+ Some cryptic text that might be related to the software or system used to generate the report\n\n**Error Messages, Technical Information, and Interface Elements**\n\n* There are no visible error messages in the image.\n* The technical information present includes:\n\t+ Sample numbers and dates\n\t+ Material types and suppliers\n\t+ Test names (e.g., \"CD concrete CD Foumasew Tubo\")\n* The interface elements include tables, columns, and links.\n\n**Relation to Support Ticket Context**\n\nGiven that the support ticket content is insufficient for analysis, it's difficult to establish a direct connection between the image and the ticket. However, based on the technical information present in the image, it's possible that the support ticket might be related to:\n\n* Issues with the laboratory software or LIMS system\n* Problems with data entry or sample tracking\n* Concerns about test results or material quality\n\n**Version Numbers, Status Indicators, and Dates**\n\n* No version numbers are visible in the image.\n* There are no clear status indicators (e.g., \"pass\" or \"fail\") present.\n* The following dates are mentioned:\n\t+ 02/04/2025 (reception date)\n\t+ 04/04/2025 (preparation date)\n\n**Extracted Technical Details**\n\n* Sample number: 25-0007\n* Material type: Sand (0/20)\n* Supplier: CARRIERE ADCEG\n* Test names: CD concrete CD Foumasew Tubo\n\nThese technical details might be relevant to the support ticket, but without more context, it's difficult to determine their significance.",
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145435.png",
|
||||
"image_name": "image_145435.png",
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_100617",
|
||||
"ocr_used": true,
|
||||
"model_info": {
|
||||
"model": "llama3.2-vision:90b-instruct-q8_0",
|
||||
"temperature": 0.2,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 3000
|
||||
},
|
||||
"source_agent": "AgentImageAnalyser"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -1,109 +0,0 @@
|
||||
RÉSULTATS DE L'ANALYSE ANALYSE_IMAGE - TICKET T11143
|
||||
================================================================================
|
||||
|
||||
--- ÉLÉMENT 1 ---
|
||||
|
||||
** Analyse d'image **
|
||||
|
||||
L'image fournie semble être une capture d'écran d'une page Web affichant la page d'accueil d'Apache Tomcat par défaut. La page indique que Tomcat a été configuré avec succès.
|
||||
|
||||
** Description détaillée **
|
||||
|
||||
* Le haut de la page affiche le texte "Apache Tomcat X +" avec un logo.
|
||||
* En dessous du logo, il y a un message indiquant que la configuration a réussi: "Cela fonctionne! Si vous voyez cette page via un navigateur Web, cela signifie que vous configurez Tomcat avec succès. Félicitations!"
|
||||
* La page fournit des informations sur l'emplacement de la page d'accueil par défaut du système de fichiers local: "/var/lib/tomcat7/webapps/root/index.html".
|
||||
* Il existe également des informations sur les chemins d'installation pour Catalina_Home et Catalina_Base.
|
||||
* La page suggère d'installer des packages supplémentaires, notamment Tomcat7-Docs, Tomcat7-Example et Tomcat7-Admin, avec des descriptions de ce que chaque package fournit.
|
||||
* Une note au bas de la page mentionne les restrictions de sécurité pour l'utilisation du Manager WebApp et Host-Manager WebApp.
|
||||
|
||||
** Messages d'erreur, informations techniques ou éléments d'interface **
|
||||
|
||||
* Aucun message d'erreur n'est visible sur cette page.
|
||||
* Les informations techniques suivantes sont présentes:
|
||||
+ Apache Tomcat Version: Pas explicitement indiqué, mais la page fait référence à "Tomcat 7" à plusieurs endroits.
|
||||
+ Chemins d'installation:
|
||||
- Catalina_Home: / usr / tomcat7
|
||||
- Catalina_base: / var / lib / tomcat7
|
||||
* Les éléments d'interface incluent des liens pour installer des packages supplémentaires et une documentation d'accès.
|
||||
|
||||
** Relation avec le contexte du ticket de support **
|
||||
|
||||
Le contexte du ticket d'assistance est "le contenu des billets insuffisant pour l'analyse". Cette image semble être une page de configuration réussie, qui pourrait indiquer que le problème rapporté dans le billet n'est pas lié à la configuration initiale de TomCat. Cependant, sans plus d'informations sur le billet, il est difficile de dire comment cette image se rapporte au problème spécifique.
|
||||
|
||||
** Numéros de version, indicateurs d'état ou dates **
|
||||
|
||||
* Version Apache Tomcat: 7 (déduit du texte)
|
||||
* Aucun indicateur ou datte d'état n'est visible sur cette page.
|
||||
|
||||
** Détails techniques extraits **
|
||||
|
||||
* Catalina_Home: / usr / tomcat7
|
||||
* Catalina_base: / var / lib / tomcat7
|
||||
* Emplacement de la page d'accueil par défaut: /var/lib/tomcat7/webapps/root/index.html
|
||||
* Packages suggérés à installer:
|
||||
+ Tomcat7-docs
|
||||
+ Tomcat7-Exemple
|
||||
+ Tomcat7-admin
|
||||
|
||||
----------------------------------------
|
||||
|
||||
--- ÉLÉMENT 2 ---
|
||||
|
||||
** Analyse d'image **
|
||||
|
||||
L'image fournie semble être une capture d'écran d'un document ou d'un rapport généré par un système de gestion des informations de laboratoire (LIMS) ou un logiciel de contrôle de la qualité. L'image contient diverses sections avec des informations techniques liées aux tests concrets.
|
||||
|
||||
** Description détaillée de l'image **
|
||||
|
||||
* La section supérieure affiche le nom de l'entreprise "Giraudbrg-Lobicom / Brg-Lab" et un titre de page "Progratssai".
|
||||
* Ci-dessous, il existe un tableau avec des colonnes pour différents types de tests, y compris "CD Concrete CD Foumasew Tubo", qui semble être lié aux tests de béton.
|
||||
* La section suivante contient des informations sur l'échantillon testé:
|
||||
+ Numéro d'échantillon: 25-0007
|
||||
+ Date de réception: 02/04/2025
|
||||
+ Preparator: Victor Bollé
|
||||
+ Date de préparation: 04/04/2025
|
||||
+ Type de matériau: sable (0/20)
|
||||
+ Fournisseur: Carriere Adceg
|
||||
* La section inférieure semble être un pied de page avec certaines informations techniques et liens:
|
||||
+ Un lien vers "11 e 'z2k1.brg-lab.com"
|
||||
+ Un texte cryptique qui pourrait être lié au logiciel ou au système utilisé pour générer le rapport
|
||||
|
||||
** Messages d'erreur, informations techniques et éléments d'interface **
|
||||
|
||||
* Il n'y a pas de messages d'erreur visibles dans l'image.
|
||||
* Les informations techniques présentes comprennent:
|
||||
+ Nombres d'échantillons et dates
|
||||
+ Types de matériaux et fournisseurs
|
||||
+ Noms de test (par exemple, "CD Concrete CD Foumasew Tubo")
|
||||
* Les éléments d'interface incluent des tables, des colonnes et des liens.
|
||||
|
||||
** Relation avec le contexte du ticket de support **
|
||||
|
||||
Étant donné que le contenu du ticket de support est insuffisant pour l'analyse, il est difficile d'établir une connexion directe entre l'image et le billet. Cependant, sur la base des informations techniques présentes dans l'image, il est possible que le billet d'assistance soit lié à:
|
||||
|
||||
* Problèmes avec le logiciel de laboratoire ou le système LIMS
|
||||
* Problèmes de saisie de données ou de suivi des échantillons
|
||||
* Préoccupations concernant les résultats des tests ou la qualité des matériaux
|
||||
|
||||
** Numéros de version, indicateurs d'état et dates **
|
||||
|
||||
* Aucun numéro de version n'est visible dans l'image.
|
||||
* Il n'y a pas d'indicateurs d'état clairs (par exemple, "passer" ou "échouer") présents.
|
||||
* Les dates suivantes sont mentionnées:
|
||||
+ 02/04/2025 (date de réception)
|
||||
+ 04/04/2025 (date de préparation)
|
||||
|
||||
** Détails techniques extraits **
|
||||
|
||||
* Numéro d'échantillon: 25-0007
|
||||
* Type de matériau: sable (0/20)
|
||||
* Fournisseur: Carriere Adceg
|
||||
* Noms de test: CD Concrete CD Foumasew Tubo
|
||||
|
||||
Ces détails techniques pourraient être pertinents pour le billet d'assistance, mais sans plus de contexte, il est difficile de déterminer leur signification.
|
||||
|
||||
----------------------------------------
|
||||
|
||||
|
||||
================================================================================
|
||||
Fichier original: analyse_image_unknown_model_results.json
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"response": "Contenu du ticket insuffisant pour analyse",
|
||||
"response_en": "Ticket content insufficient for analysis",
|
||||
"error": true,
|
||||
"metadata": {
|
||||
"timestamp": "20250424_103126",
|
||||
"source_agent": "AgentTicketAnalyser",
|
||||
"ticket_id": "T11143",
|
||||
"model_info": {
|
||||
"model": "llama3-2-vision-90b-instruct-q8-0",
|
||||
"temperature": 0.1,
|
||||
"top_p": 0.5,
|
||||
"max_tokens": 4000
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5,4 +5,4 @@ Contenu du ticket insuffisant pour analyse
|
||||
|
||||
|
||||
================================================================================
|
||||
Fichier original: analyse_ticket_unknown_model_results.json
|
||||
Fichier original: analyse_ticket_llama3-2-vision-90b-instruct-q8-0_results.json
|
||||
@ -1,10 +0,0 @@
|
||||
{
|
||||
"response": "Contenu du ticket insuffisant pour analyse",
|
||||
"response_en": "Ticket content insufficient for analysis",
|
||||
"error": true,
|
||||
"metadata": {
|
||||
"timestamp": "20250424_100106",
|
||||
"source_agent": "AgentTicketAnalyser",
|
||||
"ticket_id": "T11143"
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,7 @@
|
||||
"translation_en_back_fr": "",
|
||||
"metadata": {
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_100117",
|
||||
"timestamp": "20250424_103135",
|
||||
"source_module": "ocr_utils + translate_utils",
|
||||
"lang_detected": "fr"
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
"translation_en_back_fr": "",
|
||||
"metadata": {
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_100118",
|
||||
"timestamp": "20250424_103135",
|
||||
"source_module": "ocr_utils + translate_utils",
|
||||
"lang_detected": "fr"
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
"translation_en_back_fr": "Apache Tomcat x +\n\nGc @ 2 zk1.brg-b.com\n\n@ Andre Demo Devmat @ Modèle de base\n\nÇa marche!\n\nSi vous voyez cette page via un navigateur Web, cela signifie que vous avez configuré Tomcat avec succès. Félicitations!\n\nIl s'agit de la page d'accueil par défaut de Tomcat. Il peut être trouvé sur le système de fichiers local à: /var/lib/tomcat7/webapps/root/index.html\n\nMatou? Les vétérans pourraient être ravis de lire cette instance système de Tomcat est installé avec cataina_home dans / usr / tomcat7 et cataina_base dans / var / 1ib / tomcat7, en suivant les règles de / usr / share / doc / tomcat7-commun / running. SMS. GZ.\nVous pourriez envisager d'installer les packages suivants, si vous avez fait Alreni:\n\nTomcat7-Docs: Ce package installe une application Web qui permet de parcourir la documentation Tomcat 7 localement. Une fois installé, vous pouvez y accéder en cliquant\n\nTomcat7-Exemple: Ce package installe une application Web qui permet d'accéder aux exemples de servlet Tomcat 7 et JSP. Une fois installé, vous pouvez y accéder en cliquant\n\nTomcat7-admin: Ce package installe deux applications Web qui peuvent aider à gérer cette instance Tomcat. Une fois installé, vous pouvez accéder au et le et le et\n\nRemarque: Pour des raisons de sécurité, l'utilisation du gestionnaire WebApp est limitée aux utilisateurs avec le rôle \"Manager-Gui\". Le manager host-manager est limité aux utilisateurs avec un rôle \"Admin-Gui\". Les utilisateurs sont définis dans / et / tomcat7 / tomcta-users.xml.",
|
||||
"metadata": {
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_100111",
|
||||
"timestamp": "20250424_103130",
|
||||
"source_module": "ocr_utils + translate_utils",
|
||||
"lang_detected": "fr"
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
"translation_en_back_fr": "C3 Giraudbrg-Lobicom / Brg-Lab / Page Progratsai / Zeaaahevngoaaaa\n\n Brglas cd béton cd foumasew tubo © masse\n\nECHANTILLION N ° 25-0007 ECEPTIAN le 02/04/2025 PR Bollé Victor prévu le 04/04/2025 Por Bollee Victor N ° Pédéwment 25-00078\nMatériau de sable 0/20 Carriere adceg\n\n[Fai Jemmarme | [M Porrouo || onservanons] [<suo] [v hisromou\n\nposé. à partir de 11 e ‘z2k1.brg-lab.com",
|
||||
"metadata": {
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_100114",
|
||||
"timestamp": "20250424_103132",
|
||||
"source_module": "ocr_utils + translate_utils",
|
||||
"lang_detected": "fr"
|
||||
}
|
||||
|
||||
@ -1,35 +1,4 @@
|
||||
RAPPORT D'ANALYSE DU TICKET T11143
|
||||
==================================================
|
||||
|
||||
** Rapport croisé **
|
||||
|
||||
**Résumé:**
|
||||
Le client a soumis un billet d'assistance avec un contenu insuffisant pour l'analyse. Deux images ont été fournies, une liée à une configuration de serveur Tomcat et une autre liée à un logiciel de laboratoire ou un système LIMS.
|
||||
|
||||
** Tableau chronologique des échanges: **
|
||||
|
||||
| Émetteur | Type | Date | Contenu | Éléments visuels |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Client | Question | Inconnu | Contenu insuffisant pour l'analyse | Aucun |
|
||||
| Client | Image 1 | Inconnu | Configuration du serveur Tomcat (Apache Tomcat / 9.0.31) | Capture d'écran de la page de configuration du serveur Tomcat, y compris les informations "statut du serveur", "OS" et "JVM" |
|
||||
| Client | Image 2 | Inconnu | Rapport du système de logiciel de laboratoire ou LIMS | Rapport généré par les logiciels de laboratoire ou le système LIMS, y compris les numéros d'échantillons, les dates, les types de matériaux et les noms de test |
|
||||
|
||||
**Analyse:**
|
||||
|
||||
Sur la base des images fournies, il semble que le client puisse rencontrer des problèmes avec sa configuration de serveur Tomcat ou son logiciel de laboratoire / système LIMS. Cependant, sans plus de contexte ou d'informations du client, il est difficile de déterminer la nature spécifique du problème.
|
||||
|
||||
La première image suggère que le client peut utiliser un serveur TomCat pour son application, mais il n'y a pas de messages d'erreur visibles ou d'indications de problèmes avec la configuration.
|
||||
|
||||
La deuxième image semble être un rapport généré par les logiciels de laboratoire ou le système LIMS. Le rapport comprend des informations techniques telles que les numéros d'échantillons, les dates, les types de matériaux et les noms de test. Cependant, sans plus de contexte, il n'est pas clair quel problème spécifique que le client peut rencontrer avec ce système.
|
||||
|
||||
** Recommandations: **
|
||||
|
||||
1. Demandez des informations supplémentaires au client pour clarifier la nature de son problème.
|
||||
2. Demandez au client de fournir plus de détails sur la configuration de leur serveur Tomcat et les messages d'erreur qu'il peut avoir rencontrés.
|
||||
3. Renseignez-vous sur le logiciel de laboratoire ou le système LIMS utilisé par le client et demandez plus d'informations sur le problème spécifique qu'ils rencontrent.
|
||||
|
||||
** Étapes suivantes: **
|
||||
|
||||
1. Attendez les informations supplémentaires du client pour analyser davantage le problème.
|
||||
2. Fournir des conseils sur le dépannage des problèmes de configuration du serveur Tomcat si nécessaire.
|
||||
3. Offrez un support pour résoudre les problèmes avec les logiciels de laboratoire ou le système LIMS si nécessaire.
|
||||
{"Error": "Model 'LLAMA3-2-Vision-90B-Instruct-Q8-0' Non trouvé"}
|
||||
@ -0,0 +1,23 @@
|
||||
{
|
||||
"prompt": "Voici les données d'analyse pour un ticket de support :\n\n=== ANALYSE DU TICKET ===\n{'response': 'Contenu du ticket insuffisant pour analyse', 'response_en': 'Ticket content insufficient for analysis', 'error': True, 'metadata': {'timestamp': '20250424_103126', 'source_agent': 'AgentTicketAnalyser', 'ticket_id': 'T11143', 'model_info': {'model': 'llama3-2-vision-90b-instruct-q8-0', 'temperature': 0.1, 'top_p': 0.5, 'max_tokens': 4000}}}\n\n=== ANALYSES D'IMAGES ===\n\n\nGénère un rapport croisé en suivant les instructions précédentes, incluant un tableau chronologique des échanges entre CLIENT et SUPPORT. Utilise le format suivant pour le tableau :\n| ÉMETTEUR | TYPE | DATE | CONTENU | ÉLÉMENTS VISUELS |\n| --- | --- | --- | --- | --- |\n| CLIENT | question | date | texte de la question | éléments pertinents des images |\n| SUPPORT | réponse | date | texte de la réponse | éléments pertinents des images |\n\nCe tableau doit synthétiser les échanges tout en intégrant les données pertinentes des images avec le maximum de contexte technique.",
|
||||
"prompt_en": "[ENGLISH RESPONSE REQUESTED]\n\nHere are the analysis data for a support ticket:\n\n=== Ticket analysis ====\n{'Response': 'Insufficient ticket content for analysis', 'responsive_en': 'Insufficient content content for analysis', 'error': true, 'metadata': {'timestamp': '20250424_103126', 'Source_agent': 'Agenticketalyse', 'Ticket_id': 't11143', 'Model_info': {'Model': 'Llama3-2-Vision-90b-Instruct-Q8-0', 'Temperature': 0.1, 'Top_p': 0.5, 'Max_tokens': 4000}}}\n\n=== Image analyzes ====\n\n\nGenerates a cross report following the previous instructions, including a chronological table of exchanges between customers and support. Use the following format for the table:\n| Transmitter | Type | Date | Contents | Visual elements |\n| --- | --- | --- | --- | --- |\n| Customer | Question | Date | Text of the question | Relevant elements of images |\n| Support | Answer | Date | Response text | Relevant elements of images |\n\nThis table must synthesize exchanges while integrating the relevant data of images with the maximum technical context.",
|
||||
"response": "{\"Error\": \"Model 'LLAMA3-2-Vision-90B-Instruct-Q8-0' Non trouvé\"}",
|
||||
"response_en": "{\"error\":\"model 'llama3-2-vision-90b-instruct-q8-0' not found\"}",
|
||||
"metadata": {
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_103136",
|
||||
"source_agent": "AgentReportGenerator",
|
||||
"model_info": {
|
||||
"model": "llama3-2-vision-90b-instruct-q8-0",
|
||||
"temperature": 0.2,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 8000,
|
||||
"presence_penalty": 0,
|
||||
"frequency_penalty": 0,
|
||||
"stop": [],
|
||||
"stream": false,
|
||||
"n": 1
|
||||
},
|
||||
"language": "en-fr"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
RÉSULTATS DE L'ANALYSE RAPPORT_FINAL - TICKET T11143
|
||||
================================================================================
|
||||
|
||||
{"Error": "Model 'LLAMA3-2-Vision-90B-Instruct-Q8-0' Non trouvé"}
|
||||
|
||||
|
||||
================================================================================
|
||||
Fichier original: rapport_final_llama3-2-vision-90b-instruct-q8-0_results.json
|
||||
File diff suppressed because one or more lines are too long
@ -1,39 +0,0 @@
|
||||
RÉSULTATS DE L'ANALYSE RAPPORT_FINAL - TICKET T11143
|
||||
================================================================================
|
||||
|
||||
** Rapport croisé **
|
||||
|
||||
**Résumé:**
|
||||
Le client a soumis un billet d'assistance avec un contenu insuffisant pour l'analyse. Deux images ont été fournies, une liée à une configuration de serveur Tomcat et une autre liée à un logiciel de laboratoire ou un système LIMS.
|
||||
|
||||
** Tableau chronologique des échanges: **
|
||||
|
||||
| Émetteur | Type | Date | Contenu | Éléments visuels |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Client | Question | Inconnu | Contenu insuffisant pour l'analyse | Aucun |
|
||||
| Client | Image 1 | Inconnu | Configuration du serveur Tomcat (Apache Tomcat / 9.0.31) | Capture d'écran de la page de configuration du serveur Tomcat, y compris les informations "statut du serveur", "OS" et "JVM" |
|
||||
| Client | Image 2 | Inconnu | Rapport du système de logiciel de laboratoire ou LIMS | Rapport généré par les logiciels de laboratoire ou le système LIMS, y compris les numéros d'échantillons, les dates, les types de matériaux et les noms de test |
|
||||
|
||||
**Analyse:**
|
||||
|
||||
Sur la base des images fournies, il semble que le client puisse rencontrer des problèmes avec sa configuration de serveur Tomcat ou son logiciel de laboratoire / système LIMS. Cependant, sans plus de contexte ou d'informations du client, il est difficile de déterminer la nature spécifique du problème.
|
||||
|
||||
La première image suggère que le client peut utiliser un serveur TomCat pour son application, mais il n'y a pas de messages d'erreur visibles ou d'indications de problèmes avec la configuration.
|
||||
|
||||
La deuxième image semble être un rapport généré par les logiciels de laboratoire ou le système LIMS. Le rapport comprend des informations techniques telles que les numéros d'échantillons, les dates, les types de matériaux et les noms de test. Cependant, sans plus de contexte, il n'est pas clair quel problème spécifique que le client peut rencontrer avec ce système.
|
||||
|
||||
** Recommandations: **
|
||||
|
||||
1. Demandez des informations supplémentaires au client pour clarifier la nature de son problème.
|
||||
2. Demandez au client de fournir plus de détails sur la configuration de leur serveur Tomcat et les messages d'erreur qu'il peut avoir rencontrés.
|
||||
3. Renseignez-vous sur le logiciel de laboratoire ou le système LIMS utilisé par le client et demandez plus d'informations sur le problème spécifique qu'ils rencontrent.
|
||||
|
||||
** Étapes suivantes: **
|
||||
|
||||
1. Attendez les informations supplémentaires du client pour analyser davantage le problème.
|
||||
2. Fournir des conseils sur le dépannage des problèmes de configuration du serveur Tomcat si nécessaire.
|
||||
3. Offrez un support pour résoudre les problèmes avec les logiciels de laboratoire ou le système LIMS si nécessaire.
|
||||
|
||||
|
||||
================================================================================
|
||||
Fichier original: rapport_final_llama3-vision-90b-instruct_results.json
|
||||
@ -0,0 +1,73 @@
|
||||
[
|
||||
{
|
||||
"is_relevant": false,
|
||||
"reason": "LlamaVision API Error (404): {\"error\":\"model 'llama3-2-vision-90b-instruct-q8-0' not found\"}",
|
||||
"raw_response": "LlamaVision API Error (404): {\"error\":\"model 'llama3-2-vision-90b-instruct-q8-0' not found\"}",
|
||||
"ocr_used": true,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image.png",
|
||||
"image_name": "image.png",
|
||||
"timestamp": "20250424_103135",
|
||||
"model_info": {
|
||||
"model": "llama3-2-vision-90b-instruct-q8-0",
|
||||
"temperature": 0.1,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 1000
|
||||
},
|
||||
"ticket_id": "T11143",
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"is_relevant": false,
|
||||
"reason": "LlamaVision API Error (404): {\"error\":\"model 'llama3-2-vision-90b-instruct-q8-0' not found\"}",
|
||||
"raw_response": "LlamaVision API Error (404): {\"error\":\"model 'llama3-2-vision-90b-instruct-q8-0' not found\"}",
|
||||
"ocr_used": true,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145435.png",
|
||||
"image_name": "image_145435.png",
|
||||
"timestamp": "20250424_103136",
|
||||
"model_info": {
|
||||
"model": "llama3-2-vision-90b-instruct-q8-0",
|
||||
"temperature": 0.1,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 1000
|
||||
},
|
||||
"ticket_id": "T11143",
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"is_relevant": false,
|
||||
"reason": "LlamaVision API Error (404): {\"error\":\"model 'llama3-2-vision-90b-instruct-q8-0' not found\"}",
|
||||
"raw_response": "LlamaVision API Error (404): {\"error\":\"model 'llama3-2-vision-90b-instruct-q8-0' not found\"}",
|
||||
"ocr_used": false,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
|
||||
"image_name": "543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
|
||||
"timestamp": "20250424_103136",
|
||||
"model_info": {
|
||||
"model": "llama3-2-vision-90b-instruct-q8-0",
|
||||
"temperature": 0.1,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 1000
|
||||
},
|
||||
"ticket_id": "T11143",
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"is_relevant": false,
|
||||
"reason": "ERROR: Erreur d'accès ou format d'image invalide",
|
||||
"raw_response": "",
|
||||
"error": true,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
|
||||
"image_name": "a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_103136",
|
||||
"error": true,
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -0,0 +1,30 @@
|
||||
RÉSULTATS DE L'ANALYSE TRI_IMAGE - TICKET T11143
|
||||
================================================================================
|
||||
|
||||
--- ÉLÉMENT 1 ---
|
||||
|
||||
LlamaVision API Error (404): {"error":"model 'llama3-2-vision-90b-instruct-q8-0' not found"}
|
||||
|
||||
----------------------------------------
|
||||
|
||||
--- ÉLÉMENT 2 ---
|
||||
|
||||
LlamaVision API Error (404): {"error":"model 'llama3-2-vision-90b-instruct-q8-0' not found"}
|
||||
|
||||
----------------------------------------
|
||||
|
||||
--- ÉLÉMENT 3 ---
|
||||
|
||||
LlamaVision API Error (404): {"error":"model 'llama3-2-vision-90b-instruct-q8-0' not found"}
|
||||
|
||||
----------------------------------------
|
||||
|
||||
--- ÉLÉMENT 4 ---
|
||||
|
||||
|
||||
|
||||
----------------------------------------
|
||||
|
||||
|
||||
================================================================================
|
||||
Fichier original: tri_image_llama3-2-vision-90b-instruct-q8-0_results.json
|
||||
@ -1,73 +0,0 @@
|
||||
[
|
||||
{
|
||||
"is_relevant": true,
|
||||
"reason": "Yes.\n\nThis image appears to be a technical screenshot of an Apache Tomcat setup page, which is relevant for a technical support issue related to the BRG_Lab software from CBAO enterprise. The text detected in the image (OCR) provides information about the Tomcat installation and configuration, which could be useful for troubleshooting or setup purposes.",
|
||||
"raw_response": "Yes.\n\nThis image appears to be a technical screenshot of an Apache Tomcat setup page, which is relevant for a technical support issue related to the BRG_Lab software from CBAO enterprise. The text detected in the image (OCR) provides information about the Tomcat installation and configuration, which could be useful for troubleshooting or setup purposes.",
|
||||
"ocr_used": true,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image.png",
|
||||
"image_name": "image.png",
|
||||
"timestamp": "20250424_100149",
|
||||
"model_info": {
|
||||
"model": "llama3.2-vision:90b-instruct-q8_0",
|
||||
"temperature": 0.1,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 1000
|
||||
},
|
||||
"ticket_id": "T11143",
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"is_relevant": true,
|
||||
"reason": "Yes.\n\nThe image appears to be a technical screenshot of the BRG_Lab software, showing a specific page related to concrete testing and material properties. The text detected in the image (OCR) also suggests that it is a legitimate technical document or record from the BRG_Lab system.",
|
||||
"raw_response": "Yes.\n\nThe image appears to be a technical screenshot of the BRG_Lab software, showing a specific page related to concrete testing and material properties. The text detected in the image (OCR) also suggests that it is a legitimate technical document or record from the BRG_Lab system.",
|
||||
"ocr_used": true,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145435.png",
|
||||
"image_name": "image_145435.png",
|
||||
"timestamp": "20250424_100204",
|
||||
"model_info": {
|
||||
"model": "llama3.2-vision:90b-instruct-q8_0",
|
||||
"temperature": 0.1,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 1000
|
||||
},
|
||||
"ticket_id": "T11143",
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"is_relevant": false,
|
||||
"reason": "No\n\nThe image appears to be a jumbled collection of characters and does not resemble any technical screenshot, error message, configuration screen, or system log that would be relevant for troubleshooting a technical support issue related to the BRG_Lab software from CBAO enterprise. It seems like corrupted or encoded data rather than an actual image.",
|
||||
"raw_response": "No\n\nThe image appears to be a jumbled collection of characters and does not resemble any technical screenshot, error message, configuration screen, or system log that would be relevant for troubleshooting a technical support issue related to the BRG_Lab software from CBAO enterprise. It seems like corrupted or encoded data rather than an actual image.",
|
||||
"ocr_used": false,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
|
||||
"image_name": "543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
|
||||
"timestamp": "20250424_100221",
|
||||
"model_info": {
|
||||
"model": "llama3.2-vision:90b-instruct-q8_0",
|
||||
"temperature": 0.1,
|
||||
"top_p": 0.8,
|
||||
"max_tokens": 1000
|
||||
},
|
||||
"ticket_id": "T11143",
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"is_relevant": false,
|
||||
"reason": "ERROR: Erreur d'accès ou format d'image invalide",
|
||||
"raw_response": "",
|
||||
"error": true,
|
||||
"metadata": {
|
||||
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
|
||||
"image_name": "a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
|
||||
"ticket_id": "T11143",
|
||||
"timestamp": "20250424_100221",
|
||||
"error": true,
|
||||
"source_agent": "AgentImageSorter"
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -1,36 +0,0 @@
|
||||
RÉSULTATS DE L'ANALYSE TRI_IMAGE - TICKET T11143
|
||||
================================================================================
|
||||
|
||||
--- ÉLÉMENT 1 ---
|
||||
|
||||
Yes.
|
||||
|
||||
This image appears to be a technical screenshot of an Apache Tomcat setup page, which is relevant for a technical support issue related to the BRG_Lab software from CBAO enterprise. The text detected in the image (OCR) provides information about the Tomcat installation and configuration, which could be useful for troubleshooting or setup purposes.
|
||||
|
||||
----------------------------------------
|
||||
|
||||
--- ÉLÉMENT 2 ---
|
||||
|
||||
Yes.
|
||||
|
||||
The image appears to be a technical screenshot of the BRG_Lab software, showing a specific page related to concrete testing and material properties. The text detected in the image (OCR) also suggests that it is a legitimate technical document or record from the BRG_Lab system.
|
||||
|
||||
----------------------------------------
|
||||
|
||||
--- ÉLÉMENT 3 ---
|
||||
|
||||
No
|
||||
|
||||
The image appears to be a jumbled collection of characters and does not resemble any technical screenshot, error message, configuration screen, or system log that would be relevant for troubleshooting a technical support issue related to the BRG_Lab software from CBAO enterprise. It seems like corrupted or encoded data rather than an actual image.
|
||||
|
||||
----------------------------------------
|
||||
|
||||
--- ÉLÉMENT 4 ---
|
||||
|
||||
|
||||
|
||||
----------------------------------------
|
||||
|
||||
|
||||
================================================================================
|
||||
Fichier original: tri_image_llama3-vision-90b-instruct_results.json
|
||||
@ -1,32 +1 @@
|
||||
** Rapport croisé **
|
||||
|
||||
**Résumé:**
|
||||
Le client a soumis un billet d'assistance avec un contenu insuffisant pour l'analyse. Deux images ont été fournies, une liée à une configuration de serveur Tomcat et une autre liée à un logiciel de laboratoire ou un système LIMS.
|
||||
|
||||
** Tableau chronologique des échanges: **
|
||||
|
||||
| Émetteur | Type | Date | Contenu | Éléments visuels |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Client | Question | Inconnu | Contenu insuffisant pour l'analyse | Aucun |
|
||||
| Client | Image 1 | Inconnu | Configuration du serveur Tomcat (Apache Tomcat / 9.0.31) | Capture d'écran de la page de configuration du serveur Tomcat, y compris les informations "statut du serveur", "OS" et "JVM" |
|
||||
| Client | Image 2 | Inconnu | Rapport du système de logiciel de laboratoire ou LIMS | Rapport généré par les logiciels de laboratoire ou le système LIMS, y compris les numéros d'échantillons, les dates, les types de matériaux et les noms de test |
|
||||
|
||||
**Analyse:**
|
||||
|
||||
Sur la base des images fournies, il semble que le client puisse rencontrer des problèmes avec sa configuration de serveur Tomcat ou son logiciel de laboratoire / système LIMS. Cependant, sans plus de contexte ou d'informations du client, il est difficile de déterminer la nature spécifique du problème.
|
||||
|
||||
La première image suggère que le client peut utiliser un serveur TomCat pour son application, mais il n'y a pas de messages d'erreur visibles ou d'indications de problèmes avec la configuration.
|
||||
|
||||
La deuxième image semble être un rapport généré par les logiciels de laboratoire ou le système LIMS. Le rapport comprend des informations techniques telles que les numéros d'échantillons, les dates, les types de matériaux et les noms de test. Cependant, sans plus de contexte, il n'est pas clair quel problème spécifique que le client peut rencontrer avec ce système.
|
||||
|
||||
** Recommandations: **
|
||||
|
||||
1. Demandez des informations supplémentaires au client pour clarifier la nature de son problème.
|
||||
2. Demandez au client de fournir plus de détails sur la configuration de leur serveur Tomcat et les messages d'erreur qu'il peut avoir rencontrés.
|
||||
3. Renseignez-vous sur le logiciel de laboratoire ou le système LIMS utilisé par le client et demandez plus d'informations sur le problème spécifique qu'ils rencontrent.
|
||||
|
||||
** Étapes suivantes: **
|
||||
|
||||
1. Attendez les informations supplémentaires du client pour analyser davantage le problème.
|
||||
2. Fournir des conseils sur le dépannage des problèmes de configuration du serveur Tomcat si nécessaire.
|
||||
3. Offrez un support pour résoudre les problèmes avec les logiciels de laboratoire ou le système LIMS si nécessaire.
|
||||
{"Error": "Model 'LLAMA3-2-Vision-90B-Instruct-Q8-0' Non trouvé"}
|
||||
Loading…
x
Reference in New Issue
Block a user