Update app.py
Browse files
app.py
CHANGED
@@ -1,6 +1,11 @@
|
|
1 |
import gradio as gr
|
2 |
import torch
|
3 |
-
from transformers import
|
|
|
|
|
|
|
|
|
|
|
4 |
import time
|
5 |
from functools import wraps
|
6 |
import sys
|
@@ -47,35 +52,21 @@ except Exception as e:
|
|
47 |
print(f"Error al cargar el modelo de generación: {e}")
|
48 |
sys.exit(1)
|
49 |
|
50 |
-
# Definir
|
51 |
-
|
52 |
-
translation_models = {
|
53 |
-
"Español": "Helsinki-NLP/opus-mt-en-es",
|
54 |
-
"Portugués": "Helsinki-NLP/opus-mt-en-pt",
|
55 |
-
"Francés": "Helsinki-NLP/opus-mt-en-fr",
|
56 |
-
"Alemán": "Helsinki-NLP/opus-mt-en-de",
|
57 |
-
# Añade más idiomas y sus respectivos modelos según sea necesario
|
58 |
-
}
|
59 |
-
|
60 |
-
# Cargar los tokenizadores y modelos de traducción
|
61 |
-
tokenizer_trans = {}
|
62 |
-
model_trans = {}
|
63 |
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
except Exception as e:
|
72 |
-
print(f"Error al cargar el modelo de traducción para {lang}: {e}")
|
73 |
-
sys.exit(1)
|
74 |
|
75 |
@medir_tiempo
|
76 |
def generar_y_traducir_respuesta(consulta, idioma_destino):
|
77 |
"""
|
78 |
-
Función que genera una respuesta a partir de una consulta dada y la traduce al
|
79 |
"""
|
80 |
try:
|
81 |
if not consulta.strip():
|
@@ -98,22 +89,15 @@ def generar_y_traducir_respuesta(consulta, idioma_destino):
|
|
98 |
# Decodificar la respuesta en inglés con limpieza de espacios
|
99 |
respuesta_en = tokenizer_gen.decode(outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
|
100 |
|
101 |
-
# Traducir la respuesta al
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
with torch.no_grad():
|
111 |
-
traduccion_outputs = model_tr.generate(input_ids=traducir_inputs, max_length=512)
|
112 |
-
|
113 |
-
# Decodificar la traducción con limpieza de espacios
|
114 |
-
respuesta_traducida = tokenizer_tr.decode(traduccion_outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
|
115 |
-
else:
|
116 |
-
respuesta_traducida = "Idioma de destino no soportado."
|
117 |
|
118 |
return respuesta_en, respuesta_traducida
|
119 |
except Exception as e:
|
@@ -124,31 +108,26 @@ def generar_y_traducir_respuesta(consulta, idioma_destino):
|
|
124 |
titulo = "Generador y Traductor de Respuestas con SelfBioRAG 7B"
|
125 |
descripcion = (
|
126 |
"Ingresa una consulta y el modelo generará una respuesta en inglés. "
|
127 |
-
"Luego,
|
128 |
)
|
129 |
|
130 |
-
idiomas_disponibles = list(translation_models.keys())
|
131 |
-
|
132 |
iface = gr.Interface(
|
133 |
fn=generar_y_traducir_respuesta,
|
134 |
inputs=[
|
135 |
-
gr.Textbox(lines=5, placeholder="Escribe tu consulta aquí...", label="Consulta")
|
136 |
-
gr.Dropdown(choices=idiomas_disponibles, value="Español", label="Idioma de Traducción")
|
137 |
],
|
138 |
outputs=[
|
139 |
gr.Textbox(label="Respuesta en Inglés"),
|
140 |
-
gr.Textbox(label="Respuesta Traducida")
|
141 |
],
|
142 |
title=titulo,
|
143 |
description=descripcion,
|
144 |
examples=[
|
145 |
[
|
146 |
-
"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."
|
147 |
-
"Español"
|
148 |
],
|
149 |
[
|
150 |
-
"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."
|
151 |
-
"Portugués"
|
152 |
]
|
153 |
],
|
154 |
cache_examples=False
|
|
|
1 |
import gradio as gr
|
2 |
import torch
|
3 |
+
from transformers import (
|
4 |
+
AutoModelForCausalLM,
|
5 |
+
AutoTokenizer,
|
6 |
+
MarianMTModel,
|
7 |
+
MarianTokenizer
|
8 |
+
)
|
9 |
import time
|
10 |
from functools import wraps
|
11 |
import sys
|
|
|
52 |
print(f"Error al cargar el modelo de generación: {e}")
|
53 |
sys.exit(1)
|
54 |
|
55 |
+
# Definir el modelo de traducción al Español
|
56 |
+
translation_model_name = "Helsinki-NLP/opus-mt-en-es"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
|
58 |
+
try:
|
59 |
+
print(f"Cargando el tokenizador y el modelo de traducción para Español desde HuggingFace...")
|
60 |
+
tokenizer_tr_es = MarianTokenizer.from_pretrained(translation_model_name)
|
61 |
+
model_tr_es = MarianMTModel.from_pretrained(translation_model_name).to(device)
|
62 |
+
except Exception as e:
|
63 |
+
print(f"Error al cargar el modelo de traducción para Español: {e}")
|
64 |
+
sys.exit(1)
|
|
|
|
|
|
|
65 |
|
66 |
@medir_tiempo
|
67 |
def generar_y_traducir_respuesta(consulta, idioma_destino):
|
68 |
"""
|
69 |
+
Función que genera una respuesta a partir de una consulta dada y la traduce al Español.
|
70 |
"""
|
71 |
try:
|
72 |
if not consulta.strip():
|
|
|
89 |
# Decodificar la respuesta en inglés con limpieza de espacios
|
90 |
respuesta_en = tokenizer_gen.decode(outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
|
91 |
|
92 |
+
# Traducir la respuesta al Español
|
93 |
+
traducir_inputs = tokenizer_tr_es.encode(respuesta_en, return_tensors="pt").to(device)
|
94 |
+
|
95 |
+
# Realizar la traducción
|
96 |
+
with torch.no_grad():
|
97 |
+
traduccion_outputs = model_tr_es.generate(input_ids=traducir_inputs, max_length=512)
|
98 |
+
|
99 |
+
# Decodificar la traducción con limpieza de espacios
|
100 |
+
respuesta_traducida = tokenizer_tr_es.decode(traduccion_outputs[0], skip_special_tokens=True, clean_up_tokenization_spaces=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
|
102 |
return respuesta_en, respuesta_traducida
|
103 |
except Exception as e:
|
|
|
108 |
titulo = "Generador y Traductor de Respuestas con SelfBioRAG 7B"
|
109 |
descripcion = (
|
110 |
"Ingresa una consulta y el modelo generará una respuesta en inglés. "
|
111 |
+
"Luego, la respuesta se traducirá automáticamente al Español."
|
112 |
)
|
113 |
|
|
|
|
|
114 |
iface = gr.Interface(
|
115 |
fn=generar_y_traducir_respuesta,
|
116 |
inputs=[
|
117 |
+
gr.Textbox(lines=5, placeholder="Escribe tu consulta aquí...", label="Consulta")
|
|
|
118 |
],
|
119 |
outputs=[
|
120 |
gr.Textbox(label="Respuesta en Inglés"),
|
121 |
+
gr.Textbox(label="Respuesta Traducida al Español")
|
122 |
],
|
123 |
title=titulo,
|
124 |
description=descripcion,
|
125 |
examples=[
|
126 |
[
|
127 |
+
"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."
|
|
|
128 |
],
|
129 |
[
|
130 |
+
"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."
|
|
|
131 |
]
|
132 |
],
|
133 |
cache_examples=False
|