Jan Kirenz
commited on
Commit
·
0552b81
1
Parent(s):
914b333
Add application file
Browse files
app.py
ADDED
@@ -0,0 +1,108 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
3 |
+
import torch
|
4 |
+
|
5 |
+
# Titel der Anwendung
|
6 |
+
st.title("🚀 Marketing Text Generator mit Falcon")
|
7 |
+
st.markdown("*Generiere kreative Marketing-Texte mit dem Falcon-7B Modell*")
|
8 |
+
|
9 |
+
# Modell und Tokenizer laden
|
10 |
+
# Wir nutzen @st.cache_resource, um zu vermeiden, dass das Modell bei jeder Interaktion neu geladen wird
|
11 |
+
@st.cache_resource
|
12 |
+
def load_falcon_model():
|
13 |
+
"""
|
14 |
+
Lädt das Falcon Modell und den zugehörigen Tokenizer.
|
15 |
+
Falcon ist bekannt für seine kreativen Textgenerierungsfähigkeiten.
|
16 |
+
"""
|
17 |
+
try:
|
18 |
+
# Modellname für Falcon
|
19 |
+
model_name = "tiiuae/falcon-7b"
|
20 |
+
|
21 |
+
# Tokenizer laden - wandelt Text in Zahlen um, die das Modell verarbeiten kann
|
22 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
23 |
+
|
24 |
+
# Modell laden mit optimierten Einstellungen für Streamlit
|
25 |
+
model = AutoModelForCausalLM.from_pretrained(
|
26 |
+
model_name,
|
27 |
+
trust_remote_code=True,
|
28 |
+
device_map="auto", # Automatische Gerätezuweisung (CPU/GPU)
|
29 |
+
load_in_8bit=True # Speicheroptimierung durch 8-bit Quantisierung
|
30 |
+
)
|
31 |
+
|
32 |
+
return model, tokenizer
|
33 |
+
|
34 |
+
except Exception as e:
|
35 |
+
st.error(f"Fehler beim Laden des Modells: {str(e)}")
|
36 |
+
return None, None
|
37 |
+
|
38 |
+
# Hauptbereich für die Eingabe
|
39 |
+
with st.form("marketing_form"):
|
40 |
+
# Eingabefelder für die Produktinformationen
|
41 |
+
product_name = st.text_input(
|
42 |
+
"Produktname",
|
43 |
+
help="Geben Sie den Namen Ihres Produkts ein"
|
44 |
+
)
|
45 |
+
|
46 |
+
key_features = st.text_area(
|
47 |
+
"Produktmerkmale",
|
48 |
+
help="Beschreiben Sie die wichtigsten Eigenschaften (durch Kommas getrennt)"
|
49 |
+
)
|
50 |
+
|
51 |
+
# Button zum Generieren des Textes
|
52 |
+
submit = st.form_submit_button("Marketing-Text generieren")
|
53 |
+
|
54 |
+
# Text generieren, wenn der Button geklickt wurde
|
55 |
+
if submit and product_name and key_features:
|
56 |
+
# Lade das Modell
|
57 |
+
with st.spinner("Lade Falcon Modell..."):
|
58 |
+
model, tokenizer = load_falcon_model()
|
59 |
+
|
60 |
+
if model and tokenizer:
|
61 |
+
# Marketing-spezifischer Prompt erstellen
|
62 |
+
prompt = f"""
|
63 |
+
Erstelle einen kurzen, überzeugenden Marketing-Text für folgendes Produkt:
|
64 |
+
Produkt: {product_name}
|
65 |
+
Merkmale: {key_features}
|
66 |
+
|
67 |
+
Der Text sollte professionell und ansprechend sein.
|
68 |
+
"""
|
69 |
+
|
70 |
+
# Text generieren
|
71 |
+
with st.spinner("Generiere Marketing-Text..."):
|
72 |
+
# Text in Token umwandeln
|
73 |
+
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
74 |
+
|
75 |
+
# Generierung mit optimierten Parametern
|
76 |
+
with torch.no_grad(): # Deaktiviert Gradient-Berechnung für Speichereffizienz
|
77 |
+
outputs = model.generate(
|
78 |
+
**inputs,
|
79 |
+
max_length=200, # Maximale Textlänge
|
80 |
+
temperature=0.7, # Kreativität (0.0 bis 1.0)
|
81 |
+
top_p=0.9, # Sampling-Parameter für Textvielfalt
|
82 |
+
num_return_sequences=1 # Anzahl der generierten Varianten
|
83 |
+
)
|
84 |
+
|
85 |
+
# Generierten Text dekodieren und anzeigen
|
86 |
+
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
87 |
+
|
88 |
+
# Ergebnis anzeigen
|
89 |
+
st.success("Text wurde erfolgreich generiert!")
|
90 |
+
st.markdown("### Ihr Marketing-Text:")
|
91 |
+
st.markdown(generated_text)
|
92 |
+
|
93 |
+
# Download-Option anbieten
|
94 |
+
st.download_button(
|
95 |
+
"Text als Datei speichern",
|
96 |
+
generated_text,
|
97 |
+
file_name="marketing_text.txt"
|
98 |
+
)
|
99 |
+
elif submit:
|
100 |
+
st.warning("Bitte füllen Sie alle Felder aus.")
|
101 |
+
|
102 |
+
# Hilfreiche Informationen am Ende
|
103 |
+
st.markdown("---")
|
104 |
+
st.markdown("""
|
105 |
+
**Hinweise zur Nutzung:**
|
106 |
+
- Die erste Generierung kann etwas länger dauern, da das Modell geladen werden muss
|
107 |
+
- Experimentieren Sie mit verschiedenen Beschreibungen für beste Ergebnisse
|
108 |
+
""")
|