"""
Adaptive Learning Module for AGI Development
"""

class AdaptiveLearning:
    def __init__(self, learning_rate=0.01):
        self.learning_rate = learning_rate
        self.error_history = []
    
    def adjust_rate(self, error):
        """Dynamically adjust learning rate based on error"""
        self.error_history.append(error)
        
        if abs(error) > 0.05:
            self.learning_rate *= 1.2  # Increase if error is large
        else:
            self.learning_rate *= 0.8  # Decrease if error is small
        
        # Prevent rate from going too high or low
        self.learning_rate = max(0.001, min(self.learning_rate, 0.1))
        
        return self.learning_rate
    
    def get_metrics(self):
        """Return learning metrics"""
        return {
            'current_rate': self.learning_rate,
            'error_history': self.error_history[-10:],
            'avg_error': sum(self.error_history[-10:]) / len(self.error_history[-10:]) if self.error_history else 0
        }
