2204-17:29

This commit is contained in:
Ladebeze66 2025-04-22 17:29:42 +02:00
parent d4d5747e50
commit 42346239df
25 changed files with 361 additions and 951 deletions

View File

@ -1,4 +0,0 @@
ÉMETTEUR,TYPE,DATE,CONTENU,ÉLÉMENTS VISUELS
CLIENT,question,03/04/2025 08:34,Problème d'accès à l'essai au bleu.,"Message d'erreur : ""Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com"" (image_145435.png)"
SUPPORT,réponse,03/04/2025 12:17,Demande de vérification de l'accès à la page https://zk1.brg-lab.com/.,Page de confirmation d'installation de Tomcat 7 (image.png)
CLIENT,information,03/04/2025 12:21,Le problème s'est résolu de lui-même. L'adresse https://zk1.brg-lab.com/ fonctionne.,Page de confirmation d'installation de Tomcat 7 (image.png)
1 ÉMETTEUR TYPE DATE CONTENU ÉLÉMENTS VISUELS
2 CLIENT question 03/04/2025 08:34 Problème d'accès à l'essai au bleu. Message d'erreur : "Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com" (image_145435.png)
3 SUPPORT réponse 03/04/2025 12:17 Demande de vérification de l'accès à la page https://zk1.brg-lab.com/. Page de confirmation d'installation de Tomcat 7 (image.png)
4 CLIENT information 03/04/2025 12:21 Le problème s'est résolu de lui-même. L'adresse https://zk1.brg-lab.com/ fonctionne. Page de confirmation d'installation de Tomcat 7 (image.png)

View File

@ -1,2 +0,0 @@
Question,Réponse,Contexte Question,Contexte Réponse
Problème d'accès à l'essai au bleu.,Demande de vérification de l'accès à la page https://zk1.brg-lab.com/.,"Message d'erreur : ""Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com"" (image_145435.png)",Page de confirmation d'installation de Tomcat 7 (image.png)
1 Question Réponse Contexte Question Contexte Réponse
2 Problème d'accès à l'essai au bleu. Demande de vérification de l'accès à la page https://zk1.brg-lab.com/. Message d'erreur : "Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com" (image_145435.png) Page de confirmation d'installation de Tomcat 7 (image.png)

View File

@ -27,6 +27,10 @@ class AgentFactoryLlamaVision:
@staticmethod
def create_llm() -> LlamaVision:
"""
Crée une nouvelle instance du modèle LlamaVision.
Chaque instance est indépendante pour permettre des configurations spécifiques par agent.
"""
logger.info("Initialisation du modèle llama_vision")
start_time = time.time()
model = LlamaVision()
@ -35,35 +39,87 @@ class AgentFactoryLlamaVision:
return model
@staticmethod
def create_ticket_analyser(llm: LlamaVision) -> AgentTicketAnalyser:
def create_ticket_analyser(llm: Optional[LlamaVision] = None) -> AgentTicketAnalyser:
"""
Crée un agent d'analyse de tickets avec sa propre instance LLM.
Args:
llm: Instance LlamaVision existante (optionnel, une nouvelle instance sera créée si None)
Returns:
Agent d'analyse de tickets configuré
"""
logger.info("Création de l'agent de tickets (llama_vision)")
# Créer une nouvelle instance LLM spécifique à cet agent si aucune n'est fournie
if llm is None:
llm = AgentFactoryLlamaVision.create_llm()
return AgentTicketAnalyser(llm)
@staticmethod
def create_image_sorter(llm: LlamaVision) -> AgentImageSorter:
def create_image_sorter(llm: Optional[LlamaVision] = None) -> AgentImageSorter:
"""
Crée un agent de tri d'images avec sa propre instance LLM.
Args:
llm: Instance LlamaVision existante (optionnel, une nouvelle instance sera créée si None)
Returns:
Agent de tri d'images configuré
"""
logger.info("Création de l'agent de tri des images (llama_vision)")
# Créer une nouvelle instance LLM spécifique à cet agent si aucune n'est fournie
if llm is None:
llm = AgentFactoryLlamaVision.create_llm()
return AgentImageSorter(llm)
@staticmethod
def create_image_analyser(llm: LlamaVision) -> AgentImageAnalyser:
def create_image_analyser(llm: Optional[LlamaVision] = None) -> AgentImageAnalyser:
"""
Crée un agent d'analyse d'images avec sa propre instance LLM.
Args:
llm: Instance LlamaVision existante (optionnel, une nouvelle instance sera créée si None)
Returns:
Agent d'analyse d'images configuré
"""
logger.info("Création de l'agent d'analyse des images (llama_vision)")
# Créer une nouvelle instance LLM spécifique à cet agent si aucune n'est fournie
if llm is None:
llm = AgentFactoryLlamaVision.create_llm()
return AgentImageAnalyser(llm)
@staticmethod
def create_report_generator(llm: LlamaVision) -> AgentReportGenerator:
def create_report_generator(llm: Optional[LlamaVision] = None) -> AgentReportGenerator:
"""
Crée un agent de génération de rapports avec sa propre instance LLM.
Args:
llm: Instance LlamaVision existante (optionnel, une nouvelle instance sera créée si None)
Returns:
Agent de génération de rapports configuré
"""
logger.info("Création de l'agent de génération de rapports (llama_vision)")
# Créer une nouvelle instance LLM spécifique à cet agent si aucune n'est fournie
if llm is None:
llm = AgentFactoryLlamaVision.create_llm()
return AgentReportGenerator(llm)
@staticmethod
def create_all_agents() -> Dict[str, Any]:
"""
Crée tous les agents nécessaires pour Llama_vision.
Crée tous les agents nécessaires pour Llama_vision avec des instances LLM séparées.
Chaque agent reçoit sa propre instance pour éviter les problèmes de configuration partagée.
Returns:
Dictionnaire contenant tous les agents créés
"""
llm = AgentFactoryLlamaVision.create_llm()
logger.info("Création de tous les agents avec instances LLM indépendantes")
return {
"ticket_analyser": AgentFactoryLlamaVision.create_ticket_analyser(llm),
"image_sorter": AgentFactoryLlamaVision.create_image_sorter(llm),
"image_analyser": AgentFactoryLlamaVision.create_image_analyser(llm),
"report_generator": AgentFactoryLlamaVision.create_report_generator(llm)
"ticket_analyser": AgentFactoryLlamaVision.create_ticket_analyser(),
"image_sorter": AgentFactoryLlamaVision.create_image_sorter(),
"image_analyser": AgentFactoryLlamaVision.create_image_analyser(),
"report_generator": AgentFactoryLlamaVision.create_report_generator()
}

View File

@ -178,8 +178,11 @@ Reste strictement factuel. Ne fais aucune hypothèse. Ne suggère pas d'étapes
# S'assurer que le répertoire existe
os.makedirs(pipeline_dir, exist_ok=True)
# Sauvegarder en format texte uniquement
rapport_txt_path = os.path.join(pipeline_dir, f"rapport_final_mistral-large-latest.txt")
# Récupérer le nom du modèle
model_name = getattr(self.llm, "modele", "unknown")
# Sauvegarder en format texte uniquement avec le nom du modèle
rapport_txt_path = os.path.join(pipeline_dir, f"rapport_final_{model_name}_results.txt")
with open(rapport_txt_path, "w", encoding="utf-8") as f:
f.write(f"RAPPORT D'ANALYSE DU TICKET {ticket_id}\n")
f.write("="*50 + "\n\n")
@ -195,8 +198,11 @@ Reste strictement factuel. Ne fais aucune hypothèse. Ne suggère pas d'étapes
ticket_reports_dir = os.path.join(reports_dir, ticket_id)
os.makedirs(ticket_reports_dir, exist_ok=True)
# Récupérer le nom du modèle
model_name = getattr(self.llm, "modele", "unknown")
# Sauvegarder aussi en texte pour faciliter la lecture
rapport_txt_path = os.path.join(ticket_reports_dir, f"rapport_final_{ticket_id}.txt")
rapport_txt_path = os.path.join(ticket_reports_dir, f"rapport_final_{ticket_id}_{model_name}.txt")
with open(rapport_txt_path, "w", encoding="utf-8") as f:
f.write(f"RAPPORT D'ANALYSE DU TICKET {ticket_id}\n")
f.write("="*50 + "\n\n")

