# Activation de Qwen3-VL ## Changements Effectués Qwen3-VL est maintenant **activé** et utilisé dans deux endroits clés : ### 1. Génération de Description de Tâche **Fichier**: `orchestrator.py` **Méthode**: `_generate_task_description_with_llm()` Quand un pattern est détecté (3 clics répétés), Qwen3-VL analyse les screenshots et génère une description intelligente. **Avant** : ``` ✅ Tâche créée : task_abc123 📝 Description : Tâche dans Unknown ``` **Après** : ``` 🤖 Analyse avec Qwen3-VL... ✓ Description générée: Rafraîchir la page ✅ Tâche créée : task_abc123 📝 Description : Rafraîchir la page ``` **Ce que Qwen3-VL reçoit** : - 3 screenshots de l'action répétée - Contexte (fenêtre, type d'action, nombre de répétitions) - Prompt demandant une description courte **Ce que Qwen3-VL retourne** : - Description intelligente de la tâche (ex: "Rafraîchir la page", "Ouvrir un nouvel onglet") ### 2. Identification d'Élément UI **Fichier**: `vision_analysis.py` **Méthode**: `analyze_action()` Quand une action est analysée, Qwen3-VL identifie l'élément UI cliqué. **Avant** : ``` element_type: "unknown" ``` **Après** : ``` element_type: "button" element_description: "Bouton Rafraîchir" ``` **Ce que Qwen3-VL reçoit** : - Screenshot de la région cliquée (ROI) - Position du clic - Type d'action **Ce que Qwen3-VL retourne** : - Identification de l'élément (ex: "Bouton Rafraîchir", "Icône Paramètres") ## Flux Complet avec Qwen3-VL ``` 1. Utilisateur clique 3 fois ↓ 2. EventCapture détecte le pattern ↓ 3. Orchestrator récupère les 3 screenshots ↓ 4. Pour chaque screenshot: ├─ VisionAnalysis extrait la région cliquée ├─ 🤖 Qwen3-VL identifie l'élément: "Bouton Rafraîchir" └─ Signature créée avec description ↓ 5. 🤖 Qwen3-VL analyse les 3 actions └─ Génère: "Rafraîchir la page" ↓ 6. Tâche créée avec description intelligente ↓ 7. Sauvegardée dans data/user_profiles/ ``` ## Vérifier que Qwen3-VL Fonctionne ### 1. Vérifier qu'Ollama est lancé ```bash # Vérifier le service curl http://localhost:11434/api/tags # Devrait retourner la liste des modèles ``` ### 2. Vérifier que le modèle est téléchargé ```bash ollama list # Devrait afficher: # NAME ID SIZE # qwen3-vl:8b ... ~8GB ``` ### 3. Tester le modèle ```bash ollama run qwen3-vl:8b "Décris cette image" # (Coller une image) ``` ### 4. Lancer l'application et observer ```bash cd geniusia2 ./run.sh ``` **Faire 3 clics répétés**, tu devrais voir : ``` 🎯 PATTERN DÉTECTÉ DANS ORCHESTRATOR ! ============================================================ Répétitions: 3 Longueur: 1 Fenêtre: Firefox 🔍 Récupération des screenshots... 📊 Screenshots trouvés: 3 📸 Analyse de 3 actions... 🔬 Analyse action 1/3... ✓ Signature créée 🔬 Analyse action 2/3... ✓ Signature créée 🔬 Analyse action 3/3... ✓ Signature créée ✅ 3 signatures créées 🤖 Analyse avec Qwen3-VL... ✓ Description générée: Rafraîchir la page ✅ Tâche créée : task_abc123 📝 Description : Rafraîchir la page ``` ### 5. Surveiller l'utilisation GPU ```bash # Dans un autre terminal watch -n 1 nvidia-smi # Ou pour AMD watch -n 1 rocm-smi ``` Quand Qwen3-VL analyse, tu devrais voir : - **Utilisation GPU** : 60-80% - **Mémoire GPU** : +8 GB utilisés - **Processus** : `ollama` visible ## Fallback Automatique Si Qwen3-VL échoue (Ollama arrêté, erreur, timeout), le système utilise un fallback : ```python # Fallback pour la description description = f"Tâche dans {window}" # Fallback pour l'identification element_type = "unknown" ``` L'application continue de fonctionner même sans Qwen3-VL. ## Performance Avec Qwen3-VL activé : - **Temps d'analyse** : +2-3 secondes par pattern détecté - **Mémoire GPU** : +8 GB - **Qualité** : Descriptions beaucoup plus précises ## Désactiver Qwen3-VL Si tu veux désactiver temporairement : ```python # Dans orchestrator.py, ligne ~190 # Commenter l'appel au LLM: # task_description = self._generate_task_description_with_llm(...) task_description = f"Tâche dans {pattern.get('window', 'Unknown')}" ``` Ou arrêter Ollama : ```bash # Le système utilisera automatiquement le fallback pkill ollama ``` ## Logs Les appels à Qwen3-VL sont loggés dans `data/logs/` : ```json { "action": "llm_generation", "prompt": "Analyse ces 3 captures...", "response": "Rafraîchir la page", "timestamp": "2025-11-17T..." } ```