|
from pydantic import BaseModel, Field
|
|
from typing import List, Dict, Any
|
|
from app.models.const import Language
|
|
from typing import Optional
|
|
|
|
class StoryGenerationRequest(BaseModel):
|
|
resolution: Optional[str] = Field(default="1024*1024", description="ๅ่พจ็")
|
|
text_llm_provider: Optional[str] = Field(default=None, description="Text LLM provider")
|
|
text_llm_model: Optional[str] = Field(default=None, description="Text LLM model")
|
|
image_llm_provider: Optional[str] = Field(default=None, description="Image LLM provider")
|
|
image_llm_model: Optional[str] = Field(default=None, description="Image LLM model")
|
|
segments: int = Field(..., ge=1, le=10, description="Number of story segments to generate")
|
|
story_prompt: str = Field(..., min_length=1, max_length=4000, description="Theme or topic of the story")
|
|
language: Language = Field(default=Language.CHINESE_CN, description="Story language")
|
|
|
|
|
|
class StorySegment(BaseModel):
|
|
text: str = Field(..., description="Story text")
|
|
image_prompt: str = Field(..., description="Image generation prompt")
|
|
url: str = Field(None, description="Generated image URL")
|
|
|
|
|
|
class StoryGenerationResponse(BaseModel):
|
|
segments: List[StorySegment] = Field(..., description="Generated story segments")
|
|
|
|
|
|
class ImageGenerationRequest(BaseModel):
|
|
prompt: str = Field(..., min_length=1, max_length=4000, description="Description of the image to generate")
|
|
image_llm_provider: Optional[str] = Field(default=None, description="Image LLM provider")
|
|
image_llm_model: Optional[str] = Field(default=None, description="Image LLM model")
|
|
resolution: Optional[str] = Field(default="1024*1024", description="Image resolution")
|
|
|
|
|
|
class ImageGenerationResponse(BaseModel):
|
|
image_url: str = Field(..., description="Generated image URL")
|
|
|