from typing import List, Optional, Union from pydantic import BaseModel, ConfigDict, RootModel class ImageContent(BaseModel): """Model for image content in messages.""" type: str image_url: dict class TextContent(BaseModel): """Model for text content in messages.""" type: str text: str class MessageContent(RootModel): """Model for message content that can be either text or image.""" root: Union[TextContent, ImageContent] class OpenAIChatMessage(BaseModel): """Model for chat messages in OpenAI format.""" role: str content: Union[str, List[MessageContent]] model_config = ConfigDict(extra="allow") class OpenAIChatCompletionForm(BaseModel): """Model for chat completion request parameters.""" stream: bool = True model: str messages: List[OpenAIChatMessage] model_config = ConfigDict(extra="allow") class FilterForm(BaseModel): """Model for filter request parameters.""" body: dict user: Optional[dict] = None model_config = ConfigDict(extra="allow")