import gradio as gr from transformers import pipeline # Cargar pipelines predefinidos summarizer = pipeline("summarization", model="facebook/bart-large-cnn") classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli") sentiment_analyzer = pipeline("sentiment-analysis") response_generator = pipeline("text2text-generation", model="google/flan-t5-large") # Categorías de reclamos categories = [ "Accidentes de coche", "Hogar", "Salud", "Vida", "Viajes", "Responsabilidad civil", ] def analyze_claim(claim_text): # Resumen del reclamo summary = summarizer(claim_text, max_length=50, min_length=20, do_sample=False)[0]["summary_text"] # Clasificación del reclamo classification = classifier(claim_text, candidate_labels=categories) top_category = classification["labels"][0] # Análisis de sentimiento sentiment = sentiment_analyzer(claim_text)[0] # Respuesta sugerida generada por LLM response_prompt = ( f"Genera una respuesta para un cliente que tiene un reclamo relacionado con {top_category}." f" El sentimiento del cliente es {sentiment['label']} con un nivel de confianza de {sentiment['score']:.2f}." ) response = response_generator(response_prompt, max_length=50)[0]["generated_text"] return summary, top_category, sentiment["label"], sentiment["score"], response # Interfaz de Gradio with gr.Blocks() as demo: gr.Markdown("#Company ClaimSense") gr.Markdown( "Esta herramienta analiza reclamos de seguros y proporciona un resumen, categoría, análisis de sentimiento y una respuesta sugerida." ) with gr.Row(): claim_input = gr.Textbox( label="Descripción del Reclamo", placeholder="Describe tu reclamo en detalle..." ) analyze_button = gr.Button("Analizar Reclamo") with gr.Row(): summary_output = gr.Textbox(label="Resumen del Reclamo") category_output = gr.Textbox(label="Categoría Identificada") with gr.Row(): sentiment_output = gr.Textbox(label="Sentimiento Detectado") score_output = gr.Number(label="Confianza del Sentimiento") response_output = gr.Textbox(label="Respuesta Sugerida") analyze_button.click( analyze_claim, inputs=[claim_input], outputs=[summary_output, category_output, sentiment_output, score_output, response_output], ) # Lanzar el Space demo.launch()