diff --git a/server/chat/knowledge_base_chat.py b/server/chat/knowledge_base_chat.py index 9aa0d5d..8234396 100644 --- a/server/chat/knowledge_base_chat.py +++ b/server/chat/knowledge_base_chat.py @@ -86,9 +86,8 @@ async def knowledge_base_chat(query: str = Body(..., description="用户输入", if stream: async for token in callback.aiter(): # Use server-sent-events to stream the response - yield json.dumps({"answer": token, - "docs": source_documents}, - ensure_ascii=False) + yield json.dumps({"answer": token}, ensure_ascii=False) + yield json.dumps({"docs": source_documents}, ensure_ascii=False) else: answer = "" async for token in callback.aiter(): diff --git a/server/chat/search_engine_chat.py b/server/chat/search_engine_chat.py index a77106f..f5e6370 100644 --- a/server/chat/search_engine_chat.py +++ b/server/chat/search_engine_chat.py @@ -121,9 +121,8 @@ async def search_engine_chat(query: str = Body(..., description="用户输入", if stream: async for token in callback.aiter(): # Use server-sent-events to stream the response - yield json.dumps({"answer": token, - "docs": source_documents}, - ensure_ascii=False) + yield json.dumps({"answer": token}, ensure_ascii=False) + yield json.dumps({"docs": source_documents}, ensure_ascii=False) else: answer = "" async for token in callback.aiter(): diff --git a/server/knowledge_base/kb_service/base.py b/server/knowledge_base/kb_service/base.py index d0860f7..ce14d3c 100644 --- a/server/knowledge_base/kb_service/base.py +++ b/server/knowledge_base/kb_service/base.py @@ -25,7 +25,6 @@ from server.knowledge_base.utils import ( list_kbs_from_folder, list_files_from_folder, ) from server.utils import embedding_device -from typing import List, Union, Dict from typing import List, Union, Dict, Optional diff --git a/server/llm_api.py b/server/llm_api.py index 72e6b8d..5843e89 100644 --- a/server/llm_api.py +++ b/server/llm_api.py @@ -5,7 +5,8 @@ import httpx def list_llm_models( - controller_address: str = Body(None, description="Fastchat controller服务器地址", examples=[fschat_controller_address()]) + controller_address: str = Body(None, description="Fastchat controller服务器地址", examples=[fschat_controller_address()]), + placeholder: str = Body(None, description="该参数未使用,占位用"), ) -> BaseResponse: ''' 从fastchat controller获取已加载模型列表 diff --git a/startup.py b/startup.py index cdf3397..ad7cc4a 100644 --- a/startup.py +++ b/startup.py @@ -18,7 +18,7 @@ except: sys.path.append(os.path.dirname(os.path.dirname(__file__))) from configs.model_config import EMBEDDING_MODEL, llm_model_dict, LLM_MODEL, LOG_PATH, \ - logger + logger, log_verbose from configs.server_config import (WEBUI_SERVER, API_SERVER, FSCHAT_CONTROLLER, FSCHAT_OPENAI_API, HTTPX_DEFAULT_TIMEOUT) from server.utils import (fschat_controller_address, fschat_model_worker_address, @@ -536,7 +536,7 @@ async def start_main_server(): def process_count(): return len(processes) + len(processes["online_api"]) + len(processes["model_worker"]) - 2 - if args.quiet: + if args.quiet or not log_verbose: log_level = "ERROR" else: log_level = "INFO" diff --git a/webui_pages/dialogue/dialogue.py b/webui_pages/dialogue/dialogue.py index 947be74..7d81d14 100644 --- a/webui_pages/dialogue/dialogue.py +++ b/webui_pages/dialogue/dialogue.py @@ -80,10 +80,8 @@ def dialogue_page(api: ApiRequest): if x in config_models: config_models.remove(x) llm_models = running_models + config_models - if "prev_llm_model" not in st.session_state: - index = llm_models.index(LLM_MODEL) - else: - index = 0 + cur_model = st.session_state.get("prev_llm_model", LLM_MODEL) + index = llm_models.index(cur_model) llm_model = st.selectbox("选择LLM模型:", llm_models, index, @@ -155,10 +153,11 @@ def dialogue_page(api: ApiRequest): for d in api.knowledge_base_chat(prompt, selected_kb, kb_top_k, score_threshold, history, model=llm_model): if error_msg := check_error_msg(d): # check whether error occured st.error(error_msg) - text += d["answer"] - chat_box.update_msg(text, 0) - chat_box.update_msg("\n\n".join(d["docs"]), 1, streaming=False) + elif chunk := d.get("answer"): + text += chunk + chat_box.update_msg(text, 0) chat_box.update_msg(text, 0, streaming=False) + chat_box.update_msg("\n\n".join(d.get("docs", [])), 1, streaming=False) elif dialogue_mode == "搜索引擎问答": chat_box.ai_say([ f"正在执行 `{search_engine}` 搜索...", @@ -168,11 +167,11 @@ def dialogue_page(api: ApiRequest): for d in api.search_engine_chat(prompt, search_engine, se_top_k, model=llm_model): if error_msg := check_error_msg(d): # check whether error occured st.error(error_msg) - else: - text += d["answer"] + elif chunk := d.get("answer"): + text += chunk chat_box.update_msg(text, 0) - chat_box.update_msg("\n\n".join(d["docs"]), 1, streaming=False) chat_box.update_msg(text, 0, streaming=False) + chat_box.update_msg("\n\n".join(d.get("docs", [])), 1, streaming=False) now = datetime.now() with st.sidebar: