|
from typing import Optional, List, Dict, Any |
|
|
|
import time |
|
|
|
import shortuuid |
|
from pydantic import BaseModel, Field |
|
|
|
|
|
class ChatCompletionRequest(BaseModel): |
|
|
|
model: str |
|
messages: List[Dict[str, str]] |
|
temperature: Optional[float] = 0.7 |
|
n: int = 1 |
|
max_tokens: Optional[int] = None |
|
stop: Optional[str] = None |
|
|
|
|
|
class ChatMessage(BaseModel): |
|
role: str |
|
content: str |
|
|
|
|
|
class ChatCompletionResponseChoice(BaseModel): |
|
index: int |
|
message: ChatMessage |
|
finish_reason: str |
|
|
|
|
|
class ChatCompletionResponse(BaseModel): |
|
id: str = Field(default_factory=shortuuid.random) |
|
object: str = "chat.completion" |
|
created: int = Field(default_factory=lambda: int(time.time())) |
|
choices: List[ChatCompletionResponseChoice] |
|
usage: Optional[Dict[str, int]] = None |
|
|