From b543f49278775758b788cb35354bb49826811dfb Mon Sep 17 00:00:00 2001 From: imClumsyPanda Date: Sun, 13 Aug 2023 22:25:01 +0800 Subject: [PATCH] update webui design --- img/chatchat_icon_blue_square_v2.png | Bin 0 -> 7299 bytes img/logo-long-chatchat-trans-v2.png | Bin 0 -> 49200 bytes webui.py | 13 +++++++++++-- webui_pages/dialogue/dialogue.py | 24 ++++++++++++++++-------- 4 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 img/chatchat_icon_blue_square_v2.png create mode 100644 img/logo-long-chatchat-trans-v2.png diff --git a/img/chatchat_icon_blue_square_v2.png b/img/chatchat_icon_blue_square_v2.png new file mode 100644 index 0000000000000000000000000000000000000000..5de8ee80b5f219484c90b0b4604cfd1e85b58e3d GIT binary patch literal 7299 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 a6V8x12l|i&zF-pI4}M=wzTmED(EkH$u&BoX literal 0 HcmV?d00001 diff --git a/webui.py b/webui.py index 6077b81..160244a 100644 --- a/webui.py +++ b/webui.py @@ -8,6 +8,7 @@ import streamlit as st from webui_pages.utils import * from streamlit_option_menu import option_menu from webui_pages import * +import os api = ApiRequest(base_url="http://127.0.0.1:7861", no_remote_api=False) @@ -32,15 +33,23 @@ if __name__ == "__main__": } with st.sidebar: + st.image( + os.path.join( + os.path.dirname(__file__), + "img", + "logo-long-chatchat-trans-v2.png" + ), + use_column_width=True + ) options = list(pages) icons = [x["icon"] for x in pages.values()] default_index = 0 selected_page = option_menu( - "langchain-chatglm", + "", options=options, icons=icons, - menu_icon="chat-quote", + # menu_icon="chat-quote", default_index=default_index, ) diff --git a/webui_pages/dialogue/dialogue.py b/webui_pages/dialogue/dialogue.py index 43334c3..6a806bd 100644 --- a/webui_pages/dialogue/dialogue.py +++ b/webui_pages/dialogue/dialogue.py @@ -4,8 +4,15 @@ from streamlit_chatbox import * from datetime import datetime from server.chat.search_engine_chat import SEARCH_ENGINES from typing import List, Dict +import os -chat_box = ChatBox() +chat_box = ChatBox( + assistant_avatar=os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(__file__))), + "img", + "chatchat_icon_blue_square_v2.png" + ) +) def get_messages_history(history_len: int) -> List[Dict]: @@ -46,14 +53,15 @@ def dialogue_page(api: ApiRequest): # sac.alert(text, description="descp", type="success", closable=True, banner=True) dialogue_mode = st.selectbox("请选择对话模式", - ["LLM 对话", - "知识库问答", - "搜索引擎问答", - ], - on_change=on_mode_change, - key="dialogue_mode", - ) + ["LLM 对话", + "知识库问答", + "搜索引擎问答", + ], + on_change=on_mode_change, + key="dialogue_mode", + ) history_len = st.number_input("历史对话轮数:", 0, 10, 3) + # todo: support history len def on_kb_change():