| | 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() |