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()