""" Base domain template class for AURA AI training system. """ from abc import ABC, abstractmethod from typing import List class BaseDomain(ABC): """ Abstract base class for domain templates. Each domain provides: - Name and description - Icon for UI display - Topic lists for training data generation - System prompts for model behavior """ def __init__(self): self._name = "" self._description = "" self._icon = "" @property def name(self) -> str: """Domain name (human-readable)""" return self._name @property def description(self) -> str: """Domain description""" return self._description @property def icon(self) -> str: """Domain icon (emoji)""" return self._icon @abstractmethod def get_topics(self) -> List[str]: """ Get list of topics for this domain. Returns: List of topic strings for training data generation """ pass @abstractmethod def get_system_prompt(self) -> str: """ Get system prompt for this domain. Returns: System prompt string that defines model behavior """ pass def get_example_questions(self) -> List[str]: """ Get example questions for this domain. Returns: List of example questions for testing """ return [] def get_specialized_tools(self) -> List[dict]: """ Get specialized tools for this domain. Returns: List of tool definitions for function calling """ return [] def get_tools(self) -> List[dict]: """ Get tools for this domain (alias for get_specialized_tools). Returns: List of tool definitions for function calling """ return self.get_specialized_tools() def get_benchmarks(self) -> List[dict]: """ Get pre-built benchmarks for this domain. Returns: List of benchmark definitions """ return []