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