Spaces:
Runtime error
Runtime error
| from hugchat import hugchat | |
| from hugchat.login import Login | |
| import streamlit as st | |
| if "logged_in" not in st.session_state: | |
| st.session_state.logged_in = False | |
| if "cookies" not in st.session_state: | |
| st.session_state.cookies = None | |
| llms = [ | |
| 'meta-llama/Meta-Llama-3.1-70B-Instruct', | |
| 'meta-llama/Meta-Llama-3.1-405B-Instruct-FP8', | |
| 'CohereForAI/c4ai-command-r-plus', | |
| 'mistralai/Mixtral-8x7B-Instruct-v0.1', | |
| 'NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO', | |
| '01-ai/Yi-1.5-34B-Chat', | |
| 'mistralai/Mistral-7B-Instruct-v0.3', | |
| 'microsoft/Phi-3-mini-4k-instruct' | |
| ] | |
| st.title("HugChat LLM Chatbot") | |
| st.markdown("Made by Vo1d_s") | |
| sidebar = st.sidebar | |
| sidebar.markdown("## HuggingFace account") | |
| email = sidebar.text_input("Email", placeholder="Your email", disabled=st.session_state.logged_in) | |
| password = sidebar.text_input("Password (secure)", placeholder="Your password", type="password", disabled=st.session_state.logged_in) | |
| empty = sidebar.empty() | |
| sidebar.warning("Note: You may get an email saying that someone logged into your account because this uses HuggingFace, it is safe.") | |
| def change_system_prompt(): | |
| st.session_state.messages = [] | |
| st.session_state.chatbot.delete_conversation() | |
| st.session_state.chatbot = hugchat.ChatBot(st.session_state.cookies, system_prompt=st.session_state.sys_prompt, default_llm=st.session_state.selected_llm) | |
| print(st.session_state.selected_llm) | |
| sidebar.markdown("## Model Configuration") | |
| system_prompt = sidebar.text_input("System prompt (don't leave empty)", placeholder="Model behaviour", on_change=change_system_prompt, key="sys_prompt", disabled=not st.session_state.logged_in) | |
| selected_llm = sidebar.selectbox("LLM (model)", placeholder="Default LLM", on_change=change_system_prompt, options=llms, key="selected_llm", disabled=not st.session_state.logged_in) | |
| if email and password: | |
| if not st.session_state.logged_in: | |
| try: | |
| credentials = Login(email=email, passwd=password) | |
| st.session_state.cookies = credentials.login() | |
| st.session_state.logged_in = True | |
| st.session_state.chatbot = hugchat.ChatBot(st.session_state.cookies) | |
| except Exception as e: | |
| empty.error(f"Error: {e}") | |
| def stream(prompt): | |
| for event in st.session_state.chatbot.chat(prompt): | |
| if event: | |
| yield event["token"] | |
| def main(): | |
| if "messages" not in st.session_state: | |
| st.session_state.messages = [] | |
| for message in st.session_state.messages: | |
| with st.chat_message(message["role"]): | |
| st.write(message["content"]) | |
| if prompt := st.chat_input("What is up?", disabled=not st.session_state.logged_in): | |
| with st.chat_message("user"): | |
| st.write(prompt) | |
| st.session_state.messages.append({"role": "user", "content": prompt}) | |
| with st.chat_message("assistant"): | |
| try: | |
| response = st.write_stream(stream(prompt)) | |
| except Exception as e: | |
| response = f"Error: {e}" | |
| st.write(response) | |
| st.session_state.messages.append({"role": "assistant", "content": response}) | |
| if __name__ == "__main__": | |
| main() |