#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Script pour tester le workflow d'analyse d'images avec contexte. Utilise la structure modulaire créée dans le répertoire tests/. """ import sys import os import argparse import logging # Import du workflow from tests.workflows.image_analyser_workflow import execute_workflow def main(): # Configuration de l'analyseur d'arguments parser = argparse.ArgumentParser(description="Tester le workflow d'analyse d'images avec contexte") parser.add_argument("ticket_id", help="ID du ticket à analyser (ex: T1234)") parser.add_argument("--output_dir", default="output", help="Répertoire de sortie contenant les tickets") parser.add_argument("--text_model", default="mistral_large", help="Modèle LLM à utiliser pour l'analyse de texte") parser.add_argument("--vision_model", default="pixtral_large", help="Modèle LLM à utiliser pour l'analyse d'image") parser.add_argument("--verbose", "-v", action="store_true", help="Afficher plus d'informations") # Analyser les arguments args = parser.parse_args() # Configurer le logging log_level = logging.DEBUG if args.verbose else logging.INFO logging.basicConfig( level=log_level, format='%(asctime)s - %(levelname)s - %(name)s - %(message)s', handlers=[ logging.FileHandler(f"image_analyse_workflow_{args.ticket_id}.log"), logging.StreamHandler() ] ) # Vérifier que le ticket existe ticket_path = os.path.join(args.output_dir, f"ticket_{args.ticket_id}") if not os.path.exists(ticket_path): print(f"ERREUR: Le ticket {args.ticket_id} n'existe pas dans {args.output_dir}") return 1 # Afficher les informations de début print("="*80) print(f"TEST DU WORKFLOW D'ANALYSE D'IMAGES AVEC CONTEXTE") print(f"Ticket: {args.ticket_id}") print(f"Modèle texte: {args.text_model}") print(f"Modèle vision: {args.vision_model}") print("="*80) print() # Exécuter le workflow results = execute_workflow( ticket_id=args.ticket_id, output_dir=args.output_dir, text_model=args.text_model, vision_model=args.vision_model ) # Afficher un résumé des résultats if "error" in results: print(f"\nErreur lors de l'exécution du workflow: {results['error']}") print(f"Étape en échec: {results.get('stage', 'inconnue')}") return 1 print("\n" + "="*80) print("RÉSUMÉ DU WORKFLOW") print("="*80) print(f"Ticket: {results['ticket_id']}") print(f"Analyse du ticket: {len(results['ticket_analysis']) if results['ticket_analysis'] else 0} caractères") print(f"Images totales: {results['images_count']}") print(f"Images pertinentes: {len(results['relevant_images'])}") print(f"Images analysées: {len(results['analysis_results'])}") print(f"Temps d'exécution: {results['execution_time']:.2f} secondes") print("\nWorkflow exécuté avec succès!") return 0 if __name__ == "__main__": sys.exit(main())