mirror of
https://github.com/theroyallab/tabbyAPI.git
synced 2026-03-14 15:57:27 +00:00
Move common functions into their own folder and refactor the backends to use their own folder as well. Also cleanup imports and alphabetize import statments themselves. Finally, move colab and docker into their own folders as well. Signed-off-by: kingbri <bdashore3@proton.me>
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
""" Completion API protocols """
|
|
from pydantic import BaseModel, Field
|
|
from time import time
|
|
from typing import List, Optional, Union
|
|
from uuid import uuid4
|
|
|
|
from OAI.types.common import CommonCompletionRequest, LogProbs, UsageStats
|
|
|
|
|
|
class CompletionRespChoice(BaseModel):
|
|
"""Represents a single choice in a completion response."""
|
|
|
|
# Index is 0 since we aren't using multiple choices
|
|
index: int = 0
|
|
finish_reason: str
|
|
logprobs: Optional[LogProbs] = None
|
|
text: str
|
|
|
|
|
|
# Inherited from common request
|
|
class CompletionRequest(CommonCompletionRequest):
|
|
"""Represents a completion request."""
|
|
|
|
# Prompt can also contain token ids, but that's out of scope
|
|
# for this project.
|
|
prompt: Union[str, List[str]]
|
|
|
|
|
|
class CompletionResponse(BaseModel):
|
|
"""Represents a completion response."""
|
|
|
|
id: str = Field(default_factory=lambda: f"cmpl-{uuid4().hex}")
|
|
choices: List[CompletionRespChoice]
|
|
created: int = Field(default_factory=lambda: int(time()))
|
|
model: str
|
|
object: str = "text_completion"
|
|
usage: Optional[UsageStats] = None
|