# generation_request.py ## Purpose Data model for image generation requests. Provides type-safe, validated structure for all generation parameters. ## Responsibilities - Encapsulate all generation request parameters - Validate data on initialization - Provide convenience properties (is_text_to_image, etc.) - Serialize to dictionary for logging/metadata ## Dependencies - `dataclasses` - Data class decorator - `PIL.Image` - Image type - Used by all services and backend clients ## Public Interface ### `GenerationRequest` dataclass **Fields:** - `prompt: str` - Text prompt (required) - `backend: str` - Backend name (required) - `aspect_ratio: str` - Aspect ratio (required) - `temperature: float` - Temperature 0.0-1.0 (required) - `input_images: List[Image]` - Input images (optional) - `is_character_sheet: List[bool]` - Character sheet flags (optional) - `metadata: dict` - Additional metadata (optional) **Properties:** - `has_input_images: bool` - True if has input images - `image_count: int` - Number of input images - `is_text_to_image: bool` - True if text-to-image mode - `is_image_to_image: bool` - True if image-to-image mode **Methods:** - `to_dict() -> dict` - Convert to dictionary (excludes images) **Usage:** ```python request = GenerationRequest( prompt="sunset over mountains", backend="Gemini API (Cloud)", aspect_ratio="16:9", temperature=0.4, input_images=[img1, img2] ) if request.is_image_to_image: # Handle multi-image pass ``` ## Related Files - `models/generation_result.py` - Result model - All services - Create requests - `core/backend_router.py` - Receives requests