View File

@ -69,7 +69,22 @@ class ReportCSVExporter:
# Utiliser le modèle depuis les métadonnées si non spécifié
if not model_name:
model_name = data.get('metadata', {}).get('model', 'unknown')
# Chercher le nom du modèle dans les métadonnées (comme dans pipeline_logger.py)
model_name = "unknown"
if isinstance(data, dict):
# Priorité 1: Vérifier model_info.model (structure principale)
if "metadata" in data and "model_info" in data["metadata"] and "model" in data["metadata"]["model_info"]:
model_name = data["metadata"]["model_info"]["model"]
# Priorité 2: Vérifier metadata.model (structure alternative)
elif "metadata" in data and "model" in data["metadata"]:
model_name = data["metadata"]["model"]
# S'assurer que model_name n'est pas None avant d'appeler lower()
if model_name:
# Nettoyer le nom du modèle pour éviter les caractères problématiques dans le nom de fichier
model_name = model_name.lower().replace("/", "_").replace(":", "_").replace("\\", "_").replace(" ", "_")
else:
model_name = "unknown"
# Ajouter un timestamp pour éviter les écrasements
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
@ -307,14 +322,28 @@ def generer_csv_depuis_rapport(json_path: str, output_dir: Optional[str] = None)
os.makedirs(output_dir, exist_ok=True)
# Créer le chemin du fichier CSV
model_info = ""
if "_results" in basename:
model_match = re.search(r'_([a-zA-Z0-9-]+)_results', basename)
if model_match:
model_info = f"_{model_match.group(1)}"
# Extraire le nom du modèle directement à partir du contenu JSON
model_name = "unknown"
try:
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# Chercher le nom du modèle dans les métadonnées (comme dans pipeline_logger.py)
if isinstance(data, dict):
# Priorité 1: Vérifier model_info.model (structure principale)
if "metadata" in data and "model_info" in data["metadata"] and "model" in data["metadata"]["model_info"]:
model_name = data["metadata"]["model_info"]["model"]
# Priorité 2: Vérifier metadata.model (structure alternative)
elif "metadata" in data and "model" in data["metadata"]:
model_name = data["metadata"]["model"]
# Nettoyer le nom du modèle pour éviter les problèmes de caractères spéciaux
model_name = model_name.lower().replace("/", "_").replace(":", "_").replace("\\", "_").replace(" ", "_")
except Exception as e:
logger.warning(f"Erreur lors de l'extraction du nom du modèle: {e}")
csv_path = os.path.join(output_dir, f"{ticket_id}{model_info}_exchanges.csv")
# Créer le chemin du fichier CSV
csv_path = os.path.join(output_dir, f"{ticket_id}_{model_name}_exchanges.csv")
# Extraire le tableau du rapport
tableau = extraire_tableau_du_rapport(json_path)
@ -432,14 +461,28 @@ def generer_csv_qr(json_path: str, output_dir: Optional[str] = None) -> Optional
os.makedirs(output_dir, exist_ok=True)
# Créer le chemin du fichier CSV
model_info = ""
if "_results" in basename:
model_match = re.search(r'_([a-zA-Z0-9-]+)_results', basename)
if model_match:
model_info = f"_{model_match.group(1)}"
# Extraire le nom du modèle directement à partir du contenu JSON
model_name = "unknown"
try:
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# Chercher le nom du modèle dans les métadonnées (comme dans pipeline_logger.py)
if isinstance(data, dict):
# Priorité 1: Vérifier model_info.model (structure principale)
if "metadata" in data and "model_info" in data["metadata"] and "model" in data["metadata"]["model_info"]:
model_name = data["metadata"]["model_info"]["model"]
# Priorité 2: Vérifier metadata.model (structure alternative)
elif "metadata" in data and "model" in data["metadata"]:
model_name = data["metadata"]["model"]
# Nettoyer le nom du modèle pour éviter les problèmes de caractères spéciaux
model_name = model_name.lower().replace("/", "_").replace(":", "_").replace("\\", "_").replace(" ", "_")
except Exception as e:
logger.warning(f"Erreur lors de l'extraction du nom du modèle: {e}")
csv_path = os.path.join(output_dir, f"{ticket_id}{model_info}_qa.csv")
# Créer le chemin du fichier CSV
csv_path = os.path.join(output_dir, f"{ticket_id}_{model_name}_qa.csv")
# Extraire le tableau du rapport
tableau = extraire_tableau_du_rapport(json_path)
@ -516,20 +559,134 @@ def traiter_rapports_ticket(ticket_id: str) -> None:
logger.warning(f"Dossier pipeline non trouvé: {pipeline_dir}")
return
# Créer le répertoire pour les fichiers CSV
csv_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "CSV", ticket_id)
os.makedirs(csv_dir, exist_ok=True)
# Dictionnaire pour suivre quels modèles ont déjà été traités
modeles_traites = set()
# Liste les fichiers par ordre alphabétique pour un traitement stable
fichiers = sorted([f for f in os.listdir(pipeline_dir) if f.startswith("rapport_final") and f.endswith(".json")])
# Chercher tous les rapports finaux
for filename in os.listdir(pipeline_dir):
if filename.startswith("rapport_final") and filename.endswith(".json"):
json_path = os.path.join(pipeline_dir, filename)
logger.info(f"Traitement du rapport: {filename}")
# Générer les deux types de CSV
csv_path = generer_csv_depuis_rapport(json_path)
csv_qr_path = generer_csv_qr(json_path)
if csv_path:
logger.info(f"CSV généré: {csv_path}")
if csv_qr_path:
logger.info(f"CSV Q/R généré: {csv_qr_path}")
for filename in fichiers:
json_path = os.path.join(pipeline_dir, filename)
logger.info(f"Traitement du rapport: {filename}")
# Extraire le nom du modèle depuis le contenu du fichier JSON
try:
with open(json_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# Utiliser le même système d'extraction que pipeline_logger.py
model_name = "unknown"
# Si les données sont dans une liste, prendre le premier élément
if isinstance(data, list) and len(data) > 0 and isinstance(data[0], dict):
data = data[0]
# Extraire des métadonnées
if isinstance(data, dict):
# Priorité 1: Vérifier model_info.model (structure principale)
if "metadata" in data and "model_info" in data["metadata"] and "model" in data["metadata"]["model_info"]:
model_name = data["metadata"]["model_info"]["model"]
# Priorité 2: Vérifier metadata.model (structure alternative)
elif "metadata" in data and "model" in data["metadata"]:
model_name = data["metadata"]["model"]
# Si extraction échouée, essayer d'extraire du nom de fichier comme fallback
if model_name == "unknown":
model_match = re.search(r'rapport_final_([^_]+)', filename)
if model_match:
model_name_full = model_match.group(1)
# Simplifier le nom du modèle
if "mistral" in model_name_full.lower():
model_name = "mistral"
elif "llama" in model_name_full.lower():
model_name = "llama"
elif "pixtral" in model_name_full.lower():
model_name = "pixtral"
else:
model_name = model_name_full.split("-")[0].split(":")[0]
# Nettoyer le nom du modèle
if model_name and model_name != "unknown":
model_name = model_name.lower().replace("/", "_").replace(":", "_").replace("\\", "_").replace(" ", "_")
except Exception as e:
logger.warning(f"Erreur lors de l'extraction du modèle depuis {json_path}: {e}")
# Fallback à l'extraction par nom de fichier
model_match = re.search(r'rapport_final_([^_]+)', filename)
if model_match:
model_name_full = model_match.group(1)
if "mistral" in model_name_full.lower():
model_name = "mistral"
elif "llama" in model_name_full.lower():
model_name = "llama"
elif "pixtral" in model_name_full.lower():
model_name = "pixtral"
else:
model_name = model_name_full.split("-")[0].split(":")[0]
else:
model_name = "unknown"
# Vérifier si ce modèle a déjà été traité pour éviter les doublons
if model_name in modeles_traites:
logger.info(f"Modèle {model_name} déjà traité, ignoré pour éviter les doublons")
continue
# Marquer ce modèle comme traité
modeles_traites.add(model_name)
# Créer directement les noms de fichiers CSV
csv_exchanges = os.path.join(csv_dir, f"{ticket_id}_{model_name}_exchanges.csv")
csv_qa = os.path.join(csv_dir, f"{ticket_id}_{model_name}_qa.csv")
# Supprimer les fichiers existants pour éviter les doublons
if os.path.exists(csv_exchanges):
os.remove(csv_exchanges)
if os.path.exists(csv_qa):
os.remove(csv_qa)
# Extraire le tableau du rapport
tableau = extraire_tableau_du_rapport(json_path)
if not tableau:
logger.warning(f"Aucun tableau à exporter depuis {json_path}")
continue
# Écrire le CSV des échanges
try:
with open(csv_exchanges, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(tableau)
logger.info(f"CSV échanges généré: {csv_exchanges}")
except Exception as e:
logger.error(f"Erreur lors de la génération du CSV échanges: {e}")
# Extraire les paires Q/R et écrire le CSV Q/R
paires_qr = extraire_questions_reponses(tableau)
if paires_qr:
try:
with open(csv_qa, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
# Écrire l'en-tête
writer.writerow(["Question", "Réponse", "Contexte Question", "Contexte Réponse"])
# Écrire les données
for paire in paires_qr:
writer.writerow([
paire.get("question", ""),
paire.get("réponse", ""),
paire.get("contexte_question", ""),
paire.get("contexte_réponse", "")
])
logger.info(f"CSV Q/R généré: {csv_qa}")
except Exception as e:
logger.error(f"Erreur lors de la génération du CSV Q/R: {e}")
else:
logger.warning(f"Aucune paire Q/R extraite de {json_path}")
logger.info(f"Traitement terminé. {len(modeles_traites)} modèles traités: {', '.join(modeles_traites)}")
if __name__ == "__main__":
# Configurer l'analyse des arguments

View File

@ -1,30 +1,20 @@
{
"prompt": "Voici les données d'analyse pour un ticket de support :\n\n=== ANALYSE DU TICKET ===\nLe problème d'accessibilité à l'essai BRGLAB a été résolu de lui-même.\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.",
"response": "Voici un exemple de rapport croisé basé sur les instructions fournies :",
"prompt": "Voici les données d'analyse pour un ticket de support :\n\n=== ANALYSE DU TICKET ===\nLe problème d'accessibilité à l'essai BRGLAB a été résolu automatiquement.\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.",
"response": "Voici un exemple de rapport croisé basé sur les instructions fournies :\n\n| ÉMETTEUR | TYPE | DATE | CONTENU | ÉLÉMENTS VISUELS |\n| --- | --- | --- | --- | --- |\n| CLIENT | question | [insérer date] | Problème d'accessibilité à l'essai BRGLAB. Impossible de se connecter. | Capture d'écran de la page d'accueil avec erreur d'accès |\n| SUPPORT | réponse | [insérer date] | Le problème a été résolu automatiquement. Veuillez réessayer de vous connecter. | - |\n\nNote : Puisqu'il n'y a pas d'autres informations fournies sur les échanges entre le client et le support, ce tableau est très succinct. Dans un scénario réel, il faudrait inclure toutes les interactions pertinentes avec leurs dates respectives, ainsi que des descriptions détaillées du contenu et des éléments visuels associés.",
"metadata": {
"ticket_id": "T11143",
"timestamp": "20250422_155921",
"timestamp": "20250422_172810",
"source_agent": "AgentReportGenerator",
"model_info": {
"model": "llama3.2-vision:90b-instruct-q8_0",
"temperature": 0.2,
"top_p": 0.8,
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": 120,
"num_predict": 1024,
"min_p": 0,
"seed": 0,
"stop": [
"\n\n",
"###"
],
"stream": false
"max_tokens": 8000,
"presence_penalty": 0,
"frequency_penalty": 0,
"stop": [],
"stream": false,
"n": 1
}
}
}

View File

@ -16,27 +16,15 @@ class LlamaVision(BaseLLM):
super().__init__(modele)
self.api_url = "http://217.182.105.173:11434/api/generate"
# Paramètres optimisés pour réduire les timeouts
self.params: Dict[str, Any] = {
"temperature": 0.1, # Réduit pour des réponses plus prévisibles
"top_p": 0.8, # Légèrement réduit pour accélérer
"top_k": 30, # Réduit pour limiter les choix et accélérer
"num_ctx": 1024, # Contexte réduit pour des réponses plus rapides
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0, # Désactivé pour accélérer
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": int(timedelta(minutes=2).total_seconds()), # Réduit le temps de maintien
"num_predict": 1024, # Limite la longueur de sortie
"min_p": 0,
"seed": 0,
"stop": ["\n\n", "###"], # Ajout de tokens d'arrêt pour terminer plus tôt
"stream": False
}
# Timeout de requête augmenté pour les images volumineuses
self.request_timeout = 300 # 5 minutes
# Configuration standard via la méthode héritée
self.configurer(
temperature=0.1,
top_p=0.8,
max_tokens=1024,
)
def urlBase(self) -> str:
"""
@ -69,20 +57,21 @@ class LlamaVision(BaseLLM):
"options": {
"temperature": self.params["temperature"],
"top_p": self.params["top_p"],
"top_k": self.params["top_k"],
"num_ctx": self.params["num_ctx"],
"repeat_penalty": self.params["repeat_penalty"],
"repeat_last_n": self.params["repeat_last_n"],
"mirostat": self.params["mirostat"],
"mirostat_eta": self.params["mirostat_eta"],
"mirostat_tau": self.params["mirostat_tau"],
"keep_alive": self.params["keep_alive"],
"num_predict": self.params["num_predict"],
"min_p": self.params["min_p"],
"seed": self.params["seed"],
"stop": self.params["stop"],
"num_predict": self.params.get("max_tokens", 1024),
"stop": self.params.get("stop", []),
# Paramètres Ollama spécifiques avec valeurs par défaut
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": int(timedelta(minutes=2).total_seconds()),
"min_p": 0,
"seed": 0,
},
"stream": self.params["stream"]
"stream": False
}
return contenu
@ -197,20 +186,21 @@ Question: {question}"""
"options": {
"temperature": self.params["temperature"],
"top_p": self.params["top_p"],
"top_k": self.params["top_k"],
"num_ctx": self.params["num_ctx"],
"repeat_penalty": self.params["repeat_penalty"],
"repeat_last_n": self.params["repeat_last_n"],
"mirostat": self.params["mirostat"],
"mirostat_eta": self.params["mirostat_eta"],
"mirostat_tau": self.params["mirostat_tau"],
"keep_alive": self.params["keep_alive"],
"num_predict": self.params["num_predict"],
"min_p": self.params["min_p"],
"seed": self.params["seed"],
"stop": self.params["stop"],
"num_predict": self.params.get("max_tokens", 1024),
"stop": self.params.get("stop", []),
# Paramètres Ollama spécifiques
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": int(timedelta(minutes=2).total_seconds()),
"min_p": 0,
"seed": 0,
},
"stream": self.params["stream"]
"stream": False
}
self.heureDepart = datetime.now()
@ -247,10 +237,12 @@ Question: {question}"""
def configurer(self, **kwargs):
"""
Mise à jour facile des paramètres spécifiques à Llama Vision.
Mise à jour des paramètres du modèle.
Utilise la méthode de BaseLLM pour mettre à jour les paramètres.
"""
for key, value in kwargs.items():
if key in self.params:
self.params[key] = value
elif key == "request_timeout" and isinstance(value, int):
self.request_timeout = value
# Si request_timeout est spécifié, le mettre à jour séparément
if "request_timeout" in kwargs and isinstance(kwargs["request_timeout"], int):
self.request_timeout = kwargs.pop("request_timeout")
# Utiliser la méthode de la classe parente pour mettre à jour les paramètres standards
super().configurer(**kwargs)

View File

@ -44,60 +44,62 @@ def main():
"""Fonction principale pour l'analyse des tickets de support."""
args = parse_arguments()
# 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
}
logger.info(f"Configuration: {json.dumps(config, indent=2)}")
try:
# Initialisation des agents llama_vision
agents = AgentFactoryLlamaVision.create_all_agents()
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
}
# Application des skips
if args.skip_ticket_analysis:
agents["ticket_analyser"] = None
if args.skip_image_sorting:
agents["image_sorter"] = None
if args.skip_image_analysis:
agents["image_analyser"] = None
if args.skip_report:
agents["report_generator"] = None
logger.info(f"Configuration: {json.dumps(config, indent=2)}")
# Orchestrateur de llama_vision
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"),
config=config
)
try:
# Initialisation des agents llama_vision
agents = AgentFactoryLlamaVision.create_all_agents()
# Application des skips
if args.skip_ticket_analysis:
agents["ticket_analyser"] = None
if args.skip_image_sorting:
agents["image_sorter"] = None
if args.skip_image_analysis:
agents["image_analyser"] = None
if args.skip_report:
agents["report_generator"] = None
# Orchestrateur de llama_vision
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"),
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")
if agents.get("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("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)
except Exception as e:
logger.error(f"Erreur lors de l'éxécution : {e}", exc_info=True)
return 1
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")
if agents.get("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("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)
except Exception as e:
logger.error(f"Erreur lors de l'exécution : {e}", exc_info=True)
return 1
return 0
if __name__ == "__main__":

