from __future__ import annotations from typing import Any, Dict, List, Optional, Union from pydantic import BaseModel, Field class ChatMessage(BaseModel): role: str content: Optional[Union[str, List[Dict[str, Any]]]] = "" tool_call_id: Optional[str] = None tool_calls: Optional[List[Dict[str, Any]]] = None name: Optional[str] = None class OpenAIFunctionDef(BaseModel): name: str description: Optional[str] = None parameters: Optional[Dict[str, Any]] = None class OpenAITool(BaseModel): type: str = Field("function", description="Only 'function' is supported") function: OpenAIFunctionDef class ChatCompletionsRequest(BaseModel): model: Optional[str] = None messages: List[ChatMessage] stream: Optional[bool] = False tools: Optional[List[OpenAITool]] = None tool_choice: Optional[Any] = None