EduProfit commited on
Commit
c80ca44
·
verified ·
1 Parent(s): 62c5561

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +75 -31
app.py CHANGED
@@ -1,32 +1,76 @@
 
 
1
  import gradio as gr
2
- from transformers import pipeline
3
-
4
- # 🔹 Polski model GPT-2 (mały, działa na CPU w Hugging Face Spaces)
5
- generator = pipeline("text-generation", model="flax-community/polish-gpt2-small")
6
-
7
- def generate_post(prompt, platform):
8
- style = ""
9
- if platform == "TikTok":
10
- style = "Napisz krótki, dynamiczny opis z emoji i hashtagiem."
11
- elif platform == "Instagram":
12
- style = "Napisz inspirujący post z emoji i hashtagiem."
13
- elif platform == "LinkedIn":
14
- style = "Napisz profesjonalny, motywacyjny post."
15
- elif platform == "Twitter":
16
- style = "Napisz krótki tweet z emoji i hashtagiem."
17
-
18
- input_text = f"{style}\nTemat: {prompt}\nPost:"
19
- result = generator(input_text, max_length=120, num_return_sequences=1, do_sample=True, temperature=0.9)
20
- return result[0]["generated_text"]
21
-
22
- with gr.Blocks() as demo:
23
- gr.Markdown("## 🤖 Social Media Generator (Polski) – Twój darmowy agent AI")
24
- with gr.Row():
25
- prompt = gr.Textbox(label="Podaj temat posta", placeholder="np. motywacja do działania")
26
- platform = gr.Dropdown(["TikTok", "Instagram", "LinkedIn", "Twitter"], label="Platforma")
27
- output = gr.Textbox(label="Wygenerowany post")
28
-
29
- btn = gr.Button("Generuj post")
30
- btn.click(generate_post, inputs=[prompt, platform], outputs=output)
31
-
32
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # app.py
2
+ import os, requests
3
  import gradio as gr
4
+
5
+ # === CONFIG ===
6
+ HF_TOKEN = os.environ.get("HF_TOKEN") # ustaw w Hugging Face Spaces → Settings → Secrets
7
+ MODEL = "google/flan-t5-base" # lekki i darmowy model do generacji tekstów
8
+
9
+ headers = {"Authorization": f"Bearer {HF_TOKEN}"}
10
+
11
+ # ===== FUNKCJA DO WYWOŁYWANIA MODELU =====
12
+ def call_model(prompt):
13
+ url = f"https://api-inference.huggingface.co/models/{MODEL}"
14
+ payload = {
15
+ "inputs": prompt,
16
+ "parameters": {
17
+ "max_new_tokens": 400,
18
+ "temperature": 0.9, # bardziej kreatywne treści
19
+ "top_p": 0.95
20
+ }
21
+ }
22
+ r = requests.post(url, headers=headers, json=payload, timeout=60)
23
+ data = r.json()
24
+
25
+ if isinstance(data, dict) and data.get("error"):
26
+ return "⚠️ Błąd modelu: " + data.get("error")
27
+ if isinstance(data, list) and data and isinstance(data[0], dict):
28
+ return data[0].get("generated_text", str(data))
29
+ if isinstance(data, dict):
30
+ return data.get("generated_text", str(data))
31
+ return str(data)
32
+
33
+ # ===== FUNKCJA GŁÓWNA – GENERACJA POSTÓW =====
34
+ def generate_posts(temat, ton, platforma):
35
+ prompt = f"""
36
+ Jesteś ekspertem od pisania angażujących postów na social media w języku polskim.
37
+
38
+ Temat: {temat}
39
+ Platforma: {platforma}
40
+ Ton: {ton}
41
+
42
+ Twoje zadanie:
43
+ Wygeneruj 3 różne warianty posta. Każdy wariant podaj w tym formacie:
44
+
45
+ ---
46
+ Wariant X:
47
+ 1) Hook: (1 krótkie, chwytliwe zdanie)
48
+ 2) Treść: (dostosowana do platformy –
49
+ • TikTok/Instagram: max 3 zdania, dynamiczne, z emoji
50
+ • Facebook: 3–5 zdań, angażujące, lekkie
51
+ • LinkedIn: 6–8 zdań, profesjonalne, z wartością merytoryczną)
52
+ 3) Hashtagi: (10 propozycji, oddzielone przecinkami, bez polskich znaków)
53
+ 4) CTA: (1 krótka linia zachęcająca do działania)
54
+ 5) Sugestia wizualna: (jedno zdanie, opis pomysłu na zdjęcie/wideo)
55
+ ---
56
+
57
+ Pisz konkretnie, naturalnym językiem, bez powtarzania instrukcji.
58
+ """
59
+ out = call_model(prompt)
60
+ return out
61
+
62
+ # ===== UI =====
63
+ iface = gr.Interface(
64
+ fn=generate_posts,
65
+ inputs=[
66
+ gr.Textbox(label="🎯 Temat (np. Jak wstać o 5 rano)"),
67
+ gr.Dropdown(["motywacyjny","informacyjny","sprzedażowy","edukacyjny"], label="🎙 Ton"),
68
+ gr.Dropdown(["TikTok","Instagram","Facebook","LinkedIn"], label="📱 Platforma")
69
+ ],
70
+ outputs=gr.Textbox(label="✨ Wygenerowane posty", lines=25),
71
+ title="🤖 Social Media Post Generator",
72
+ description="Podaj temat, wybierz ton i platformę. Agent wygeneruje 3 gotowe propozycje postów (hook, treść, hashtagi, CTA i sugestia wizualna)."
73
+ )
74
+
75
+ if __name__ == "__main__":
76
+ iface.launch()