View File

@ -1,167 +0,0 @@
RÉSULTATS DE L'ANALYSE ANALYSE_IMAGE - TICKET T11143
================================================================================
--- ÉLÉMENT 1 ---
### Analyse de l'image
#### 1. Description objective
L'image montre une page web affichée dans un navigateur (probablement Google Chrome, comme indiqué par l'icône). La page semble être une interface d'administration ou de gestion d'un serveur Tomcat. Voici les éléments visibles :
- **Titre de la page** : "It works !"
- **Message principal** : "If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations!"
- **Contenu de la page** :
- La page explique que Tomcat a été installé avec succès et fournit des informations sur la localisation du fichier par défaut de Tomcat (`/var/lib/tomcat7/webapps/ROOT/index.html`).
- Elle mentionne également que Tomcat a été installé avec `CATALINA_HOME` et `CATALINA_BASE` configurés sur `/var/lib/tomcat7`.
- Des instructions sont données pour accéder à d'autres packages Tomcat :
- `tomcat7-docs` : Documentation locale accessible via `http://localhost/docs`.
- `tomcat7-examples` : Exemples accessibles via `http://localhost/examples`.
- `tomcat7-admin` : Interface d'administration accessible via `http://localhost/manager/html`.
- Une note de sécurité indique que l'accès aux interfaces d'administration est restreint aux utilisateurs avec les rôles "manager-gui" et "admin-gui".
#### 2. Éléments techniques clés
- **Version logicielle** :
- La page mentionne Tomcat 7 (`tomcat7`), ce qui indique que la version du serveur est Tomcat 7.
- **Codes d'erreur visibles** :
- Aucun code d'erreur n'est visible dans l'image.
- **Paramètres configurables** :
- Aucun paramètre configurable n'est visible dans cette interface.
- **Valeurs affichées ou préremplies** :
- Les chemins d'accès aux packages Tomcat sont affichés (`tomcat7-docs`, `tomcat7-examples`, `tomcat7-admin`).
- **Éléments désactivés, grisés ou masqués** :
- Aucun élément désactivé, grisé ou masqué n'est visible.
- **Boutons actifs/inactifs** :
- Aucun bouton n'est visible dans cette interface.
- **Boutons RAZ ou réinitialisation** :
- Aucun bouton "RAZ" ou de réinitialisation n'est visible.
- **Éléments colorés** :
- Les liens vers les packages Tomcat (`tomcat7-docs`, `tomcat7-examples`, `tomcat7-admin`) sont en bleu, ce qui est standard pour les liens hypertexte.
#### 3. Éléments mis en évidence
- **Zones entourées, encadrées, surlignées ou fléchées** :
- Aucune zone n'est entourée, encadrée, surlignée ou fléchée dans l'image.
- **Messages d'erreur visibles** :
- Aucun message d'erreur n'est visible dans l'image.
#### 4. Relation avec le problème
- **Lien avec le problème décrit dans le ticket** :
- La page affichée correspond à une installation réussie de Tomcat 7, ce qui indique que le serveur est opérationnel.
- Le client mentionnait un problème d'accès à l'essai au bleu, mais cette capture d'écran ne montre pas directement cet essai.
- L'image confirme que l'adresse https://zk1.brg-lab.com/ fonctionne, comme indiqué par le client dans son dernier message.
- **Nom complet du module/essai concerné** :
- L'image ne montre pas directement l'essai au bleu, donc le nom complet ("Essai au bleu de méthylène de méthylène") n'est pas visible.
- **Accès à l'écran d'essai** :
- L'image ne permet pas de déterminer si l'utilisateur a accès à l'écran d'essai au bleu.
#### 5. Réponses potentielles
- **Réponse à la question posée dans le ticket** :
- L'image confirme que l'adresse https://zk1.brg-lab.com/ fonctionne et affiche une page de confirmation d'installation de Tomcat 7.
- Elle ne fournit pas d'informations sur l'accès à l'essai au bleu.
- **Contexte technique précis** :
- L'image montre une installation réussie de Tomcat 7, ce qui suggère que le serveur est opérationnel.
#### 6. Lien avec la discussion
- **Correspondance avec le fil de discussion** :
- L'image correspond à la demande de vérification de l'accès à la page https://zk1.brg-lab.com/, comme demandé par Fabien LAFAY.
- Le client a confirmé que l'adresse fonctionne, ce qui est cohérent avec le contenu de l'image.
- **Connexions explicites** :
- Le client utilisait le terme "essai au bleu", mais l'image ne montre pas cet essai.
- L'image confirme uniquement que le serveur Tomcat est opérationnel.
#### 7. Contexte technique élargi
- **Contexte de l'application** :
- L'image montre une interface d'administration de serveur Tomcat, ce qui suggère un environnement de gestion de serveurs web.
- **Références à des normes ou standards** :
- Aucune référence à des normes ou standards n'est visible dans l'image.
- **Codes ou identifiants visibles** :
- Les chemins d'accès aux packages Tomcat (`tomcat7-docs`, `tomcat7-examples`, `tomcat7-admin`) sont visibles.
### Conclusion
L'image confirme que l'adresse https://zk1.brg-lab.com/ fonctionne et affiche une page de confirmation d'installation de Tomcat 7. Elle ne fournit pas d'informations sur l'accès à l'essai au bleu de méthylène.
----------------------------------------
--- ÉLÉMENT 2 ---
### Analyse de l'image
#### 1. Description objective
- **Interface logicielle** : L'image montre une interface web du logiciel **BRG-LAB**.
- **Menus et onglets** :
- Menu principal à gauche avec les sections suivantes :
- **ESSAIS** (sélectionné)
- **MATÉRIELS**
- **PORTEFEUILLE**
- **OBSERVATIONS**
- **SMO**
- **HISTORIQUE**
- Sous-menu dans la section **ESSAIS** :
- **ENREGISTRE**
- **RAZ** (probablement "Préparation Avant Essai")
- **EXÉCUTER**
- **RAPPORT**
- **IMPRESSION**
- **STATISTIQUES**
- **Titre du module** : **Essai au bleu de méthylène de méthylène (MB) - NF EN 933-9 (02-2022)**.
- **Informations supplémentaires** :
- Échantillon : **n° 25-00075** réceptionné le 02/04/2025 par **BOLLÉE Victor**, prélevé le 02/04/2025 par **BOLLÉE Victor**, n° prélèvement : **25-00075**.
- Matériau : **Sable 0/2 C - CARRIÈRE ADCE9**.
- **Messages d'erreur ou système** : Aucun message d'erreur visible dans l'image.
- **Autres éléments** :
- Un bouton avec une icône de flèche circulaire (probablement pour actualiser ou réinitialiser).
- Un message en bas de l'écran : **Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com**.
#### 2. Éléments techniques clés
- **Version logicielle ou module** : **Essai au bleu de méthylène de méthylène (MB) - NF EN 933-9 (02-2022)**.
- **Codes d'erreur visibles** : Aucun code d'erreur spécifique visible.
- **Paramètres configurables** : Aucun paramètre configurable visible dans cette capture.
- **Valeurs affichées ou préremplies** :
- Numéro d'échantillon : **25-00075**.
- Date de réception : **02/04/2025**.
- Nom du responsable : **BOLLÉE Victor**.
- Matériau : **Sable 0/2 C - CARRIÈRE ADCE9**.
- **Éléments désactivés, grisés ou masqués** : Aucun élément désactivé ou grisé visible.
- **Boutons actifs/inactifs** :
- Bouton avec une icône de flèche circulaire (actif).
- **Boutons RAZ ou réinitialisation** : Aucun bouton "RAZ" visible dans cette capture.
- **Éléments colorés** :
- Le bouton avec l'icône de flèche circulaire est en bleu, ce qui semble faire partie de l'interface standard.
#### 3. Éléments mis en évidence
- **Zones entourées, encadrées, surlignées ou fléchées** : Aucune zone spécifique n'est mise en évidence dans cette capture.
- **Messages d'erreur** : Le message **Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com** est visible en bas de l'écran.
#### 4. Relation avec le problème
- **Lien avec le problème décrit dans le ticket** :
- Le client mentionne un problème d'accès à l'**essai au bleu**. L'image montre l'interface de l'**Essai au bleu de méthylène de méthylène (MB) - NF EN 933-9**, ce qui correspond au module concerné.
- Le message en bas de l'écran (**Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com**) pourrait être lié au problème d'accès signalé par le client.
- **Accès à l'essai** : L'utilisateur semble avoir accès à l'écran de l'essai, mais le message d'erreur en bas de l'écran indique un problème potentiel.
#### 5. Réponses potentielles
- **Réponse à la question du ticket** :
- L'image montre que l'utilisateur a accès à l'interface de l'**Essai au bleu de méthylène de méthylène (MB) - NF EN 933-9**.
- Le message d'erreur en bas de l'écran pourrait expliquer le problème d'accès signalé initialement par le client.
- **Contexte technique précis** :
- L'**essai au bleu** mentionné par le client correspond clairement à l'**Essai au bleu de méthylène de méthylène (MB) - NF EN 933-9**.
#### 6. Lien avec la discussion
- **Correspondance avec le fil de discussion** :
- Le client a mentionné un problème d'accès à l'**essai au bleu**, et l'image montre l'interface de ce module.
- Le support a demandé une vérification de l'accès à la page https://zk1.brg-lab.com/, et le message d'erreur en bas de l'écran semble lié à cette adresse.
- **Connexion avec le vocabulaire du client** :
- Le terme **essai au bleu** utilisé par le client correspond à l'**Essai au bleu de méthylène de méthylène (MB)** visible dans l'interface.
#### 7. Contexte technique élargi
- **Contexte de l'application** : Le logiciel **BRG-LAB** est utilisé pour des essais techniques en laboratoire, notamment pour des tests normalisés.
- **Références à des normes ou standards** : L'essai visible est conforme à la norme **NF EN 933-9 (02-2022)**.
- **Codes ou identifiants visibles** :
- Numéro d'échantillon : **25-00075**.
- Matériau : **Sable 0/2 C - CARRIÈRE ADCE9**.
### Conclusion
L'image montre que l'utilisateur a accès à l'interface de l'**Essai au bleu de méthylène de méthylène (MB) - NF EN 933-9**, mais un message d'erreur indique un problème potentiel lié à l'adresse IP du serveur. Ce message pourrait être lié au problème d'accès signalé par le client.
----------------------------------------
================================================================================
Fichier original: analyse_image_pixtral-large-latest_results.json

