AIdeaText commited on
Commit
ab87e02
·
verified ·
1 Parent(s): dfe8a2b

Update modules/chatbot/sidebar_chat.py

Browse files
Files changed (1) hide show
  1. modules/chatbot/sidebar_chat.py +6 -24
modules/chatbot/sidebar_chat.py CHANGED
@@ -9,7 +9,6 @@ logger = logging.getLogger(__name__)
9
  def display_sidebar_chat(lang_code: str, chatbot_t: dict):
10
  """Chatbot mejorado con manejo completo del contexto semántico"""
11
  with st.sidebar:
12
- # Configuración de estilos
13
  st.markdown("""
14
  <style>
15
  .chat-container {
@@ -22,12 +21,10 @@ def display_sidebar_chat(lang_code: str, chatbot_t: dict):
22
  """, unsafe_allow_html=True)
23
 
24
  try:
25
- # Inicialización del procesador
26
  if 'chat_processor' not in st.session_state:
27
  st.session_state.chat_processor = ChatProcessor()
28
  logger.info("Nuevo ChatProcessor inicializado")
29
 
30
- # Configurar contexto semántico si está activo
31
  if st.session_state.get('semantic_agent_active', False):
32
  semantic_data = st.session_state.get('semantic_agent_data')
33
  if semantic_data and all(k in semantic_data for k in ['text', 'metrics']):
@@ -38,33 +35,29 @@ def display_sidebar_chat(lang_code: str, chatbot_t: dict):
38
  graph_data=semantic_data.get('graph_data'),
39
  lang_code=lang_code
40
  )
41
- logger.info("Contexto semántico configurado en el chat")
42
  except Exception as e:
43
  logger.error(f"Error configurando contexto: {str(e)}")
44
  st.error("Error al configurar el análisis. Recargue el documento.")
45
  return
46
 
47
- # Interfaz del chat
48
  with st.expander("💬 Asistente de Análisis", expanded=True):
49
- # Inicializar historial si no existe
50
  if 'sidebar_messages' not in st.session_state:
51
  initial_msg = {
52
  'en': "Hello! Ask me about the semantic analysis.",
53
  'es': "¡Hola! Pregúntame sobre el análisis semántico.",
54
- 'pt': "Olá! Pergunte-me sobre a análise semântica."
 
55
  }.get(lang_code, "Hello!")
56
 
57
  st.session_state.sidebar_messages = [
58
  {"role": "assistant", "content": initial_msg}
59
  ]
60
 
61
- # Mostrar historial
62
  chat_container = st.container()
63
  with chat_container:
64
  for msg in st.session_state.sidebar_messages:
65
  st.chat_message(msg["role"]).write(msg["content"])
66
 
