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

11 KiB
Raw Blame History

Gestionnaire d'Apprentissage - Documentation d'Implémentation

Vue d'Ensemble

Le module learning_manager.py implémente le gestionnaire d'apprentissage central pour RPA Vision V2. Il gère la progression d'apprentissage, les transitions de mode et le calcul des scores de confiance.

Fonctionnalités Implémentées

1. Classe LearningManager

Initialisation

  • Chargement de la configuration (seuils, pondérations)
  • Initialisation en mode Shadow par défaut
  • Chargement automatique des profils de tâches existants
  • Intégration avec EmbeddingsManager et Logger

Gestion des Profils de Tâches

_load_profiles()
  • Charge tous les profils JSON depuis le répertoire
  • Reconstruit les objets TaskProfile
  • Gestion d'erreurs robuste
_save_profile(task_id)
  • Sauvegarde un profil de tâche en JSON
  • Encodage UTF-8 pour support multilingue
  • Logging des opérations

Observation et Apprentissage

observe(action)
  • Enregistre une observation en mode Shadow
  • Crée automatiquement un profil de tâche si nécessaire
  • Génère un task_id basé sur fenêtre + élément + action
  • Ajoute l'action à la séquence
  • Stocke l'embedding dans FAISS
  • Déclenche transition Shadow → Assist après 5 observations
_generate_task_id(action)
  • Génère un ID unique basé sur le contexte
  • Format: {fenêtre}_{élément}_{type_action}
  • Nettoyage des espaces et conversion en minuscules

Suggestions et Prédictions

suggest_action(context)
  • Génère des suggestions en mode Assisté ou Auto
  • Recherche de similarité dans l'index FAISS
  • Trouve l'action la plus similaire dans l'historique
  • Calcule la confiance combinée (vision + LLM + historique)
  • Retourne None si pas de correspondance

Validation et Corrections

confirm_action(feedback)
  • Traite les retours utilisateur (accept/reject/correct)
  • Met à jour le taux de concordance
  • Gère les corrections avec ajout d'embeddings
  • Déclenche les vérifications de transition de mode
  • Sauvegarde automatique du profil
_update_concordance(task_id, success)
  • Calcul de concordance sur fenêtre glissante (10 dernières exécutions)
  • Stockage dans metadata pour persistance
  • Moyenne mobile pour adaptation progressive

Calcul de Confiance

calculate_confidence(vision_conf, llm_score, task_id)
  • Formule pondérée : 0.6 × vision + 0.3 × llm + 0.1 × historique
  • Normalisation entre 0.0 et 1.0
  • Intégration de la performance historique
_get_historical_performance(task_id)
  • Retourne le taux de concordance comme score historique
  • Valeur par défaut 0.5 pour nouvelles tâches

Évaluation et Métriques

evaluate_task(task_id)
  • Retourne toutes les métriques d'une tâche :
    • task_id, task_name, mode
    • observation_count, concordance_rate
    • confidence_score, correction_count
    • correction_rate, last_execution
get_all_tasks()
  • Retourne la liste de toutes les tâches avec métriques
  • Utile pour le tableau de bord
get_task_stats()
  • Statistiques globales :
    • Nombre total de tâches
    • Répartition par mode (shadow/assist/auto)
    • Mode actuel

Transitions de Mode

should_transition_to_auto(task_id)
  • Vérifie les critères Autopilot :
    • ≥ 20 observations
    • ≥ 95% concordance
  • Retourne booléen
rollback_if_low_confidence(task_id)
  • Rétrograde Auto → Assist si confiance < 90%
  • Logging de la transition avec raison
_check_mode_transitions(task_id)
  • Vérifie toutes les transitions possibles :
    • Shadow → Assist (5 observations)
    • Assist → Auto (critères remplis)
    • Auto → Assist (concordance < 85%)
_transition_mode(task_id, new_mode)
  • Effectue la transition de mode
  • Logging avec contexte (observations, concordance)
  • Sauvegarde automatique du profil

Gestion du Contexte

get_mode()
  • Retourne le mode de la tâche actuelle
  • Fallback vers mode global si pas de tâche
get_current_intent()
  • Retourne l'intention utilisateur du contexte
set_current_task(task_id)
  • Définit la tâche active
set_current_context(context)
  • Définit le contexte actuel

Enregistrement d'Exécution

record_execution(decision)
  • Enregistre l'exécution d'une action
  • Met à jour last_execution
  • Met à jour confidence_score
  • Logging et sauvegarde

Conformité aux Exigences

Exigence 1.2

TANT QUE le Système_RPA fonctionne en Mode_Shadow, LE Système_RPA DOIT enregistrer toutes les interactions utilisateur

Implémenté: La méthode observe() enregistre toutes les actions avec horodatages, fenêtres et positions.

Exigence 1.4

LORSQU'une interaction utilisateur est capturée en Mode_Shadow, LE Système_RPA DOIT générer et stocker des embeddings visuels

Implémenté: Les embeddings sont stockés dans FAISS via embeddings_manager.add_to_index().

Exigence 2.6

LORSQU'un Événement_Correction est enregistré, LE Gestionnaire_Apprentissage DOIT mettre à jour les embeddings visuels

Implémenté: La méthode confirm_action() avec type "correct" ajoute les nouveaux embeddings.

Exigence 3.1

LORSQU'une Séquence_Actions a un Compteur_Observations ≥20 ET un Taux_Concordance ≥95%, proposer transition vers Autopilot

