Jan Kirenz
commited on
Commit
•
ad6f073
1
Parent(s):
df02228
german gpt2
Browse files- .gitignore +1 -0
- app.py +21 -31
.gitignore
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
.env
|
app.py
CHANGED
@@ -1,39 +1,31 @@
|
|
1 |
import streamlit as st
|
2 |
from transformers import pipeline
|
3 |
|
4 |
-
# Titel und Beschreibung der Anwendung
|
5 |
st.title("🚀 Marketing Text Generator")
|
6 |
st.markdown("*Erstelle kreative Marketing-Texte mit KI-Unterstützung*")
|
7 |
|
8 |
-
# Wir verwenden @st.cache_resource, damit das Modell nicht bei jeder Interaktion neu geladen wird
|
9 |
@st.cache_resource
|
10 |
def load_gpt2():
|
11 |
-
"""
|
12 |
-
Lädt das GPT-2 Modell in einer einfachen Pipeline-Konfiguration.
|
13 |
-
Die Pipeline vereinfacht die Textgenerierung erheblich.
|
14 |
-
"""
|
15 |
try:
|
16 |
-
#
|
17 |
-
return pipeline('text-generation',
|
|
|
|
|
18 |
except Exception as e:
|
19 |
st.error(f"Modell konnte nicht geladen werden: {str(e)}")
|
20 |
return None
|
21 |
|
22 |
-
# Hauptformular für die Benutzereingaben
|
23 |
with st.form("marketing_form"):
|
24 |
-
# Eingabefeld für den Produktnamen
|
25 |
product_name = st.text_input(
|
26 |
"Produktname",
|
27 |
help="Wie heißt das Produkt, für das Sie einen Text erstellen möchten?"
|
28 |
)
|
29 |
|
30 |
-
# Eingabefeld für die Produkteigenschaften
|
31 |
key_features = st.text_area(
|
32 |
"Produktmerkmale",
|
33 |
help="Was macht Ihr Produkt besonders? (Eigenschaften durch Kommas trennen)"
|
34 |
)
|
35 |
|
36 |
-
# Längensteuerung für den generierten Text
|
37 |
max_length = st.slider(
|
38 |
"Textlänge",
|
39 |
min_value=50,
|
@@ -42,57 +34,55 @@ with st.form("marketing_form"):
|
|
42 |
help="Längere Texte brauchen mehr Zeit zur Generierung"
|
43 |
)
|
44 |
|
45 |
-
# Formular-Button
|
46 |
submit = st.form_submit_button("Text generieren")
|
47 |
|
48 |
-
# Wenn der Button geklickt wurde und alle Felder ausgefüllt sind
|
49 |
if submit and product_name and key_features:
|
50 |
-
# Modell laden mit Fortschrittsanzeige
|
51 |
with st.spinner("Lade KI-Modell..."):
|
52 |
generator = load_gpt2()
|
53 |
|
54 |
if generator:
|
55 |
-
#
|
56 |
-
prompt = f"""
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
|
|
63 |
|
64 |
try:
|
65 |
-
# Text generieren mit Fortschrittsanzeige
|
66 |
with st.spinner("Erstelle Marketing-Text..."):
|
67 |
result = generator(
|
68 |
prompt,
|
69 |
max_length=max_length,
|
70 |
num_return_sequences=1,
|
71 |
-
temperature=0.
|
|
|
|
|
72 |
)
|
73 |
|
74 |
-
# Generierten Text extrahieren und anzeigen
|
75 |
generated_text = result[0]['generated_text']
|
76 |
|
|
|
|
|
|
|
77 |
st.success("Text wurde generiert!")
|
78 |
st.markdown("### Ihr Marketing-Text:")
|
79 |
-
st.markdown(
|
80 |
|
81 |
-
# Download-Option
|
82 |
st.download_button(
|
83 |
"Text speichern",
|
84 |
-
|
85 |
file_name="marketing_text.txt"
|
86 |
)
|
87 |
|
88 |
except Exception as e:
|
89 |
st.error(f"Fehler bei der Textgenerierung: {str(e)}")
|
90 |
|
91 |
-
# Wenn der Button geklickt wurde, aber Felder fehlen
|
92 |
elif submit:
|
93 |
st.warning("Bitte füllen Sie alle Felder aus.")
|
94 |
|
95 |
-
# Hilfreiche Informationen am Ende
|
96 |
st.markdown("---")
|
97 |
st.markdown("""
|
98 |
**Hinweise zur Benutzung:**
|
|
|
1 |
import streamlit as st
|
2 |
from transformers import pipeline
|
3 |
|
|
|
4 |
st.title("🚀 Marketing Text Generator")
|
5 |
st.markdown("*Erstelle kreative Marketing-Texte mit KI-Unterstützung*")
|
6 |
|
|
|
7 |
@st.cache_resource
|
8 |
def load_gpt2():
|
|
|
|
|
|
|
|
|
9 |
try:
|
10 |
+
# Wir verwenden das deutsche GPT-2 Modell für bessere deutsche Texte
|
11 |
+
return pipeline('text-generation',
|
12 |
+
model='benjamin/german-gpt2',
|
13 |
+
device=-1)
|
14 |
except Exception as e:
|
15 |
st.error(f"Modell konnte nicht geladen werden: {str(e)}")
|
16 |
return None
|
17 |
|
|
|
18 |
with st.form("marketing_form"):
|
|
|
19 |
product_name = st.text_input(
|
20 |
"Produktname",
|
21 |
help="Wie heißt das Produkt, für das Sie einen Text erstellen möchten?"
|
22 |
)
|
23 |
|
|
|
24 |
key_features = st.text_area(
|
25 |
"Produktmerkmale",
|
26 |
help="Was macht Ihr Produkt besonders? (Eigenschaften durch Kommas trennen)"
|
27 |
)
|
28 |
|
|
|
29 |
max_length = st.slider(
|
30 |
"Textlänge",
|
31 |
min_value=50,
|
|
|
34 |
help="Längere Texte brauchen mehr Zeit zur Generierung"
|
35 |
)
|
36 |
|
|
|
37 |
submit = st.form_submit_button("Text generieren")
|
38 |
|
|
|
39 |
if submit and product_name and key_features:
|
|
|
40 |
with st.spinner("Lade KI-Modell..."):
|
41 |
generator = load_gpt2()
|
42 |
|
43 |
if generator:
|
44 |
+
# Verbesserter deutscher Prompt
|
45 |
+
prompt = f"""Werbetext für ein innovatives Produkt:
|
46 |
+
{product_name}
|
47 |
+
|
48 |
+
Besondere Eigenschaften:
|
49 |
+
{key_features}
|
50 |
+
|
51 |
+
Überzeugender Werbetext:
|
52 |
+
Entdecken Sie {product_name} - """
|
53 |
|
54 |
try:
|
|
|
55 |
with st.spinner("Erstelle Marketing-Text..."):
|
56 |
result = generator(
|
57 |
prompt,
|
58 |
max_length=max_length,
|
59 |
num_return_sequences=1,
|
60 |
+
temperature=0.8, # Etwas mehr Kreativität
|
61 |
+
top_p=0.9, # Mehr Variabilität
|
62 |
+
do_sample=True # Kreativeres Sampling
|
63 |
)
|
64 |
|
|
|
65 |
generated_text = result[0]['generated_text']
|
66 |
|
67 |
+
# Text nachbearbeiten um nur den generierten Teil zu zeigen
|
68 |
+
final_text = generated_text.split("Überzeugender Werbetext:")[-1].strip()
|
69 |
+
|
70 |
st.success("Text wurde generiert!")
|
71 |
st.markdown("### Ihr Marketing-Text:")
|
72 |
+
st.markdown(final_text)
|
73 |
|
|
|
74 |
st.download_button(
|
75 |
"Text speichern",
|
76 |
+
final_text,
|
77 |
file_name="marketing_text.txt"
|
78 |
)
|
79 |
|
80 |
except Exception as e:
|
81 |
st.error(f"Fehler bei der Textgenerierung: {str(e)}")
|
82 |
|
|
|
83 |
elif submit:
|
84 |
st.warning("Bitte füllen Sie alle Felder aus.")
|
85 |
|
|
|
86 |
st.markdown("---")
|
87 |
st.markdown("""
|
88 |
**Hinweise zur Benutzung:**
|