67
- # Manejo de mensajes nuevos
68
  user_input = st.chat_input(
69
  {
70
  'en': "Ask about the analysis...",
@@ -76,38 +69,28 @@ def display_sidebar_chat(lang_code: str, chatbot_t: dict):
76
 
77
  if user_input:
78
  try:
79
- # Mostrar mensaje del usuario
80
  with chat_container:
81
  st.chat_message("user").write(user_input)
82
  st.session_state.sidebar_messages.append(
83
  {"role": "user", "content": user_input}
84
  )
85
 
86
- # Obtener y mostrar respuesta (con limpieza de caracteres)
87
  with st.chat_message("assistant"):
 
88
  response_stream = st.session_state.chat_processor.process_chat_input(
89
  user_input, lang_code
90
  )
 
91
 
92
- # Limpiar el stream de respuesta
93
- def clean_response_stream(stream):
94
- for chunk in stream:
95
- yield chunk.replace("▌", "")
96
-
97
- response = st.write_stream(clean_response_stream(response_stream))
98
-
99
- # Guardar respuesta limpia
100
- clean_response = response.replace("▌", "")
101
  st.session_state.sidebar_messages.append(
102
- {"role": "assistant", "content": clean_response}
103
  )
104
 
105
- # Guardar en base de datos (con texto limpio)
106
  if 'username' in st.session_state:
107
  store_chat_history(
108
  username=st.session_state.username,
109
  messages=st.session_state.sidebar_messages,
110
- analysis_type='semantic_analysis',
111
  metadata={
112
  'text_sample': st.session_state.semantic_agent_data['text'][:500],
113
  'concepts': st.session_state.semantic_agent_data['metrics']['key_concepts'][:5]
@@ -123,7 +106,6 @@ def display_sidebar_chat(lang_code: str, chatbot_t: dict):
123
  'pt': "Erro ao processar. Tente novamente."
124
  }.get(lang_code, "Error"))
125
 
126
- # Botón para reiniciar
127
  if st.button("🔄 Reiniciar Chat"):
128
  st.session_state.sidebar_messages = []
129
  st.rerun()
 
9
  def display_sidebar_chat(lang_code: str, chatbot_t: dict):
10
  """Chatbot mejorado con manejo completo del contexto semántico"""
11
  with st.sidebar:
 
12
  st.markdown("""
13
  <style>
14
  .chat-container {
 
21
  """, unsafe_allow_html=True)
22
 
23
  try:
 
24
  if 'chat_processor' not in st.session_state:
25
  st.session_state.chat_processor = ChatProcessor()
26
  logger.info("Nuevo ChatProcessor inicializado")
27
 
 
28
  if st.session_state.get('semantic_agent_active', False):
29
  semantic_data = st.session_state.get('semantic_agent_data')
30
  if semantic_data and all(k in semantic_data for k in ['text', 'metrics']):
 
35
  graph_data=semantic_data.get('graph_data'),
36
  lang_code=lang_code
37
  )
 
38
  except Exception as e:
39
  logger.error(f"Error configurando contexto: {str(e)}")
40
  st.error("Error al configurar el análisis. Recargue el documento.")
41
  return
42
 
 
43
  with st.expander("💬 Asistente de Análisis", expanded=True):
 
44
  if 'sidebar_messages' not in st.session_state:
45
  initial_msg = {
46
  'en': "Hello! Ask me about the semantic analysis.",
47
  'es': "¡Hola! Pregúntame sobre el análisis semántico.",
48
+ 'pt': "Olá! Pergunte-me sobre a análise semântica.",
49
+ 'fr': "Bonjour ! Posez-moi des questions sur l'analyse sémantique."
50
  }.get(lang_code, "Hello!")
51
 
52
  st.session_state.sidebar_messages = [
53
  {"role": "assistant", "content": initial_msg}
54
  ]
55
 
 
56
  chat_container = st.container()
57
  with chat_container:
58
  for msg in st.session_state.sidebar_messages:
59
  st.chat_message(msg["role"]).write(msg["content"])
60
 
 
61
  user_input = st.chat_input(
62
  {
63
  'en': "Ask about the analysis...",
 
69
 
70
  if user_input:
71
  try:
 
72
  with chat_container:
73
  st.chat_message("user").write(user_input)
74
  st.session_state.sidebar_messages.append(
75
  {"role": "user", "content": user_input}
76
  )
77
 
 
78
  with st.chat_message("assistant"):
79
+ # Simplificado: Streamlit maneja el generator directamente
80
  response_stream = st.session_state.chat_processor.process_chat_input(
81
  user_input, lang_code
82
  )
83
+ response = st.write_stream(response_stream)
84
 
 
 
 
 
 
 
 
 
 
85
  st.session_state.sidebar_messages.append(
86
+ {"role": "assistant", "content": response}
87
  )
88
 
 
89
  if 'username' in st.session_state:
90
  store_chat_history(
91
  username=st.session_state.username,
92
  messages=st.session_state.sidebar_messages,
93
+ chat_type='semantic_analysis',
94
  metadata={
95
  'text_sample': st.session_state.semantic_agent_data['text'][:500],
96
  'concepts': st.session_state.semantic_agent_data['metrics']['key_concepts'][:5]
 
106
  'pt': "Erro ao processar. Tente novamente."
107
  }.get(lang_code, "Error"))
108
 
 
109
  if st.button("🔄 Reiniciar Chat"):
110
  st.session_state.sidebar_messages = []
111
  st.rerun()