Spaces:
Sleeping
Sleeping
Upload 2 files
Browse files
app.py
CHANGED
@@ -37,13 +37,13 @@ def buscar_en_pubmed(pregunta):
|
|
37 |
return "No encontré artículos relevantes en PubMed."
|
38 |
except Exception as e:
|
39 |
logging.error(f"Error al buscar en PubMed: {e}")
|
40 |
-
return
|
41 |
|
42 |
# Función para buscar en Internet con tiempo de espera
|
43 |
def buscar_en_internet(pregunta):
|
44 |
try:
|
45 |
url = f"https://api.duckduckgo.com/?q={pregunta}&format=json"
|
46 |
-
respuesta = requests.get(url, timeout=
|
47 |
datos = respuesta.json()
|
48 |
|
49 |
if "Abstract" in datos and datos["Abstract"]:
|
@@ -52,44 +52,58 @@ def buscar_en_internet(pregunta):
|
|
52 |
return "No encontré información en Internet."
|
53 |
except Exception as e:
|
54 |
logging.error(f"Error al buscar en Internet: {e}")
|
55 |
-
return
|
56 |
|
57 |
# Función para generar respuestas del modelo (optimizada para CPU)
|
58 |
def generar_respuesta(pregunta):
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
|
|
|
|
|
|
|
|
71 |
|
72 |
# Función principal para hacer preguntas al bot
|
73 |
def pregunta_medica_con_carga(pregunta):
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
# Crear la interfaz web con Gradio
|
95 |
css = """
|
|
|
37 |
return "No encontré artículos relevantes en PubMed."
|
38 |
except Exception as e:
|
39 |
logging.error(f"Error al buscar en PubMed: {e}")
|
40 |
+
return "Error al buscar en PubMed. Inténtalo de nuevo."
|
41 |
|
42 |
# Función para buscar en Internet con tiempo de espera
|
43 |
def buscar_en_internet(pregunta):
|
44 |
try:
|
45 |
url = f"https://api.duckduckgo.com/?q={pregunta}&format=json"
|
46 |
+
respuesta = requests.get(url, timeout=10) # Incrementa el tiempo de espera a 10 segundos
|
47 |
datos = respuesta.json()
|
48 |
|
49 |
if "Abstract" in datos and datos["Abstract"]:
|
|
|
52 |
return "No encontré información en Internet."
|
53 |
except Exception as e:
|
54 |
logging.error(f"Error al buscar en Internet: {e}")
|
55 |
+
return "Error al buscar en Internet. Inténtalo de nuevo."
|
56 |
|
57 |
# Función para generar respuestas del modelo (optimizada para CPU)
|
58 |
def generar_respuesta(pregunta):
|
59 |
+
try:
|
60 |
+
inputs = tokenizer(
|
61 |
+
f"Eres un profesor médico con vasto conocimiento en fisiología, bioquímica, farmacología y otras áreas médicas. "
|
62 |
+
f"Explica de manera clara, sencilla y didáctica. Utiliza términos médicos y explícalos dentro de tus respuestas. "
|
63 |
+
f"Si no estás seguro de algo, di 'No tengo suficiente información para responder a eso'. Pregunta: {pregunta}",
|
64 |
+
return_tensors="pt"
|
65 |
+
).to("cpu")
|
66 |
+
|
67 |
+
with torch.no_grad():
|
68 |
+
outputs = model.generate(**inputs, max_length=100) # Reducir max_length para mayor velocidad
|
69 |
+
|
70 |
+
return tokenizer.decode(outputs[0], skip_special_tokens=True)
|
71 |
+
|
72 |
+
except Exception as e:
|
73 |
+
logging.error(f"Error al generar respuesta del modelo: {e}")
|
74 |
+
return "No pude generar una respuesta. Inténtalo de nuevo."
|
75 |
|
76 |
# Función principal para hacer preguntas al bot
|
77 |
def pregunta_medica_con_carga(pregunta):
|
78 |
+
try:
|
79 |
+
# Validar la entrada
|
80 |
+
if not isinstance(pregunta, str) or not pregunta.strip():
|
81 |
+
yield "Por favor, ingresa una pregunta válida."
|
82 |
+
return
|
83 |
+
|
84 |
+
yield "Procesando tu pregunta..." # Mensaje de carga
|
85 |
+
|
86 |
+
# Respuesta del modelo médico
|
87 |
+
respuesta_modelo = generar_respuesta(pregunta)
|
88 |
+
|
89 |
+
# Buscar en PubMed
|
90 |
+
referencias_pubmed = buscar_en_pubmed(pregunta)
|
91 |
+
|
92 |
+
# Buscar en Internet
|
93 |
+
respuesta_internet = buscar_en_internet(pregunta)
|
94 |
+
|
95 |
+
# Combinar respuestas
|
96 |
+
respuesta_final = (
|
97 |
+
f"Respuesta del Profesor Médico:\n{respuesta_modelo}\n\n"
|
98 |
+
f"Referencias de PubMed:\n{referencias_pubmed}\n\n"
|
99 |
+
f"Información de Internet:\n{respuesta_internet}"
|
100 |
+
)
|
101 |
+
|
102 |
+
yield respuesta_final
|
103 |
+
|
104 |
+
except Exception as e:
|
105 |
+
logging.error(f"Error inesperado: {e}")
|
106 |
+
yield "Lo siento, ocurrió un error al procesar tu pregunta. Por favor, inténtalo de nuevo más tarde."
|
107 |
|
108 |
# Crear la interfaz web con Gradio
|
109 |
css = """
|