SeaLLM-Chat / app.py
NGUYEN, Xuan Phi
update
c8aed7a
# Copyright: DAMO Academy, Alibaba Group
# By Xuan Phi Nguyen at DAMO Academy, Alibaba Group
# Description:
"""
Demo script to launch Language chat model
"""
try:
import spaces
except ModuleNotFoundError:
print(f'Cannot import hf `spaces` with `import spaces`.')
import os
from gradio.themes import ThemeClass as Theme
import numpy as np
import argparse
# import torch
import gradio as gr
from typing import Any, Iterator
from typing import Iterator, List, Optional, Tuple
import filelock
import glob
import json
import time
from gradio.routes import Request
from gradio.utils import SyncToAsyncIterator, async_iteration
from gradio.helpers import special_args
import anyio
from typing import AsyncGenerator, Callable, Literal, Union, cast
from gradio_client.documentation import document, set_documentation_group
from typing import List, Optional, Union, Dict, Tuple
from tqdm.auto import tqdm
from huggingface_hub import snapshot_download
from langchain_community.embeddings import HuggingFaceEmbeddings, HuggingFaceBgeEmbeddings
from gradio.components import Button, Component
from gradio.events import Dependency, EventListenerMethod
from multipurpose_chatbot.demos.base_demo import CustomTabbedInterface
from multipurpose_chatbot.configs import (
MODEL_TITLE,
MODEL_DESC,
MODEL_INFO,
CITE_MARKDOWN,
ALLOWED_PATHS,
PROXY,
PORT,
MODEL_PATH,
MODEL_NAME,
BACKEND,
DEMOS,
DELETE_FOLDER,
CSS,
)
demo = None
if DELETE_FOLDER is not None and os.path.exists(DELETE_FOLDER):
print(F'WARNING deleting folder: {DELETE_FOLDER}')
import shutil
print(f'DELETE ALL FILES IN {DELETE_FOLDER}')
for filename in os.listdir(DELETE_FOLDER):
file_path = os.path.join(DELETE_FOLDER, filename)
try:
if os.path.isfile(file_path) or os.path.islink(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
print(f'deleted: {file_path}')
except Exception as e:
print('Failed to delete %s. Reason: %s' % (file_path, e))
def launch_demo():
global demo, MODEL_ENGINE
model_desc = MODEL_DESC
model_path = MODEL_PATH
print(f'Begin importing models')
from multipurpose_chatbot.demos import get_demo_class
# demos = {
# k: get_demo_class(k)().create_demo()
# for k in demo_and_tab_names.keys()
# }
print(f'{DEMOS=}')
demo_class_objects = {
k: get_demo_class(k)()
for k in DEMOS
}
demos = {
k: get_demo_class(k)().create_demo()
for k in DEMOS
}
demos_names = [x.tab_name for x in demo_class_objects.values()]
descriptions = model_desc
if MODEL_INFO is not None and MODEL_INFO != "":
descriptions += (
f"<br>" +
MODEL_INFO.format(model_path=model_path)
)
if len(demos) == 1:
demo = demos[DEMOS[0]]
else:
demo = CustomTabbedInterface(
interface_list=list(demos.values()),
tab_names=demos_names,
title=f"{MODEL_TITLE}",
description=descriptions,
css=CSS,
)
demo.title = MODEL_NAME
with demo:
gr.Markdown(CITE_MARKDOWN)
demo.queue(api_open=False)
return demo
if __name__ == "__main__":
demo = launch_demo()
if PROXY is not None and PROXY != "":
print(f'{PROXY=} {PORT=}')
print(f"{ALLOWED_PATHS=}")
demo.launch(server_port=PORT, root_path=PROXY, show_api=False, allowed_paths=ALLOWED_PATHS)
else:
demo.launch(server_port=PORT, show_api=False, allowed_paths=ALLOWED_PATHS)