EduProfit commited on
Commit
1d280f0
·
verified ·
1 Parent(s): 68b61c4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -24
app.py CHANGED
@@ -2,52 +2,74 @@
2
  import os, requests
3
  import gradio as gr
4
 
5
- HF_TOKEN = os.environ.get("HF_TOKEN") # ustaw w Secrets Space
6
- MODEL = "google/flan-t5-base" # lekki model instrukcyjny (możesz zmienić)
 
7
 
8
  headers = {"Authorization": f"Bearer {HF_TOKEN}"}
9
 
 
10
  def call_model(prompt):
11
  url = f"https://api-inference.huggingface.co/models/{MODEL}"
12
- payload = {"inputs": prompt, "parameters": {"max_new_tokens": 200}}
 
 
 
 
 
 
 
13
  r = requests.post(url, headers=headers, json=payload, timeout=60)
14
  data = r.json()
15
- # obsługa różnych formatów odpowiedzi
16
  if isinstance(data, dict) and data.get("error"):
17
- return "Błąd modelu: " + data.get("error")
18
  if isinstance(data, list) and data and isinstance(data[0], dict):
19
  return data[0].get("generated_text", str(data))
20
  if isinstance(data, dict):
21
  return data.get("generated_text", str(data))
22
  return str(data)
23
 
 
24
  def generate_posts(temat, ton, platforma):
25
- prompt = f"""Jesteś ekspertem od pisania angażujących postów na social media.
26
- Temat: {TEMAT}
27
- Platforma: {PLATFORMA}
28
- Ton: {TON}
29
-
30
- Dla podanych danych wygeneruj 3 różne warianty posta.
31
- Dla każdego wariantu podaj:
32
- 1) Hook (1 zdanie, zaczynające od silnego hasła)
33
- 2) Treść posta (dostosowana do platformy; jeśli TikTok: krótka, chwytliwa; jeśli LinkedIn: dłuższy, profesjonalny)
34
- 3) 10 adekwatnych hashtagów (bez polskich znaków)
35
- 4) CTA (1 linia; krótka i jasna)
36
- 5) Sugestia wizualna (1 zdanie: co nagrać/fotka)
37
-
38
- Użyj języka polskiego. Nie wypisuj niczego poza opisanymi elementami."""
 
 
 
 
 
 
 
 
 
 
39
  out = call_model(prompt)
40
  return out
41
 
 
42
  iface = gr.Interface(
43
  fn=generate_posts,
44
  inputs=[
45
- gr.Textbox(label="Temat (np. Jak wstać o 5 rano)"),
46
- gr.Dropdown(["motywacyjny","informacyjny","sprzedażowy","edukacyjny"], label="Ton"),
47
- gr.Dropdown(["TikTok","Instagram","LinkedIn","Facebook"], label="Platforma")
48
  ],
49
- outputs=gr.Textbox(label="Wynik"),
50
- title="Social Media Post Generator (MVP)"
 
51
  )
52
 
53
  if __name__ == "__main__":
 
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__":