from typing import List, Optional, Union, Dict, Any from pydantic import BaseModel, Field import time class ChatMessage(BaseModel): role: str content: str class ChatCompletionRequest(BaseModel): model: str messages: List[ChatMessage] temperature: Optional[float] = 1.0 top_p: Optional[float] = 1.0 n: Optional[int] = 1 stream: Optional[bool] = False stop: Optional[Union[str, List[str]]] = None max_tokens: Optional[int] = None presence_penalty: Optional[float] = 0.0 frequency_penalty: Optional[float] = 0.0 logit_bias: Optional[Dict[str, float]] = None user: Optional[str] = None class ChatCompletionChoice(BaseModel): index: int message: ChatMessage finish_reason: Optional[str] = None class ChatCompletionResponse(BaseModel): id: str object: str = "chat.completion" created: int = Field(default_factory=lambda: int(time.time())) model: str choices: List[ChatCompletionChoice] usage: Optional[Dict[str, int]] = None class ChatCompletionChunkDelta(BaseModel): role: Optional[str] = None content: Optional[str] = None class ChatCompletionChunkChoice(BaseModel): index: int delta: ChatCompletionChunkDelta finish_reason: Optional[str] = None class ChatCompletionChunk(BaseModel): id: str object: str = "chat.completion.chunk" created: int = Field(default_factory=lambda: int(time.time())) model: str choices: List[ChatCompletionChunkChoice] class CompletionRequest(BaseModel): model: str prompt: Union[str, List[str]] suffix: Optional[str] = None max_tokens: Optional[int] = 16 temperature: Optional[float] = 1.0 top_p: Optional[float] = 1.0 n: Optional[int] = 1 stream: Optional[bool] = False logprobs: Optional[int] = None echo: Optional[bool] = False stop: Optional[Union[str, List[str]]] = None presence_penalty: Optional[float] = 0.0 frequency_penalty: Optional[float] = 0.0 best_of: Optional[int] = 1 logit_bias: Optional[Dict[str, float]] = None user: Optional[str] = None class CompletionChoice(BaseModel): text: str index: int logprobs: Optional[Any] = None finish_reason: Optional[str] = None class CompletionResponse(BaseModel): id: str object: str = "text_completion" created: int = Field(default_factory=lambda: int(time.time())) model: str choices: List[CompletionChoice] usage: Optional[Dict[str, int]] = None class ModelCard(BaseModel): id: str object: str = "model" created: int = Field(default_factory=lambda: int(time.time())) owned_by: str = "aetheris" class ModelList(BaseModel): object: str = "list" data: List[ModelCard]