| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import time |
| | from enum import Enum, unique |
| | from typing import Any, Optional, Union |
| |
|
| | 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 FunctionDefinition(BaseModel): |
| | name: str |
| | description: str |
| | parameters: dict[str, Any] |
| |
|
| |
|
| | class FunctionAvailable(BaseModel): |
| | type: Literal["function", "code_interpreter"] = "function" |
| | function: Optional[FunctionDefinition] = None |
| |
|
| |
|
| | class FunctionCall(BaseModel): |
| | id: str |
| | type: Literal["function"] = "function" |
| | function: Function |
| |
|
| |
|
| | class URL(BaseModel): |
| | url: str |
| | detail: Literal["auto", "low", "high"] = "auto" |
| |
|
| |
|
| | class MultimodalInputItem(BaseModel): |
| | type: Literal["text", "image_url", "video_url", "audio_url"] |
| | text: Optional[str] = None |
| | image_url: Optional[URL] = None |
| | video_url: Optional[URL] = None |
| | audio_url: Optional[URL] = None |
| |
|
| |
|
| | class ChatMessage(BaseModel): |
| | role: Role |
| | content: Optional[Union[str, list[MultimodalInputItem]]] = None |
| | tool_calls: Optional[list[FunctionCall]] = None |
| |
|
| |
|
| | 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[FunctionAvailable]] = None |
| | do_sample: Optional[bool] = None |
| | temperature: Optional[float] = None |
| | top_p: Optional[float] = None |
| | n: int = 1 |
| | presence_penalty: Optional[float] = None |
| | max_tokens: Optional[int] = None |
| | stop: Optional[Union[str, list[str]]] = None |
| | stream: bool = False |
| |
|
| |
|
| | class ChatCompletionResponseChoice(BaseModel): |
| | index: int |
| | message: ChatCompletionMessage |
| | finish_reason: Finish |
| |
|
| |
|
| | class ChatCompletionStreamResponseChoice(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: str |
| | 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: str |
| | object: Literal["chat.completion.chunk"] = "chat.completion.chunk" |
| | created: int = Field(default_factory=lambda: int(time.time())) |
| | model: str |
| | choices: list[ChatCompletionStreamResponseChoice] |
| |
|
| |
|
| | class ScoreEvaluationRequest(BaseModel): |
| | model: str |
| | messages: list[str] |
| | max_length: Optional[int] = None |
| |
|
| |
|
| | class ScoreEvaluationResponse(BaseModel): |
| | id: str |
| | object: Literal["score.evaluation"] = "score.evaluation" |
| | model: str |
| | scores: list[float] |
| |
|