| from typing import List, Dict, Optional, Union, Literal |
| from pydantic import BaseModel, Field |
|
|
| class Message(BaseModel): |
| role: str |
| content: str |
|
|
| class ChatCompletionRequest(BaseModel): |
| model: str |
| messages: List[Message] |
| temperature: float = 0.7 |
| top_p: Optional[float] = 1.0 |
| n: int = 1 |
| stream: 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 |
|
|
| class Choice(BaseModel): |
| index: int |
| message: Message |
| finish_reason: Optional[str] = None |
|
|
| class Usage(BaseModel): |
| prompt_tokens: int = 0 |
| completion_tokens: int = 0 |
| total_tokens: int = 0 |
|
|
| class ChatCompletionResponse(BaseModel): |
| id: str |
| object: Literal["chat.completion"] |
| created: int |
| model: str |
| choices: List[Choice] |
| usage: Usage = Field(default_factory=Usage) |
|
|
| class ErrorResponse(BaseModel): |
| message: str |
| type: str |
| param: Optional[str] = None |
| code: Optional[str] = None |
|
|
| class ModelList(BaseModel): |
| object: str = "list" |
| data: List[Dict] |