tabby/server/models.py

53 lines
1.1 KiB
Python
Raw Normal View History

2023-03-20 14:12:05 +00:00
from enum import Enum
from typing import List, Optional
from pydantic import BaseModel, Field
class Choice(BaseModel):
index: int
text: str
class CompletionRequest(BaseModel):
2023-03-20 14:12:05 +00:00
prompt: str = Field(
2023-03-20 14:57:29 +00:00
example="def binarySearch(arr, left, right, x):\n mid = (left +",
2023-03-20 14:12:05 +00:00
description="The context to generate completions for, encoded as a string.",
)
class CompletionResponse(BaseModel):
2023-03-20 14:12:05 +00:00
id: str
2023-03-20 14:57:29 +00:00
created: int
2023-03-20 14:12:05 +00:00
choices: List[Choice]
class Event(BaseModel):
type: str
class CompletionEvent(Event):
id: str
prompt: str
created: int
choices: List[Choice]
@classmethod
def build(cls, request: CompletionRequest, response: CompletionResponse):
return cls(
type="completion",
id=response.id,
prompt=request.prompt,
created=response.created,
choices=response.choices,
)
class SelectionEvent(Event):
completion_id: str
choice_index: int
@classmethod
def build(cls, id, index):
return cls(type="selection", completion_id=id, choice_index=index)