|
from pydantic import BaseModel, ConfigDict |
|
from typing import List, Dict, Any, Optional, Union, Literal |
|
|
|
|
|
class ImageUrl(BaseModel): |
|
url: str |
|
|
|
class ContentPartImage(BaseModel): |
|
type: Literal["image_url"] |
|
image_url: ImageUrl |
|
|
|
class ContentPartText(BaseModel): |
|
type: Literal["text"] |
|
text: str |
|
|
|
class OpenAIMessage(BaseModel): |
|
role: str |
|
content: Union[str, List[Union[ContentPartText, ContentPartImage, Dict[str, Any]]]] |
|
|
|
class OpenAIRequest(BaseModel): |
|
model: str |
|
messages: List[OpenAIMessage] |
|
temperature: Optional[float] = 1.0 |
|
max_tokens: Optional[int] = None |
|
top_p: Optional[float] = 1.0 |
|
top_k: Optional[int] = None |
|
stream: Optional[bool] = False |
|
stop: Optional[List[str]] = None |
|
presence_penalty: Optional[float] = None |
|
frequency_penalty: Optional[float] = None |
|
seed: Optional[int] = None |
|
logprobs: Optional[int] = None |
|
response_logprobs: Optional[bool] = None |
|
n: Optional[int] = None |
|
|
|
|
|
model_config = ConfigDict(extra='allow') |