""" Base AI Provider interface (Strategy pattern) """ from abc import ABC, abstractmethod from typing import Optional, Dict, Any class AIProvider(ABC): """Abstract base class for AI providers""" @abstractmethod def summarize(self, text: str, **kwargs) -> str: """Generate summary of text""" pass @abstractmethod def correct_text(self, text: str, **kwargs) -> str: """Correct grammar and spelling in text""" pass @abstractmethod def classify_content(self, text: str, **kwargs) -> Dict[str, Any]: """Classify content into categories""" pass @abstractmethod def generate_text(self, prompt: str, **kwargs) -> str: """Generate text from prompt""" pass @abstractmethod def fix_latex(self, latex_code: str, error_log: str, **kwargs) -> str: """Fix broken LaTeX code based on compiler error log""" pass @abstractmethod def is_available(self) -> bool: """Check if provider is available and configured""" pass @property @abstractmethod def name(self) -> str: """Provider name""" pass