|
|
|
|
|
import os, requests |
|
|
import gradio as gr |
|
|
|
|
|
|
|
|
HF_TOKEN = os.environ.get("HF_TOKEN") |
|
|
MODEL = "google/flan-t5-base" |
|
|
|
|
|
headers = {"Authorization": f"Bearer {HF_TOKEN}"} |
|
|
|
|
|
|
|
|
def call_model(prompt): |
|
|
url = f"https://api-inference.huggingface.co/models/{MODEL}" |
|
|
payload = { |
|
|
"inputs": prompt, |
|
|
"parameters": { |
|
|
"max_new_tokens": 400, |
|
|
"temperature": 0.9, |
|
|
"top_p": 0.95 |
|
|
} |
|
|
} |
|
|
r = requests.post(url, headers=headers, json=payload, timeout=60) |
|
|
data = r.json() |
|
|
|
|
|
if isinstance(data, dict) and data.get("error"): |
|
|
return "⚠️ Błąd modelu: " + data.get("error") |
|
|
if isinstance(data, list) and data and isinstance(data[0], dict): |
|
|
return data[0].get("generated_text", str(data)) |
|
|
if isinstance(data, dict): |
|
|
return data.get("generated_text", str(data)) |
|
|
return str(data) |
|
|
|
|
|
|
|
|
def generate_posts(temat, ton, platforma): |
|
|
prompt = f""" |
|
|
Jesteś ekspertem od pisania angażujących postów na social media w języku polskim. |
|
|
|
|
|
Temat: {temat} |
|
|
Platforma: {platforma} |
|
|
Ton: {ton} |
|
|
|
|
|
Twoje zadanie: |
|
|
Wygeneruj 3 różne warianty posta. Każdy wariant podaj w tym formacie: |
|
|
|
|
|
--- |
|
|
Wariant X: |
|
|
1) Hook: (1 krótkie, chwytliwe zdanie) |
|
|
2) Treść: (dostosowana do platformy – |
|
|
• TikTok/Instagram: max 3 zdania, dynamiczne, z emoji |
|
|
• Facebook: 3–5 zdań, angażujące, lekkie |
|
|
• LinkedIn: 6–8 zdań, profesjonalne, z wartością merytoryczną) |
|
|
3) Hashtagi: (10 propozycji, oddzielone przecinkami, bez polskich znaków) |
|
|
4) CTA: (1 krótka linia zachęcająca do działania) |
|
|
5) Sugestia wizualna: (jedno zdanie, opis pomysłu na zdjęcie/wideo) |
|
|
--- |
|
|
|
|
|
Pisz konkretnie, naturalnym językiem, bez powtarzania instrukcji. |
|
|
""" |
|
|
out = call_model(prompt) |
|
|
return out |
|
|
|
|
|
|
|
|
iface = gr.Interface( |
|
|
fn=generate_posts, |
|
|
inputs=[ |
|
|
gr.Textbox(label="🎯 Temat (np. Jak wstać o 5 rano)"), |
|
|
gr.Dropdown(["motywacyjny","informacyjny","sprzedażowy","edukacyjny"], label="🎙 Ton"), |
|
|
gr.Dropdown(["TikTok","Instagram","Facebook","LinkedIn"], label="📱 Platforma") |
|
|
], |
|
|
outputs=gr.Textbox(label="✨ Wygenerowane posty", lines=25), |
|
|
title="🤖 Social Media Post Generator", |
|
|
description="Podaj temat, wybierz ton i platformę. Agent wygeneruje 3 gotowe propozycje postów (hook, treść, hashtagi, CTA i sugestia wizualna)." |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
iface.launch() |