| 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("MODELO DE IA CHATBOT ELISA I") |
| st.markdown(" GERARDO") |
|
|
| 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("Nota crea una cuenta con tu correo en hugginface por seguridad.") |
|
|
| 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 = False |
| st.session_state.chatbot = hugchat.ChatBot(st.session_state.cookies) |
| |
| |
|
|
| 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("pregunta?", 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() |