Requirements: Don't force fastchat installation

Fastchat requires a lot of dependencies such as transformers, peft,
and accelerate which are heavy. This is not useful unless a user
wants to add a shim for the chat completion endpoint.

Instead, try importing fastchat and notify the console of the error.

Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
kingbri 2023-11-16 01:26:46 -05:00
parent 5e8419ec0c
commit 2248705c4a
2 changed files with 24 additions and 1 deletions

View file

@ -1,5 +1,4 @@
import pathlib import pathlib
from fastchat.model.model_adapter import get_conversation_template, Conversation
from OAI.types.completion import CompletionResponse, CompletionRespChoice from OAI.types.completion import CompletionResponse, CompletionRespChoice
from OAI.types.chat_completion import ( from OAI.types.chat_completion import (
ChatCompletionMessage, ChatCompletionMessage,
@ -10,8 +9,17 @@ from OAI.types.chat_completion import (
) )
from OAI.types.common import UsageStats from OAI.types.common import UsageStats
from OAI.types.model import ModelList, ModelCard from OAI.types.model import ModelList, ModelCard
from packaging import version
from typing import Optional, List from typing import Optional, List
# Check fastchat
try:
import fastchat
from fastchat.model.model_adapter import get_conversation_template
_fastchat_available = True
except ImportError:
_fastchat_available = False
def create_completion_response(text: str, model_name: Optional[str]): def create_completion_response(text: str, model_name: Optional[str]):
# TODO: Add method to get token amounts in model for UsageStats # TODO: Add method to get token amounts in model for UsageStats
@ -78,6 +86,21 @@ def get_model_list(model_path: pathlib.Path):
return model_card_list return model_card_list
def get_chat_completion_prompt(model_path: str, messages: List[ChatCompletionMessage]): def get_chat_completion_prompt(model_path: str, messages: List[ChatCompletionMessage]):
# Check if fastchat is available
if not _fastchat_available:
raise ModuleNotFoundError(
"Fastchat must be installed to parse these chat completion messages.\n"
"Please run the following command: pip install fschat[model_worker]"
)
if version.parse(fastchat.__version__) < version.parse("0.2.23"):
raise ImportError(
"Parsing these chat completion messages requires fastchat 0.2.23 or greater. "
f"Current version: {fastchat.__version__}\n"
"Please upgrade fastchat by running the following command: "
"pip install -U fschat[model_worker]"
)
conv = get_conversation_template(model_path) conv = get_conversation_template(model_path)
for message in messages: for message in messages:
msg_role = message.role msg_role = message.role

Binary file not shown.