AlbertDuvan commited on
Commit
344ca58
·
verified ·
1 Parent(s): 89d98f5

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -9
app.py CHANGED
@@ -21,7 +21,10 @@ Entrez.email = "[email protected]" # Proporciona un correo válido
21
  @lru_cache(maxsize=100)
22
  def buscar_en_pubmed(pregunta):
23
  try:
24
- handle = Entrez.esearch(db="pubmed", term=pregunta, retmax=1) # Buscar solo 1 artículo
 
 
 
25
  record = Entrez.read(handle)
26
  handle.close()
27
 
@@ -42,7 +45,9 @@ def buscar_en_pubmed(pregunta):
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
 
@@ -57,20 +62,31 @@ def buscar_en_internet(pregunta):
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(
69
  **inputs,
70
- max_new_tokens=100 # Generar hasta 100 tokens adicionales
 
 
 
71
  )
72
 
73
- return tokenizer.decode(outputs[0], skip_special_tokens=True)
 
 
 
 
 
74
 
75
  except Exception as e:
76
  logging.error(f"Error al generar respuesta del modelo: {e}")
@@ -111,7 +127,13 @@ def pregunta_medica_con_carga(pregunta):
111
  # Crear la interfaz web con Gradio
112
  css = """
113
  .gradio-container {
114
- background-color: #f0f8ff;
 
 
 
 
 
 
115
  }
116
  """
117
 
 
21
  @lru_cache(maxsize=100)
22
  def buscar_en_pubmed(pregunta):
23
  try:
24
+ # Agregar palabras clave médicas a la pregunta
25
+ termino = f"{pregunta} AND (medical OR health OR disease)"
26
+
27
+ handle = Entrez.esearch(db="pubmed", term=termino, retmax=1) # Buscar solo 1 artículo
28
  record = Entrez.read(handle)
29
  handle.close()
30
 
 
45
  # Función para buscar en Internet con tiempo de espera
46
  def buscar_en_internet(pregunta):
47
  try:
48
+ # Agregar palabras clave médicas a la pregunta
49
+ termino = f"{pregunta} medical"
50
+ url = f"https://api.duckduckgo.com/?q={termino}&format=json"
51
  respuesta = requests.get(url, timeout=10) # Incrementa el tiempo de espera a 10 segundos
52
  datos = respuesta.json()
53
 
 
62
  # Función para generar respuestas del modelo (optimizada para CPU)
63
  def generar_respuesta(pregunta):
64
  try:
65
+ # Truncar la pregunta si es demasiado larga
66
+ pregunta = pregunta[:500] # Limitar a 500 caracteres
67
+
68
  inputs = tokenizer(
69
+ f"Explica {pregunta} de forma clara y detallada. Usa términos médicos explicados.",
70
+ return_tensors="pt",
71
+ max_length=512, # Limitar la longitud máxima de entrada
72
+ truncation=True
73
  ).to("cpu")
74
 
75
  with torch.no_grad():
76
  outputs = model.generate(
77
  **inputs,
78
+ max_new_tokens=300, # Aumentar el límite para respuestas más largas
79
+ do_sample=True, # Usar muestreo para respuestas más naturales
80
+ temperature=0.7, # Controlar la creatividad del modelo
81
+ num_beams=4 # Balancear calidad y velocidad
82
  )
83
 
84
+ respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True)
85
+
86
+ # Eliminar el prompt de la respuesta
87
+ respuesta = respuesta.replace(f"Explica {pregunta} de forma clara y detallada. Usa términos médicos explicados.", "").strip()
88
+
89
+ return respuesta
90
 
91
  except Exception as e:
92
  logging.error(f"Error al generar respuesta del modelo: {e}")
 
127
  # Crear la interfaz web con Gradio
128
  css = """
129
  .gradio-container {
130
+ background-color: #f9f9f9;
131
+ font-family: Arial, sans-serif;
132
+ }
133
+ .gr-button {
134
+ background-color: #007bff;
135
+ color: white;
136
+ border-radius: 5px;
137
  }
138
  """
139