class ChatMessage(BaseModel):
role: Literal['user', 'assistant', 'system']
class DeltaMessage(BaseModel):
role: Optional[Literal['user', 'assistant', 'system']] = None
content: Optional[str] = None
class ChatCompletionRequest(BaseModel):
messages: List[ChatMessage]
temperature: Optional[float] = None
top_p: Optional[float] = None
max_tokens: Optional[int] = None
stream: Optional[bool] = False
do_sample: Optional[bool] = False
class ChatCompletionResponseChoice(BaseModel):
finish_reason: Literal['stop', 'length']
class ChatCompletionResponseStreamChoice(BaseModel):
finish_reason: Optional[Literal['stop', 'length']]
class ChatCompletionResponse(BaseModel):
object: Literal['chat.completion', 'chat.completion.chunk']
choices: List[Union[ChatCompletionResponseChoice,
ChatCompletionResponseStreamChoice]]
created: Optional[int] = Field(default_factory=lambda: int(time.time()))