lozanopastor commited on
Commit
6ecadc7
·
verified ·
1 Parent(s): 6821964

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -33
app.py CHANGED
@@ -43,10 +43,7 @@ css_style = """
43
  """
44
 
45
  def eliminar_proceso_pensamiento(texto):
46
- # Eliminar todo el contenido entre las etiquetas de pensamiento
47
  texto_limpio = re.sub(r'', '', texto, flags=re.DOTALL)
48
-
49
- # Extraer la última línea no vacía del texto restante
50
  lineas = [line.strip() for line in texto_limpio.split('\n') if line.strip()]
51
  return lineas[-1] if lineas else "Respuesta no disponible"
52
 
@@ -90,9 +87,9 @@ def get_conversational_chain():
90
 
91
  def extract_metadata(vector_store):
92
  metadata_questions = {
93
- "title": "¿Cual es o podría ser el título del documento?",
94
  "entity": "¿A qué entidad u organización pertenece este documento?",
95
- "date": "¿En qué fecha se implantará el contenido del documento? Si no se especifica ninguna, responde 'No se especifica'"
96
  }
97
 
98
  metadata = {}
@@ -110,7 +107,6 @@ def extract_metadata(vector_store):
110
  return metadata
111
 
112
  def mostrar_respuesta(texto):
113
- """Muestra la respuesta formateada en un contenedor especial"""
114
  with st.container():
115
  st.markdown(f'<div class="response-box">{texto}</div>', unsafe_allow_html=True)
116
 
@@ -136,6 +132,10 @@ def main():
136
  st.title("PDF Consultor 🔍")
137
  st.markdown(css_style, unsafe_allow_html=True)
138
 
 
 
 
 
139
  # Sidebar - Carga de documentos
140
  with st.sidebar:
141
  st.markdown('<p class="step-number">1 Subir archivos</p>', unsafe_allow_html=True)
@@ -147,7 +147,7 @@ def main():
147
  )
148
 
149
  # Procesamiento automático al cargar documentos
150
- if pdf_docs and not st.session_state.get('processed'):
151
  with st.spinner("Analizando documento..."):
152
  try:
153
  raw_text = get_pdf_text(pdf_docs)
@@ -156,7 +156,7 @@ def main():
156
 
157
  st.session_state.metadata = extract_metadata(vector_store)
158
  st.session_state.vector_store = vector_store
159
- st.session_state.processed = True
160
 
161
  st.rerun()
162
 
@@ -184,31 +184,23 @@ def main():
184
  st.markdown("---")
185
 
186
  # Interfaz de consultas
187
- with st.form("consulta_form"):
188
- col1, col2 = st.columns([5, 1])
189
- with col1:
190
- user_question = st.text_input(
191
- "Escribe tu pregunta:",
192
- placeholder="Ej: ¿Qué normativa regula este proceso?",
193
- label_visibility="collapsed"
194
- )
195
- with col2:
196
- st.markdown("<br>", unsafe_allow_html=True)
197
- enviar = st.form_submit_button("Enviar ▶")
198
-
199
- botones_rapidos = st.columns(3)
200
- with botones_rapidos[0]:
201
- if st.form_submit_button("📝 Resumen ejecutivo"):
202
- user_question = "¿Cual es o podría ser el título del documento?"
203
- with botones_rapidos[1]:
204
- if st.form_submit_button("🏛️ Entidad relacionada"):
205
- user_question = "¿A qué organización o entidad pertenece este documento?"
206
- with botones_rapidos[2]:
207
- if st.form_submit_button("📅 Fechas clave"):
208
- user_question = "¿En qué fecha se implantará el contenido del documento? Si no se especifica ninguna, responde 'No se especifica'"
209
-
210
- if user_question and enviar:
211
- procesar_consulta(user_question)
212
 
213
  if __name__ == "__main__":
214
  main()
 
43
  """
44
 
45
  def eliminar_proceso_pensamiento(texto):
 
46
  texto_limpio = re.sub(r'', '', texto, flags=re.DOTALL)
 
 
47
  lineas = [line.strip() for line in texto_limpio.split('\n') if line.strip()]
48
  return lineas[-1] if lineas else "Respuesta no disponible"
49
 
 
87
 
88
  def extract_metadata(vector_store):
89
  metadata_questions = {
90
+ "title": "¿Cual es o podría ser el título del documento? Redacta una sola frase",
91
  "entity": "¿A qué entidad u organización pertenece este documento?",
92
+ "date": "¿En qué fecha se implantará el contenido? Si no se detalla responde \"No se especifica\""
93
  }
94
 
95
  metadata = {}
 
107
  return metadata
108
 
109
  def mostrar_respuesta(texto):
 
110
  with st.container():
111
  st.markdown(f'<div class="response-box">{texto}</div>', unsafe_allow_html=True)
112
 
 
132
  st.title("PDF Consultor 🔍")
133
  st.markdown(css_style, unsafe_allow_html=True)
134
 
135
+ # Inicializa estado de sesión
136
+ if 'documento_cargado' not in st.session_state:
137
+ st.session_state.documento_cargado = False
138
+
139
  # Sidebar - Carga de documentos
140
  with st.sidebar:
141
  st.markdown('<p class="step-number">1 Subir archivos</p>', unsafe_allow_html=True)
 
147
  )
148
 
149
  # Procesamiento automático al cargar documentos
150
+ if pdf_docs and not st.session_state.documento_cargado:
151
  with st.spinner("Analizando documento..."):
152
  try:
153
  raw_text = get_pdf_text(pdf_docs)
 
156
 
157
  st.session_state.metadata = extract_metadata(vector_store)
158
  st.session_state.vector_store = vector_store
159
+ st.session_state.documento_cargado = True
160
 
161
  st.rerun()
162
 
 
184
  st.markdown("---")
185
 
186
  # Interfaz de consultas
187
+ if st.session_state.documento_cargado:
188
+ with st.form("consulta_form"):
189
+ col1, col2 = st.columns([5, 1])
190
+ with col1:
191
+ user_question = st.text_input(
192
+ "Escribe tu pregunta:",
193
+ placeholder="Ej: ¿Qué normativa regula este proceso?",
194
+ label_visibility="collapsed"
195
+ )
196
+ with col2:
197
+ st.markdown("<br>", unsafe_allow_html=True)
198
+ enviar = st.form_submit_button("Enviar ▶")
199
+
200
+ if user_question and enviar:
201
+ procesar_consulta(user_question)
202
+ else:
203
+ st.write("Por favor, sube un documento para continuar.")
 
 
 
 
 
 
 
 
204
 
205
  if __name__ == "__main__":
206
  main()