File size: 3,526 Bytes
a93fcd0
c14dcf3
a93fcd0
570e388
83dca78
a93fcd0
c14dcf3
209a133
ea4ea96
 
b56f131
 
83dca78
ea4ea96
 
 
 
 
83dca78
23771d1
c317163
b56f131
23771d1
 
 
 
 
 
 
b56f131
 
23771d1
 
c317163
ea4ea96
c317163
 
a93fcd0
c317163
c14dcf3
 
ea4ea96
b56f131
ea4ea96
 
 
c14dcf3
c317163
c14dcf3
 
ea4ea96
c14dcf3
209a133
f43fd88
209a133
51fab8c
209a133
51fab8c
 
ad9e0d2
51fab8c
 
 
 
 
 
 
 
ad9e0d2
51fab8c
 
ad9e0d2
51fab8c
ad9e0d2
 
 
 
 
 
 
 
 
 
 
51fab8c
209a133
 
c14dcf3
209a133
c14dcf3
 
209a133
c14dcf3
ad9e0d2
 
a93fcd0
 
c14dcf3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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()