from datetime import datetime from typing import Dict, List, Any, Optional class Agent: """Classe de base pour tous les agents d'analyse""" def __init__(self, nom: str = "Agent"): """ Initialisation d'un agent Args: nom: Nom de l'agent """ self.nom: str = nom self.historique: List[Dict[str, Any]] = [] def ajouter_historique(self, action: str, input_data: Any, output_data: Any) -> None: """ Ajoute une entrée dans l'historique de l'agent Args: action: Type d'action effectuée input_data: Données d'entrée de l'action output_data: Résultat de l'action """ self.historique.append({ "timestamp": datetime.now().isoformat(), "action": action, "input": str(input_data)[:500], # Limite pour éviter des historiques trop grands "output": str(output_data)[:500] # Limite pour éviter des historiques trop grands }) def obtenir_historique(self) -> List[Dict[str, Any]]: """ Retourne l'historique complet de l'agent Returns: Liste des actions effectuées par l'agent """ return self.historique def executer(self, *args, **kwargs) -> Any: """ Méthode abstraite à implémenter dans les classes dérivées C'est la méthode principale qui exécute la tâche spécifique de l'agent Returns: Résultat de l'exécution, dépend de l'implémentation de chaque agent """ raise NotImplementedError("Chaque agent doit implémenter sa propre méthode executer()")