""" Abstract base class for communicator components. """ from typing import Dict, List, Optional, Any, Union, Tuple import torch from base_interfaces.common_types import * from base_interfaces.model_interface import AbstractModel from abc import ABC, abstractmethod class AbstractCommunicator(ABC): """Minimal communicator interface""" @abstractmethod def process_input(self, *args, **kwargs): pass def process_input(self, input_text: str, context: Optional[Dict] = None) -> Dict[str, Any]: """Process user input through the appropriate model(s) and generate response.""" raise NotImplementedError("Communicator must implement process_input") def process_request(self, prompt: str, model: Any) -> str: """Process a user request through the selected model""" raise NotImplementedError("Communicator must implement process_request") def route_input(self, input_text: str, query: Optional[str] = None) -> List[tuple]: """Route input to most relevant specializations, returning top-k matches.""" raise NotImplementedError("Communicator must implement route_input") def _extract_subject(self, text: str) -> str: """Extract the primary subject from a text prompt.""" raise NotImplementedError("Communicator must implement _extract_subject") def prepare_model_input(self, text: str, model) -> Dict: """Prepare input text for model processing.""" raise NotImplementedError("Communicator must implement prepare_model_input") def _get_fallback_response(self, prompt: str) -> str: """Get a fallback response when primary model processing fails.""" raise NotImplementedError("Communicator must implement _get_fallback_response") def clear_conversation_history(self): """Clear the conversation history""" raise NotImplementedError("Communicator must implement clear_conversation_history") def get_conversation_history(self) -> List[Dict]: """Get the current conversation history""" raise NotImplementedError("Communicator must implement get_conversation_history")