C2MV commited on
Commit
4251465
·
verified ·
1 Parent(s): 38e08fc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -51
app.py CHANGED
@@ -1,6 +1,11 @@
1
  import gradio as gr
2
  import torch
3
- from transformers import AutoModelForCausalLM, AutoTokenizer, MarianMTModel, MarianTokenizer
 
 
 
 
 
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 modelos de traducción
51
- # Diccionario de modelos de traducción según el idioma seleccionado
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
- for lang, model_name_trans in translation_models.items():
65
- try:
66
- print(f"Cargando el tokenizador y el modelo de traducción para {lang} desde HuggingFace...")
67
- tokenizer = MarianTokenizer.from_pretrained(model_name_trans, use_auth_token=hf_token)
68
- model = MarianMTModel.from_pretrained(model_name_trans, use_auth_token=hf_token).to(device)
69
- tokenizer_trans[lang] = tokenizer
70
- model_trans[lang] = model
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 idioma seleccionado.
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 idioma seleccionado
102
- if idioma_destino in translation_models:
103
- tokenizer_tr = tokenizer_trans[idioma_destino]
104
- model_tr = model_trans[idioma_destino]
105
-
106
- # Preparar la entrada para la traducción
107
- traducir_inputs = tokenizer_tr.encode(respuesta_en, return_tensors="pt").to(device)
108
-
109
- # Realizar la traducción
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, puedes seleccionar un idioma para traducir la respuesta generada."
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