AIdeaText commited on
Commit
e19483a
·
verified ·
1 Parent(s): e30424a

Update modules/ui.py

Browse files
Files changed (1) hide show
  1. modules/ui.py +41 -34
modules/ui.py CHANGED
@@ -5,10 +5,10 @@ import io
5
  import base64
6
  import matplotlib.pyplot as plt
7
  import pandas as pd
 
8
  from streamlit_player import st_player # Necesitarás instalar esta librería: pip install streamlit-player
9
  from spacy import displacy
10
 
11
-
12
  #Importaciones locales
13
  #Importaciones locales de autenticación y base de datos
14
  from .auth import authenticate_user, register_user, get_user_role
@@ -396,28 +396,25 @@ def display_discourse_analysis_interface(nlp_models, lang_code):
396
  def display_chatbot_interface(lang_code):
397
  translations = {
398
  'es': {
399
- 'title': "AIdeaText - Chatbot Multilingüe",
400
  'input_placeholder': "Escribe tu mensaje aquí...",
401
- 'send_button': "Enviar",
402
- 'initial_message': "¡Hola! ¿En qué puedo ayudarte hoy?"
403
  },
404
  'en': {
405
- 'title': "AIdeaText - Multilingual Chatbot",
406
  'input_placeholder': "Type your message here...",
407
- 'send_button': "Send",
408
- 'initial_message': "Hello! How can I assist you today?"
409
  },
410
  'fr': {
411
- 'title': "AIdeaText - Chatbot Multilingue",
412
  'input_placeholder': "Écrivez votre message ici...",
413
- 'send_button': "Envoyer",
414
- 'initial_message': "Bonjour! Comment puis-je vous aider aujourd'hui?"
415
  }
416
  }
417
 
418
  t = translations[lang_code]
419
 
420
- st.header(t['title'])
421
 
422
  if 'chatbot' not in st.session_state:
423
  st.session_state.chatbot = initialize_chatbot()
@@ -425,31 +422,41 @@ def display_chatbot_interface(lang_code):
425
  if 'messages' not in st.session_state:
426
  st.session_state.messages = [{"role": "assistant", "content": t['initial_message']}]
427
 
428
- # Mostrar mensajes previos
429
- for message in st.session_state.messages:
430
- with st.chat_message(message["role"]):
431
- st.markdown(message["content"])
432
-
433
- # Input del usuario
434
- if prompt := st.chat_input(t['input_placeholder']):
435
- st.session_state.messages.append({"role": "user", "content": prompt})
436
- with st.chat_message("user"):
437
- st.markdown(prompt)
438
 
439
- with st.chat_message("assistant"):
440
- message_placeholder = st.empty()
441
- full_response = get_chatbot_response(st.session_state.chatbot, prompt, lang_code)
442
-
443
- # Simular escritura gradual
444
- for i in range(len(full_response)):
445
- message_placeholder.markdown(full_response[:i+1] + "▌")
446
- time.sleep(0.01)
447
- message_placeholder.markdown(full_response)
448
-
449
- st.session_state.messages.append({"role": "assistant", "content": full_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
  # Mostrar el número de llamadas a la API restantes
455
  remaining_calls = 50 - st.session_state.get('api_calls', 0)
 
5
  import base64
6
  import matplotlib.pyplot as plt
7
  import pandas as pd
8
+ import time
9
  from streamlit_player import st_player # Necesitarás instalar esta librería: pip install streamlit-player
10
  from spacy import displacy
11
 
 
12
  #Importaciones locales
13
  #Importaciones locales de autenticación y base de datos
14
  from .auth import authenticate_user, register_user, get_user_role
 
396
  def display_chatbot_interface(lang_code):
397
  translations = {
398
  'es': {
399
+ 'title': "Expertos en Vacaciones",
400
  'input_placeholder': "Escribe tu mensaje aquí...",
401
+ 'initial_message': "¡Hola! ¿Cómo podemos ayudarte?"
 
402
  },
403
  'en': {
404
+ 'title': "Vacation Experts",
405
  'input_placeholder': "Type your message here...",
406
+ 'initial_message': "Hi! How can we help you?"
 
407
  },
408
  'fr': {
409
+ 'title': "Experts en Vacances",
410
  'input_placeholder': "Écrivez votre message ici...",
411
+ 'initial_message': "Bonjour! Comment pouvons-nous vous aider?"
 
412
  }
413
  }
414
 
415
  t = translations[lang_code]
416
 
417
+ st.title(t['title'])
418
 
419
  if 'chatbot' not in st.session_state:
420
  st.session_state.chatbot = initialize_chatbot()
 
422
  if 'messages' not in st.session_state:
423
  st.session_state.messages = [{"role": "assistant", "content": t['initial_message']}]
424
 
425
+ chat_container = st.container()
 
 
 
 
 
 
 
 
 
426
 
427
+ # Área de entrada del usuario
428
+ user_input = st.text_input(t['input_placeholder'], key="user_input")
 
 
 
 
 
 
 
 
 
429
 
430
+ # Botón de envío (oculto, se activa con Enter)
431
+ if st.button("Send", key="send_button", style="display: none;") or user_input:
432
+ if user_input:
433
+ st.session_state.messages.append({"role": "user", "content": user_input})
434
+ with chat_container:
435
+ for message in st.session_state.messages:
436
+ if message["role"] == "user":
437
+ st.text_area("You:", value=message["content"], height=50, key=f"user_msg_{len(st.session_state.messages)}", disabled=True)
438
+ else:
439
+ st.text_area("Assistant:", value=message["content"], height=50, key=f"assistant_msg_{len(st.session_state.messages)}", disabled=True)
440
+
441
+ # Generar respuesta del chatbot
442
+ response = get_chatbot_response(st.session_state.chatbot, user_input, lang_code)
443
+ st.session_state.messages.append({"role": "assistant", "content": response})
444
+
445
+ # Mostrar la respuesta del chatbot con efecto de escritura
446
+ with chat_container:
447
+ assistant_message = st.empty()
448
+ full_response = ""
449
+ for char in response:
450
+ full_response += char
451
+ assistant_message.text_area("Assistant:", value=full_response + "▌", height=50, key=f"assistant_msg_{len(st.session_state.messages)+1}", disabled=True)
452
+ time.sleep(0.01)
453
+ assistant_message.text_area("Assistant:", value=full_response, height=50, key=f"assistant_msg_{len(st.session_state.messages)+1}", disabled=True)
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
+ # Limpiar el input del usuario
459
+ st.session_state.user_input = ""
460
 
461
  # Mostrar el número de llamadas a la API restantes
462
  remaining_calls = 50 - st.session_state.get('api_calls', 0)