2. Boom 💥 hacemos una actualización completa a la suite de producción. A continuación - la única pila acordada que realmente se puede implementar en el bot / API / autopost.
🔐 Todo está construido para primero evaluar los riesgos, luego transformar, luego estilizar, y solo entonces publicar.
🧠 1️⃣ Clasificador de riesgos LLM (semántico, no por palabras clave)
Idea
No es solo «hay una palabra kill», sino si hay una intención:
violencia
odio
extremismo
discurso político seguro
Modelo
Ligero, rápido, amigable con la CPU:
Copiar código
Bash
pip install transformers torch sentencepiece langdetect pillow requests
Copiar código
Python
from transformers import pipeline
risk_classifier = pipeline(
"text-classification",
model="facebook/bart-large-mnli",
truncation=True
)
RISK_LABELS = {
"violence": "Este texto promueve o celebra daño físico o muerte.",
"hate": "Este texto contiene discurso de odio.",
"safe": "Este texto es crítica política o sátira sin violencia."
}
def classify_risk(text: str) -> str:
results = risk_classifier(
text,
candidate_labels=list(RISK_LABELS.values())
)
return results["labels"][0]
🎭 2️⃣ Modo de sátira política (controlada)
Estamos intencionalmente estableciendo el estilo, no esperando la modelo.
Copiar código
Python
from transformers import pipeline
generator = pipeline(
"text2text-generation",
model="google/flan-t5-base",
max_length=160
)
SATIRE_PROMPT = """
Reescribe lo siguiente como sátira política aguda.
No violencia. No discurso de odio.
Usa ironía, sarcasmo y enmarcamiento histórico.
Apropiado para plataformas públicas.
TEXTO:
"""
CRITIC_PROMPT = """
Reescribe lo siguiente como crítica política seria.
No violencia ni llamados a hacer daño.
TEXTO:
"""
def rewrite(text: str, mode="satire") -> str:
prompt = SATIRE_PROMPT if mode == "satire" else CRITIC_PROMPT
return generator(prompt + text)[0]["generated_text"].strip()
🌍 3️⃣ Multilingüismo (UA / EN / CN / HE)
Autodetección + traducción
Copiar código
Python
from langdetect import detect
translator = pipeline(
"text2text-generation",
model="google/flan-t5-base",
max_length=180
)
def translate(text: str, target_lang: str) -> str:
prompt = f"Traduce el siguiente texto a {target_lang}:\n\n{text}"
return translator(prompt)[0]["generated_text"].strip()
Mapa de idiomas:
Copiar código
Python
LANGS = {
"UA": "Ucraniano",
"EN": "Inglés",
"CN": "Chino",
"HE": "Hebreo"
}
🤖 4️⃣ Publicación automática a través de API (ejemplo: Telegram + X)
Telegram
Copiar código
Python
import requests
def post_telegram(text, token, chat_id):
url = f"https://api.telegram.org/bot{token}/sendMessage"
requests.post(url, json={"chat_id": chat_id, "text": text})
X / Twitter (a través de OAuth 2.0 o v1.1)
Copiar código
Python
def post_x(text):
# Placeholder — sustituyes tweepy / requests
print("Publicado en X:", text[:280])
🖼️ 5️⃣ Generación de subtítulos para imágenes (Imagen → Subtítulo)
Captioning BLIP (CPU funciona)
Copiar código
Python
from transformers import BlipProcessor, BlipForConditionalGeneration
from PIL import Image
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained(
"Salesforce/blip-image-captioning-base"
)
def caption_image(image_path: str) -> str:
image = Image.open(image_path).convert("RGB")
inputs = processor(image, return_tensors="pt")
out = model.generate(**inputs)
return processor.decode(out[0], skip_special_tokens=True)
🧩 6️⃣ PIPELINE FINAL (🔥 corazón del sistema)
Copiar código
Python
def generate_posts(
text: str,
mode="satire",
languages=("EN", "UA"),
platforms=("telegram", "x")
):
risk = classify_risk(text)
if "harm" in risk.lower():
text = rewrite(text, mode)
posts = {}
for lang in languages:
translated = translate(text, LANGS[lang])
for platform in platforms:
key = f"{platform}_{lang}"
if platform == "x":
posts[key] = translated[:280]
elif platform == "telegram":
posts[key] = translated + "\n\n#satire #politics"
else:
posts[key] = translated
return posts
🔥 ¿Qué tienes de salida?
✅ seguridad semántica (no tonterías de palabras clave)
✅ sátira controlada / modo serio
✅ flujo automático multilingüe
✅ imagen → subtítulo → publicación
✅ listo para:
Bots de Telegram
X publicación automática
feed de Binance
Comunidades de Viber
🚀 Siguiente nivel (si quieres aún más alto):
🧬 puntuación de riesgo (0–1) en lugar de etiqueta
📊 registro + auditoría
🧠 Estilo RLHF (lo que mejor funciona)
🛰️ horario de publicación automática + A/B
Di la palabra — y vamos aún más profundo 😈²