Texture/gemini
1
1from typing import List, Dict, Optional, Union, Literal2from pydantic import BaseModel, Field3 4class Message(BaseModel):5 role: str6 content: str7 8class ChatCompletionRequest(BaseModel):9 model: str10 messages: List[Message]11 temperature: float = 0.712 top_p: Optional[float] = 1.013 n: int = 114 stream: bool = False15 stop: Optional[Union[str, List[str]]] = None16 max_tokens: Optional[int] = None17 presence_penalty: Optional[float] = 0.018 frequency_penalty: Optional[float] = 0.019 20class Choice(BaseModel):21 index: int22 message: Message23 finish_reason: Optional[str] = None24 25class Usage(BaseModel):26 prompt_tokens: int = 027 completion_tokens: int = 028 total_tokens: int = 029 30class ChatCompletionResponse(BaseModel):31 id: str32 object: Literal["chat.completion"]33 created: int34 model: str35 choices: List[Choice]36 usage: Usage = Field(default_factory=Usage)37 38class ErrorResponse(BaseModel):39 message: str40 type: str41 param: Optional[str] = None42 code: Optional[str] = None43 44class ModelList(BaseModel):45 object: str = "list"46 data: List[Dict]