from enum import Enum import streamlit as st st.set_page_config( page_title="ChatGLM3 Demo", page_icon=":robot:", layout='centered', initial_sidebar_state='expanded', ) import demo_chat, demo_ci, demo_tool DEFAULT_SYSTEM_PROMPT = ''' You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown. '''.strip() # Set the title of the demo st.title("ChatGLM3 Demo") # Add your custom text here, with smaller font size st.markdown("智谱AI 公开在线技术文档: https://lslfd0slxc.feishu.cn/wiki/WvQbwIJ9tiPAxGk8ywDck6yfnof \n\n 更多 ChatGLM3-6B 的使用方法请参考文档。", unsafe_allow_html=True) class Mode(str, Enum): CHAT, TOOL, CI = '💬 Chat', '🛠️ Tool', '🧑‍💻 Code Interpreter' with st.sidebar: top_p = st.slider( 'top_p', 0.0, 1.0, 0.8, step=0.01 ) temperature = st.slider( 'temperature', 0.0, 1.5, 0.95, step=0.01 ) repetition_penalty = st.slider( 'repetition_penalty', 0.0, 2.0, 1.2, step=0.01 ) system_prompt = st.text_area( label="System Prompt (Only for chat mode)", height=300, value=DEFAULT_SYSTEM_PROMPT, ) prompt_text = st.chat_input( 'Chat with ChatGLM3!', key='chat_input', ) tab = st.radio( 'Mode', [mode.value for mode in Mode], horizontal=True, label_visibility='hidden', ) match tab: case Mode.CHAT: demo_chat.main(top_p, temperature, system_prompt, prompt_text, repetition_penalty) case Mode.TOOL: demo_tool.main(top_p, temperature, prompt_text, repetition_penalty) case Mode.CI: demo_ci.main(top_p, temperature, prompt_text, repetition_penalty) case _: st.error(f'Unexpected tab: {tab}')