feat: support language field in CompletionRequest (#43)
* feat: support language in preset * fix: add language in admin monaco editor * fix: set unknown max length to 128add-more-languages
parent
2fb462d514
commit
7c80ef3221
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"files": {
|
||||
"main.js": "./static/js/main.ab7e9a50.js",
|
||||
"main.js": "./static/js/main.0db4b0d6.js",
|
||||
"index.html": "./index.html"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/main.ab7e9a50.js"
|
||||
"static/js/main.0db4b0d6.js"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<!doctype html><html lang="en"><head><title>Streamlit Component</title><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Streamlit Component"/><link rel="stylesheet" href="bootstrap.min.css"/><script defer="defer" src="./static/js/main.ab7e9a50.js"></script></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
||||
<!doctype html><html lang="en"><head><title>Streamlit Component</title><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Streamlit Component"/><link rel="stylesheet" href="bootstrap.min.css"/><script defer="defer" src="./static/js/main.0db4b0d6.js"></script></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -127,6 +127,7 @@ class CompletionProvider {
|
|||
const request = (this.pendingRequest = axios.post(
|
||||
`${TabbyServerURL}/v1/completions`,
|
||||
{
|
||||
language: "python",
|
||||
prompt,
|
||||
}
|
||||
))
|
||||
|
|
|
|||
|
|
@ -2,18 +2,24 @@ from typing import List
|
|||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from ..models import Language
|
||||
|
||||
|
||||
class LanguagePreset(BaseModel):
|
||||
max_length: int
|
||||
stop_words: List[str]
|
||||
|
||||
|
||||
PythonPreset = LanguagePreset(
|
||||
max_length=128, stop_words=["\n\n", "\ndef", "\n#", "\nimport", "\nfrom", "\nclass"]
|
||||
)
|
||||
|
||||
JavascriptPreset = LanguagePreset(
|
||||
max_length=128, stop_words=["\n\n", "\nfunction", "\n//", "\nimport", "\nclass"]
|
||||
)
|
||||
|
||||
LanguagePresets = {"python": PythonPreset, "javascript": JavascriptPreset}
|
||||
LanguagePresets = {
|
||||
Language.UNKNOWN: LanguagePreset(
|
||||
max_length=128,
|
||||
stop_words=["\n\n"],
|
||||
),
|
||||
Language.PYTHON: LanguagePreset(
|
||||
max_length=128,
|
||||
stop_words=["\n\n", "\ndef", "\n#", "\nimport", "\nfrom", "\nclass"],
|
||||
),
|
||||
Language.JAVASCRIPT: LanguagePreset(
|
||||
max_length=128, stop_words=["\n\n", "\nfunction", "\n//", "\nimport", "\nclass"]
|
||||
),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,10 +43,7 @@ class PythonModelService:
|
|||
)
|
||||
|
||||
def generate(self, request: CompletionRequest) -> List[Choice]:
|
||||
# FIXME(meng): read preset from request.
|
||||
preset_name = "python"
|
||||
preset = LanguagePresets[preset_name]
|
||||
|
||||
preset = LanguagePresets[request.language]
|
||||
input_ids = self.tokenizer.encode(request.prompt, return_tensors="pt").to(
|
||||
self.device
|
||||
)
|
||||
|
|
|
|||
|
|
@ -29,9 +29,7 @@ class TritonService:
|
|||
np_type = np.uint32
|
||||
model_name = "fastertransformer"
|
||||
|
||||
# FIXME(meng): read preset from request.
|
||||
preset_name = "python"
|
||||
preset = LanguagePresets[preset_name]
|
||||
preset = LanguagePresets[data.language]
|
||||
|
||||
prompt = data.prompt
|
||||
input_start_ids = np.expand_dims(self.tokenizer.encode(prompt), 0)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,19 @@ class Choice(BaseModel):
|
|||
text: str
|
||||
|
||||
|
||||
class Language(str, Enum):
|
||||
UNKNOWN = "unknown"
|
||||
PYTHON = "python"
|
||||
JAVASCRIPT = "javascript"
|
||||
|
||||
|
||||
class CompletionRequest(BaseModel):
|
||||
language: Language = Field(
|
||||
example=Language.PYTHON,
|
||||
default=Language.UNKNOWN,
|
||||
description="Language for completion request",
|
||||
)
|
||||
|
||||
prompt: str = Field(
|
||||
example="def binarySearch(arr, left, right, x):\n mid = (left +",
|
||||
description="The context to generate completions for, encoded as a string.",
|
||||
|
|
@ -34,6 +46,7 @@ class Event(BaseModel):
|
|||
|
||||
class CompletionEvent(Event):
|
||||
id: str
|
||||
language: Language
|
||||
prompt: str
|
||||
created: int
|
||||
choices: List[Choice]
|
||||
|
|
@ -43,6 +56,7 @@ class CompletionEvent(Event):
|
|||
return cls(
|
||||
type=EventType.COMPLETION,
|
||||
id=response.id,
|
||||
language=request.language,
|
||||
prompt=request.prompt,
|
||||
created=response.created,
|
||||
choices=response.choices,
|
||||
|
|
|
|||
Loading…
Reference in New Issue