from typing import List, Union, Optional | |
from pydantic import BaseModel, RootModel, ConfigDict | |
class ImageContent(BaseModel): | |
type: str | |
image_url: dict | |
class TextContent(BaseModel): | |
type: str | |
text: str | |
class MessageContent(RootModel): | |
root: Union[TextContent, ImageContent] | |
class OpenAIChatMessage(BaseModel): | |
role: str | |
content: Union[str, List[MessageContent]] | |
model_config = ConfigDict(extra="allow") | |
class OpenAIChatCompletionForm(BaseModel): | |
stream: bool = True | |
model: str | |
messages: List[OpenAIChatMessage] | |
model_config = ConfigDict(extra="allow") | |
class FilterForm(BaseModel): | |
body: dict | |
user: Optional[dict] = None | |
model_config = ConfigDict(extra="allow") |