llm_ticket3/test_image_analyse_workflow.py
2025-04-18 12:05:46 +02:00

82 lines
3.0 KiB
Python

#!/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())