from abc import ABC, abstractmethod from typing import Sequence from PIL import Image from services.progress import ProgressCallback from services.services import TaskType, GenerationService from services.text.TextGenerationResult import TextGenerationResult class TextGenerator(GenerationService, ABC): """Base class for text generation backends.""" task_type = TaskType.TEXT @abstractmethod def generate( self, prompt: str, images: Sequence[Image.Image] | None = None, *, progress: ProgressCallback | None = None, ) -> TextGenerationResult: """Generate text from a prompt and optional images.""" raise NotImplementedError