| | import time |
| | from enum import Enum, unique |
| | from typing import List, Optional |
| |
|
| | from pydantic import BaseModel, Field |
| | from typing_extensions import Literal |
| |
|
| |
|
| | @unique |
| | class Role(str, Enum): |
| | USER = "user" |
| | ASSISTANT = "assistant" |
| | SYSTEM = "system" |
| | FUNCTION = "function" |
| | TOOL = "tool" |
| |
|
| |
|
| | @unique |
| | class Finish(str, Enum): |
| | STOP = "stop" |
| | LENGTH = "length" |
| | TOOL = "tool_calls" |
| |
|
| |
|
| | class ModelCard(BaseModel): |
| | id: str |
| | object: Literal["model"] = "model" |
| | created: int = Field(default_factory=lambda: int(time.time())) |
| | owned_by: Literal["owner"] = "owner" |
| |
|
| |
|
| | class ModelList(BaseModel): |
| | object: Literal["list"] = "list" |
| | data: List[ModelCard] = [] |
| |
|
| |
|
| | class Function(BaseModel): |
| | name: str |
| | arguments: str |
| |
|
| |
|
| | class FunctionCall(BaseModel): |
| | id: Literal["call_default"] = "call_default" |
| | type: Literal["function"] = "function" |
| | function: Function |
| |
|
| |
|
| | class ChatMessage(BaseModel): |
| | role: Role |
| | content: str |
| |
|
| |
|
| | class ChatCompletionMessage(BaseModel): |
| | role: Optional[Role] = None |
| | content: Optional[str] = None |
| | tool_calls: Optional[List[FunctionCall]] = None |
| |
|
| |
|
| | class ChatCompletionRequest(BaseModel): |
| | model: str |
| | messages: List[ChatMessage] |
| | tools: Optional[list] = [] |
| | do_sample: bool = True |
| | temperature: Optional[float] = None |
| | top_p: Optional[float] = None |
| | n: int = 1 |
| | max_tokens: Optional[int] = None |
| | stream: bool = False |
| |
|
| |
|
| | class ChatCompletionResponseChoice(BaseModel): |
| | index: int |
| | message: ChatCompletionMessage |
| | finish_reason: Finish |
| |
|
| |
|
| | class ChatCompletionResponseStreamChoice(BaseModel): |
| | index: int |
| | delta: ChatCompletionMessage |
| | finish_reason: Optional[Finish] = None |
| |
|
| |
|
| | class ChatCompletionResponseUsage(BaseModel): |
| | prompt_tokens: int |
| | completion_tokens: int |
| | total_tokens: int |
| |
|
| |
|
| | class ChatCompletionResponse(BaseModel): |
| | id: Literal["chatcmpl-default"] = "chatcmpl-default" |
| | object: Literal["chat.completion"] = "chat.completion" |
| | created: int = Field(default_factory=lambda: int(time.time())) |
| | model: str |
| | choices: List[ChatCompletionResponseChoice] |
| | usage: ChatCompletionResponseUsage |
| |
|
| |
|
| | class ChatCompletionStreamResponse(BaseModel): |
| | id: Literal["chatcmpl-default"] = "chatcmpl-default" |
| | object: Literal["chat.completion.chunk"] = "chat.completion.chunk" |
| | created: int = Field(default_factory=lambda: int(time.time())) |
| | model: str |
| | choices: List[ChatCompletionResponseStreamChoice] |
| |
|
| |
|
| | class ScoreEvaluationRequest(BaseModel): |
| | model: str |
| | messages: List[str] |
| | max_length: Optional[int] = None |
| |
|
| |
|
| | class ScoreEvaluationResponse(BaseModel): |
| | id: Literal["scoreeval-default"] = "scoreeval-default" |
| | object: Literal["score.evaluation"] = "score.evaluation" |
| | model: str |
| | scores: List[float] |
| |
|