Spaces:
Running
Running
| # Copyright 2024 the LlamaFactory team. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| import time | |
| from enum import Enum, unique | |
| from typing import Any, Dict, List, Optional, Union | |
| from pydantic import BaseModel, Field | |
| from typing_extensions import Literal | |
| class Role(str, Enum): | |
| USER = "user" | |
| ASSISTANT = "assistant" | |
| SYSTEM = "system" | |
| FUNCTION = "function" | |
| TOOL = "tool" | |
| 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 ImageURL(BaseModel): | |
| url: str | |
| class MultimodalInputItem(BaseModel): | |
| type: Literal["text", "image_url"] | |
| text: Optional[str] = None | |
| image_url: Optional[ImageURL] = 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: bool = True | |
| temperature: Optional[float] = None | |
| top_p: Optional[float] = None | |
| n: int = 1 | |
| 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] | |