Files
Geniusia_v2/geniusia2/QWEN3_VL_ACTIVATION.md
2026-03-05 00:20:25 +01:00

4.5 KiB

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é

# 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é

ollama list

# Devrait afficher:
# NAME              ID              SIZE
# qwen3-vl:8b       ...             ~8GB

3. Tester le modèle

ollama run qwen3-vl:8b "Décris cette image"
# (Coller une image)

4. Lancer l'application et observer

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

# 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 :

# 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 :

# 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 :

# Le système utilisera automatiquement le fallback
pkill ollama

Logs

Les appels à Qwen3-VL sont loggés dans data/logs/ :

{
  "action": "llm_generation",
  "prompt": "Analyse ces 3 captures...",
  "response": "Rafraîchir la page",
  "timestamp": "2025-11-17T..."
}