mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-16 00:26:51 +01:00
108 lines
4.4 KiB
Python
108 lines
4.4 KiB
Python
"""Point d'entrée principal pour l'analyse d'un ticket de support en utilisant exclusivementLlama_vision."""
|
|
|
|
import os
|
|
import sys
|
|
import argparse
|
|
import logging
|
|
import json
|
|
from typing import Dict, Any
|
|
|
|
from agent_factory_llama import AgentFactoryLlamaVision
|
|
from orchestrator_llama import OrchestratorLlamaVision
|
|
from agents.utils.report_csv_exporter import traiter_rapports_ticket
|
|
|
|
# Configuration du logging
|
|
logging.basicConfig(level=logging.INFO,
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
handlers=[
|
|
logging.StreamHandler(),
|
|
logging.FileHandler('main_llama.log')
|
|
])
|
|
|
|
logger = logging.getLogger("MainLlamaVision")
|
|
|
|
def parse_arguments():
|
|
parser = argparse.ArgumentParser(description="Analyse complète d'un ticket avec llama_vision.")
|
|
|
|
parser.add_argument("ticket_id", help="ID du ticket à analyser (ex: T1234)")
|
|
parser.add_argument("--output_dir", default="output", help="Répertoire de sortie (par défaut:)")
|
|
#Options de configuration
|
|
parser.add_argument("--no-dedup", action="store_true", help="Désactiver le préfiltrage des doublons d'images")
|
|
parser.add_argument("--seuil", type=int, default=5, help="Seuil de similarité pour la déduplication (0-10)")
|
|
parser.add_argument("--save-results", action="store_true", help="Sauvegarder les résultats intermédiaires")
|
|
parser.add_argument("--debug", action="store_true", help="Activer le mode debug")
|
|
parser.add_argument("--reports-dir", default="reports", help="Répertoire de suvegarde des rapports")
|
|
# Etapes falcutatives
|
|
parser.add_argument("--skip-ticket-analysis", action="store_true", help="Sauter l'analyse du ticket")
|
|
parser.add_argument("--skip-image-sorting", action="store_true", help="Sauter le tri d'images")
|
|
parser.add_argument("--skip-image-analysis", action="store_true", help="Sauter l'analyse des images")
|
|
parser.add_argument("--skip-report", action="store_true", help="Sauter la génération du rapport")
|
|
|
|
return parser.parse_args()
|
|
|
|
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()
|
|
|
|
# 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'exécution : {e}", exc_info=True)
|
|
return 1
|
|
|
|
return 0
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|
|
|
|
|