from typing import Optional, List, Dict, Any, Union, Literal import time import shortuuid from pydantic import BaseModel, Field class ChatCompletionRequest(BaseModel): model: str = "chinese-llama-alpaca-2" messages: Union[str, List[Dict[str, str]]] temperature: Optional[float] = 0.2 top_p: Optional[float] = 0.9 top_k: Optional[int] = 40 n: Optional[int] = 1 max_tokens: Optional[int] = 512 num_beams: Optional[int] = 1 stop: Optional[Union[str, List[str]]] = None stream: Optional[bool] = False repetition_penalty: Optional[float] = 1.1 user: Optional[str] = None do_sample: Optional[bool] = True class ChatMessage(BaseModel): role: str content: str class DeltaMessage(BaseModel): role: Optional[Literal["user", "assistant", "system"]] = None content: Optional[str] = None class ChatCompletionResponseChoice(BaseModel): index: int message: ChatMessage class ChatCompletionResponseStreamChoice(BaseModel): index: int delta: DeltaMessage finish_reason: Optional[Literal["stop", "length"]] class ChatCompletionResponse(BaseModel): id: str = Field(default_factory=lambda: f"chatcmpl-{shortuuid.random()}") object: str = "chat.completion" created: int = Field(default_factory=lambda: int(time.time())) model: str = "chinese-llama-alpaca-2" choices: List[ Union[ChatCompletionResponseChoice, ChatCompletionResponseStreamChoice] ] class EmbeddingsRequest(BaseModel): input: Union[str, List[Any]] user: Optional[str] = None class EmbeddingsResponse(BaseModel): object: str = "list" data: List[Dict[str, Any]] model: str = "chinese-llama-alpaca-2" class CompletionRequest(BaseModel): prompt: Union[str, List[Any]] temperature: Optional[float] = 0.2 n: Optional[int] = 1 max_tokens: Optional[int] = 512 stop: Optional[Union[str, List[str]]] = None stream: Optional[bool] = False top_p: Optional[float] = 0.9 top_k: Optional[int] = 40 num_beams: Optional[int] = 1 logprobs: Optional[int] = None echo: Optional[bool] = False repetition_penalty: Optional[float] = 1.1 user: Optional[str] = None do_sample: Optional[bool] = True class CompletionResponseChoice(BaseModel): index: int text: str class CompletionResponse(BaseModel): id: Optional[str] = Field(default_factory=lambda: f"cmpl-{shortuuid.random()}") object: Optional[str] = "text_completion" created: Optional[int] = Field(default_factory=lambda: int(time.time())) model: Optional[str] = "chinese-llama-alpaca-2" choices: List[CompletionResponseChoice]