Josedcape commited on
Commit
c777e29
·
verified ·
1 Parent(s): c655e80

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +110 -1
app.py CHANGED
@@ -238,5 +238,114 @@ def main():
238
  pregunta_usuario = transcript["text"]
239
  st.session_state.mensajes.append({"role": "user", "content": pregunta_usuario, "timestamp": time.time()})
240
  with st.chat_message("user"):
241
- st.markdown(p
242
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
238
  pregunta_usuario = transcript["text"]
239
  st.session_state.mensajes.append({"role": "user", "content": pregunta_usuario, "timestamp": time.time()})
240
  with st.chat_message("user"):
241
+ st.markdown(pregunta_usuario)
242
 
243
+ st.subheader("🎤 Captura de voz")
244
+ st.info("Haz clic en el micrófono y comienza a hablar. Tu pregunta se transcribirá automáticamente.")
245
+ with st.container():
246
+ if st.button("Grabar 🎙️"):
247
+ st.session_state.run_webrtc = True
248
+ if st.session_state.get("run_webrtc", False):
249
+ webrtc_ctx = webrtc_streamer(
250
+ key="example", mode=WebRtcMode.SENDONLY,
251
+ in_audio=True, on_audio_frame=on_audio,
252
+ )
253
+
254
+ st.markdown("---")
255
+ st.subheader("📄 Subir PDF")
256
+ st.info("Sube un archivo PDF y el asistente responderá en función de su contenido.")
257
+ archivo_pdf = st.file_uploader("Selecciona un archivo PDF", type=["pdf"])
258
+
259
+ texto_extraido = ""
260
+ if archivo_pdf:
261
+ texto_extraido = extraer_texto_pdf(archivo_pdf)
262
+ st.success("Texto extraído del PDF exitosamente.")
263
+ st.text_area("Texto extraído", value=texto_extraido, height=200)
264
+
265
+ if not texto_extraido:
266
+ texto_extraido = st.text_area("Texto extraído", height=200)
267
+
268
+ texto_preprocesado = preprocesar_texto(texto_extraido)
269
+
270
+ # --- Opciones de entrada de usuario ---
271
+ st.markdown("---")
272
+ pregunta_usuario = st.text_input("Escribe tu pregunta:")
273
+ if st.button("Enviar"):
274
+ if pregunta_usuario:
275
+ st.session_state.mensajes.append({"role": "user", "content": pregunta_usuario, "timestamp": time.time()})
276
+ with st.chat_message("user"):
277
+ st.markdown(pregunta_usuario)
278
+
279
+ with st.spinner("Generando respuesta..."):
280
+ respuesta = obtener_respuesta(pregunta_usuario, texto_preprocesado, modelo="gpt-4", temperatura=0.5)
281
+ st.session_state.mensajes.append({"role": "assistant", "content": respuesta, "timestamp": time.time()})
282
+ with st.chat_message("assistant"):
283
+ st.markdown(respuesta)
284
+
285
+ guardar_historial(st.session_state.mensajes)
286
+ else:
287
+ st.warning("Por favor, ingresa una pregunta antes de enviar.")
288
+
289
+ elif pagina == "Subir PDF":
290
+ st.subheader("📄 Subir PDF")
291
+ st.info("Sube un archivo PDF y el asistente responderá en función de su contenido.")
292
+ archivo_pdf = st.file_uploader("Selecciona un archivo PDF", type=["pdf"])
293
+
294
+ texto_extraido = ""
295
+ if archivo_pdf:
296
+ texto_extraido = extraer_texto_pdf(archivo_pdf)
297
+ st.success("Texto extraído del PDF exitosamente.")
298
+ st.text_area("Texto extraído", value=texto_extraido, height=200)
299
+
300
+ if not texto_extraido:
301
+ texto_extraido = st.text_area("Texto extraído", height=200)
302
+
303
+ texto_preprocesado = preprocesar_texto(texto_extraido)
304
+
305
+ # --- Opciones de entrada de usuario ---
306
+ st.markdown("---")
307
+ pregunta_usuario = st.text_input("Escribe tu pregunta:")
308
+ if st.button("Enviar"):
309
+ if pregunta_usuario:
310
+ st.session_state.mensajes.append({"role": "user", "content": pregunta_usuario, "timestamp": time.time()})
311
+ with st.chat_message("user"):
312
+ st.markdown(pregunta_usuario)
313
+
314
+ with st.spinner("Generando respuesta..."):
315
+ respuesta = obtener_respuesta(pregunta_usuario, texto_preprocesado, modelo="gpt-4", temperatura=0.5)
316
+ st.session_state.mensajes.append({"role": "assistant", "content": respuesta, "timestamp": time.time()})
317
+ with st.chat_message("assistant"):
318
+ st.markdown(respuesta)
319
+
320
+ guardar_historial(st.session_state.mensajes)
321
+ else:
322
+ st.warning("Por favor, ingresa una pregunta antes de enviar.")
323
+
324
+ elif pagina == "Agentes":
325
+ st.subheader("📋 Menú y Pedidos")
326
+ menu_csv = st.file_uploader("Sube el archivo CSV del menú", type=["csv"])
327
+
328
+ if menu_csv:
329
+ menu_df = leer_menu_csv(menu_csv)
330
+ st.success("Menú cargado exitosamente. Listo para tomar pedidos.")
331
+ st.write(menu_df)
332
+
333
+ # Captura de pedido
334
+ pedido_usuario = st.text_input("Ingresa tu pedido (separado por comas):")
335
+ if st.button("Tomar Pedido"):
336
+ if pedido_usuario:
337
+ confirmados = tomar_pedido_agente(pedido_usuario, menu_df)
338
+ st.info(f"Pedido confirmado: {confirmados}")
339
+
340
+ total = procesar_orden_agente(','.join(confirmados), menu_df)
341
+ st.success(f"Total del pedido: ${total}")
342
+
343
+ # Generar PDF de la orden
344
+ order_details = {item: {'price': menu_df[menu_df['item'] == item]['price'].values[0]} for item in confirmados}
345
+ pdf_path = generar_pdf_orden(order_details)
346
+ st.markdown(f"[Descargar PDF de la Orden]({pdf_path})", unsafe_allow_html=True)
347
+ else:
348
+ st.warning("Por favor, ingresa el pedido antes de continuar.")
349
+
350
+ if __name__ == "__main__":
351
+ main()