Spaces:
Sleeping
Sleeping
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() | |