# -*- coding: utf-8 -*- """Copia de app.ipynb Automatically generated by Colab. Original file is located at https://colab.research.google.com/drive/1CWlm7_FskC5LwZaYL-sgzASC5LDAzZ15 """ !pip install torch torchvision torchaudio !pip install gradio import gradio as gr import transformers from transformers import pipeline import pandas as pd from transformers import AutoModelForQuestionAnswering, AutoTokenizer model_name = "mrm8488/distill-bert-base-spanish-wwm-cased-finetuned-spa-squad2-es" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForQuestionAnswering.from_pretrained(model_name) df = pd.read_csv('https://docs.google.com/spreadsheets/d/e/2PACX-1vSWJvS1tP7pp_GpF1fb-KXDyQoACbxKZlUfB4Gd3SFHnX6Jz3xs9-9t0yMOnfPd59Up50Fp8OS02epO/pub?gid=1955047855&single=true&output=csv') df['contexto'] = df['Descripción'] + '' + df['Atributos'] + '' contestador = pipeline('question-answering', model='mrm8488/distill-bert-base-spanish-wwm-cased-finetuned-spa-squad2-es', from_pt=True) def obtener_origen(personaje): columna = df[df['Personaje'] == personaje] if columna.empty: return f'El personaje "{personaje}" no se encuentra en la base de datos.' origen = columna.iloc[0]['Origen'] return f'El origen de este ser mitológico "{personaje}" es "{origen}".' def responder_pregunta(personaje, pregunta): columna = df[df['Personaje'] == personaje] if columna.empty: return f'El personaje "{personaje}" no se encuentra en la base de datos.' contexto = columna.iloc[0]['contexto'] resultado = {'answer': f'{contexto}'} return resultado['answer'] def interfaz(nombre, pregunta): origen = obtener_origen(nombre) respuesta = responder_pregunta(nombre, pregunta) return f"Respuesta: {respuesta}\nOrigen: {origen}" demo = gr.Interface( fn=interfaz, inputs=[gr.Textbox(label="Nombre del personaje"), gr.Textbox(label="Pregunta")], outputs=gr.Textbox(label="Respuesta"), title="Sistema de Respuesta a Preguntas sobre Personajes Mitológicos", description="Introduce el nombre del personaje y la pregunta (ejem. ¿Cómo es?, ¿qué hace?...) para obtener una respuesta basada en los datos disponibles." ) demo.launch()