View File

@ -1,32 +0,0 @@
[
{
"prompt": "### TICKET T11143\n\n--- MESSAGE INITIAL DU CLIENT ---\nAuteur : GIRAUD TP (JCG), Victor BOLLÉE, v.bollee@labojcg.fr\nDate : 03/04/2025 08:34\nContenu :\nBRGLAB - Essai inaccessible\n*Contenu non extractible*\n\n--- MESSAGE 1 ---\nAuteur : Fabien LAFAY\nDate : 03/04/2025 08:35\nType : Système\nSujet : Re: [T11143] BRGLAB - Essai inaccessible\nContenu :\nGIRAUD TP (JCG), Victor BOLLÉE\n-\nil y a 9 minutes\n;\nFabien LAFAY\n;\nRomuald GRUSON\n;\nsupport\n;\nsupport\n-\nQuentin FAIVRE\n-\nFabien LAFAY\n-\nRomuald GRUSON\nBonjour,\nJe ne parviens pas à accéder au lessai au bleu :\nMerci par avance pour votre.\nCordialement\n![Image](https://odoo.cbao.fr/web/image/145435?access_token=608ac9e7-3627-4a13-a8ec-06ff5046ebf3)\n\n---\n\n--- MESSAGE 2 ---\nAuteur : Fabien LAFAY\nDate : 03/04/2025 12:17\nType : E-mail\nSujet : Re: [T11143] - BRGLAB - Essai inaccessible\nContenu :\nBonjour\n,\nPouvez-vous vérifier si vous avez bien accès à la page suivante en l'ouvrant dans votre navigateur :\nhttps://zk1.brg-lab.com/\nVoici ce que vous devriez voir affiché :\nSi ce n'est pas le cas, pouvez-vous me faire une capture d'écran de ce qui est affiché?\nJe reste à votre entière disposition pour toute information complémentaire.\nCordialement,\n---\nSupport technique\n\n- image.png (image/png) [ID: 145453]\n\n---\n\n--- MESSAGE 3 ---\nAuteur : Victor BOLLÉE\nDate : 03/04/2025 12:21\nType : E-mail\nSujet : TR: [T11143] - BRGLAB - Essai inaccessible\nContenu :\nBonjour,\nLe problème sest résolu seul par la suite.\nJe vous remercie pour votre retour.\nBonne journée\nPS : ladresse fonctionne\nDe :\n\n---\n\n",
"response": "Le problème d'accessibilité à l'essai BRGLAB a été résolu de lui-même.",
"metadata": {
"timestamp": "20250422_155823",
"source_agent": "AgentTicketAnalyser",
"ticket_id": "T11143",
"model_info": {
"model": "llama3.2-vision:90b-instruct-q8_0",
"temperature": 0.2,
"top_p": 0.8,
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": 120,
"num_predict": 1024,
"min_p": 0,
"seed": 0,
"stop": [
"\n\n",
"###"
],
"stream": false
}
}
}
]

