#!/usr/bin/env python3 """ Script pour pré-télécharger tous les modèles d'IA nécessaires. Exécuter ce script avant la première utilisation pour éviter les délais. """ import sys from pathlib import Path # Ajouter le répertoire parent au path sys.path.insert(0, str(Path(__file__).parent)) from core.config import CONFIG def download_openclip(): """Télécharge le modèle OpenCLIP pour les embeddings.""" print("📥 Téléchargement d'OpenCLIP...") try: import open_clip model_name = CONFIG["models"]["clip"] model, _, preprocess = open_clip.create_model_and_transforms( model_name, pretrained="openai" ) print(f"✅ OpenCLIP ({model_name}) téléchargé") return True except Exception as e: print(f"❌ Erreur OpenCLIP: {e}") return False def download_owlv2(): """Télécharge le modèle OWL-v2 pour la détection d'objets.""" print("📥 Téléchargement d'OWL-v2...") try: from transformers import Owlv2Processor, Owlv2ForObjectDetection model_path = CONFIG["models"]["paths"]["owl_v2"] Path(model_path).mkdir(parents=True, exist_ok=True) processor = Owlv2Processor.from_pretrained( "google/owlv2-base-patch16-ensemble", cache_dir=model_path ) model = Owlv2ForObjectDetection.from_pretrained( "google/owlv2-base-patch16-ensemble", cache_dir=model_path ) print("✅ OWL-v2 téléchargé") return True except Exception as e: print(f"❌ Erreur OWL-v2: {e}") return False def check_ollama(): """Vérifie si Ollama est installé et le modèle Qwen est disponible.""" print("🔍 Vérification d'Ollama...") try: import subprocess # Vérifier si ollama est installé result = subprocess.run( ["ollama", "list"], capture_output=True, text=True, timeout=5 ) if result.returncode == 0: print("✅ Ollama est installé") # Vérifier si qwen3-vl est disponible if "qwen3-vl" in result.stdout.lower(): print("✅ Modèle Qwen3-VL disponible") return True else: print("⚠️ Modèle Qwen3-VL non trouvé") print(" Pour le télécharger: ollama pull qwen3-vl:8b") return False else: print("❌ Ollama n'est pas installé") print(" Installation: curl -fsSL https://ollama.com/install.sh | sh") return False except FileNotFoundError: print("❌ Ollama n'est pas installé") print(" Installation: curl -fsSL https://ollama.com/install.sh | sh") return False except Exception as e: print(f"❌ Erreur lors de la vérification d'Ollama: {e}") return False def main(): """Télécharge tous les modèles nécessaires.""" print("=" * 60) print("🚀 Téléchargement des Modèles d'IA - RPA Vision V2") print("=" * 60) print() results = { "OpenCLIP": download_openclip(), "OWL-v2": download_owlv2(), "Ollama": check_ollama() } print() print("=" * 60) print("📊 Résumé") print("=" * 60) for model, success in results.items(): status = "✅" if success else "❌" print(f"{status} {model}") print() if all(results.values()): print("🎉 Tous les modèles sont prêts !") print() print("Vous pouvez maintenant lancer l'application:") print(" ./run.sh") return 0 else: print("⚠️ Certains modèles ne sont pas disponibles.") print() print("L'application fonctionnera en mode dégradé.") print("Consultez les messages ci-dessus pour plus d'informations.") return 1 if __name__ == "__main__": sys.exit(main())