Spaces:
Sleeping
Sleeping
| """ | |
| Base Genetic Operator Interface. | |
| Defines the abstract interface for all genetic operators following | |
| the Interface Segregation Principle (ISP) of SOLID. | |
| """ | |
| from abc import ABC, abstractmethod | |
| from typing import List, Callable | |
| import logging | |
| logger = logging.getLogger(__name__) | |
| class BaseGeneticOperator(ABC): | |
| """ | |
| Abstract base class for genetic operators. | |
| All genetic operators (crossover, mutation, etc.) should inherit from this | |
| class and implement the __call__ method. | |
| Design Principles: | |
| - Single Responsibility: Each operator does one thing | |
| - Open/Closed: Extend via inheritance, don't modify | |
| - Liskov Substitution: Any operator works where base is expected | |
| - Interface Segregation: Minimal required interface | |
| - Dependency Inversion: Depend on abstractions (LLM callable) | |
| """ | |
| def __call__(self, *args, **kwargs) -> str: | |
| """ | |
| Execute the genetic operation. | |
| Returns: | |
| str: New prompt generated by the operation | |
| """ | |
| pass | |
| def _build_prompt(self, *args, **kwargs) -> str: | |
| """ | |
| Build the LLM prompt for this operation. | |
| Returns: | |
| str: Prompt to send to the LLM | |
| """ | |
| pass | |
| class BaseCrossoverOperator(BaseGeneticOperator): | |
| """ | |
| Abstract base class for crossover operators. | |
| Crossover combines multiple parent prompts to create offspring | |
| that inherit good traits from both parents. | |
| """ | |
| def __call__( | |
| self, | |
| parents: List, # List[PromptCandidate] | |
| target_fitness: float, | |
| llm: Callable[[str], str] | |
| ) -> str: | |
| """ | |
| Combine parent prompts to create offspring. | |
| Args: | |
| parents: List of parent PromptCandidate objects | |
| target_fitness: Desired fitness for offspring | |
| llm: Language model callable | |
| Returns: | |
| str: Offspring prompt | |
| """ | |
| pass | |
| class BaseMutationOperator(BaseGeneticOperator): | |
| """ | |
| Abstract base class for mutation operators. | |
| Mutation creates variations of a parent prompt to explore | |
| new regions of the search space. | |
| """ | |
| def __call__( | |
| self, | |
| parent, # PromptCandidate | |
| population: List, # List[PromptCandidate] | |
| llm: Callable[[str], str] | |
| ) -> str: | |
| """ | |
| Mutate a parent prompt to create a variation. | |
| Args: | |
| parent: Parent PromptCandidate to mutate | |
| population: Current population for diversity guidance | |
| llm: Language model callable | |
| Returns: | |
| str: Mutated prompt | |
| """ | |
| pass | |