from pydantic import BaseModel, Field from typing import List, Optional, Literal from enum import Enum class ImageSize(str, Enum): """Supported image sizes (OpenAI compatible)""" SMALL = "256x256" MEDIUM = "512x512" LARGE = "1024x1024" WIDE = "1792x1024" TALL = "1024x1792" class ImageQuality(str, Enum): """Image quality options""" STANDARD = "standard" HD = "hd" class ImageStyle(str, Enum): """Image style options""" VIVID = "vivid" NATURAL = "natural" class ResponseFormat(str, Enum): """Response format options""" URL = "url" B64_JSON = "b64_json" class ImageGenerationRequest(BaseModel): """OpenAI compatible image generation request""" prompt: str = Field(..., description="A text description of the desired image(s)") model: str = Field(default="dall-e-3", description="The model to use for image generation") n: int = Field(default=1, ge=1, le=10, description="Number of images to generate") quality: ImageQuality = Field(default=ImageQuality.STANDARD, description="Quality of the image") response_format: ResponseFormat = Field(default=ResponseFormat.URL, description="Response format") size: ImageSize = Field(default=ImageSize.LARGE, description="Size of the generated images") style: ImageStyle = Field(default=ImageStyle.VIVID, description="Style of the generated images") user: Optional[str] = Field(default=None, description="A unique identifier representing your end-user") class ImageData(BaseModel): """Individual image data in response""" url: Optional[str] = Field(default=None, description="URL of the generated image") b64_json: Optional[str] = Field(default=None, description="Base64 encoded image data") revised_prompt: Optional[str] = Field(default=None, description="The revised prompt used for generation") class ImageGenerationResponse(BaseModel): """OpenAI compatible image generation response""" created: int = Field(..., description="Unix timestamp of when the image was created") data: List[ImageData] = Field(..., description="List of generated images") class ErrorResponse(BaseModel): """Error response format""" error: dict = Field(..., description="Error details") class ModelInfo(BaseModel): """Model information""" id: str object: str = "model" created: int owned_by: str class ModelsResponse(BaseModel): """Models list response""" object: str = "list" data: List[ModelInfo]