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

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +8 -8
app.py CHANGED
@@ -33,7 +33,7 @@ def buscar_en_pubmed(pregunta):
33
  for id_articulo in record["IdList"]:
34
  handle = Entrez.efetch(db="pubmed", id=id_articulo, rettype="abstract", retmode="text")
35
  resumen = handle.read()
36
- referencias.append(f"Artículo {id_articulo}:\n{resumen[:300]}...\n") # Limitar a 300 caracteres
37
  handle.close()
38
  return "\n".join(referencias)
39
  else:
@@ -46,13 +46,13 @@ def buscar_en_pubmed(pregunta):
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
 
54
  if "Abstract" in datos and datos["Abstract"]:
55
- return datos["Abstract"][:200] # Limitar a 200 caracteres
56
  else:
57
  return "No encontré información en Internet."
58
  except Exception as e:
@@ -66,7 +66,7 @@ def generar_respuesta(pregunta):
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
@@ -75,16 +75,16 @@ def generar_respuesta(pregunta):
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
 
 
33
  for id_articulo in record["IdList"]:
34
  handle = Entrez.efetch(db="pubmed", id=id_articulo, rettype="abstract", retmode="text")
35
  resumen = handle.read()
36
+ referencias.append(f"Artículo {id_articulo}:\n{resumen[:500]}...\n") # Aumentar el límite a 500 caracteres
37
  handle.close()
38
  return "\n".join(referencias)
39
  else:
 
46
  def buscar_en_internet(pregunta):
47
  try:
48
  # Agregar palabras clave médicas a la pregunta
49
+ termino = f"{pregunta} medical OR healthcare OR treatment"
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
 
54
  if "Abstract" in datos and datos["Abstract"]:
55
+ return datos["Abstract"][:300] # Aumentar el límite a 300 caracteres
56
  else:
57
  return "No encontré información en Internet."
58
  except Exception as e:
 
66
  pregunta = pregunta[:500] # Limitar a 500 caracteres
67
 
68
  inputs = tokenizer(
69
+ f"Explica {pregunta} de forma clara y detallada. Incluye causas, síntomas, diagnóstico y tratamiento si corresponde.",
70
  return_tensors="pt",
71
  max_length=512, # Limitar la longitud máxima de entrada
72
  truncation=True
 
75
  with torch.no_grad():
76
  outputs = model.generate(
77
  **inputs,
78
+ max_new_tokens=400, # Aumentar el límite para respuestas más largas
79
  do_sample=True, # Usar muestreo para respuestas más naturales
80
+ temperature=0.5, # Reducir la creatividad para respuestas más precisas
81
+ num_beams=6 # Mejorar la coherencia
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. Incluye causas, síntomas, diagnóstico y tratamiento si corresponde.", "").strip()
88
 
89
  return respuesta
90