View File

@ -1,12 +0,0 @@
RÉSULTATS DE L'ANALYSE ANALYSE_TICKET - TICKET T11143
================================================================================
--- ÉLÉMENT 1 ---
Le problème d'accessibilité à l'essai BRGLAB a été résolu de lui-même.
----------------------------------------
================================================================================
Fichier original: analyse_ticket_llama3.2-vision:90b-instruct-q8_0_results.json

View File

@ -1,22 +0,0 @@
[
{
"prompt": "### TICKET T11143\n\n--- MESSAGE INITIAL DU CLIENT ---\nAuteur : GIRAUD TP (JCG), Victor BOLLÉE, v.bollee@labojcg.fr\nDate : 03/04/2025 08:34\nContenu :\nBRGLAB - Essai inaccessible\n*Contenu non extractible*\n\n--- MESSAGE 1 ---\nAuteur : Fabien LAFAY\nDate : 03/04/2025 08:35\nType : Système\nSujet : Re: [T11143] BRGLAB - Essai inaccessible\nContenu :\nGIRAUD TP (JCG), Victor BOLLÉE\n-\nil y a 9 minutes\n;\nFabien LAFAY\n;\nRomuald GRUSON\n;\nsupport\n;\nsupport\n-\nQuentin FAIVRE\n-\nFabien LAFAY\n-\nRomuald GRUSON\nBonjour,\nJe ne parviens pas à accéder au lessai au bleu :\nMerci par avance pour votre.\nCordialement\n![Image](https://odoo.cbao.fr/web/image/145435?access_token=608ac9e7-3627-4a13-a8ec-06ff5046ebf3)\n\n---\n\n--- MESSAGE 2 ---\nAuteur : Fabien LAFAY\nDate : 03/04/2025 12:17\nType : E-mail\nSujet : Re: [T11143] - BRGLAB - Essai inaccessible\nContenu :\nBonjour\n,\nPouvez-vous vérifier si vous avez bien accès à la page suivante en l'ouvrant dans votre navigateur :\nhttps://zk1.brg-lab.com/\nVoici ce que vous devriez voir affiché :\nSi ce n'est pas le cas, pouvez-vous me faire une capture d'écran de ce qui est affiché?\nJe reste à votre entière disposition pour toute information complémentaire.\nCordialement,\n---\nSupport technique\n\n- image.png (image/png) [ID: 145453]\n\n---\n\n--- MESSAGE 3 ---\nAuteur : Victor BOLLÉE\nDate : 03/04/2025 12:21\nType : E-mail\nSujet : TR: [T11143] - BRGLAB - Essai inaccessible\nContenu :\nBonjour,\nLe problème sest résolu seul par la suite.\nJe vous remercie pour votre retour.\nBonne journée\nPS : ladresse fonctionne\nDe :\n\n---\n\n",
"response": "### Résumé du contexte\n- **Client** : Victor BOLLÉE, v.bollee@labojcg.fr\n- **Sujet du ticket reformulé en une ou plusieurs questions** :\n - Pourquoi l'essai au bleu est-il inaccessible ?\n - Comment accéder à la page https://zk1.brg-lab.com/ ?\n- **Description technique synthétique** :\n - Le client ne parvient pas à accéder à l'essai au bleu.\n - Le problème s'est résolu de lui-même par la suite.\n - L'adresse https://zk1.brg-lab.com/ fonctionne.\n\n### Informations techniques détectées\n- **Logiciels/modules mentionnés** :\n - Essai au bleu\n- **Paramètres évoqués** :\n - Aucun paramètre spécifique mentionné.\n- **Fonctionnalités impactées** :\n - Accès à l'essai au bleu.\n- **Conditions spécifiques** :\n - Aucune condition spécifique mentionnée.\n\n### Fil de discussion (filtrée, nettoyée, classée)\n- **Intervenant** : Victor BOLLÉE (Client)\n - **Date** : 03/04/2025 08:34\n - **Contenu** :\n ```\n Bonjour,\n Je ne parviens pas à accéder au lessai au bleu :\n Merci par avance pour votre.\n Cordialement\n ```\n - **Résumés techniques** :\n - Problème d'accès à l'essai au bleu.\n\n- **Intervenant** : Fabien LAFAY (Support)\n - **Date** : 03/04/2025 12:17\n - **Contenu** :\n ```\n Bonjour,\n Pouvez-vous vérifier si vous avez bien accès à la page suivante en l'ouvrant dans votre navigateur :\n https://zk1.brg-lab.com/\n Voici ce que vous devriez voir affiché :\n Si ce n'est pas le cas, pouvez-vous me faire une capture d'écran de ce qui est affiché?\n Je reste à votre entière disposition pour toute information complémentaire.\n Cordialement,\n ```\n - **Résumés techniques** :\n - Demande de vérification de l'accès à la page https://zk1.brg-lab.com/.\n - Demande de capture d'écran si la page n'affiche pas le contenu attendu.\n\n- **Intervenant** : Victor BOLLÉE (Client)\n - **Date** : 03/04/2025 12:21\n - **Contenu** :\n ```\n Bonjour,\n Le problème sest résolu seul par la suite.\n Je vous remercie pour votre retour.\n Bonne journée\n PS : ladresse fonctionne\n ```\n - **Résumés techniques** :\n - Le problème s'est résolu de lui-même.\n - L'adresse https://zk1.brg-lab.com/ fonctionne.\n\n### Éléments liés à l'analyse visuelle\n- **Nombre d'images attachées** : 1\n- **Références aux interfaces ou options à visualiser** :\n - Page d'accès à l'essai au bleu.\n - Page https://zk1.brg-lab.com/.\n- **Points à vérifier dans les captures** :\n - Vérifier si la page https://zk1.brg-lab.com/ affiche le contenu attendu.",
"metadata": {
"timestamp": "20250422_084712",
"source_agent": "AgentTicketAnalyser",
"ticket_id": "T11143",
"model_info": {
"model": "mistral-large-latest",
"temperature": 0.1,
"top_p": 0.5,
"max_tokens": 4000,
"presence_penalty": 0,
"frequency_penalty": 0,
"stop": [],
"stream": false,
"n": 1
}
}
}
]

