Ximena25's picture
Upload app.py
ad9e0d2 verified
raw
history blame
3.53 kB
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
# Intentar extraer campos y reordenar
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
# Si llenó al menos 3 campos → usamos versión limpia
if campos_llenos >= 3:
respuesta_limpia = "\n".join(
campos[campo] for campo in campos if campos[campo].strip() != ""
)
return respuesta_limpia
else:
# Mostrar todo el texto sin procesar
return texto.strip()
else:
return f"⚠️ Error del modelo: {result.get('error', 'respuesta no válida')}"
# Interfaz Gradio
demo = gr.Interface(
fn=accionar_ai,
inputs=gr.Textbox(lines=3, placeholder="Escribe tu idea o pregunta de campaña aquí"),
outputs="text",
title="Accionar AI Commons (versión limpia e inteligente)",
description="Asistente activista para campañas sociales en América Latina. Escribí una idea como: 'Queremos una campaña para prevenir el acoso en línea hacia niñas y adolescentes'."
)
demo.launch()