Space / pages /1 - Chatbot.py
Nax07onix3's picture
Update pages/1 - Chatbot.py
b91e1d6 verified
raw
history blame
3.71 kB
import streamlit as st
import os
import sys
sys.path.append('/mount/src/chatbot/pages/libraries')
from text_processing import *
from text_translation import *
## Inicialize session state
if "idioma" not in st.session_state:
st.session_state.idioma = "Inglés"
if "modelo" not in st.session_state:
st.session_state.modelo = "gpt2-medium"
if "lan_en" not in st.session_state:
st.session_state.lan_en = False
if "en_lan" not in st.session_state:
st.session_state.en_lan = False
if "process" not in st.session_state:
st.session_state.process = False
if "messages" not in st.session_state:
st.session_state.messages = []
## Variables
idioma_a_abreviacion = {
"Inglés": "en",
"Español": "es",
"Francés": "fr",
"Alemán": "de",
"Italiano": "it",
"Ruso": "ru",
"Chino (Mandarín)": "zh",
"Árabe": "ar",
"Hindi": "hi"
}
modelos = {
"gpt2": "openai-community/gpt2",
"Qwen-VL": "Qwen/Qwen-VL-Chat",
"dolly-v2-7b": "databricks/dolly-v2-7b"
}
## APP
st.title("Chatbot")
# Sidebar
st.sidebar.title('Opciones')
st.sidebar.subheader('Idioma')
idioma = st.sidebar.selectbox(
"Seleccionar idioma",
("Español", "Inglés", "Francés",
"Aleman", "Italiano","Ruso",
"Chino (Mandarín)", "Árabe", "Hindi"),
)
st.sidebar.subheader('Configuraciones del Chat')
# Opción para activar/desactivar RAG
RAG = st.sidebar.checkbox("Activar RAG", key="enabled_RAG")
# Opción para activar/desactivar prompts avanzados
Adv_prompts = st.sidebar.checkbox("Activar prompts avanzadas", key="enabled_prompts")
# Selección del modelo de lenguaje en la barra lateral
mod_selec = st.sidebar.selectbox(
"Select LLM",
("gpt2-medium", "banana phone", "dolly-v2-7b"),
)
# Botón para confirmar configuraciones
cols = st.columns(2)
with cols[0]:
set_button = st.sidebar.button("Confirmar Configuraciones")
with cols[1]:
clc_historial = st.sidebar.button("Limpiar historial")
if clc_historial:
# Reset the chat history
st.session_state.messages = []
if set_button:
# Reset the chat history
st.session_state.messages = []
# Set selected configurations
modelo = modelos.get(mod_selec)
if modelo != st.session_state.process:
st.session_state.process = model_loading(modelo)
if idioma != "Inglés":
lan1 = idioma_a_abreviacion.get(idioma)
lan2 = "en"
st.session_state.lan_en = load_translator(lan1, lan2)
st.session_state.en_lan = load_translator(lan2, lan1)
# Create space for the chatbot
prompt = st.chat_input('Envía un mensaje')
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
if prompt:
if st.session_state.process:
if idioma:
if idioma != "Inglés":
translated_prompt = translator(prompt, st.session_state.lan_en)
solution = data_processing(translated_prompt, st.session_state.process, RAG, Adv_prompts)
response = translator(solution, st.session_state.en_lan)
else:
response = data_processing(prompt, st.session_state.process, RAG, Adv_prompts)
st.session_state.messages.append({"role": "user", "content": prompt})
st.session_state.messages.append({"role": "assistant", "content": response})
st.rerun()
else:
st.warning("Idioma no especificado. Por favor, seleccione un idioma y confirme las configuraciones.")
else:
st.warning("El modelo no está cargado. Por favor, seleccione el modelo y confirme las configuraciones.")