View File

@ -1,81 +0,0 @@
RÉSULTATS DE L'ANALYSE ANALYSE_TICKET - TICKET T11143
================================================================================
--- ÉLÉMENT 1 ---
### Résumé du contexte
- **Client** : Victor BOLLÉE, v.bollee@labojcg.fr
- **Sujet du ticket reformulé en une ou plusieurs questions** :
- Pourquoi l'essai au bleu est-il inaccessible ?
- Comment accéder à la page https://zk1.brg-lab.com/ ?
- **Description technique synthétique** :
- Le client ne parvient pas à accéder à l'essai au bleu.
- Le problème s'est résolu de lui-même par la suite.
- L'adresse https://zk1.brg-lab.com/ fonctionne.
### Informations techniques détectées
- **Logiciels/modules mentionnés** :
- Essai au bleu
- **Paramètres évoqués** :
- Aucun paramètre spécifique mentionné.
- **Fonctionnalités impactées** :
- Accès à l'essai au bleu.
- **Conditions spécifiques** :
- Aucune condition spécifique mentionnée.
### Fil de discussion (filtrée, nettoyée, classée)
- **Intervenant** : Victor BOLLÉE (Client)
- **Date** : 03/04/2025 08:34
- **Contenu** :
```
Bonjour,
Je ne parviens pas à accéder au lessai au bleu :
Merci par avance pour votre.
Cordialement
```
- **Résumés techniques** :
- Problème d'accès à l'essai au bleu.
- **Intervenant** : Fabien LAFAY (Support)
- **Date** : 03/04/2025 12:17
- **Contenu** :
```
Bonjour,
Pouvez-vous vérifier si vous avez bien accès à la page suivante en l'ouvrant dans votre navigateur :
https://zk1.brg-lab.com/
Voici ce que vous devriez voir affiché :
Si ce n'est pas le cas, pouvez-vous me faire une capture d'écran de ce qui est affiché?
Je reste à votre entière disposition pour toute information complémentaire.
Cordialement,
```
- **Résumés techniques** :
- Demande de vérification de l'accès à la page https://zk1.brg-lab.com/.
- Demande de capture d'écran si la page n'affiche pas le contenu attendu.
- **Intervenant** : Victor BOLLÉE (Client)
- **Date** : 03/04/2025 12:21
- **Contenu** :
```
Bonjour,
Le problème sest résolu seul par la suite.
Je vous remercie pour votre retour.
Bonne journée
PS : ladresse fonctionne
```
- **Résumés techniques** :
- Le problème s'est résolu de lui-même.
- L'adresse https://zk1.brg-lab.com/ fonctionne.
### Éléments liés à l'analyse visuelle
- **Nombre d'images attachées** : 1
- **Références aux interfaces ou options à visualiser** :
- Page d'accès à l'essai au bleu.
- Page https://zk1.brg-lab.com/.
- **Points à vérifier dans les captures** :
- Vérifier si la page https://zk1.brg-lab.com/ affiche le contenu attendu.
----------------------------------------
================================================================================
Fichier original: analyse_ticket_mistral-large-latest_results.json

