Skip to content

Commit

Permalink
webui中增加多会话功能
Browse files Browse the repository at this point in the history
  • Loading branch information
liunux4odoo committed Aug 3, 2023
1 parent fdbff8a commit e1698ce
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 21 deletions.
4 changes: 2 additions & 2 deletions webui.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# 运行方式:
# 1. 安装必要的包:pip install streamlit-option-menu streamlit-chatbox>=1.1.3
# 1. 安装必要的包:pip install streamlit-option-menu streamlit-chatbox>=1.1.4
# 2. 运行本机fastchat服务:python server\llm_api.py 或者 运行对应的sh文件
# 3. 运行API服务器:python server/api.py。如果使用api = ApiRequest(no_remote_api=True),该步可以跳过。
# 4. 运行WEB UI:streamlit run webui.py --server.port 7860
Expand All @@ -12,7 +12,7 @@
api = ApiRequest()

if __name__ == "__main__":
st.set_page_config("langchain-chatglm WebUI")
st.set_page_config("langchain-chatglm WebUI", layout="wide")

pages = {"对话": {"icon": "chat",
"func": dialogue_page,
Expand Down
67 changes: 48 additions & 19 deletions webui_pages/dialogue/dialogue.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
from streamlit_chatbox import *


def dialogue_page(api: ApiRequest):
chat_box = ChatBox(
greetings=[
f"欢迎使用 [`Langchain-Chatglm`](https://github.com/chatchat-space/langchain-chatglm) ! 当前使用模型`{LLM_MODEL}`, 您可以开始提问了.",
]
)
chat_box = ChatBox(
greetings=[
f"欢迎使用 [`Langchain-Chatglm`](https://github.com/chatchat-space/langchain-chatglm) ! 当前使用模型`{LLM_MODEL}`, 您可以开始提问了.",
]
)

def dialogue_page(api: ApiRequest):
with st.sidebar:
def on_mode_change():
mode = st.session_state.dialogue_mode
Expand All @@ -31,24 +31,53 @@ def on_mode_change():
)
history_len = st.slider("历史对话轮数:", 1, 10, 1, disabled=True)
# todo: support history len
if st.button("清除历史对话"):
chat_box.reset_history()
with st.expander("会话管理", True):
if st.button("清除历史对话内容"):
chat_box.reset_history()

col_input, col_btn = st.columns(2)
new_chat_name = col_input.text_input(
"新会话名称",
placeholder="新会话名称",
label_visibility="collapsed",
key="new_chat_name",
)

def on_btn_new_chat():
new_chat_name = st.session_state.new_chat_name
if new_chat_name:
chat_box.use_chat_name(new_chat_name)
st.session_state.new_chat_name = ""
col_btn.button("新建会话", on_click=on_btn_new_chat)

cols = st.columns(2)
chat_list = chat_box.get_chat_names()
print(chat_list, chat_box.cur_chat_name)
try:
index = chat_list.index(chat_box.cur_chat_name)
except:
index = 0
cur_chat_name = cols[0].selectbox("当前会话:", chat_list, index, label_visibility="collapsed")
chat_box.use_chat_name(cur_chat_name)
if cols[1].button("清除会话"):
chat_box.del_chat_name(cur_chat_name)

def on_kb_change():
chat_box.ai_say(f"已加载知识库: {st.session_state.selected_kb}", not_render=True)

if dialogue_mode == "知识库问答":
kb_list = api.list_knowledge_bases()
selected_kb = st.selectbox(
"请选择知识库:",
kb_list,
on_change=on_kb_change,
key="selected_kb",
)
top_k = st.slider("匹配知识条数:", 1, 20, 3, disabled=True)
score_threshold = st.slider("知识匹配分数阈值:", 0, 1000, 0, disabled=True)
chunk_content = st.checkbox("关联上下文", False, disabled=True)
chunk_size = st.slider("关联长度:", 0, 500, 250, disabled=True)
with st.expander("知识库配置", True):
kb_list = api.list_knowledge_bases()
selected_kb = st.selectbox(
"请选择知识库:",
kb_list,
on_change=on_kb_change,
key="selected_kb",
)
top_k = st.slider("匹配知识条数:", 1, 20, 3, disabled=True)
score_threshold = st.slider("知识匹配分数阈值:", 0, 1000, 0, disabled=True)
chunk_content = st.checkbox("关联上下文", False, disabled=True)
chunk_size = st.slider("关联长度:", 0, 500, 250, disabled=True)

# Display chat messages from history on app rerun
chat_box.output_messages()
Expand Down

0 comments on commit e1698ce

Please sign in to comment.