mirror of
https://github.com/Ladebeze66/llm_lab.git
synced 2025-12-13 10:46:50 +01:00
137 lines
5.0 KiB
Python
137 lines
5.0 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Script d'exemple pour montrer l'utilisation des agents d'analyse d'image et JSON
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import json
|
|
import argparse
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
# Ajouter le répertoire parent au sys.path pour importer les modules
|
|
sys.path.append(str(Path(__file__).parent.parent))
|
|
|
|
from agents.analyse_image import AgentAnalyseImage
|
|
from agents.analyse_json import AgentAnalyseJSON
|
|
|
|
def create_output_dir():
|
|
"""Crée un répertoire pour les sorties basé sur la date/heure"""
|
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
output_dir = f"outputs/vision_{timestamp}"
|
|
os.makedirs(output_dir, exist_ok=True)
|
|
return output_dir
|
|
|
|
def analyse_directe(image_path, output_dir):
|
|
"""Analyse directe avec l'agent d'analyse d'image"""
|
|
print(f"\n=== Analyse directe de l'image {os.path.basename(image_path)} ===")
|
|
|
|
# Création d'une instance AgentAnalyseImage
|
|
agent = AgentAnalyseImage("AgentVision")
|
|
|
|
# Analyse de l'image avec une question spécifique
|
|
question = "Décris en détail cette image. Qu'est-ce que tu y vois? Y a-t-il du texte visible?"
|
|
print(f"Question: {question}")
|
|
|
|
resultats = agent.executer(image_path, question=question)
|
|
|
|
if "erreur" in resultats:
|
|
print(f"Erreur: {resultats['erreur']}")
|
|
return
|
|
|
|
# Affichage du résultat
|
|
print("\nRéponse:")
|
|
for analyse in resultats["analyses"]:
|
|
print(f"\n{analyse['reponse']}")
|
|
|
|
# Sauvegarde du résultat
|
|
output_file = os.path.join(output_dir, "resultat_direct.json")
|
|
agent.sauvegarder_resultats(output_file, resultats)
|
|
print(f"\nRésultat sauvegardé dans: {output_file}")
|
|
|
|
def workflow_complet(image_path, json_path=None, output_dir=None):
|
|
"""Workflow complet: analyse image puis analyse JSON"""
|
|
print(f"\n=== Workflow complet pour l'image {os.path.basename(image_path)} ===")
|
|
|
|
if output_dir is None:
|
|
output_dir = create_output_dir()
|
|
|
|
# Étape 1: Analyse de l'image
|
|
print("\nÉtape 1: Analyse de l'image")
|
|
agent_image = AgentAnalyseImage("AgentVision")
|
|
|
|
# Chargement des données JSON si spécifiées
|
|
json_data = None
|
|
if json_path:
|
|
try:
|
|
with open(json_path, 'r', encoding='utf-8') as f:
|
|
json_data = json.load(f)
|
|
print(f"Données JSON chargées depuis {json_path}")
|
|
except Exception as e:
|
|
print(f"Erreur lors du chargement du JSON: {e}")
|
|
|
|
# Exécution de l'analyse d'image
|
|
resultats_image = agent_image.executer(image_path, json_data)
|
|
|
|
# Sauvegarde des résultats intermédiaires
|
|
image_output_file = os.path.join(output_dir, "analyse_image.json")
|
|
agent_image.sauvegarder_resultats(image_output_file, resultats_image)
|
|
print(f"Analyse d'image sauvegardée dans: {image_output_file}")
|
|
|
|
# Étape 2: Analyse des résultats JSON
|
|
print("\nÉtape 2: Analyse approfondie des résultats")
|
|
agent_json = AgentAnalyseJSON("AgentAnalyseJSON")
|
|
|
|
# Analyse des résultats de l'image
|
|
question_json = "Analyse les résultats de l'analyse d'image et extrait les éléments clés."
|
|
resultats_analyse = agent_json.executer(resultats_image, question_json)
|
|
|
|
# Sauvegarde des résultats d'analyse
|
|
json_output_file = os.path.join(output_dir, "analyse_complete.json")
|
|
with open(json_output_file, 'w', encoding='utf-8') as f:
|
|
json.dump(resultats_analyse, f, ensure_ascii=False, indent=2)
|
|
print(f"Analyse complète sauvegardée dans: {json_output_file}")
|
|
|
|
# Fusion des résultats
|
|
resultats_finaux = {
|
|
"image": image_path,
|
|
"timestamp": datetime.now().isoformat(),
|
|
"analyse_image": resultats_image,
|
|
"analyse_json": resultats_analyse
|
|
}
|
|
|
|
# Sauvegarde des résultats finaux
|
|
final_output_file = os.path.join(output_dir, "resultats_finaux.json")
|
|
with open(final_output_file, 'w', encoding='utf-8') as f:
|
|
json.dump(resultats_finaux, f, ensure_ascii=False, indent=2)
|
|
print(f"Résultats finaux sauvegardés dans: {final_output_file}")
|
|
|
|
return resultats_finaux
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser(description="Analyse d'images avec les agents")
|
|
parser.add_argument("--image", required=True, help="Chemin vers l'image à analyser")
|
|
parser.add_argument("--json", help="Chemin vers un fichier JSON complémentaire (optionnel)")
|
|
parser.add_argument("--mode", choices=["direct", "complet"], default="complet",
|
|
help="Mode d'analyse: direct (simple) ou complet (workflow)")
|
|
|
|
args = parser.parse_args()
|
|
|
|
# Vérification de l'existence de l'image
|
|
if not os.path.exists(args.image):
|
|
print(f"Erreur: L'image {args.image} n'existe pas")
|
|
sys.exit(1)
|
|
|
|
# Création du répertoire de sortie
|
|
output_dir = create_output_dir()
|
|
|
|
# Exécution du mode choisi
|
|
if args.mode == "direct":
|
|
analyse_directe(args.image, output_dir)
|
|
else:
|
|
workflow_complet(args.image, args.json, output_dir)
|
|
|
|
print("\nAnalyse terminée !") |