fix webui: switch to created chat session automatically
This commit is contained in:
parent
353d9fc72b
commit
9974bf33a0
39
webui.py
39
webui.py
|
|
@ -52,31 +52,34 @@ if __name__ == "__main__":
|
|||
def on_change(key):
|
||||
selection = st.session_state[key]
|
||||
st.write(f"Selection changed to {selection}")
|
||||
|
||||
def on_page_change(key):
|
||||
cur_chat_name = st.session_state["cur_chat_name"]
|
||||
if (st.session_state[key] == "新建对话"
|
||||
and cur_chat_name != "新建对话"
|
||||
and not st.session_state.get("prompt")):
|
||||
new_chat_name = f"对话{len(st.session_state.chat_list) + 1}"
|
||||
st.session_state.chat_list[new_chat_name] = {"need_rename": True}
|
||||
st.session_state["cur_chat_name"] = new_chat_name
|
||||
st.session_state[key] = new_chat_name
|
||||
elif st.session_state[key] not in ["新建对话", "知识库管理"]:
|
||||
if st.session_state.get("prompt"):
|
||||
st.session_state["cur_chat_name"] = st.session_state.get("prompt")
|
||||
else:
|
||||
st.session_state["cur_chat_name"] = st.session_state[key]
|
||||
|
||||
with st.sidebar:
|
||||
default_index = list(pages).index(st.session_state["cur_chat_name"])
|
||||
selected_page = option_menu(
|
||||
"langchain-chatglm",
|
||||
options=list(pages.keys()),
|
||||
icons=[i["icon"] for i in pages.values()],
|
||||
menu_icon="chat-quote",
|
||||
key="selected_page",
|
||||
on_change=on_page_change,
|
||||
default_index=default_index,
|
||||
)
|
||||
|
||||
if selected_page == "知识库管理" or selected_page in pages:
|
||||
if selected_page == "新建对话":
|
||||
cur_chat_name = st.session_state["cur_chat_name"]
|
||||
if (not st.session_state.get("create_chat")
|
||||
and not st.session_state.get("renamde_chat")
|
||||
and not st.session_state.get("delete_chat")):
|
||||
new_chat_name = f"对话{len(st.session_state.chat_list) + 1}"
|
||||
st.session_state.chat_list[new_chat_name] = {"need_rename": True}
|
||||
st.session_state["cur_chat_name"] = new_chat_name
|
||||
st.experimental_rerun()
|
||||
if st.session_state.get("create_chat"):
|
||||
st.session_state.create_chat = False
|
||||
if st.session_state.get("renamde_chat"):
|
||||
st.session_state.renamde_chat = False
|
||||
if st.session_state.get("delete_chat"):
|
||||
st.session_state.delete_chat = False
|
||||
elif selected_page in st.session_state.chat_list:
|
||||
st.session_state["cur_chat_name"] = selected_page
|
||||
|
||||
if selected_page in pages:
|
||||
pages[selected_page]["func"](api)
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ def dialogue_page(api: ApiRequest):
|
|||
chat_input_placeholder = "请输入对话内容,换行请使用Ctrl+Enter "
|
||||
|
||||
def on_prompt():
|
||||
st.session_state["selected_page"] = prompt
|
||||
st.session_state.rename_chat = True
|
||||
|
||||
if prompt := st.chat_input(chat_input_placeholder, key="prompt", on_submit=on_prompt):
|
||||
if st.session_state.chat_list.get(st.session_state.cur_chat_name, {}).get("need_rename"):
|
||||
|
|
@ -146,17 +146,23 @@ def dialogue_page(api: ApiRequest):
|
|||
use_container_width=True,
|
||||
):
|
||||
chat_box.reset_history()
|
||||
st.experimental_rerun()
|
||||
|
||||
def on_delete_chat():
|
||||
st.session_state.delete_chat = True
|
||||
|
||||
if cols[2].button(
|
||||
"删除对话",
|
||||
disabled=len(st.session_state.chat_list) <= 1,
|
||||
use_container_width=True,
|
||||
on_click=on_delete_chat
|
||||
):
|
||||
chat_box.del_chat_name(st.session_state.cur_chat_name)
|
||||
st.session_state.chat_list.pop(st.session_state.cur_chat_name)
|
||||
st.session_state.cur_chat_name = list(st.session_state.chat_list.keys())[0]
|
||||
chat_box.use_chat_name(st.session_state.cur_chat_name)
|
||||
st.experimental_rerun()
|
||||
|
||||
export_btn.download_button(
|
||||
"导出记录",
|
||||
"".join(chat_box.export2md(st.session_state.cur_chat_name)),
|
||||
|
|
|
|||
Loading…
Reference in New Issue