|
import gradio as gr |
|
import torch |
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
|
|
device = "cuda" if torch.cuda.is_available() else "cpu" |
|
if device == "cpu": |
|
print("Advertencia: CUDA no está disponible. Se usará la CPU, lo que puede ser lento.") |
|
|
|
|
|
model_name = "dmis-lab/selfbiorag_7b" |
|
print("Cargando el tokenizador y el modelo desde HuggingFace...") |
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
model = AutoModelForCausalLM.from_pretrained( |
|
model_name, |
|
torch_dtype=torch.float16 if device == "cuda" else torch.float32 |
|
).to(device) |
|
|
|
def generar_respuesta(consulta): |
|
""" |
|
Función que genera una respuesta a partir de una consulta dada. |
|
""" |
|
|
|
inputs = tokenizer.encode(consulta, return_tensors="pt").to(device) |
|
|
|
|
|
generation_kwargs = { |
|
"max_new_tokens": 200, |
|
"temperature": 0.0, |
|
"top_p": 1.0, |
|
"do_sample": False, |
|
"skip_special_tokens": True |
|
} |
|
|
|
|
|
with torch.no_grad(): |
|
outputs = model.generate(**inputs, **generation_kwargs) |
|
|
|
|
|
respuesta = tokenizer.decode(outputs[0], skip_special_tokens=True) |
|
return respuesta |
|
|
|
|
|
titulo = "Generador de Respuestas con SelfBioRAG 7B" |
|
descripcion = "Ingresa una consulta y el modelo generará una respuesta basada en el contenido proporcionado." |
|
|
|
iface = gr.Interface( |
|
fn=generar_respuesta, |
|
inputs=gr.inputs.Textbox(lines=5, placeholder="Escribe tu consulta aquí..."), |
|
outputs=gr.outputs.Textbox(), |
|
title=titulo, |
|
description=descripcion, |
|
examples=[ |
|
[ |
|
"Clasifica el siguiente informe de radiología según la parte del cuerpo a la que se refiere (por ejemplo, pecho, abdomen, cerebro, etc.): Los discos intervertebrales en L4-L5 y L5-S1 muestran signos de degeneración con leve abultamiento que comprime la raíz nerviosa adyacente." |
|
], |
|
[ |
|
"Resume los puntos clave sobre el papel de las mutaciones en los genes BRCA1 y BRCA2 en el aumento del riesgo de cáncer de mama." |
|
] |
|
], |
|
cache_examples=False |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|