View File

@ -1,26 +0,0 @@
[
{
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image.png",
"status": "unique"
},
{
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145435.png",
"status": "unique"
},
{
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145453.png",
"status": "duplicate"
},
{
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
"status": "unique"
},
{
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/5ad281b63492e31c9e66bf27518b816cdd3766cab9812bd4ff16b736e9e98265.jpg",
"status": "duplicate"
},
{
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
"status": "unique"
}
]

View File

@ -1,32 +0,0 @@
[
{
"prompt": "Voici les données d'analyse pour un ticket de support :\n\n=== ANALYSE DU TICKET ===\nLe problème d'accessibilité à l'essai BRGLAB a été résolu de lui-même.\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.",
"response": "Voici un exemple de rapport croisé basé sur les instructions fournies :",
"metadata": {
"ticket_id": "T11143",
"timestamp": "20250422_155921",
"source_agent": "AgentReportGenerator",
"model_info": {
"model": "llama3.2-vision:90b-instruct-q8_0",
"temperature": 0.2,
"top_p": 0.8,
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": 120,
"num_predict": 1024,
"min_p": 0,
"seed": 0,
"stop": [
"\n\n",
"###"
],
"stream": false
}
}
}
]

View File

@ -1,12 +0,0 @@
RÉSULTATS DE L'ANALYSE RAPPORT_FINAL - TICKET T11143
================================================================================
--- ÉLÉMENT 1 ---
Voici un exemple de rapport croisé basé sur les instructions fournies :
----------------------------------------
================================================================================
Fichier original: rapport_final_llama3.2-vision:90b-instruct-q8_0_results.json

View File

@ -1,4 +0,0 @@
RAPPORT D'ANALYSE DU TICKET T11143
==================================================
Voici un exemple de rapport croisé basé sur les instructions fournies :

View File

@ -1,42 +0,0 @@
RÉSULTATS DE L'ANALYSE RAPPORT_FINAL - TICKET T11143
================================================================================
--- ÉLÉMENT 1 ---
### Rapport Final
#### 1. Contexte général
Le client signale un problème d'accès à l'essai au bleu, qui s'est résolu de lui-même par la suite, et confirme que l'adresse https://zk1.brg-lab.com/ fonctionne.
#### 2. Problèmes ou questions identifiés
- Pourquoi l'essai au bleu est-il inaccessible ?
- Comment accéder à la page https://zk1.brg-lab.com/ ?
#### 3. Résumé croisé image/texte pour chaque question
**Pourquoi l'essai au bleu est-il inaccessible ?**
- **Texte du ticket** : Le client mentionne un problème d'accès à l'essai au bleu.
- **Image (image_145435.png)** : L'image montre l'interface de l'essai au bleu de méthylène de méthylène (MB) - NF EN 933-9. Un message d'erreur en bas de l'écran indique : "Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com".
**Comment accéder à la page https://zk1.brg-lab.com/ ?**
- **Texte du ticket** : Le support demande au client de vérifier l'accès à la page https://zk1.brg-lab.com/.
- **Image (image.png)** : L'image confirme que la page https://zk1.brg-lab.com/ est accessible et affiche une page de confirmation d'installation de Tomcat 7.
#### 4. Liste d'observations supplémentaires pertinentes
- L'essai au bleu mentionné par le client correspond à l'essai au bleu de méthylène de méthylène (MB) - NF EN 933-9.
- Le message d'erreur "Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com" pourrait être lié au problème d'accès initial signalé par le client.
- La page https://zk1.brg-lab.com/ affiche une confirmation d'installation de Tomcat 7, indiquant que le serveur est opérationnel.
#### 5. Tableau chronologique d'échanges
| ÉMETTEUR | TYPE | DATE | CONTENU | ÉLÉMENTS VISUELS |
| --- | --- | --- | --- | --- |
| CLIENT | question | 03/04/2025 08:34 | Problème d'accès à l'essai au bleu. | Message d'erreur : "Impossible de trouver l'adresse IP du serveur de zk1.brg-lab.com" (image_145435.png) |
| SUPPORT | réponse | 03/04/2025 12:17 | Demande de vérification de l'accès à la page https://zk1.brg-lab.com/. | Page de confirmation d'installation de Tomcat 7 (image.png) |
| CLIENT | information | 03/04/2025 12:21 | Le problème s'est résolu de lui-même. L'adresse https://zk1.brg-lab.com/ fonctionne. | Page de confirmation d'installation de Tomcat 7 (image.png) |
----------------------------------------
================================================================================
Fichier original: rapport_final_mistral-large-latest_results.json

View File

