import gradio as gr from transformers import pipeline, T5Tokenizer, T5ForConditionalGeneration import requests import os # Cargar el token de Hugging Face configurado en el entorno token = os.getenv("HF_TOKEN") if not token: raise ValueError("El token no se configuró correctamente en las variables de entorno.") API_URL = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-es" headers = {"Authorization": f"Bearer {token}"} # Cargar el modelo y el tokenizador de resumen tokenizer = T5Tokenizer.from_pretrained("sumedh/t5-base-amazonreviews", clean_up_tokenization_spaces=True, legacy=False) model = T5ForConditionalGeneration.from_pretrained("sumedh/t5-base-amazonreviews") summarizer = pipeline("summarization", model=model, tokenizer=tokenizer) # Función para realizar el resumen y la traducción def texto_sum(text): # Dividir el texto en partes si es demasiado largo para el modelo de resumen max_input_length = 512 text_chunks = [text[i:i+max_input_length] for i in range(0, len(text), max_input_length)] # Resumir cada parte y unir los resúmenes summaries = [summarizer(chunk, max_length=30, min_length=10, do_sample=False)[0]['summary_text'] for chunk in text_chunks] full_summary = " ".join(summaries) # Realizar la traducción del resumen completo utilizando la API de Hugging Face response = requests.post(API_URL, headers=headers, json={"inputs": full_summary}) translation = response.json() # Verificar si hay errores en la respuesta de la traducción if 'error' in translation: return f"Error en la traducción: {translation['error']}" return translation[0]['translation_text'] # Interfaz de Gradio description_text = """ ### Instrucciones para el uso de la aplicación 1. Introduzca el texto que desea resumir en el cuadro de texto. 2. La aplicación dividirá automáticamente el texto si es muy largo. 3. Primero, se realizará un resumen del texto introducido. 4. A continuación, el resumen será traducido al español. 5. El resultado final será un texto resumido y traducido al español. **El resumen y la traducción pueden tomar algunos segundos e intentos.** """ demo = gr.Interface( fn=texto_sum, inputs=gr.Textbox(label="Texto a introducir:", placeholder="Introduce el texto a resumir aquí..."), outputs=gr.Textbox(label="Texto resumido y traducido:"), title="Aplicación de Resumen y Traducción", description=description_text ) # Lanzar la interfaz demo.launch()