Langchain-Chatchat/libs/chatchat-server/chatchat/server/webui_allinone_stale.py

107 lines
3.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Usage
加载本地模型:
python webui_allinone.py
调用远程api服务
python webui_allinone.py --use-remote-api
后台运行webui服务
python webui_allinone.py --nohup
加载多个非默认模型:
python webui_allinone.py --model-path-address model1@host1@port1 model2@host2@port2
多卡启动:
python webui_alline.py --model-path-address model@host@port --num-gpus 2 --gpus 0,1 --max-gpu-memory 10GiB
"""
import os
import subprocess
import streamlit as st
from streamlit_option_menu import option_menu
from chatchat.server.api_allinone_stale import api_args, parser
from chatchat.server.llm_api_stale import (
LOG_PATH,
controller_args,
launch_all,
server_args,
string_args,
worker_args,
)
from chatchat.webui_pages import *
from chatchat.webui_pages.utils import *
parser.add_argument("--use-remote-api", action="store_true")
parser.add_argument("--nohup", action="store_true")
parser.add_argument("--server.port", type=int, default=8501)
parser.add_argument("--theme.base", type=str, default='"light"')
parser.add_argument("--theme.primaryColor", type=str, default='"#165dff"')
parser.add_argument("--theme.secondaryBackgroundColor", type=str, default='"#f5f5f5"')
parser.add_argument("--theme.textColor", type=str, default='"#000000"')
web_args = [
"server.port",
"theme.base",
"theme.primaryColor",
"theme.secondaryBackgroundColor",
"theme.textColor",
]
def launch_api(args, args_list=api_args, log_name=None):
print("Launching api ...")
print("启动API服务...")
if not log_name:
log_name = f"{LOG_PATH}api_{args.api_host}_{args.api_port}"
print(f"logs on api are written in {log_name}")
print(f"API日志位于{log_name}下,如启动异常请查看日志")
args_str = string_args(args, args_list)
api_sh = "python server/{script} {args_str} >{log_name}.log 2>&1 &".format(
script="api.py", args_str=args_str, log_name=log_name
)
subprocess.run(api_sh, shell=True, check=True)
print("launch api done!")
print("启动API服务完毕.")
def launch_webui(args, args_list=web_args, log_name=None):
print("Launching webui...")
print("启动webui服务...")
if not log_name:
log_name = f"{LOG_PATH}webui"
args_str = string_args(args, args_list)
if args.nohup:
print(f"logs on api are written in {log_name}")
print(f"webui服务日志位于{log_name}下,如启动异常请查看日志")
webui_sh = "streamlit run webui.py {args_str} >{log_name}.log 2>&1 &".format(
args_str=args_str, log_name=log_name
)
else:
webui_sh = "streamlit run webui.py {args_str}".format(args_str=args_str)
subprocess.run(webui_sh, shell=True, check=True)
print("launch webui done!")
print("启动webui服务完毕.")
if __name__ == "__main__":
print("Starting webui_allineone.py, it would take a while, please be patient....")
print(
f"开始启动webui_allinone,启动LLM服务需要约3-10分钟请耐心等待如长时间未启动请到{LOG_PATH}下查看日志..."
)
args = parser.parse_args()
print("*" * 80)
if not args.use_remote_api:
launch_all(
args=args,
controller_args=controller_args,
worker_args=worker_args,
server_args=server_args,
)
launch_api(args=args, args_list=api_args)
launch_webui(args=args, args_list=web_args)
print("Start webui_allinone.py done!")
print("感谢耐心等待启动webui_allinone完毕。")