Implémenté: La méthode should_transition_to_auto() vérifie ces critères exacts.

Exigence 3.6

LORSQU'un retour correctif est fourni après une action en Mode_Autopilot, ajuster le Score_Confiance

Implémenté: Les corrections mettent à jour la concordance qui influence le score de confiance.

Exigence 4.1, 4.2

Calculer le delta entre prédiction et réalité, déclencher ré-entraînement si delta > 10 pixels

Préparé: L'infrastructure est en place, sera complété dans l'orchestrateur.

Exigence 4.4

LORSQUE le Score_Confiance tombe en dessous de 90%, faire revenir au Mode_Assisté

Implémenté: La méthode rollback_if_low_confidence() effectue cette vérification.

Exigence 4.5

Notifier l'utilisateur lors des transitions avec raison

Implémenté: Toutes les transitions sont loggées avec raison via log_mode_transition().

Exigence 4.6

Recalculer le Score_Confiance après chaque exécution avec formule 0.6/0.3/0.1

Implémenté: La méthode calculate_confidence() utilise exactement cette formule.

Exigence 6.1

Maintenir des seuils de confiance dynamiques adaptatifs

Implémenté: Les seuils sont configurables et la concordance utilise une fenêtre glissante.

Exigence 6.4

LORSQUE le Taux_Concordance tombe en dessous de 85% sur les 10 dernières exécutions, passer au Mode_Assisté

Implémenté: La méthode _check_mode_transitions() vérifie ce critère.

Exigence 6.6

Suivre le taux d'Événement_Correction et alerter si > 5% sur 20 exécutions

Implémenté: Le correction_rate est calculé dans evaluate_task().

Architecture des Données

TaskProfile

Chaque tâche apprise contient :

  • Identification : task_id, task_name
  • État : mode, observation_count, last_execution
  • Performance : concordance_rate, confidence_score, correction_count
  • Sécurité : window_whitelist
  • Apprentissage : action_sequence, embeddings
  • Métadonnées : metadata (dont recent_results pour concordance)

Persistance

  • Format : JSON avec encodage UTF-8
  • Emplacement : data/user_profiles/{task_id}.json
  • Embeddings : Stockés séparément dans FAISS
  • Chargement : Automatique à l'initialisation

Formules et Algorithmes

Score de Confiance

confidence = 0.6 × vision_conf + 0.3 × llm_score + 0.1 × history_score

Taux de Concordance

concordance_rate = succès / total_exécutions (fenêtre de 10)

Taux de Correction

correction_rate = correction_count / observation_count

Critères de Transition

Shadow → Assist

  • observation_count ≥ 5

Assist → Auto

  • observation_count ≥ 20
  • concordance_rate ≥ 0.95

Auto → Assist

  • confidence_score < 0.90 OU
  • concordance_rate < 0.85

Intégration

Le LearningManager s'intègre avec :

  1. EmbeddingsManager : Stockage et recherche d'embeddings visuels
  2. Logger : Journalisation chiffrée de toutes les opérations
  3. Orchestrator : Boucle cognitive principale (à implémenter)
  4. GUI : Affichage des métriques et notifications (à implémenter)

Tests

Tests unitaires complets dans tests/test_learning_manager.py :

  • Initialisation
  • Observation d'actions
  • Transitions de mode
  • Calcul de confiance
  • Confirmations et corrections
  • Évaluation et métriques
  • Sauvegarde et chargement

Utilisation

from geniusia2.core.learning_manager import LearningManager
from geniusia2.core.embeddings_manager import EmbeddingsManager
from geniusia2.core.logger import Logger
from geniusia2.core.models import Action
from datetime import datetime
import numpy as np

# Initialiser les composants
embeddings_manager = EmbeddingsManager()
logger = Logger()
config = {"thresholds": {...}}

learning_manager = LearningManager(
    embeddings_manager=embeddings_manager,
    logger=logger,
    config=config
)

# Observer une action
action = Action(
    action_type="click",
    target_element="valider_button",
    bbox=(100, 100, 50, 30),
    confidence=0.9,
    embedding=np.random.rand(512),
    timestamp=datetime.now(),
    window_title="Application"
)

learning_manager.observe(action)

# Obtenir des statistiques
stats = learning_manager.get_task_stats()
print(f"Total tâches: {stats['total_tasks']}")
print(f"Mode actuel: {stats['current_mode']}")

Statut

Tâche 7.1 COMPLÈTE

Toutes les fonctionnalités requises sont implémentées :

  • Classe LearningManager avec initialisation
  • Méthode observe() pour mode Shadow
  • Méthode suggest_action() pour mode Assisté
  • Méthode confirm_action() pour validation/correction
  • Méthode calculate_confidence() avec formule 0.6/0.3/0.1
  • Méthode evaluate_task() pour métriques
  • Méthode should_transition_to_auto() avec critères
  • Méthode rollback_if_low_confidence()
  • Méthodes get_current_intent() et record_execution()
  • Gestion des seuils dynamiques adaptatifs
  • Tests unitaires complets

Prochaines Étapes

La tâche suivante est Tâche 8 : Implémenter l'orchestrateur (boucle cognitive) qui utilisera le LearningManager pour :

  • Coordonner le cycle Observer → Réfléchir → Agir
  • Gérer les transitions entre modes
  • Intégrer vision, LLM et apprentissage