Update modules/ui.py
Browse files- modules/ui.py +25 -36
modules/ui.py
CHANGED
|
@@ -419,52 +419,41 @@ def display_chatbot_interface(lang_code):
|
|
| 419 |
st.session_state.chatbot = initialize_chatbot()
|
| 420 |
if 'messages' not in st.session_state:
|
| 421 |
st.session_state.messages = [{"role": "assistant", "content": t['initial_message']}]
|
| 422 |
-
if 'message_id' not in st.session_state:
|
| 423 |
-
st.session_state.message_id = 0
|
| 424 |
|
|
|
|
| 425 |
chat_container = st.container()
|
| 426 |
|
| 427 |
-
# Mostrar mensajes
|
| 428 |
with chat_container:
|
| 429 |
-
for
|
| 430 |
-
|
| 431 |
-
st.
|
| 432 |
-
else:
|
| 433 |
-
st.text_area("Assistant:", value=message["content"], height=50, key=f"assistant_msg_{idx}", disabled=True)
|
| 434 |
|
| 435 |
-
# Área de entrada del usuario
|
| 436 |
-
user_input = st.
|
| 437 |
|
| 438 |
# Procesamiento del input del usuario
|
| 439 |
if user_input:
|
|
|
|
| 440 |
st.session_state.messages.append({"role": "user", "content": user_input})
|
| 441 |
-
|
| 442 |
-
|
| 443 |
-
|
| 444 |
-
|
| 445 |
-
|
| 446 |
-
st.
|
| 447 |
-
|
| 448 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 449 |
st.session_state.messages.append({"role": "assistant", "content": response})
|
| 450 |
|
| 451 |
# Guardar la conversación en la base de datos
|
| 452 |
store_chat_history(st.session_state.username, st.session_state.messages)
|
| 453 |
-
|
| 454 |
-
|
| 455 |
-
|
| 456 |
-
|
| 457 |
-
# Forzar una actualización de la interfaz
|
| 458 |
-
st.experimental_rerun()
|
| 459 |
-
|
| 460 |
-
# Mostrar el último mensaje del asistente con efecto de escritura
|
| 461 |
-
if st.session_state.messages and st.session_state.messages[-1]["role"] == "assistant":
|
| 462 |
-
last_message = st.session_state.messages[-1]["content"]
|
| 463 |
-
with chat_container:
|
| 464 |
-
assistant_message = st.empty()
|
| 465 |
-
full_response = ""
|
| 466 |
-
for i, char in enumerate(last_message):
|
| 467 |
-
full_response += char
|
| 468 |
-
assistant_message.text_area("Assistant:", value=full_response + "▌", height=50, key=f"assistant_msg_typing_{i}", disabled=True)
|
| 469 |
-
time.sleep(0.01)
|
| 470 |
-
assistant_message.text_area("Assistant:", value=full_response, height=50, key=f"assistant_msg_final_{len(st.session_state.messages)-1}", disabled=True)
|
|
|
|
| 419 |
st.session_state.chatbot = initialize_chatbot()
|
| 420 |
if 'messages' not in st.session_state:
|
| 421 |
st.session_state.messages = [{"role": "assistant", "content": t['initial_message']}]
|
|
|
|
|
|
|
| 422 |
|
| 423 |
+
# Contenedor para el chat
|
| 424 |
chat_container = st.container()
|
| 425 |
|
| 426 |
+
# Mostrar todos los mensajes en el contenedor de chat
|
| 427 |
with chat_container:
|
| 428 |
+
for message in st.session_state.messages:
|
| 429 |
+
with st.chat_message(message["role"]):
|
| 430 |
+
st.write(message["content"])
|
|
|
|
|
|
|
| 431 |
|
| 432 |
+
# Área de entrada del usuario (en la parte inferior)
|
| 433 |
+
user_input = st.chat_input(t['input_placeholder'])
|
| 434 |
|
| 435 |
# Procesamiento del input del usuario
|
| 436 |
if user_input:
|
| 437 |
+
# Agregar mensaje del usuario
|
| 438 |
st.session_state.messages.append({"role": "user", "content": user_input})
|
| 439 |
+
with st.chat_message("user"):
|
| 440 |
+
st.write(user_input)
|
| 441 |
+
|
| 442 |
+
# Generar y mostrar respuesta del chatbot
|
| 443 |
+
with st.chat_message("assistant"):
|
| 444 |
+
with st.spinner("Pensando..."):
|
| 445 |
+
try:
|
| 446 |
+
response = get_chatbot_response(st.session_state.chatbot, user_input, lang_code)
|
| 447 |
+
except Exception as e:
|
| 448 |
+
st.error(f"Error al generar la respuesta del chatbot: {str(e)}")
|
| 449 |
+
response = "Lo siento, hubo un error al procesar tu solicitud."
|
| 450 |
+
st.write(response)
|
| 451 |
+
|
| 452 |
+
# Agregar respuesta del asistente a los mensajes
|
| 453 |
st.session_state.messages.append({"role": "assistant", "content": response})
|
| 454 |
|
| 455 |
# Guardar la conversación en la base de datos
|
| 456 |
store_chat_history(st.session_state.username, st.session_state.messages)
|
| 457 |
+
|
| 458 |
+
# Scroll al final del chat
|
| 459 |
+
st.markdown('<script>window.scrollTo(0,document.body.scrollHeight);</script>', unsafe_allow_html=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|