# app.py — cultiva-ia/sentiment-demo
# SDK: gradio · hardware: cpu-basic (sin GPU)
# NO se importa `spaces` — no hay ZeroGPU
from transformers import pipeline
import gradio as gr
# Carga en module scope (una sola vez al iniciar)
classifier = pipeline(
"sentiment-analysis",
model="distilbert-base-uncased-finetuned-sst-2-english",
)
def analizar(texto: str, sector: str) -> dict:
if not texto.strip():
return {"error": "Introduce una reseña"}
resultado = classifier(texto[:512])[0]
sentiment = resultado["label"]
score = round(resultado["score"] * 100, 1)
respuesta = _generar_respuesta(sentiment, sector)
return {
"sentimiento": sentiment,
"confianza": f"{score}%",
"respuesta": respuesta,
}
def _generar_respuesta(sentiment: str, sector: str) -> str:
plantillas = {
("POSITIVE", "Consultoría / Agencia"):
"¡Gracias! Nos alegra haber superado expectativas.",
("NEGATIVE", "Consultoría / Agencia"):
"Lamentamos tu experiencia. Contacta con hola@cultivaia.com",
}
return plantillas.get((sentiment, sector), "Gracias por tu reseña.")
demo = gr.Interface(
fn=analizar,
inputs=[
gr.Textbox(label="Reseña del cliente", lines=4),
gr.Dropdown(["Consultoría / Agencia", "Restauración",
"E-commerce", "Hostelería"], label="Sector"),
],
outputs=gr.JSON(label="Resultado"),
title="📊 CULTIVA IA — Análisis de Reseñas",
allow_flagging="never",
)
demo.launch()