Jan Kirenz commited on
Commit
0552b81
·
1 Parent(s): 914b333

Add application file

Browse files
Files changed (1) hide show
  1. app.py +108 -0
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
+ """)