@ -1,130 +0,0 @@
[
{
"is_relevant": false,
"reason": "Non, l'image semble être un code aléatoire et non liée à un problème technique spécifique. Elle ne fournit aucune information utile pour résoudre un problème technique. Il est probable qu'il s'agisse d'un erreur ou d'un fichier corrompu.",
"raw_response": "Non, l'image semble être un code aléatoire et non liée à un problème technique spécifique. Elle ne fournit aucune information utile pour résoudre un problème technique. Il est probable qu'il s'agisse d'un erreur ou d'un fichier corrompu.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image.png",
"image_name": "image.png",
"timestamp": "20250422_155840",
"model_info": {
"model": "llama3.2-vision:90b-instruct-q8_0",
"temperature": 0.2,
"top_p": 0.8,
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": 120,
"num_predict": 1024,
"min_p": 0,
"seed": 0,
"stop": [
"\n\n",
"###"
],
"stream": false
},
"source_agent": "AgentImageSorter"
}
},
{
"is_relevant": false,
"reason": "Non, l'image semble être un code aléatoire et non liée à un problème technique spécifique. Elle ne fournit aucune information utile pour résoudre un problème technique. Il est probable qu'il s'agisse d'un erreur ou d'un fichier corrompu.",
"raw_response": "Non, l'image semble être un code aléatoire et non liée à un problème technique spécifique. Elle ne fournit aucune information utile pour résoudre un problème technique. Il est probable qu'il s'agisse d'un erreur ou d'un fichier corrompu.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145435.png",
"image_name": "image_145435.png",
"timestamp": "20250422_155855",
"model_info": {
"model": "llama3.2-vision:90b-instruct-q8_0",
"temperature": 0.2,
"top_p": 0.8,
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": 120,
"num_predict": 1024,
"min_p": 0,
"seed": 0,
"stop": [
"\n\n",
"###"
],
"stream": false
},
"source_agent": "AgentImageSorter"
}
},
{
"is_relevant": false,
"reason": "Non, l'image semble être un code ou un texte aléatoire et ne contient aucune information visuelle pertinente pour un ticket de support technique.",
"raw_response": "Non, l'image semble être un code ou un texte aléatoire et ne contient aucune information visuelle pertinente pour un ticket de support technique.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
"image_name": "543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
"timestamp": "20250422_155905",
"model_info": {
"model": "llama3.2-vision:90b-instruct-q8_0",
"temperature": 0.2,
"top_p": 0.8,
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": 120,
"num_predict": 1024,
"min_p": 0,
"seed": 0,
"stop": [
"\n\n",
"###"
],
"stream": false
},
"source_agent": "AgentImageSorter"
}
},
{
"is_relevant": false,
"reason": "Non, l'image semble être un code binaire représentant une image, mais sans description ni contexte lié à un problème technique spécifique, elle n'est pas pertinente pour un ticket de support technique.",
"raw_response": "Non, l'image semble être un code binaire représentant une image, mais sans description ni contexte lié à un problème technique spécifique, elle n'est pas pertinente pour un ticket de support technique.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
"image_name": "a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
"timestamp": "20250422_155917",
"model_info": {
"model": "llama3.2-vision:90b-instruct-q8_0",
"temperature": 0.2,
"top_p": 0.8,
"top_k": 30,
"num_ctx": 1024,
"repeat_penalty": 1.1,
"repeat_last_n": 64,
"mirostat": 0,
"mirostat_eta": 0.1,
"mirostat_tau": 5,
"keep_alive": 120,
"num_predict": 1024,
"min_p": 0,
"seed": 0,
"stop": [
"\n\n",
"###"
],
"stream": false
},
"source_agent": "AgentImageSorter"
}
}
]

View File

@ -1,30 +0,0 @@
RÉSULTATS DE L'ANALYSE TRI_IMAGE - TICKET T11143
================================================================================
--- ÉLÉMENT 1 ---
Non, l'image semble être un code aléatoire et non liée à un problème technique spécifique. Elle ne fournit aucune information utile pour résoudre un problème technique. Il est probable qu'il s'agisse d'un erreur ou d'un fichier corrompu.
----------------------------------------
--- ÉLÉMENT 2 ---
Non, l'image semble être un code aléatoire et non liée à un problème technique spécifique. Elle ne fournit aucune information utile pour résoudre un problème technique. Il est probable qu'il s'agisse d'un erreur ou d'un fichier corrompu.
----------------------------------------
--- ÉLÉMENT 3 ---
Non, l'image semble être un code ou un texte aléatoire et ne contient aucune information visuelle pertinente pour un ticket de support technique.
----------------------------------------
--- ÉLÉMENT 4 ---
Non, l'image semble être un code binaire représentant une image, mais sans description ni contexte lié à un problème technique spécifique, elle n'est pas pertinente pour un ticket de support technique.
----------------------------------------
================================================================================
Fichier original: tri_image_llama3.2-vision:90b-instruct-q8_0_results.json

View File

@ -1,90 +0,0 @@
[
{
"is_relevant": true,
"reason": "Oui.\n\nL'image montre une capture d'écran d'une page web liée à l'installation et à la configuration d'un logiciel (Tomcat), ce qui est pertinent pour un ticket de support technique.",
"raw_response": "Oui.\n\nL'image montre une capture d'écran d'une page web liée à l'installation et à la configuration d'un logiciel (Tomcat), ce qui est pertinent pour un ticket de support technique.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image.png",
"image_name": "image.png",
"timestamp": "20250422_084714",
"model_info": {
"model": "pixtral-large-latest",
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 300,
"presence_penalty": 0,
"frequency_penalty": 0,
"stop": [],
"stream": false,
"n": 1
},
"source_agent": "AgentImageSorter"
}
},
{
"is_relevant": true,
"reason": "Oui.\nL'image montre une capture d'écran d'une interface logicielle de BRG-LAB, ce qui est pertinent pour un ticket de support technique.",
"raw_response": "Oui.\nL'image montre une capture d'écran d'une interface logicielle de BRG-LAB, ce qui est pertinent pour un ticket de support technique.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/image_145435.png",
"image_name": "image_145435.png",
"timestamp": "20250422_084716",
"model_info": {
"model": "pixtral-large-latest",
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 300,
"presence_penalty": 0,
"frequency_penalty": 0,
"stop": [],
"stream": false,
"n": 1
},
"source_agent": "AgentImageSorter"
}
},
{
"is_relevant": false,
"reason": "Non.\n\nL'image montre uniquement le logo de la société CBAO, ce qui n'est pas pertinent pour un ticket de support technique.",
"raw_response": "Non.\n\nL'image montre uniquement le logo de la société CBAO, ce qui n'est pas pertinent pour un ticket de support technique.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
"image_name": "543d7da1b54c29ff43ce5712d1a9aa4962ed21795c4e943fcb8cb84fd4d7465a.jpg",
"timestamp": "20250422_084717",
"model_info": {
"model": "pixtral-large-latest",
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 300,
"presence_penalty": 0,
"frequency_penalty": 0,
"stop": [],
"stream": false,
"n": 1
},
"source_agent": "AgentImageSorter"
}
},
{
"is_relevant": false,
"reason": "Non.\n\nL'image représente un logo ou une illustration promotionnelle, probablement liée à une marque ou un événement. Elle n'est pas pertinente pour un ticket de support technique car elle ne montre ni interface logicielle, ni message d'erreur, ni configuration technique.",
"raw_response": "Non.\n\nL'image représente un logo ou une illustration promotionnelle, probablement liée à une marque ou un événement. Elle n'est pas pertinente pour un ticket de support technique car elle ne montre ni interface logicielle, ni message d'erreur, ni configuration technique.",
"metadata": {
"image_path": "output/ticket_T11143/T11143_20250422_084617/attachments/a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
"image_name": "a20f7697fd5e1d1fca3296c6d01228220e0e112c46b4440cc938f74d10934e98.gif",
"timestamp": "20250422_084719",
"model_info": {
"model": "pixtral-large-latest",
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 300,
"presence_penalty": 0,
"frequency_penalty": 0,
"stop": [],
"stream": false,
"n": 1
},
"source_agent": "AgentImageSorter"
}
}
]

View File

@ -1,37 +0,0 @@
RÉSULTATS DE L'ANALYSE TRI_IMAGE - TICKET T11143
================================================================================
--- ÉLÉMENT 1 ---
Oui.
L'image montre une capture d'écran d'une page web liée à l'installation et à la configuration d'un logiciel (Tomcat), ce qui est pertinent pour un ticket de support technique.
----------------------------------------
--- ÉLÉMENT 2 ---
Oui.
L'image montre une capture d'écran d'une interface logicielle de BRG-LAB, ce qui est pertinent pour un ticket de support technique.
----------------------------------------
--- ÉLÉMENT 3 ---
Non.
L'image montre uniquement le logo de la société CBAO, ce qui n'est pas pertinent pour un ticket de support technique.
----------------------------------------
--- ÉLÉMENT 4 ---
Non.
L'image représente un logo ou une illustration promotionnelle, probablement liée à une marque ou un événement. Elle n'est pas pertinente pour un ticket de support technique car elle ne montre ni interface logicielle, ni message d'erreur, ni configuration technique.
----------------------------------------
================================================================================
Fichier original: tri_image_pixtral-large-latest_results.json

View File

@ -1,4 +0,0 @@
RAPPORT D'ANALYSE DU TICKET T11143
==================================================
Voici un exemple de rapport croisé basé sur les instructions fournies :