2. Бум 💥 делаем полный апгрейд до production-suite. Ниже — единый, согласованный стек, который реально можно ставить в бота / API / автопостинг.
🔐 Все построено так, чтобы сначала оценивать риски, потом трансформировать, потом стилизовать, и лишь тогда постить.
🧠 1️⃣ LLM-классификатор рисков (semantic, не keywords)
Ідея
Не просто «є слово kill», а чи є намір:
насильство
ненависть
екстремізм
безпечна політична мова
Модель
Легка, швидка, CPU-friendly:
Копіювати код
Bash
pip install transformers torch sentencepiece langdetect pillow requests
Копіювати код
Python
from transformers import pipeline
risk_classifier = pipeline(
"text-classification",
model="facebook/bart-large-mnli",
truncation=True
)
RISK_LABELS = {
"violence": "Цей текст пропагує або святкує фізичну шкоду чи смерть.",
"hate": "Цей текст містить ненависну мову.",
"safe": "Цей текст є політичною критикою або сатирою без насильства."
}
def classify_risk(text: str) -> str:
results = risk_classifier(
text,
candidate_labels=list(RISK_LABELS.values())
)
return results["labels"][0]
🎭 2️⃣ Режим політичної сатири (керований)
Ми навмисно задаємо стиль, а не сподіваємось на модель.
Копіювати код
Python
from transformers import pipeline
generator = pipeline(
"text2text-generation",
model="google/flan-t5-base",
max_length=160
)
SATIRE_PROMPT = """
Перепишіть наступне як різку політичну сатиру.
Без насильства. Без ненависті.
Використовуйте іронію, сарказм і історичне оформлення.
Підходить для публічних платформ.
TEXT:
"""
CRITIC_PROMPT = """
Перепишіть наступне як серйозну політичну критику.
Без насильства чи закликів до шкоди.
TEXT:
"""
def rewrite(text: str, mode="сатир") -> str:
prompt = SATIRE_PROMPT if mode == "сатир" else CRITIC_PROMPT
return generator(prompt + text)[0]["generated_text"].strip()
🌍 3️⃣ Багатомовність (UA / EN / CN / HE)
Автовизначення + переклад
Копіювати код
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"Перекладіть наступний текст на {target_lang}:\n\n{text}"
return translator(prompt)[0]["generated_text"].strip()
Мапа мов:
Копіювати код
Python
LANGS = {
"UA": "Українська",
"EN": "Англійська",
"CN": "Китайська",
"HE": "Іврит"
}
🤖 4️⃣ Автопостинг через API (приклад: Telegram + X)
Телеграм
Копіювати код
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 (через OAuth 2.0 або v1.1)
Копіювати код
Python
def post_x(text):
# Заглушка — підставляєш tweepy / requests
print("Опубліковано на X:", text[:280])
🖼️ 5️⃣ Генерація підписів до зображень (Image → Caption)
BLIP captioning (CPU працює)
Копіювати код
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 (🔥 серце системи)
Копіювати код
Python
def generate_posts(
text: str,
mode="сатир",
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#сатир #політика"
else:
posts[key] = translated
return posts
🔥 Що ти маєш на виході
✅ семантична безпека (не безглуздість ключових слів)
✅ керована сатира / серйозний режим
✅ багато мовний авто потік
✅ зображення → підпис → пост
✅ готово для:
Телеграм-боти
X авто-постинг
Binance feed
Спільноти Viber
🚀 Наступний рівень (якщо хочеш ще вище):
🧬 ризик оцінка (0–1) замість мітки
📊 логування + audit trail
🧠 RLHF-стиль (що краще заходить)
🛰️ розклад авто-постингу + A/B
Скажи слово — і йдемо ще глибше 😈²