| | 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]]], None] = None |
| | name: Optional[str] = None |
| | tool_calls: Optional[List[Dict[str, Any]]] = None |
| | tool_call_id: Optional[str] = None |
| |
|
| | 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 |
| | tools: Optional[List[Dict[str, Any]]] = None |
| | tool_choice: Optional[Union[str, Dict[str, Any]]] = None |
| |
|
| | |
| | model_config = ConfigDict(extra='allow') |