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