80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
from datetime import datetime, UTC
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from models.Asset import Asset
|
|
from models.Generation import GenerationStatus
|
|
from models.enums import AspectRatios, Quality, GenType, ImageModel, TextModel
|
|
|
|
|
|
class GenerationRequest(BaseModel):
|
|
linked_character_id: str | None = None
|
|
aspect_ratio: AspectRatios = AspectRatios.NINESIXTEEN # "1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"
|
|
quality: Quality = Quality.ONEK
|
|
prompt: str
|
|
model: ImageModel = Field(default=ImageModel.GEMINI_3_PRO_IMAGE_PREVIEW)
|
|
telegram_id: int | None = None
|
|
use_profile_image: bool = True
|
|
assets_list: list[str]
|
|
environment_id: str | None = None
|
|
project_id: str | None = None
|
|
idea_id: str | None = None
|
|
nsfw: bool = False
|
|
count: int = Field(default=1, ge=1, le=10)
|
|
|
|
|
|
class NsfwRequest(BaseModel):
|
|
is_nsfw: bool
|
|
|
|
|
|
class GenerationsResponse(BaseModel):
|
|
generations: list["GenerationResponse"]
|
|
total_count: int
|
|
|
|
|
|
class GenerationResponse(BaseModel):
|
|
id: str
|
|
status: GenerationStatus
|
|
failed_reason: str | None = None
|
|
project_id: str | None = None
|
|
linked_character_id: str | None = None
|
|
aspect_ratio: AspectRatios
|
|
quality: Quality
|
|
prompt: str
|
|
model: ImageModel | None = None
|
|
seed: int | None = None
|
|
tech_prompt: str | None = None
|
|
assets_list: list[str]
|
|
result_list: list[str] = []
|
|
result: str | None = None
|
|
execution_time_seconds: float | None = None
|
|
api_execution_time_seconds: float | None = None
|
|
token_usage: int | None = None
|
|
input_token_usage: int | None = None
|
|
output_token_usage: int | None = None
|
|
progress: int = 0
|
|
cost: float | None = None
|
|
created_by: str | None = None
|
|
generation_group_id: str | None = None
|
|
idea_id: str | None = None
|
|
likes_count: int = 0
|
|
is_liked: bool = False
|
|
nsfw: bool = False
|
|
created_at: datetime = datetime.now(UTC)
|
|
updated_at: datetime = datetime.now(UTC)
|
|
|
|
|
|
class GenerationGroupResponse(BaseModel):
|
|
generation_group_id: str
|
|
generations: list[GenerationResponse]
|
|
|
|
|
|
class PromptRequest(BaseModel):
|
|
prompt: str
|
|
model: TextModel = Field(default=TextModel.GEMINI_3_1_PRO_PREVIEW)
|
|
linked_assets: list[str] = []
|
|
|
|
|
|
class PromptResponse(BaseModel):
|
|
prompt: str
|