#!/usr/bin/env python3
"""
Test de Qwen3-VL avec une image réelle
"""

import sys
sys.path.insert(0, 'geniusia2')

from core.llm_manager import LLMManager
import cv2
import numpy as np

print("=" * 60)
print("🧪 TEST QWEN3-VL AVEC IMAGE")
print("=" * 60)

# 1. Charger l'image
print("\n1️⃣ Chargement de l'image...")
image_path = "geniusia2/thumb_Lac_d_Annecy-vue_panoramique.jpeg"
try:
    image = cv2.imread(image_path)
    if image is None:
        print(f"❌ Impossible de charger l'image: {image_path}")
        sys.exit(1)
    print(f"✅ Image chargée: {image.shape}")
except Exception as e:
    print(f"❌ Erreur: {e}")
    sys.exit(1)

# 2. Initialiser le LLM Manager
print("\n2️⃣ Initialisation du LLM Manager...")
try:
    llm = LLMManager(model_name="qwen3-vl:8b")
    print(f"✅ LLM Manager créé")
except Exception as e:
    print(f"❌ Erreur: {e}")
    sys.exit(1)

# 3. Vérifier la disponibilité
print("\n3️⃣ Vérification de la disponibilité...")
try:
    available = llm.is_available()
    print(f"Disponible: {available}")
    if not available:
        print("❌ Ollama n'est pas disponible")
        print("💡 Lance Ollama avec: ollama serve")
        sys.exit(1)
    print("✅ Ollama est disponible")
except Exception as e:
    print(f"❌ Erreur: {e}")
    sys.exit(1)

# 4. Test sans image (texte seul)
print("\n4️⃣ Test sans image (texte seul)...")
try:
    response = llm.generate_with_vision(
        prompt="Réponds juste 'OK'",
        images=None
    )
    print(f"Réponse: '{response}'")
    print(f"Longueur: {len(response)}")
    if response and len(response) > 0:
        print("✅ Génération texte fonctionne")
    else:
        print("⚠️ Réponse vide")
except Exception as e:
    print(f"❌ Erreur: {e}")
    import traceback
    traceback.print_exc()

# 5. Test avec l'image
print("\n5️⃣ Test avec l'image...")
try:
    prompt = "Décris moi l'image en 1 phrase"
    print(f"Prompt: {prompt}")
    print(f"Image shape: {image.shape}")
    
    response = llm.generate_with_vision(
        prompt=prompt,
        images=[image]
    )
    
    print(f"\n📝 Réponse complète:")
    print("-" * 60)
    print(response)
    print("-" * 60)
    print(f"Longueur: {len(response)} caractères")
    
    if response and len(response) > 5:
        print("✅ Génération avec image fonctionne")
    else:
        print("⚠️ Réponse trop courte ou vide")
        
except Exception as e:
    print(f"❌ Erreur: {e}")
    import traceback
    traceback.print_exc()

print("\n" + "=" * 60)
print("✅ Test terminé")
print("=" * 60)
