|
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] |
|
|