From e63577f0a0e715db648a898c3e533cf5a8000c78 Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Mon, 14 Apr 2025 15:57:31 +0200 Subject: [PATCH] 15:57 --- CSV/T9656/T9656_mistral-medium.csv | 2 + .../agent_ticket_analyser.py.backup | 178 ++++++++++++++++ .../pixtral12b/agent_image_sorter.py.backup | 193 ++++++++++++++++++ .../mistral-medium/T9656_rapport_final.csv | 1 + .../mistral-medium/T9656_rapport_final.json | 81 ++++++++ .../mistral-medium/T9656_rapport_final.md | 175 ++++++++++++++++ 6 files changed, 630 insertions(+) create mode 100644 CSV/T9656/T9656_mistral-medium.csv create mode 100644 agents/mistral_medium/agent_ticket_analyser.py.backup create mode 100644 agents/pixtral12b/agent_image_sorter.py.backup create mode 100644 reports/T9656/mistral-medium/T9656_rapport_final.csv create mode 100644 reports/T9656/mistral-medium/T9656_rapport_final.json create mode 100644 reports/T9656/mistral-medium/T9656_rapport_final.md diff --git a/CSV/T9656/T9656_mistral-medium.csv b/CSV/T9656/T9656_mistral-medium.csv new file mode 100644 index 0000000..030db37 --- /dev/null +++ b/CSV/T9656/T9656_mistral-medium.csv @@ -0,0 +1,2 @@ +Question,Réponse +ERREUR: Impossible d'analyser le ticket: BaseLLM.interroger() got an unexpected keyword argument 'prompt',N/A (aucune image fournie) diff --git a/agents/mistral_medium/agent_ticket_analyser.py.backup b/agents/mistral_medium/agent_ticket_analyser.py.backup new file mode 100644 index 0000000..43e2533 --- /dev/null +++ b/agents/mistral_medium/agent_ticket_analyser.py.backup @@ -0,0 +1,178 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import os +import json +import time +import logging +from typing import Dict, Any, Optional + +# Importer BaseAgent depuis le répertoire utils +from agents.utils.base_agent import BaseAgent + +# Configuration du logging +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logger = logging.getLogger("AgentTicketAnalyser_MistralMedium") + +class AgentTicketAnalyser(BaseAgent): + """ + Agent spécialisé pour analyser un ticket et en extraire les informations clés. + Version optimisée pour Mistral Medium. + """ + + def __init__(self, llm: Any): + """ + Initialise l'agent d'analyse de ticket avec un modèle LLM. + + Args: + llm: Instance du modèle de langage à utiliser + """ + super().__init__(llm) + self.temperature = 0.2 # Température plus basse pour une analyse factuelle + self.top_p = 0.95 + self.max_tokens = 2048 + + # System prompt spécifique pour l'analyse de tickets + self.system_prompt = """Tu es un assistant spécialisé dans l'analyse des tickets de support technique. +Ton rôle est d'analyser le contenu du ticket pour extraire les informations essentielles et de structurer cette analyse. + +À partir du ticket que l'on te fournit, tu dois : + +1. Extraire et synthétiser les points clés du ticket +2. Identifier les informations techniques importantes +3. Comprendre le problème principal et son contexte +4. Déterminer si des images sont mentionnées ou semblent nécessaires pour comprendre le problème + +Ta réponse doit suivre un format strictement structuré : + +``` +1. Résumé du contexte + - Client : [Nom du contact client si mentionné] + - Sujet du ticket : [Sujet principal du ticket en une phrase] + - Description technique synthétique : [Synthèse technique du problème en 1-2 phrases] + +2. Informations techniques détectées + - Logiciels/modules mentionnés : [Liste des logiciels, applications ou modules mentionnés] + - Paramètres évoqués : [Paramètres, configurations ou variables mentionnés] + - Fonctionnalités impactées : [Fonctionnalités ou processus touchés par le problème] + - Conditions spécifiques : [Conditions particulières où le problème se manifeste] + +3. Analyse du problème + - Problème principal : [Description claire du problème principal] + - Impact pour l'utilisateur : [Comment ce problème affecte l'utilisateur] + - Contexte d'apparition : [Quand et comment le problème survient] + - Complexité estimée : [FAIBLE/MOYENNE/ÉLEVÉE] avec justification + +4. Pertinence des images + - Images mentionnées : [OUI/NON] et leur importance [FAIBLE/MOYENNE/ÉLEVÉE] + - Justification : [Pourquoi les images sont importantes ou non pour comprendre le problème] + +5. Questions pour clarification (si nécessaire) + - [Questions que le support technique devrait poser pour mieux comprendre le problème] +``` + +Reste factuel et concis dans ton analyse. N'invente pas d'information qui ne serait pas présente dans le ticket. +Concentre-toi uniquement sur l'analyse du contenu du ticket, pas sur la résolution du problème. +""" + + def executer(self, ticket_data: Dict[str, Any]) -> str: + """ + Analyse un ticket à partir des données fournies. + + Args: + ticket_data: Dictionnaire contenant les données du ticket + - 'ticket_summary': Résumé du ticket + - 'messages': Liste des messages du ticket + + Returns: + str: Analyse structurée du ticket + """ + start_time = time.time() + + try: + # Extraire le résumé du ticket + ticket_summary = ticket_data.get('ticket_summary', {}) + ticket_code = ticket_summary.get('code', 'INCONNU') + ticket_sujet = ticket_summary.get('sujet', 'Sans sujet') + + # Log des informations de base du ticket + logger.info(f"Analyse du ticket {ticket_code}: {ticket_sujet}") + print(f" Analyse du ticket {ticket_code}: {ticket_sujet[:80]}{'...' if len(ticket_sujet) > 80 else ''}") + + # Construire le contexte à partir des messages + messages = ticket_data.get('messages', []) + + # Construire un prompt pour analyser le ticket + ticket_prompt = self._construire_prompt_ticket(ticket_summary, messages) + + # Analyser le ticket avec le LLM + analyse = self.llm.generate( + system_prompt=self.system_prompt, + prompt=ticket_prompt, + temperature=self.temperature, + top_p=self.top_p, + max_tokens=self.max_tokens + ) + + # Calcul du temps de génération + generation_time = time.time() - start_time + + # Log de l'analyse complétée + logger.info(f"Analyse complétée en {generation_time:.2f} secondes") + print(f" Analyse complétée en {generation_time:.2f} secondes") + + return analyse + + except Exception as e: + logger.error(f"Erreur lors de l'analyse du ticket: {str(e)}") + return f"ERREUR: Impossible d'analyser le ticket: {str(e)}" + + def _construire_prompt_ticket(self, ticket_summary: Dict[str, Any], messages: list) -> str: + """ + Construit un prompt détaillé à partir des données du ticket. + + Args: + ticket_summary: Résumé du ticket + messages: Liste des messages du ticket + + Returns: + str: Prompt détaillé pour l'analyse + """ + # Construire l'en-tête avec les informations du ticket + prompt = f"# TICKET: {ticket_summary.get('code', 'INCONNU')}\n" + prompt += f"Sujet: {ticket_summary.get('sujet', 'Sans sujet')}\n" + prompt += f"Statut: {ticket_summary.get('statut', 'Inconnu')}\n" + prompt += f"Priorité: {ticket_summary.get('priorité', 'Non définie')}\n" + prompt += f"Date de création: {ticket_summary.get('date_création', 'Inconnue')}\n\n" + + # Ajouter la section des messages + prompt += "## MESSAGES DU TICKET\n\n" + + for i, message in enumerate(messages, 1): + # Extraire les informations du message + date = message.get('date', 'Date inconnue') + auteur = message.get('auteur', 'Auteur inconnu') + role = message.get('role', 'Rôle inconnu') + contenu = message.get('contenu', '') + + # Ajouter l'en-tête du message + prompt += f"### Message {i} - {date}\n" + prompt += f"De: {auteur} ({role})\n\n" + + # Ajouter le contenu du message + prompt += f"{contenu}\n\n" + + # Ajouter les informations sur les pièces jointes si disponibles + attachments = message.get('attachments', []) + if attachments: + prompt += f"Pièces jointes ({len(attachments)}):\n" + for attachment in attachments: + prompt += f"- {attachment.get('nom', 'Sans nom')} ({attachment.get('type', 'Type inconnu')})\n" + prompt += "\n" + + # Ajouter les instructions d'analyse + prompt += "\n## INSTRUCTIONS\n" + prompt += "Analyse ce ticket selon les instructions dans ton system prompt. " + prompt += "Réponds uniquement avec l'analyse structurée demandée." + + return prompt \ No newline at end of file diff --git a/agents/pixtral12b/agent_image_sorter.py.backup b/agents/pixtral12b/agent_image_sorter.py.backup new file mode 100644 index 0000000..048c49c --- /dev/null +++ b/agents/pixtral12b/agent_image_sorter.py.backup @@ -0,0 +1,193 @@ +from agents.utils.base_agent import BaseAgent +import logging +import os +from typing import List, Dict, Any, Optional +import json + +logger = logging.getLogger("AgentImageSorter") + +class AgentImageSorter(BaseAgent): + """ + Agent pour trier les images et identifier celles qui sont pertinentes pour l'analyse. + """ + def __init__(self, llm): + super().__init__(llm) + + # Configuration locale de l'agent + self.system_prompt = """Tu es un agent spécialisé dans l'analyse et le tri d'images pour le support technique. +Ta mission est d'identifier les images pertinentes pour comprendre un problème technique, en distinguant +celles qui contiennent des informations utiles (captures d'écran, photos de produits défectueux, etc.) +de celles qui sont décoratives ou non informatives. + +Suis ces directives pour évaluer chaque image: +1. Identifie le contenu principal de l'image (capture d'écran, photo, schéma, etc.) +2. Évalue si l'image contient des informations utiles pour comprendre le problème technique +3. Détermine si l'image montre un problème, une erreur, ou une situation anormale +4. Examine si l'image contient du texte ou des messages d'erreur importants + +Pour chaque image, tu dois fournir: +- Une description concise du contenu (1-2 phrases) +- Un niveau de pertinence (Élevé/Moyen/Faible) +- Une justification de ton évaluation""" + + self.image_batch_size = 3 # Nombre d'images à analyser par lot + + def executer(self, attachments_dir: str, contexte: Optional[Dict] = None) -> Dict[str, Dict[str, Any]]: + """ + Trie les images dans un répertoire de pièces jointes et identifie celles qui sont pertinentes. + + Args: + attachments_dir: Chemin vers le répertoire des pièces jointes + contexte: Contexte optionnel sur le ticket pour aider à l'analyse + + Returns: + Dictionnaire avec les chemins des images comme clés et les résultats d'analyse comme valeurs + """ + logger.info(f"Tri des images dans: {attachments_dir}") + + # Vérifier si attachments_dir est un fichier ou un dossier + if os.path.isfile(attachments_dir): + logger.info(f"Le chemin fourni est un fichier et non un dossier: {attachments_dir}") + # Si c'est un fichier image, on le traite directement + if attachments_dir.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif', '.tiff')): + images = [attachments_dir] + # Le vrai dossier est le répertoire parent + attachments_dir = os.path.dirname(attachments_dir) + else: + logger.error(f"Le fichier n'est pas une image: {attachments_dir}") + return {} + # Vérifier que le répertoire existe + elif not os.path.exists(attachments_dir): + logger.error(f"Le répertoire {attachments_dir} n'existe pas") + return {} + else: + # Lister les images du répertoire + images = [os.path.join(attachments_dir, f) for f in os.listdir(attachments_dir) + if f.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif', '.tiff'))] + + if not images: + logger.info(f"Aucune image trouvée dans {attachments_dir}") + return {} + + logger.info(f"Nombre d'images trouvées: {len(images)}") + + # Analyser les images individuellement ou par lots selon la configuration + resultats = {} + + # Préparer un contexte spécifique pour l'analyse des images + contexte_analyse = "Aucun contexte disponible." + if contexte: + # Extraire des informations pertinentes du contexte + sujet = contexte.get("sujet", "") + description = contexte.get("description", "") + if sujet and description: + contexte_analyse = f"Sujet du ticket: {sujet}\nDescription du problème: {description}" + elif sujet: + contexte_analyse = f"Sujet du ticket: {sujet}" + elif description: + contexte_analyse = f"Description du problème: {description}" + + # Traitement image par image + for image_path in images: + image_name = os.path.basename(image_path) + logger.info(f"Analyse de l'image: {image_name}") + + prompt = f"""Analyse cette image dans le contexte suivant: +{contexte_analyse} + +Réponds au format JSON avec la structure suivante: +{{ + "description": "Description concise du contenu", + "pertinence": "Élevé/Moyen/Faible", + "justification": "Pourquoi cette image est pertinente ou non", + "contenu_technique": true/false +}}""" + + # Analyser l'image + try: + resultat_brut = self.llm.interroger_avec_image(image_path, prompt) + + # Extraire le JSON de la réponse + json_str = self._extraire_json(resultat_brut) + if json_str: + try: + # Charger le JSON + analyse = json.loads(json_str) + # Ajouter le chemin complet pour référence + analyse["image_path"] = image_path + resultats[image_path] = analyse + + pertinence = analyse.get("pertinence", "").lower() + logger.info(f"Image {image_name} - Pertinence: {pertinence}") + except json.JSONDecodeError: + logger.error(f"Erreur de décodage JSON pour {image_name}") + resultats[image_path] = { + "description": "Erreur d'analyse", + "pertinence": "Inconnue", + "justification": "Erreur de traitement de la réponse", + "contenu_technique": False, + "image_path": image_path + } + else: + logger.error(f"Format de réponse incorrect pour {image_name}") + # Créer une entrée avec les informations disponibles + resultats[image_path] = { + "description": "Analyse non disponible", + "pertinence": "Inconnue", + "justification": "Format de réponse incorrect", + "contenu_technique": False, + "image_path": image_path + } + except Exception as e: + logger.error(f"Erreur lors de l'analyse de l'image {image_name}: {str(e)}") + resultats[image_path] = { + "description": "Erreur d'analyse", + "pertinence": "Inconnue", + "justification": f"Exception: {str(e)}", + "contenu_technique": False, + "image_path": image_path + } + + return resultats + + def _extraire_json(self, texte: str) -> Optional[str]: + """ + Extrait le contenu JSON d'une chaîne de texte. + + Args: + texte: Texte contenant potentiellement du JSON + + Returns: + Chaîne JSON extraite ou None si aucun JSON n'est trouvé + """ + # Chercher des accolades ouvrantes et fermantes + debut = texte.find('{') + fin = texte.rfind('}') + + if debut != -1 and fin != -1 and fin > debut: + return texte[debut:fin+1] + + return None + + def filtrer_images_pertinentes(self, resultats: Dict[str, Dict[str, Any]]) -> List[str]: + """ + Filtre les images pour ne conserver que celles qui sont pertinentes. + + Args: + resultats: Dictionnaire avec les résultats d'analyse des images + + Returns: + Liste des chemins des images pertinentes + """ + pertinentes = [] + + for image_path, analyse in resultats.items(): + pertinence = analyse.get("pertinence", "").lower() + contenu_technique = analyse.get("contenu_technique", False) + + # Considérer comme pertinentes les images avec pertinence élevée ou moyenne + # ou celles marquées comme ayant un contenu technique + if pertinence in ["élevé", "moyen", "eleve", "elevé", "medium", "high", "moyenne"] or contenu_technique: + pertinentes.append(image_path) + + return pertinentes \ No newline at end of file diff --git a/reports/T9656/mistral-medium/T9656_rapport_final.csv b/reports/T9656/mistral-medium/T9656_rapport_final.csv new file mode 100644 index 0000000..70577e0 --- /dev/null +++ b/reports/T9656/mistral-medium/T9656_rapport_final.csv @@ -0,0 +1 @@ +Question,Réponse diff --git a/reports/T9656/mistral-medium/T9656_rapport_final.json b/reports/T9656/mistral-medium/T9656_rapport_final.json new file mode 100644 index 0000000..9b95c1a --- /dev/null +++ b/reports/T9656/mistral-medium/T9656_rapport_final.json @@ -0,0 +1,81 @@ +{ + "ticket_id": "T9656", + "timestamp": "2025-04-14 15:49:35", + "rapport_complet": "# Rapport d'analyse: ERREUR - Impossible d'analyser le ticket: BaseLLM.interroger() got an unexpected keyword argument 'prompt'\n\n## Résumé du problème\nLe client a signalé une erreur lors de l'analyse d'un ticket. Le message d'erreur indique que la fonction BaseLLM.interroger() a reçu un argument inattendu nommé 'prompt'.\n\n## Analyse des images\nÉtant donné qu'aucune image n'a été fournie pour ce ticket, cette section sera laissée vide.\n\n## 3.1 Synthèse globale des analyses d'images\n\n_Analyse transversale des captures d'écran_\n\nComme aucune image n'a été fournie pour ce ticket, il n'y a pas de synthèse globale des analyses d'images à fournir.\n\n## Fil de discussion\nLe fil de discussion se compose uniquement du message initial du client et de l'analyse du support technique.\n\n## Tableau questions/réponses\n\n```json\n{\n \"chronologie_echanges\": [\n {\n \"date\": \"date demande\",\n \"emetteur\": \"CLIENT\",\n \"type\": \"Question\",\n \"contenu\": \"ERREUR: Impossible d'analyser le ticket: BaseLLM.interroger() got an unexpected keyword argument 'prompt'\"\n },\n {\n \"date\": \"date analyse\",\n \"emetteur\": \"SUPPORT\",\n \"type\": \"Complément visuel\",\n \"contenu\": \"N/A (aucune image fournie)\"\n }\n ]\n}\n```\n\n## Diagnostic technique\n\nLe message d'erreur indique qu'une fonction BaseLLM.interroger() a reçu un argument inattendu nommé 'prompt'. Cela suggère que la fonction a été appelée avec un paramètre non prévu, ce qui a entraîné une erreur. Il est possible que le code appelant cette fonction ait été modifié ou qu'il y ait une incompatibilité entre les versions de différentes bibliothèques utilisées.\n\nPour résoudre ce problème, il est recommandé de vérifier la documentation de la fonction BaseLLM.interroger() pour confirmer les arguments attendus et de s'assurer que le code appelant cette fonction est correctement configuré. Il peut également être utile de vérifier les versions des bibliothèques utilisées et de mettre à jour si nécessaire.", + "ticket_analyse": "ERREUR: Impossible d'analyser le ticket: BaseLLM.interroger() got an unexpected keyword argument 'prompt'", + "images_analyses": [], + "chronologie_echanges": [ + { + "date": "date demande", + "emetteur": "CLIENT", + "type": "Question", + "contenu": "ERREUR: Impossible d'analyser le ticket: BaseLLM.interroger() got an unexpected keyword argument 'prompt'" + }, + { + "date": "date analyse", + "emetteur": "SUPPORT", + "type": "Complément visuel", + "contenu": "N/A (aucune image fournie)" + } + ], + "resume": "Le client a signalé une erreur lors de l'analyse d'un ticket. Le message d'erreur indique que la fonction BaseLLM.interroger() a reçu un argument inattendu nommé 'prompt'.\n\n### Fil de discussion\nLe fil de discussion se compose uniquement du message initial du client et de l'analyse du support technique.", + "analyse_images": "Étant donné qu'aucune image n'a été fournie pour ce ticket, cette section sera laissée vide.", + "diagnostic": "Le message d'erreur indique qu'une fonction BaseLLM.interroger() a reçu un argument inattendu nommé 'prompt'. Cela suggère que la fonction a été appelée avec un paramètre non prévu, ce qui a entraîné une erreur. Il est possible que le code appelant cette fonction ait été modifié ou qu'il y ait une incompatibilité entre les versions de différentes bibliothèques utilisées.\n\nPour résoudre ce problème, il est recommandé de vérifier la documentation de la fonction BaseLLM.interroger() pour confirmer les arguments attendus et de s'assurer que le code appelant cette fonction est correctement configuré. Il peut également être utile de vérifier les versions des bibliothèques utilisées et de mettre à jour si nécessaire.", + "statistiques": { + "total_images": 3, + "images_pertinentes": 0, + "generation_time": 13.265363 + }, + "metadata": { + "model": "mistral-medium", + "model_version": "non spécifiée", + "temperature": 0.2, + "top_p": 0.9, + "max_tokens": 10000, + "generation_time": 13.265363, + "timestamp": "2025-04-14 15:49:35", + "agents": { + "report_generator": { + "model": "mistral-medium", + "temperature": 0.2, + "top_p": 0.9, + "max_tokens": 10000, + "prompt_version": "v3.2" + } + } + }, + "prompts_utilisés": { + "report_generator": "Tu es un expert en génération de rapports techniques pour BRG-Lab pour la société CBAO.\nTa mission est de synthétiser les analyses (ticket et images) en un rapport structuré.\n\nEXIGENCE ABSOLUE - Ton rapport DOIT inclure dans l'ordre:\n1. Un résumé du problème initial (nom de la demande + description)\n2. Une analyse détaillée des images pertinentes en lien avec le problème\n3. Une synthèse globale des analyses d'images\n4. Une reconstitution du fil de discussion client/support\n5. Un tableau JSON de chronologie des échanges avec cette structure:\n```json\n{\n \"chronologie_echanges\": [\n {\"date\": \"date exacte\", \"emetteur\": \"CLIENT ou SUPPORT\", \"type\": \"Question ou Réponse\", \"contenu\": \"contenu synthétisé\"}\n ]\n}\n```\n6. Un diagnostic technique des causes probables\n\nMÉTHODE D'ANALYSE (ÉTAPES OBLIGATOIRES):\n1. ANALYSE TOUTES les images AVANT de créer le tableau des échanges\n2. Concentre-toi sur les éléments mis en évidence (encadrés/surlignés) dans chaque image\n3. Réalise une SYNTHÈSE TRANSVERSALE en expliquant comment les images se complètent\n4. Remets les images en ordre chronologique selon le fil de discussion\n5. CONSERVE TOUS les liens documentaires, FAQ et références techniques\n6. Ajoute une entrée \"Complément visuel\" dans le tableau des échanges", + "ticket_analyser": "Prompt de l'agent d'analyse de ticket (non récupéré dynamiquement)", + "image_sorter": "Prompt de l'agent de tri d'images (non récupéré dynamiquement)", + "image_analyser": "Prompt de l'agent d'analyse d'images (non récupéré dynamiquement)" + }, + "workflow": { + "etapes": [ + { + "numero": 1, + "nom": "Analyse du ticket", + "agent": "AgentTicketAnalyser", + "description": "Extraction et analyse des informations du ticket" + }, + { + "numero": 2, + "nom": "Tri des images", + "agent": "AgentImageSorter", + "description": "Identification des images pertinentes pour l'analyse" + }, + { + "numero": 3, + "nom": "Analyse des images", + "agent": "AgentImageAnalyser", + "description": "Analyse détaillée des images pertinentes identifiées" + }, + { + "numero": 4, + "nom": "Génération du rapport", + "agent": "AgentReportGenerator", + "description": "Synthèse des analyses et génération du rapport final" + } + ] + } +} \ No newline at end of file diff --git a/reports/T9656/mistral-medium/T9656_rapport_final.md b/reports/T9656/mistral-medium/T9656_rapport_final.md new file mode 100644 index 0000000..199bf9d --- /dev/null +++ b/reports/T9656/mistral-medium/T9656_rapport_final.md @@ -0,0 +1,175 @@ +# Rapport d'analyse: T9656 + +## Processus d'analyse + +_Vue d'ensemble du processus d'analyse automatisé_ + +1. **Analyse du ticket** - `AgentTicketAnalyser` + - Extraction et analyse des informations du ticket + +2. **Tri des images** - `AgentImageSorter` + - Identification des images pertinentes pour l'analyse + +3. **Analyse des images** - `AgentImageAnalyser` + - Analyse détaillée des images pertinentes identifiées + +4. **Génération du rapport** - `AgentReportGenerator` + - Synthèse des analyses et génération du rapport final + +**Statistiques:** +- Images totales: 3 +- Images pertinentes: 0 +- Temps de génération: 13.27 secondes + +## 1. Analyse du ticket + +_Agent utilisé: `AgentTicketAnalyser` - Analyse du contenu du ticket_ + +``` +ERREUR: Impossible d'analyser le ticket: BaseLLM.interroger() got an unexpected keyword argument 'prompt' +``` + +## 2. Tri des images + +_Agent utilisé: `AgentImageSorter` - Identifie les images pertinentes_ + +*Aucune image n'a été triée* + +## 3. Analyse des images + +_Agent utilisé: `AgentImageAnalyser` - Analyse détaillée des captures d'écran_ + +*Aucune image pertinente n'a été identifiée pour ce ticket.* + +## 3.1 Synthèse globale des analyses d'images + +_Analyse transversale des captures d'écran_ + +*Pas de synthèse globale disponible en l'absence d'images pertinentes.* + +## 4. Synthèse finale + +_Agent utilisé: `AgentReportGenerator` - Synthèse et conclusions_ + +### Résumé du problème + +Le client a signalé une erreur lors de l'analyse d'un ticket. Le message d'erreur indique que la fonction BaseLLM.interroger() a reçu un argument inattendu nommé 'prompt'. + +### Fil de discussion +Le fil de discussion se compose uniquement du message initial du client et de l'analyse du support technique. + +### Chronologie des échanges + +Le fil de discussion se compose uniquement du message initial du client et de l'analyse du support technique. + +### Tableau des questions et réponses + +_Synthèse des questions et réponses avec intégration des informations des images_ + +| Date | Émetteur | Type | Contenu | +| ---- | -------- | ---- | ------- | +| date demande | CLIENT | Question | ERREUR: Impossible d'analyser le ticket: BaseLLM.interroger() got an unexpected keyword argument 'prompt' | +| date analyse | SUPPORT | Complément visuel | N/A (aucune image fournie) | + +### Diagnostic technique + +_Conclusion basée sur l'analyse du ticket, des images et des échanges_ + +Le message d'erreur indique qu'une fonction BaseLLM.interroger() a reçu un argument inattendu nommé 'prompt'. Cela suggère que la fonction a été appelée avec un paramètre non prévu, ce qui a entraîné une erreur. Il est possible que le code appelant cette fonction ait été modifié ou qu'il y ait une incompatibilité entre les versions de différentes bibliothèques utilisées. + +Pour résoudre ce problème, il est recommandé de vérifier la documentation de la fonction BaseLLM.interroger() pour confirmer les arguments attendus et de s'assurer que le code appelant cette fonction est correctement configuré. Il peut également être utile de vérifier les versions des bibliothèques utilisées et de mettre à jour si nécessaire. + +## Métadonnées + +- **Date de génération**: 2025-04-14 15:49:35 +- **Modèle principal utilisé**: mistral-medium + +## Détails des analyses + +**ATTENTION**: Les sections suivantes sont incomplètes: Analyse des images + +- **Analyse des images**: PRÉSENT +- **Analyse du ticket**: PRÉSENT +- **Diagnostic**: PRÉSENT + +## Configuration des agents + +### AgentTicketAnalyser + +#### Prompt système + +
+Afficher le prompt système + +``` +Prompt de l'agent d'analyse de ticket (non récupéré dynamiquement) +``` +
+ +### AgentImageSorter + +#### Prompt système + +
+Afficher le prompt système + +``` +Prompt de l'agent de tri d'images (non récupéré dynamiquement) +``` +
+ +### AgentImageAnalyser + +#### Prompt système + +
+Afficher le prompt système + +``` +Prompt de l'agent d'analyse d'images (non récupéré dynamiquement) +``` +
+ +### AgentReportGenerator + +#### Paramètres + +- **Modèle utilisé**: mistral-medium +- **Température**: 0.2 +- **Top_p**: 0.9 +- **Max_tokens**: 10000 +- **Version du prompt**: v3.2 + +#### Prompt système + +
+Afficher le prompt système + +``` +Tu es un expert en génération de rapports techniques pour BRG-Lab pour la société CBAO. +Ta mission est de synthétiser les analyses (ticket et images) en un rapport structuré. + +EXIGENCE ABSOLUE - Ton rapport DOIT inclure dans l'ordre: +1. Un résumé du problème initial (nom de la demande + description) +2. Une analyse détaillée des images pertinentes en lien avec le problème +3. Une synthèse globale des analyses d'images +4. Une reconstitution du fil de discussion client/support +5. Un tableau JSON de chronologie des échanges avec cette structure: +```json +{ + "chronologie_echanges": [ + {"date": "date exacte", "emetteur": "CLIENT ou SUPPORT", "type": "Question ou Réponse", "contenu": "contenu synthétisé"} + ] +} +``` +6. Un diagnostic technique des causes probables + +MÉTHODE D'ANALYSE (ÉTAPES OBLIGATOIRES): +1. ANALYSE TOUTES les images AVANT de créer le tableau des échanges +2. Concentre-toi sur les éléments mis en évidence (encadrés/surlignés) dans chaque image +3. Réalise une SYNTHÈSE TRANSVERSALE en expliquant comment les images se complètent +4. Remets les images en ordre chronologique selon le fil de discussion +5. CONSERVE TOUS les liens documentaires, FAQ et références techniques +6. Ajoute une entrée "Complément visuel" dans le tableau des échanges +``` +