Ximena25's picture
Upload app.py
167a55e verified
import gradio as gr
import requests
API_URL = "https://api-inference.huggingface.co/models/BSC-LT/salamandra-2b-instruct"
headers = {}
def accionar_ai(pregunta):
prompt = f"""
Eres Accionar AI, una herramienta activista que apoya campañas sociales en América Latina.
Tu tarea es generar estrategias de campaña claras, útiles y bien estructuradas.
Incluye al menos una acción y tres aliadas específicas en cada respuesta.
📌 Objetivo de la campaña:
🎯 Público objetivo:
📣 Mensaje clave:
🚀 Acciones sugeridas:
🤝 Posibles aliadas:
---
Ejemplo:
Usuario: Queremos lanzar una campaña contra la criminalización de la protesta feminista en México.
Respuesta:
📌 Objetivo de la campaña: Visibilizar y frenar la persecución, intimidación y criminalización de mujeres que protestan por derechos en México y América Latina.
🎯 Público objetivo: Mujeres organizadas, activistas feministas, abogadas populares, defensoras de derechos humanos, periodistas sensibles al tema, y tomadores de decisión en instituciones públicas.
📣 Mensaje clave: “¡No a la criminalización de la protesta feminista! Protestar no es un crimen, es un derecho.”
🚀 Acciones sugeridas: Recolección de casos, campaña de correos a autoridades, piezas gráficas de denuncia, entrevistas con identidades protegidas.
🤝 Posibles aliadas: Colectivas feministas locales, abogadas por la libertad, periodistas con enfoque de género, redes latinoamericanas de derechos humanos.
---
Usuario: {pregunta}
Respuesta:
"""
payload = {
"inputs": prompt,
"parameters": {
"max_new_tokens": 280,
"temperature": 0.7,
"top_p": 0.95
}
}
response = requests.post(API_URL, headers=headers, json=payload)
result = response.json()
if isinstance(result, list):
generated = result[0].get("generated_text", "").strip()
if "Respuesta:" in generated:
texto = generated.split("Respuesta:")[-1].strip()
else:
texto = generated
# Ordenar campos
campos = {
"📌 Objetivo de la campaña:": "",
"🎯 Público objetivo:": "",
"📣 Mensaje clave:": "",
"🚀 Acciones sugeridas:": "",
"🤝 Posibles aliadas:": ""
}
campos_llenos = 0
for line in texto.splitlines():
for campo in campos:
if line.startswith(campo) and len(line) > len(campo):
campos[campo] = line
campos_llenos += 1
if campos_llenos >= 3:
return "\n".join([campos[c] for c in campos if campos[c]])
else:
return texto.strip()
else:
return f"⚠️ Error del modelo: {result.get('error', 'respuesta no válida')}"
# 🎨 Interfaz "Accionar style"
demo = gr.Interface(
fn=accionar_ai,
inputs=gr.Textbox(
lines=4,
label="✍️ Escribe tu idea de campaña",
placeholder="Ejemplo: Quiero una campaña con jóvenes para prevenir el acoso digital en redes sociales."
),
outputs=gr.Textbox(
label="📢 Propuesta de campaña generada por Accionar AI",
lines=8
),
title="💥 Accionar AI Commons",
description="""
🔮 Asistente activista para campañas sociales en América Latina.
🧭 ¿Cómo funciona?
Cuéntame tu idea y te ayudamos a transformarla en una estrategia de campaña con objetivos, acciones y posibles aliadas.
💡 Ejemplos:
- Quiero una campaña para defender el acceso al agua en zonas rurales.
- Queremos frenar los desalojos a comunidades indígenas.
- Necesitamos visibilizar la violencia digital hacia adolescentes.
🌱 Construido con inteligencia colectiva, tecnología libre y corazón latinoamericano.
""",
theme="soft",
allow_flagging="never"
)
demo.launch()