jarek / app.py
EduProfit's picture
Update app.py
c80ca44 verified
raw
history blame
2.66 kB
# app.py
import os, requests
import gradio as gr
# === CONFIG ===
HF_TOKEN = os.environ.get("HF_TOKEN") # ustaw w Hugging Face Spaces → Settings → Secrets
MODEL = "google/flan-t5-base" # lekki i darmowy model do generacji tekstów
headers = {"Authorization": f"Bearer {HF_TOKEN}"}
# ===== FUNKCJA DO WYWOŁYWANIA MODELU =====
def call_model(prompt):
url = f"https://api-inference.huggingface.co/models/{MODEL}"
payload = {
"inputs": prompt,
"parameters": {
"max_new_tokens": 400,
"temperature": 0.9, # bardziej kreatywne treści
"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)
# ===== FUNKCJA GŁÓWNA – GENERACJA POSTÓW =====
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
# ===== UI =====
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()