File size: 1,090 Bytes
154ea17 | 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 | 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") |