Spaces:
Sleeping
Sleeping
File size: 1,640 Bytes
5b6e956 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# 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
|